Can an AI agent use Browserbase?

As of 13 Oct 2026, an AI agent gets into Browserbase on its own and does 20% of the core work.

Level 2 · Gets inAn agent gets in on its own but does less than half the core work.
  • Find: Docs for agents: llms.txt, an OpenAPI and an MCP server; a docs page for each core task.
  • Access: Pay per call.
  • Use: 20% of the work.
  • Pay: Pays per call for part of it: Paid $0.01 a call (x402), 13 Oct.
  • Leave: Leaves on its own: Nothing to cancel, deletes what it made.

To reach L3 · Does the work: do half of the core work (now 20%).

With an account set up by a person: not measured yet.

What the levels mean

Driven 13 Oct 2026New level in the latest driveRules of 15 Oct 2026Claim this page

Written and checked by our agents from this drive's record. How we write.

Who gets in

  • Agents on a serverGet in on their own.
  • Signed agentsThe sign-up page opens.
  • Agents in a person's browserNot measured yet.

Sign-up page checked 12 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from

What an agent can do in Browserbase.

On its own

  • Buy a single cloud browser session by paying a small fee, with no sign-up
  • Check that paid session's status and shut it down afterward
  • Read all of the product's documentation and setup guides on its own

What it can't, and why

  • Create an accountsign-up requires a phone number the agent can't provide
  • Get an API key for the full productkeys are only available inside the dashboard, behind the account wall
  • Run automated agents, custom code, or manage team/billing settingsall require the account that's blocked by the phone requirement
Not needed

Can an AI agent sign up for Browserbase on its own?

Not needed: a documented route works without an account.

Every way in it offers, as our agent tried them

Ways in
Way inWhat happened
Pay per callGot in, 1 min
A key from a personNot tried: needs a person's account
Official server · no call worked

Does Browserbase have an MCP server, and can an agent connect to it?

Yes. Browserbase has an official MCP server.

A new agent can get in on its own: in the drive of 13 Oct 2026, our agent got working access without signing up. Through the MCP server, 0 of our agent's 3 attempts worked.

What the drive found

APIOpenAPIMCP · officialCLISDKllms.txtWebhooks–Sandbox
On its own, over the API

How does an AI agent get a Browserbase API key?

In the drive of 13 Oct 2026, our agent got its Browserbase API key over the API, without a browser or a person. The x402 payment is the credential (paid by us). No headless API-key route exists: keys are copied from the dashboard, and the dashboard needs an account behind the phone field.

No account to delete

Can an AI agent delete its Browserbase account?

Not applicable: our agent used Browserbase without an account, and it deletes what it made.

Pays per call for part of it

Can an AI agent pay for Browserbase?

Pays per call for part of it: paid $0.01 a call (x402), 13 Oct.

Plan and price: Developer, $20 a month.

No CAPTCHA at checkoutOffers x402 payment

Paid on its own: $0.01 in USDC through x402 on Base, 13 Oct 2026. 0x5cd91d17…b4c3e7

  • Stripe Projects on its own domain
  • x402 on its own domain · Base, Solana
  • MPP on its own domain · listed or named only

It has a free plan.

What would let agents pay on their own
  1. Sell the plan or credits over the rail, not only side endpoints. Let the paid call buy what the product sells, so the rail covers the whole product.

We paid one x402 v1 call on x402.browserbase.com ($0.01, Base, confirmed, entitled). The rail sells sessions, search and fetch per use; plans (agents, functions, contexts, higher concurrency) are bought in the dashboard, which we never reached because sign-up needs a phone number.

Ways to pay checked 13 Oct 2026.

For the team behind Browserbase.

Where agents stop in Browserbase today, and the fixes that get them further, highest impact first.

In on its own; 20% of the work done

The fixes, highest impact first

  1. Drop the phone field for verified agentsStep-by-step guide
  2. Offer an API key route without the dashboardStep-by-step guide
  3. Put agents and functions on the x402/MPP gateway
3 more fixes
  1. Move to x402 v2
  2. Gate x402 status and delete by payer
  3. Accept MCP keys in a header
  • Claim it free and reply next to the result.
  • A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
  • Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
See the example report
Details

Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.

Already claimed it? Open it in your dashboard.

Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.

Embed the badge on your site

Driven · L2 · Gets in badge

Behind the level.

The part scores and the measures behind them.

Part scores and the measures · the docs · level history

Part scores

  • Holds up: 96 of 100, good

Agent-ready setup

  • llms.txt: found
  • OpenAPI: found
  • MCP server: found
  • CLI: found

Not measured in this drive: Docs match (part of an Audit).

Security: reported privately to the owner

The measures

  1. Work done20
  2. Reliability100
  3. Crash test92

The docs

305 of 316 pages read. Complete.

  • A getting-started page
  • An auth page
  • Errors listed with their codes
  • Code examples on most pages
  • Newest page updated 14 Oct 2026
  • A page for 10 of 10 core tasks

Read on 13 Oct 2026.

Tried as documented

2 of 19 documented ways to do the core work worked when tried.

Tried as documented
What happenedWays
Worked when tried2
Documented, didn't work6
Not tried (a paid plan, or no way to reach it)11
Worked, but not in the docs0

Level history

  1. 1 Oct 20263 drivesL1Needs a person
  2. 6 Oct 2026L1Needs a person
  3. 13 Oct 2026L1Needs a person
  4. 13 Oct 2026new rulesL2Gets in
How Browserbase handles an agent's mistakes · 5 probes · core run 3×

Malformed requests, a retry, a wrong key and a short burst of reads on our agent's own account, and how Browserbase answered.

  1. Clear errors83
  2. Recovery100

On the x402 gateway errors name the fix (400 'estimatedMinutes must be an integer of at least 5', 404 'Session not found'); 15 reads gave no 429 or rate-limit headers. Session usage figures after termination were inconsistent (9.88 used of 5 paid).

  • Silentidempotent createCreate and configure a cloud browser sessionnot run: a create is a paid call and our one payment is spent
  • Clearbad enum/type in create bodyCreate and configure a cloud browser session400 {"error":"estimatedMinutes must be an integer of at least 5"} (validated before the 402)
  • Clearwell-formed id that does not existClose/release a browser session404 {"error":"Session not found"}
  • Clearbad credentialCreate and configure a cloud browser session401 application/json {"statusCode":401,"error":"Unauthorized","message":"Unauthorized"}; missing key: "Missing x-bb-api-key header"
  • Clearburst 15 sequential readsCreate and configure a cloud browser session15x 200, no RateLimit/X-RateLimit headers, no 429

For agents and builders.

The drive as data, every checkpoint and all 92 attempts.

How an agent connects · 4 tips
  • No account: pay per use on x402.browserbase.com or mpp.browserbase.com ($0.12/hour sessions, $0.01 search or fetch); connect to connectUrl right away, the paid minutes run from create.
  • CLI cloud commands are 'browse cloud …' (sessions, fetch, search); functions use 'browse functions publish', not deploy.
  • Hosted MCP tools are start/end/navigate/act/observe/extract; pass the key as ?browserbaseApiKey=.
  • Docs pages come as markdown with Accept: text/markdown or a .md URL.
Every checkpoint, in detail · 9 checkpoints
  1. DocsHeadlessllms.txt, SKILL.md, OpenAPI 3.0.0 (66 operations) and markdown docs all fetched headless.
  2. Sign upNot neededNot needed: a documented route works without an account.
  3. VerifyNot neededNot needed: a documented route works without an account.
  4. KeyHeadlessThe x402 payment is the credential (paid by us). No headless API-key route exists: keys are copied from the dashboard, and the dashboard needs an account behind the phone field.
  5. First callHeadlessGET x402.browserbase.com/browser/session/{id}/status on our paid session: 200.
  6. First actionHeadlessA 5-minute browser session created over x402 by our $0.01 payment (tx 0x5cd91d17…c3e7), read back and terminated by DELETE.
  7. PayHeadlessWe paid one x402 v1 call on x402.browserbase.com ($0.01, Base, confirmed, entitled). The rail sells sessions, search and fetch per use; plans (agents, functions, contexts, higher concurrency) are bought in the dashboard, which we never reached because sign-up needs a phone number.
  8. CancelNot neededNothing to cancel: our agent used it pay-per-call.
  9. DeleteNot neededNo account was created. The x402 session was ended with DELETE /browser/session/{id} (terminated: true). No account-deletion route found in the docs index.
The attempt log · 92 attempts
Attempt log
CapabilityRouteResultEvidence
llms.txt: fetch llms.txtapidone ✓https://www.browserbase.com/llms.txt 200 text/plain; links SKILL.md, docs llms.txt, OpenAPI openapi.v1.yaml
MCP server/discover: POST server/discover 2026-07-28 to https://mcp.browserbase.com/mcpapidone ✓HTTP 400 {"jsonrpc":"2.0","error":{"code":-32000,"message":"Missing mcp-session-id"}} -> legacy server
MCP initialize: initialize offering 2026-07-28apidone ✓200 text/event-stream, mcp-session-id issued, protocolVersion 2025-11-25, serverInfo stagehand-api; tools/list without auth: start,end,navigate,act,observe,extract
MCP card / PRM: GET /mcp/server-card, /.well-known/oauth-protected-resource on mcp. and api.apidone ✓mcp.browserbase.com/mcp/server-card 404; PRM 404 on mcp. and api.; www /.well-known/* and /auth.md redirect to sign-in (text/html)
robots/aipref: robots.txt www and docsapidone ✓www: "User-Agent: * Allow: /"; docs: "Content-Signal: ai-train=yes, search=yes, ai-input=yes"
markdown docs: Accept: text/markdown on docs page and .md URLapidone ✓Accept: text/markdown -> 307 to /platform/fetch/overview.md, vary: rsc, Accept, User-Agent; .md URL -> 200 text/markdown
OpenAPI: fetch openapi.v1.yamlapidone ✓openapi: 3.0.0, 66 operations, X-BB-API-Key header auth; no API-key-creation operation
x402 pay-per-use session, no account: session via x402 (paid by us, pay_tx.json) and read back its statusapidone ✓pay_tx: POST https://x402.browserbase.com/browser/session/create settled tx 0x5cd91d17…c3e7 on Base, 200 sessionId session_1f068406-8cb1-4b97-81f3-2e1eb5b0362e; GET /browser/session/session_1f068406-8cb1-4b97-81f3-2e1eb5b0362e/status 200 status ended, minutesPaid 5, minutesUsed 4.03
402 challenges: unauth POST x402./fetch, x402./search, mpp./browser/session/createapidone ✓x402 /fetch and /search: 402 {"x402Version":1,"error":"X-PAYMENT header is required"} $0.01/request on Base; mpp: 402 application/problem+json, WWW-Authenticate: Payment method="tempo" intent="charge" and method="stripe" intent="charge"
no account: keyless routenoneskipped
email + password sign-up: sign up at https://www.browserbase.com/sign-up with the agent's inboxbrowserblockedform fields: E-mail address*, Phone number* (+1), Password*; Continue with phone empty -> browser validation "Please fill out this field." on Phone number; info tooltip: "Browserbase requires all users to provide a valid phone number to prevent abuse of the platform. If your phone number is already taken and you need to create another account, please reach out to support@browserbase.com."
Continue with GitHub: GitHub sign-innoneskipped
Stripe Projects: add browserbase via stripe projectsnoneskipped
sign-up call / auth.md: API sign-upnoneskipped
CLI login: browse CLI loginnoneskipped
MCP OAuth: MCP sign-innoneskipped
person copies key from dashboard: key from browserbase.com/settingsnoneskipped
verify email: verify emailnoneskipped
payment as credential: x402 payment (we) as the credentialapidone ✓pay_tx.json: X-PAYMENT settled on Base, 200 with sessionId and connectUrl
scoped API key headless: create a scoped API key via API/CLInoneblockedOpenAPI openapi.v1.yaml: no key/token operation; browse CLI: no key command; docs: key copied from dashboard browserbase.com/settings
first call: GET x402 session statusapidone ✓GET https://x402.browserbase.com/browser/session/session_1f068406-8cb1-4b97-81f3-2e1eb5b0362e/status 200 JSON status, usage, browserbaseInfo
first action: create a browser session by x402 paymentapidone ✓POST https://x402.browserbase.com/browser/session/create paid by us (tx 0x5cd91d17…c3e7), 200 sessionId session_1f068406-8cb1-4b97-81f3-2e1eb5b0362e; read back by status
Create a cloud browser session: create a 5-minute session via x402apidone ✓POST x402.browserbase.com/browser/session/create (paid by us, pay_tx.json) 200 sessionId session_1f068406-8cb1-4b97-81f3-2e1eb5b0362e, connectUrl wss://connect.usw2.browserbase.com/…
Create a cloud browser session: read session backapidone ✓GET /browser/session/session_1f068406-8cb1-4b97-81f3-2e1eb5b0362e/status 200 status ended, minutesPaid 5, minutesUsed 4.03
Create a cloud browser session: extend the session (POST /browser/session/:id/extend)apiblocked
Drive the browser: connect over CDP to the paid session and open a pageapiblockedstatus at 05:09 was already "ended" (5 paid minutes ran out between our payment at 05:01:57 and this session); account route needs an API key (401 "Missing x-bb-api-key header"); MCP tool calls need ?browserbaseApiKey= ("Invalid query parameters")
Close/release a session: terminate the paid sessionapidone ✓DELETE x402.browserbase.com/browser/session/session_1f068406-8cb1-4b97-81f3-2e1eb5b0362e 200 {"terminated":true,"settlement":{"status":"completed","actualCost":0.01,"refundAmount":0}}
Close/release a session: read the delete backapidone ✓GET …/status 200 status ended, settlement completed
Create a cloud browser session: delete and read backapidone ✓DELETE 200 terminated:true; status ended
Search API: POST /v1/searchapiblockedaccount API: {"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8; x402 /search: 402 x402Version 1 $0.01
Fetch API: POST /v1/fetchapiblockedaccount API: {"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8; x402 /fetch: 402 x402Version 1 $0.01
Run an autonomous Agent from a natural-language task: POST /v1/agents/runsapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Pause an Agent run for input and resume it: POST /v1/agents/our recordsapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Write and publish a Function (TypeScript code that runs next to a browser): GET /v1/functionsapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Invoke a published Function and retrieve its result: POST /v1/functions/x/invokeapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Watch a session live and control it interactively: GET /v1/sessions/x/debugapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Create a reusable Agent with a fixed system prompt and result schema: POST /v1/agentsapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Stop an in-progress Agent run: POST /v1/agents/our recordsapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Replay a finished session recording: GET /v1/sessions/x/replaysapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Download a session recording as MP4: POST /v1/sessions/x/recording/downloadsapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Read session logs: GET /v1/sessions/x/logsapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Persist cookies/auth/app data across sessions with Contexts: POST /v1/contextsapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Delete a stored Context: DELETE /v1/contexts/xapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Upload a file into a browser session: POST /v1/sessions/x/uploadsapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Retrieve or delete files downloaded during a session: GET /v1/downloadsapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Load a custom Chrome extension into a session: POST /v1/extensionsapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Register a webhook endpoint for platform events: POST /v1/webhooksapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Store an encrypted Secret and attach it to a Function: POST /v1/secretsapiblocked{"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Capture screenshots and PDFs of a page: attempt via documented session-create option or toolapiblockedPOST /v1/sessions without key: 401 "Missing x-bb-api-key header"; MCP has no screenshot tool (tools/list: start,end,navigate,act,observe,extract); screenshots via CDP/Playwright on a session
Restrict session navigation to an allowlist of domains: attempt via documented session-create option or toolapiblockedPOST /v1/sessions without key: 401 "Missing x-bb-api-key header"; docs platform/browser/security/allowed-domains.md; a session-create option
Keep a session alive across disconnects / extend timeout: attempt via documented session-create option or toolapiblockedPOST /v1/sessions without key: 401 "Missing x-bb-api-key header"; docs long-sessions/keep-alive.md; keepAlive/timeout on session create
Solve CAPTCHAs automatically during a session: attempt via documented session-create option or toolapiblockedPOST /v1/sessions without key: 401 "Missing x-bb-api-key header"; browserSettings.solveCaptchas; outside our rules to use against third-party sites
Route session traffic through managed residential/datacenter proxies: attempt via documented session-create option or toolapiblockedPOST /v1/sessions without key: 401 "Missing x-bb-api-key header"; browserSettings.proxies, paid
Handle 2FA/authentication flows for website logins: attempt via documented session-create option or toolapiblockedPOST /v1/sessions without key: 401 "Missing x-bb-api-key header"; docs platform/identity/authentication.md
Present a cryptographically signed bot identity (Web Bot Auth): attempt via documented session-create option or toolapiblockedPOST /v1/sessions without key: 401 "Missing x-bb-api-key header"; docs features/stealth-mode; Verified browsers
Retrieve credentials from a connected 1Password vault for login: attempt via documented session-create option or toolapiblockedPOST /v1/sessions without key: 401 "Missing x-bb-api-key header"; docs integrations/1password/quickstart.md
Call major LLM providers through one Browserbase API key/bill: attempt via documented session-create option or toolapiblockedPOST /v1/sessions without key: 401 "Missing x-bb-api-key header"; Model Gateway via Stagehand model config
Upload a custom TLS certificate for a session: docs check + GET /v1/certificatesapiblockedoperation in openapi.v1.yaml; call: {"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Rotate a webhook's signing secret: docs check + POST /v1/webhooks/x/secretapiblockedoperation in openapi.v1.yaml; call: {"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
View project usage against plan limits: docs check + GET /v1/projectsapiblockedoperation in openapi.v1.yaml; call: {"statusCode":401,"error":"Unauthorized","message":"Missing x-bb-api-key header"} HTTP401 application/json; charset=utf-8
Manage team members and roles: docs check (dashboard only)browserblockeddocs account/team/roles.md
Configure SSO (SAML) for the organization: docs check (dashboard only)browserblockeddocs account/team/sso.md
Manage billing plan, invoices, and payment details: docs check (dashboard only)browserblockeddocs account/billing/plan-management.md
Docs claim: Create and configure a cloud browser session: POST /v1/sessionsapiblocked401 Missing x-bb-api-key header; no account (phone wall)
Docs claim: Create and configure a cloud browser session: browserbase_create_session (via Stagehand MCP)mcpblockedtool is named "start" in tools/list; call without ?browserbaseApiKey= -> "Invalid query parameters"
Docs claim: Create and configure a cloud browser session: browse session createclifailed"browse session" is not a browse command; the command is "browse cloud sessions create" (needs a key)
Docs claim: Drive the browser to navigate, click, type, and extract data: CDP connectUrlapiblockedpaid session ended before connect; no key
Docs claim: Drive the browser to navigate, click, type, and extract data: act / extract / observemcpblockedtools exist in tools/list; need API key
Docs claim: Drive the browser to navigate, click, type, and extract data: browse runclifailed"browse run" is not a browse command (browse open/click/fill exist)
Docs claim: Close/release a browser session: POST /v1/sessions/{id} REQUEST_RELEASEapiblocked401 no key
Docs claim: Close/release a browser session: browserbase_close_sessionmcpblockedtool is named "end"; needs API key
Docs claim: Close/release a browser session: browse session stopclifailed"browse session" not a command; "browse stop" stops the local daemon
Docs claim: Run an autonomous Agent from a natural-language task: POST /v1/agents/runsapiblocked401 no key
Docs claim: Pause an Agent run for input and resume it: POST /v1/agents/our recordsapiblocked401 no key; operation in OpenAPI
Docs claim: Search the live web for ranked results: POST /v1/searchapiblocked401 no key; x402 /search 402 $0.01
Docs claim: Fetch a URL as markdown, JSON, or HTML: POST /v1/fetchapiblocked401 no key; x402 /fetch 402 $0.01
Docs claim: Fetch a URL as markdown, JSON, or HTML: browse fetchclifailedcommand is "browse cloud fetch" (needs a key)
Docs claim: Write and publish a Function (TypeScript code that runs next to a browser): Functions publish/build pipelineapiblockedno publish operation in OpenAPI (builds read-only); 401 no key
Docs claim: Write and publish a Function (TypeScript code that runs next to a browser): browse functions deployclifailed"functions deploy" not found; "browse functions publish" exists
Docs claim: Invoke a published Function and retrieve its result: POST /v1/functions/{id}/invocationsapifailedOpenAPI has POST /v1/functions/{id}/invoke, not /invocations; 401 no key
Docs claim: Invoke a published Function and retrieve its result: browse functions invokecliblockedexists; "Missing Browserbase API key"
Docs claim: Watch a session live and control it interactively: GET /v1/sessions/{id}/debugapiblocked401 no key
Docs claim: Create and configure a cloud browser session: x402 POST /browser/session/createapidone ✓paid by us; read back via status
Docs claim: Close/release a browser session: x402 DELETE /browser/session/:idapidone ✓terminated:true, status ended
walk to the last click: open the cheapest paid plan (Developer $20/mo) checkoutnoneblockedpricing page: Free $0/mo, Developer $20/mo, Startup $99/mo, Scale custom; plan change is in the dashboard (Settings > Usage & billing > Change plan); no account (phone wall at sign-up)
cancel: nothing to cancelnoneskipped
delete account: delete accountnoneskipped
Create and configure a cloud browser session: repeat from a fresh sessionapiblocked
Create and configure a cloud browser session: repeat from a fresh sessionapiblocked
Close/release a browser session: repeat from a fresh sessionapiblocked
Close/release a browser session: repeat from a fresh sessionapiblocked
revoke key: revokenoneskipped

Also in Browser infrastructure.