FIRST PROMPT
Use Popcorn to check my balance, then create one browser. Open https://www.google.com/ and return the live-view URL. If credit is insufficient, return the checkout URL and stop.
Remote browsers for AI agents
Start an isolated Chromium browser for one task. An agent can control it using CDP. A human can take over when needed.
agent-session.log
LIVEOne task. One browser.
Works in your existing agents with a small top up
No sign up required. Just connect and pay per use!
SERVER URL
https://popcorn-mcp-gcp.reclaimprotocol.org/mcpPORTABLE CONFIGURATION
{
"mcpServers": {
"popcorn": {
"url": "https://popcorn-mcp-gcp.reclaimprotocol.org/mcp"
}
}
}CLAUDE CODE
claude mcp add --transport http popcorn \
"https://popcorn-mcp-gcp.reclaimprotocol.org/mcp"CODEX CLI
codex mcp add popcorn --url https://popcorn-mcp-gcp.reclaimprotocol.org/mcp
codex mcp login popcornAny other compatible client: add a remote MCP server named popcorn, select Streamable HTTP, and paste the server URL.
FIRST PROMPT
Use Popcorn to check my balance, then create one browser. Open https://www.google.com/ and return the live-view URL. If credit is insufficient, return the checkout URL and stop.
HOW MCP BILLING WORKS
One credit gives 10 minutes of browser time. A $5 checkout buys 100 credits. If the agent needs credit, it returns a checkout URL for a person to open.
Pay per use using Agent Wallets
Accepts payments in USDC on Base network.
npm install mppx@0.8.15 viem@2.55.10 playwrightPOST https://app.popcorn.reclaimprotocol.org/v1/x402/sessions
→ 402 Payment Required
Validate network, USDC token, payee, and price.
Sign the offer in the agent wallet.
Repeat the request with the payment signature.
→ 200 OK
{ connectUrl, liveViewUrl, expiresAt }const browser = await chromium.connectOverCDP(session.connectUrl);
console.log(session.liveViewUrl);npm install mppx@0.8.15 viem@2.55.10 playwrightimport { Fetch, evm } from "mppx/client";
import type { Hex } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { chromium } from "playwright";
function required(name: string): string {
const value = process.env[name]?.trim();
if (!value) throw new Error(name + " is required");
return value;
}
const endpoint =
"https://app.popcorn.reclaimprotocol.org/v1/x402/sessions";
const expected = {
network: "eip155:8453",
chainId: 8453,
asset: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" as Hex,
payTo: "0x28f26a191D6bCa1FfD129261E726033188d65138" as Hex,
amount: "10000"
};
const account = privateKeyToAccount(
required("PAYER_PRIVATE_KEY") as Hex
);
const paidFetch = Fetch.from({
methods: [evm.charge({
account,
authorization: { name: "USD Coin", version: "2" },
currencies: [expected.asset],
decimals: 6,
maxAtomicAmount: expected.amount,
networks: [expected.chainId]
})],
onChallenge: async (challenge, { createCredential }) => {
const offer = challenge.request as Record<string, unknown>;
if (offer.network !== expected.network ||
String(offer.asset).toLowerCase() !== expected.asset.toLowerCase() ||
String(offer.payTo).toLowerCase() !== expected.payTo.toLowerCase() ||
offer.amount !== expected.amount) {
throw new Error("Untrusted payment offer");
}
return await createCredential();
}
});
const response = await paidFetch(endpoint, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID()
},
body: "{}"
});
if (!response.ok) throw new Error("Request failed: " + response.status);
const session = await response.json();
const browser = await chromium.connectOverCDP(session.connectUrl);
console.log("Human view:", session.liveViewUrl);This example validates the current payment terms and opens one session. Use the complete x402 guide for retries, secret storage, and recovery after uncertain responses.
https://app.popcorn.reclaimprotocol.org/v1/x402/sessionsBase mainnet · eip155:8453USDC · 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA029130x28f26a191D6bCa1FfD129261E726033188d6513810,000 atomic units · $0.01300 seconds per blockWhat Popcorn does
Popcorn starts a fresh Chromium session for each task, gives the agent a CDP connection, and removes the browser afterward. A person can open the same session through live view when required by the agent.
| Your browser | Popcorn browser |
|---|---|
| Existing tabs and sessions | Fresh session |
| Browser history | No prior history |
| Mixed tasks | One task |
| Manual cleanup | Expires or ends |
Verify when needed
End to end encrypted. The browser runs in a Trusted Execution Environment (TEE). All your credentials and browsing data are secured by cryptography.
Each session gives you an attestation of a protected environment. You can verify it each time you open a browser session using Popcorn.
Enterprise
Talk to us for dedicated browser capacity, specific regions, private networking, managed access, or support.