Can an AI agent use Vercel?

As of 6 Oct 2026, an AI agent gets into Vercel 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.
  • Access: Try first, claim later.
  • Use: 20% of the work.
  • Pay: Reaches the checkout: A billing API, none made yet.
  • Leave: Leaves on its own: Nothing to cancel, what it made goes after 1 hour.

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 6 Oct 20261 drive so farRules 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 13 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from

What an agent can do in Vercel.

On its own

  • Put a test website online with no account needed
  • Run a small piece of code behind that website and get an answer back
  • Check a domain name's availability and price without signing up
1 more
  • Read all the help documentation in an easy machine-readable format

What it can't, and why

  • Create a full accountThe sign-up form rejected the agent's email address twice with no reason given and no visible human check
  • Use custom domains, saved settings, previews, or AI toolsThose all require a full account, which could not be created
  • Remove the test website itselfThe temporary access it has is not allowed to delete; it just expires after an hour
Not needed

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

Not needed: a documented route works without an account.

Official server · no call worked

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

Yes. Vercel has an official MCP server. The server signs an agent in with OAuth.

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

What the drive found

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

How does an AI agent get a Vercel API key?

In the drive of 6 Oct 2026, our agent got its Vercel API key over the API, without a browser or a person. vercel deploy --temporary (in the CLI help) issues an anonymous token scoped to one temporary project: works on GET /v13/deployments/{id} and /v3/deployments/{id}/events only; full tokens need an account.

No account to delete

Can an AI agent delete its Vercel account?

Not applicable: our agent used Vercel without an account, and what it made goes after 1 hour.

Reaches the checkout

Can an AI agent pay for Vercel?

Reaches the checkout: a billing API, none made yet.

  • Card checkout

It has a free plan.

What would let agents pay on their own
  1. Accept x402 or MPP on your API. Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card.
  2. List your plans on Stripe Projects. Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev).

No 402/x402/MPP/UCP/x-payment-info anywhere. Docs: POST /v1/billing/buy, vercel buy credits|addon|pro|domain --yes, MCP buy_pro/buy_credits/buy_domain charge the payment method on file. From docs only; not verified (no account, no card).

From the drive of 6 Oct 2026.

For the team behind Vercel.

Where agents stop in Vercel 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. Let verified agents finish email sign-upStep-by-step guide
  2. Say why a sign-up was refused
  3. Let the anonymous token do moreStep-by-step guide
5 more fixes
  1. Let the anonymous token delete its deployment Step-by-step guide
  2. Allow or explain --temporary under CI
  3. Document --temporary in the web docs
  4. Announce CIMD in the OAuth metadata Step-by-step guide
  5. Publish an MCP server card Step-by-step guide
  • 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

Part scores

Agent-ready setup

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

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

The measures

  1. Work done20
  2. Reliability0
  3. Crash test–

For agents and builders.

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

How an agent connects · 4 tips
  • vercel deploy --temporary --yes gives a live URL and a claim URL with no account; unset CI first or the CLI refuses
  • Functions: export GET/POST Web handlers; a default export returning a Response hung and returned a bare 504
  • Docs: append .md or send Accept: text/markdown
  • Domain availability/price endpoints need no auth
Every checkpoint, in detail · 9 checkpoints
  1. DocsHeadlessllms.txt, llms-full.txt, .md pages and Accept: text/markdown, OpenAPI 3.0.3 (322 paths), get-started.md agent playbook, AI Catalog.
  2. Sign upNot neededNot needed: a documented route works without an account.
  3. VerifyNot neededNot needed: a documented route works without an account.
  4. KeyHeadlessvercel deploy --temporary (in the CLI help) issues an anonymous token scoped to one temporary project: works on GET /v13/deployments/{id} and /v3/deployments/{id}/events only; full tokens need an account.
  5. First callHeadlessGET /v13/deployments/{id} with the anonymous token: 200, readyState READY.
  6. First actionHeadlessTemporary deployment created without an account and served; redeployed with a working function. The CLI refuses --temporary while CI=true is set.
  7. PayNot triedNo 402/x402/MPP/UCP/x-payment-info anywhere. Docs: POST /v1/billing/buy, vercel buy credits|addon|pro|domain --yes, MCP buy_pro/buy_credits/buy_domain charge the payment method on file. From docs only; not verified (no account, no card).
  8. CancelNot neededNothing to cancel: our agent used the free plan.
  9. DeleteBlockedNo account to delete. The anonymous deployment could not be removed (vercel remove starts a login; DELETE with the anonymous token 403); it expires after 60 min. Documented: DELETE /v1/user sends a confirmation mail.
The attempt log · 32 attempts
Attempt log
CapabilityRouteResultEvidence
llms.txt: GET /llms.txtapidone ✓https://vercel.com/llms.txt 200 text/plain, H1 # Vercel, links to md indexes, llms-full.txt; /docs/llms.txt 308 redirect
AI catalog: GET /.well-known/ai-catalog.jsonapidone ✓200 application/ai-catalog+json specVersion 1.0, 4 entries: MCP PRM, openapi.json, agent-resources.md, docs graph.json
A2A agent card: GET /.well-known/agent-card.json and agent.jsonapifailed ✓both 404 text/plain
MCP server card: GET https://mcp.vercel.com/server-card and /.well-known/mcp/server-card.jsonapifailed ✓mcp.vercel.com/server-card 404 text/html; vercel.com/.well-known/mcp/server-card.json 404
robots/aipref: GET /robots.txt and Content-Usage headerapidone ✓robots.txt: User-Agent: * / Content-Signal: search=yes, ai-input=yes, ai-train=no (Cloudflare Content Signals syntax, parses). No aipref Content-Usage line, no Content-Usage header on /docs. Disallow /api/, /oauth, /signup?*
markdown docs: GET /docs/deployments with Accept: text/markdown, and /docs/deployments.mdapidone ✓Accept negotiation: 200 content-type text/markdown, vary: Accept (no x-markdown-tokens). .md URL: 200 text/markdown
MCP discover: POST https://mcp.vercel.com/ server/discover 2026-07-28 unauthenticatedmcpblocked ✓401 WWW-Authenticate: Bearer error=invalid_token, resource_metadata=https://mcp.vercel.com/.well-known/oauth-protected-resource; PRM 200 JSON authorization_servers [https://vercel.com]
OpenAPI: GET https://openapi.vercel.sh/apidone ✓200 application/json, openapi: 3.0.3, 11 MB
sign up: vercel signup --email the agent's inbox --non-interactiveclipartial ✓CLI does not create the account itself: it prints https://vercel.com/signup?email=...&autoSubmit=1&next=/oauth/device?user_code=XNNP-PXDQ and polls the device flow. Sign-up continues in a browser.
sign up: Open the CLI sign-up URL in the browser; the page auto-submits the email; one retry clicking Continue with Emailbrowserblocked ✓Both submits: server action POST /signup returned {"code":"unknown_error","message":"Please try again later or use a different signup method."}; page shows Please try again or try a different sign up method ... account recovery form. No visible challenge (no Turnstile/hCaptcha/reCAPTCHA detected). Other options: Google, GitHub, ChatGPT, Apple (we hold none of these accounts). No verification mail arrived.
Create a deployment from Git push or CLI: vercel deploy --yes with no account, then vercel deploy --temporaryclifailed ✓No credentials: CLI suggests vercel deploy --temporary (claimable). With --temporary: Temporary deployments are not available for this attempt. Log in to continue. The CLI refuses client-side when ci-info detects CI (the shell had CI=true); no HTTP call made, and the message does not name CI as the reason.
Create a deployment from Git push or CLI: vercel deploy --temporary (no account) of a static index.html, then redeploy a change; read backclidone ✓With CI unset: deployment dpl_FXnpEwDpSqBukEfemEAaZA2CRkii READY at https://temporary-zippy-copper-ekspg0h.vercel.app, GET returns <h1>AgentDrives test v1</h1>; GET /v13/deployments/{id} with the anonymous token: readyState READY, aliasAssigned true. Expires in 60 min, claimUrl https://vercel.com/claim-deployment?code=••••. --temporary is in vercel deploy --help, not in the web docs.
first API/CLI call: GET https://api.vercel.com/v13/deployments/{id} with the anonymous token from .vercel/anonymous.jsonapidone ✓200 JSON readyState READY. The same token on /v2/user, /v6/deployments, /v9/projects/{id}, /v2/teams: 403 Token is not accepted (invalidToken). Scoped to the anonymous project only.
Run serverless/edge Functions behind the deployment: Deploy api/hello.js with the anonymous deployment and call itclifailed ✓First version (export default function handler(req) returning a Response) deployed READY but GET /api/hello timed out: 504 after 64 s. Cause of our own of the code: wrong handler shape for the Node runtime; no error text in the 504 body.
Run serverless/edge Functions behind the deployment: Redeploy with export function GET(request) and call itclidone ✓dpl_HnoMQMBz9a8mHzNGo15hpwExt75Z; GET https://temporary-zippy-copper-ekspg0h.vercel.app/api/hello 200 application/json {"ok":true,"from":"AgentDrives function",...}
View runtime logs and errors for deployments: Read build and runtime logs of the anonymous deploymentapipartial ✓GET /v3/deployments/dpl_HnoMQMBz9a8mHzNGo15hpwExt75Z/events with the anonymous token: 9 build events (Running build in iad1 ... Deployment completed). Runtime log of the function (console.log) not in events; /v1/projects/{id}/deployments/{id}/runtime-logs: 403 Token is not accepted; vercel logs starts a device login.
Get a preview URL for every branch/PR: vercel deploy --temporary --target previewcliblocked ✓Error: Anonymous deployments always target production, so "preview" is not available. Remove the "--target" option, or run `vercel login` to deploy to other environments. Needs an account; sign-up blocked.
Deploy an app for a user, then transfer it to their own account (claim deployments): Create an unclaimed deployment and get a claim URL; transfer itclipartial ✓vercel deploy --temporary returned claimUrl https://vercel.com/claim-deployment?code=•••• (expires 60 min); GET on it 307 to /auth-redirect/claim-deployment (needs a signed-in account). The claim itself needs a Vercel account, which we could not create; POST /projects/{id}/transfer-request needs a full token.
Search for, buy, and transfer a domain (registrar): Check availability and price of agentdrives-drive-test-2026.com without an accountapipartial ✓GET /v1/registrar/domains/{domain}/availability 200 {"available":true}; /price 200 {"years":1,"purchasePrice":11.25,...}; invalid name 400 with readable message (HttpApiDecodeError, not problem+json). Buying not attempted (costs money, needs account).
Call any LLM through one gateway endpoint: List models and call chat completions on ai-gateway.vercel.shapiblocked ✓GET /v1/models 200 public list; POST /v1/chat/completions without key 401 {"error":{"message":"Missing Authorization header","type":"authentication_error"}}. A key needs a Vercel account (sign-up blocked).
Roll back production to a previous deployment instantly: Needs project/team API accessapiblocked ✓No account: sign-up rejected (unknown_error). The anonymous deploy token is refused on project endpoints (e.g. /v9/projects/{id}/env, /v2/deployments/{id}/aliases: 403 Token is not accepted).
Add a custom domain and get automatic SSL: Needs project/team API accessapiblocked ✓No account: sign-up rejected (unknown_error). The anonymous deploy token is refused on project endpoints (e.g. /v9/projects/{id}/env, /v2/deployments/{id}/aliases: 403 Token is not accepted).
Manage environment variables per environment: Needs project/team API accessapiblocked ✓No account: sign-up rejected (unknown_error). The anonymous deploy token is refused on project endpoints (e.g. /v9/projects/{id}/env, /v2/deployments/{id}/aliases: 403 Token is not accepted).
Restrict preview/production access (deployment protection): Needs project/team API accessapiblocked ✓No account: sign-up rejected (unknown_error). The anonymous deploy token is refused on project endpoints (e.g. /v9/projects/{id}/env, /v2/deployments/{id}/aliases: 403 Token is not accepted).
Split production traffic across deployments (rolling releases): Needs project/team API accessapiblocked ✓No account: sign-up rejected (unknown_error). The anonymous deploy token is refused on project endpoints (e.g. /v9/projects/{id}/env, /v2/deployments/{id}/aliases: 403 Token is not accepted).
get API credentials: vercel deploy --temporary stores a token in .vercel/anonymous.jsonclipartial ✓Anonymous token scoped to one temporary project: accepted on GET /v13/deployments/{id} and /v3/deployments/{id}/events, refused (403 Token is not accepted) on /v2/user, /v6/deployments, /v9/projects, env, aliases, DELETE deployment, and by mcp.vercel.com (401). Full tokens need an account (vercel login = device flow, or Account > Tokens).
pay step: Probe 402/x402/MPP and billing routes without payingapipartial ✓No 402 anywhere: api.vercel.com unauthenticated 403 missingToken; x402./mpp./agents.vercel.com 404 DEPLOYMENT_NOT_FOUND; no x402/MPP/Stripe Projects/agentic commerce in llms-full.txt; no x-payment-info in OpenAPI; /.well-known/ucp 404; Bazaar lists only third-party *.vercel.app apps; mpp.dev none. Documented: POST /v1/billing/buy (credits, charged to the default payment method on file via Stripe invoice), vercel buy credits|addon|pro|domain --yes, MCP buy_pro/buy_credits/buy_domain with get_purchase_quote. Hobby plan is free. Not verified (no account, no card).
cancel: Find how to downgrade/cancelnoneskippedNo plan started. Docs: downgrade to Hobby described at /docs/plans/pro-plan#downgrading-to-hobby (dashboard); no downgrade endpoint found in OpenAPI.
delete account: Delete what we createdclifailed ✓No account was created. The anonymous deployment cannot be removed by us: vercel remove starts a device login; DELETE /v13/deployments/{id} with the anonymous token 403 Token is not accepted. It expires on its own after 60 min (expiresAt 1791266658609). Documented account delete exists: DELETE /v1/user sends a confirmation mail with a link.
MCP discover with credentials: server/discover on mcp.vercel.com with the anonymous token; DCR probemcpblocked ✓401 again (anonymous token not accepted). AS metadata (vercel.com/.well-known/oauth-authorization-server): registration_endpoint (DCR, live: POST {} -> 400 invalid_redirect_uri), no client_id_metadata_document_supported, device_authorization_endpoint present, PKCE S256.
find docs: llms.txt, markdown docs, OpenAPIapidone ✓llms.txt, llms-full.txt (10 MB), .md pages and Accept: text/markdown, OpenAPI 3.0.3 at openapi.vercel.sh (322 paths, 444 operations), get-started.md agent playbook
first real action: Create a deployment with no account (vercel deploy --temporary)clidone ✓dpl_FXnpEwDpSqBukEfemEAaZA2CRkii READY, page served <h1>AgentDrives test v1</h1>; later dpl_HnoMQMBz9a8mHzNGo15hpwExt75Z with a working function. Needed CI unset: the CLI refuses --temporary when ci-info sees CI=true.

Also in Hosting and deploys.