Can an AI agent use Netlify?

As of 11 Oct 2026, an AI agent gets into Netlify on its own and does 10% 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: Can't sign up for one.
  • Use: 10% of the work.
  • Pay: Payment not reached.
  • Leave: Leaves on its own: Nothing to cancel, what it made goes after 1 hour.

To reach L3 · Does the work: let an agent sign up for an account on its own (without one it does 10% of the core work).

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

What the levels mean

Driven 11 Oct 2026Same level in 2 drives in a rowRules 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 Netlify.

On its own

  • Put a simple static webpage online with no account needed, and get a link to claim it later
  • Resize and convert images on that webpage automatically
  • Read all of the product's documentation and technical specs on its own

What it can't, and why

  • Create a full accountan invisible robot check silently rejects the sign-up form with no error
  • Get an API key or connect through the agent protocol (MCP)both require a signed-in account, which it could not create
  • Add backend functions, custom domains, or team/billing featuresall of these require a signed-in account
1 more
  • Delete the test pages it madedeleting needs a login it doesn't have; they expire on their own after an hour
Not needed

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

Not needed: a documented route works without an account.

Official server · no call worked

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

Yes. Netlify has an official MCP server.

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

What the drive found

APIOpenAPIMCP · officialCLISDKllms.txtWebhooks–Sandbox
No key needed

How does an AI agent get a Netlify API key?

In the drive of 11 Oct 2026, our agent needed no key. Not needed: a documented route works without an account.

No account to delete

Can an AI agent delete its Netlify account?

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

Payment not reached

Can an AI agent pay for Netlify?

Payment not reached.

  • Stripe Projects on its own domain

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.Step-by-step guide

No 402 anywhere, no x-payment-info, no /.well-known/ucp; we paid nothing. Netlify appears in the Stripe Projects catalog (a listing, not confirmed by the vendor). Paid plans are managed in the team billing UI per the docs; the checkout itself was not reached because sign-up was blocked.

Ways to pay checked 11 Oct 2026.

For the team behind Netlify.

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

Stops at sign up

The fixes, highest impact first

  1. Show an error when sign-up is rejected
  2. Let a verified agent sign up headlessStep-by-step guide
  3. Let agents claim with a code, not a browserStep-by-step guide
4 more fixes
  1. Allow functions in anonymous deploys
  2. Document the anonymous site password
  3. Serve MCP server/discover and support CIMD Step-by-step guide
  4. Publish OpenAPI 3.x 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 · level history

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 done10
  2. Reliability100
  3. Crash test–

Level history

  1. 6 Oct 2026L2Gets in
  2. 11 Oct 2026L2Gets in

For agents and builders.

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

How an agent connects · 4 tips
  • Use `netlify deploy --allow-anonymous --dir <dir> --no-build --json` to ship a static site with no account; keep the returned password, the site answers 401 without it, and hand the claim_url to a human within one hour.
  • Anonymous deploys refuse functions and edge functions; deploy only static files that way.
  • `netlify login --request <message> --json` gives a URL for a human to approve and a check_command to poll for ten minutes.
  • Every docs page is Markdown at <url>.md; the OpenAPI is Swagger 2.0 at open-api.netlify.com/swagger.json.
Every checkpoint, in detail · 9 checkpoints
  1. DocsHeadlessdocs.netlify.com/llms.txt, every docs page as .md and via Accept: text/markdown, OpenAPI 2.0 at open-api.netlify.com/swagger.json linked from /.well-known/api-catalog, netlify.ai agent instructions.
  2. Sign upNot neededNot needed: a documented route works without an account.
  3. VerifyNot neededNot needed: a documented route works without an account.
  4. KeyNot neededNot needed: a documented route works without an account.
  5. First callHeadlessnetlify deploy --allow-anonymous (documented) works with no account: returns site_id, site_url, claim_url, claim_command and a site password.
  6. First actionHeadlessA static page deployed anonymously and read back at jolly-axolotl-a13c96.netlify.app (password-protected, 200 after the returned password). Functions and edge functions are refused without auth.
  7. PayNot reachedNo 402 anywhere, no x-payment-info, no /.well-known/ucp; we paid nothing. Netlify appears in the Stripe Projects catalog (a listing, not confirmed by the vendor). Paid plans are managed in the team billing UI per the docs; the checkout itself was not reached because sign-up was blocked.
  8. CancelNot neededNothing to cancel: our agent used the free plan.
  9. DeleteBlockedNo Netlify account was created (sign-up blocked), so there is no account to delete. `netlify sites:delete <id> --force` on our two anonymous projects (jolly-axolotl-a13c96, polite-caramel-10c81d) returned 'Authentication required': nothing was deleted and the error leaves no rejected-login evidence either way. Docs say unclaimed projects are removed automatically after one hour; that removal was not observed within the drive.
The attempt log · 54 attempts
Attempt log
CapabilityRouteResultEvidence
robots/aipref: robots.txt and Content-Usageapidone ✓www.netlify.com/robots.txt: 'User-agent: * Allow: /' and 'Content-Signal: search=yes, ai-input=yes, ai-train=yes' (Cloudflare Content Signals scheme, parses). No aipref Content-Usage line; no Content-Usage header on homepage. app.netlify.com/robots.txt allows all.
llms.txt + markdown: llms.txt and markdown docsapidone ✓https://docs.netlify.com/llms.txt 200 text/plain (H1 'LLM documentation for Netlify'); www.netlify.com/llms.txt 200 (pay_probe). Accept: text/markdown on docs page -> 200 content-type text/markdown, vary: Accept-Encoding, Accept. .md URL -> 200 text/markdown. netlify.ai serves agent instructions as markdown.
openapi: find OpenAPIapidone ✓https://open-api.netlify.com/swagger.json: swagger 2.0, info.version 2.60.0; linked from www.netlify.com/.well-known/api-catalog (RFC 9727 linkset, application/linkset+json).
mcp discover: server/discover on MCP endpointsmcpblocked ✓POST https://mcp.netlify.com/mcp and https://netlify-mcp.netlify.app/mcp with MCP-Protocol-Version 2026-07-28 server/discover -> 401 WWW-Authenticate: Bearer realm="MCP Server", resource_metadata=".../.well-known/oauth-protected-resource/mcp". PRM 200 JSON (auth server https://mcp.netlify.com/, scopes offline_access read write claudeai). AS metadata: registration_endpoint (DCR), no client_id_metadata_document_supported, PKCE S256, grants authorization_code+refresh_token (no device flow).
cards: MCP server card, AI catalog, A2A cardapidone ✓/.well-known/ai-catalog.json 404; /.well-known/agent-card.json 404; https://mcp.netlify.com/mcp/server-card 404; https://www.netlify.com/.well-known/mcp/server-card.json 200 application/json (Netlify MCP Server 1.15.1, url https://netlify-mcp.netlify.app/mcp, streamable-http).
pay probes: 402 challenges, registries, checkoutapidone ✓pay_probe.json: no 402 challenges on netlify.com, api.netlify.com, x402./mpp./agents. subdomains (404); /.well-known/ucp 404; OpenAPI no x-payment-info; listed in Stripe Projects catalog (name netlify) - a listing, not confirmed by a 402; free plan ('Free $0 forever'). pay_tx.json: refused, no 402 asking for USDC.
docs: find docs headlessapidone ✓docs.netlify.com llms.txt + .md pages fetched headless; OpenAPI fetched headless
sign up: Sign up with email at app.netlify.com/signup/emailbrowserblocked ✓Filled email the agent's inbox + password, clicked 'Sign up': button showed 'Sign up...' then the form reset with no error and no message. Captured network (signup_net.log): reCAPTCHA Enterprise reload (key [redacted]) answered a token, then no sign-up request reached any Netlify API; no verification mail after 60 s + later checks. One retry with the same behaviour, same result. No visible challenge (visible_challenge false).
verify email: Read verification mailnoneblocked ✓inbox read the agent's inbox: "no mail" (60 s wait + two later checks); sign-up never submitted
CLI login ticket: netlify login --request (agent/human-in-the-loop auth)clidone ✓netlify-cli 27.12.0 `netlify login --request 'AgentDrives test drive' --json` returned ticket_id, url https://app.netlify.com/authorize?response_type=ticket..., check_command, agent_next_steps 'Give the URL to the user so they can authorize. Then poll the check_command for up to ten minutes'. Needs a human with a Netlify account to approve.
API credentials: Get a token (PAT, CLI login, MCP OAuth)cliblocked ✓Every token route needs a signed-in account: PAT in User settings > Applications (UI), `netlify login` / `--request` ticket needs a human to approve at app.netlify.com/authorize, MCP OAuth (DCR at https://mcp.netlify.com/oauth-server/reg) ends at Netlify login. Sign-up was blocked, so no account.
first call: First CLI call with no accountclidone ✓`netlify deploy --allow-anonymous --dir. --no-build --json` answered site_id 78b3a327-..., site_url http://jolly-axolotl-a13c96.netlify.app, deploy_id 6acbb51b6b31274b8589310a, claim_url, claim_command, password [redacted]. Documented in get-started-with-cli.md "Anonymous deploys" (claim within one hour, else removed).
first action: Deploy a static page without an accountclidone ✓Anonymous deploy created a project; GET https://jolly-axolotl-a13c96.netlify.app/ -> 401 Password Protection page; POST password=(the returned password) -> 302 + cookie; GET -> 200 with our "AgentDrives test site v1" HTML.
Deploy a site: Deploy a static page with the CLIclidone ✓netlify deploy --allow-anonymous: deploy 6acbb51b6b31274b8589310a; site serves our HTML after the returned password (200).
Deploy a site: Anonymous deploy with functions and edge functionscliblocked ✓netlify deploy --allow-anonymous with netlify/functions and netlify/edge-functions -> 'This project includes serverless functions and edge functions which require authentication. Run netlify login --request <message> first, then retry your deploy command.'
Create a new site/project: Create a projectclipartial ✓Anonymous deploy created project [redacted] (jolly-axolotl-a13c96.netlify.app answers). Reading it back via GET /api/v1/sites/{id}, renaming or deleting needs a token; sign-up blocked.
Collect form submissions: Submit a data-netlify form on our anonymous siteapifailed ✓POST form-name=contact to https://jolly-axolotl-a13c96.netlify.app/ -> 404 Page not found (form not registered on the anonymous --no-build deploy); listing submissions needs GET /api/v1/sites/{id}/submissions with a token.
Deploy Previews: Deploy Previews on our own projectnoneblockedNeeds an authenticated account/token (API, CLI, MCP all require auth; anonymous deploy refuses functions/edge functions and offers no further project calls). Sign-up blocked by invisible reCAPTCHA Enterprise.
Roll back: Roll back on our own projectnoneblockedNeeds an authenticated account/token (API, CLI, MCP all require auth; anonymous deploy refuses functions/edge functions and offers no further project calls). Sign-up blocked by invisible reCAPTCHA Enterprise.
Serverless Functions: Serverless Functions on our own projectnoneblockedNeeds an authenticated account/token (API, CLI, MCP all require auth; anonymous deploy refuses functions/edge functions and offers no further project calls). Sign-up blocked by invisible reCAPTCHA Enterprise.
Edge Functions: Edge Functions on our own projectnoneblockedNeeds an authenticated account/token (API, CLI, MCP all require auth; anonymous deploy refuses functions/edge functions and offers no further project calls). Sign-up blocked by invisible reCAPTCHA Enterprise.
Custom domain: Custom domain on our own projectnoneblockedNeeds an authenticated account/token (API, CLI, MCP all require auth; anonymous deploy refuses functions/edge functions and offers no further project calls). Sign-up blocked by invisible reCAPTCHA Enterprise.
Build settings: Build settings on our own projectnoneblockedNeeds an authenticated account/token (API, CLI, MCP all require auth; anonymous deploy refuses functions/edge functions and offers no further project calls). Sign-up blocked by invisible reCAPTCHA Enterprise.
Environment variables: Environment variables on our own projectnoneblockedNeeds an authenticated account/token (API, CLI, MCP all require auth; anonymous deploy refuses functions/edge functions and offers no further project calls). Sign-up blocked by invisible reCAPTCHA Enterprise.
Image CDN: Resize a PNG on our own anonymous siteapidone ✓Anonymous deploy polite-caramel-10c81d.netlify.app with a 200x100 a.png; GET /.netlify/images?url=/a.png&w=50&fm=webp -> 200 image/webp, 300 bytes, VP8X header says 50x25.
Netlify Dev: netlify dev --offline with a function and an edge functionclipartialnetlify dev --offline started without an account: 'Loaded function hello', 'Local dev server ready: http://localhost:8899'. Edge Functions setup failed writing its Deno cache (read-only home in our sandbox). Calling the local port from the sandbox did not connect (loopback not reachable here), so the served response was not read back.
Create project from a prompt: netlify create "a one-page hello site"cliblocked ✓CLI: 'Error: Authentication required. NETLIFY_AUTH_TOKEN is not set ... use `netlify login --request <message>` as a next step.'
Netlify Blobs: netlify blobs:set without a linked sitecliblocked ✓CLI: 'MissingBlobsEnvironmentError: ... supply the following properties when creating a store: siteID, token' - needs a token. Needs a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable.
Password-protect a deploy: Set visitor access on our projectnoneblockedAnonymous deploys come password-protected by default (401 Password Protection page, CLI returns the password), but setting/changing visitor access needs an account. Needs a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable.
Lock/cancel a deploy: Lock/cancel a deploy on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable. API POST /deploys/{deploy_id}/cancel exists in OpenAPI 2.0.
Scheduled functions: Scheduled functions on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable. Anonymous deploy refuses functions.
Background functions: Background functions on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable. Anonymous deploy refuses functions.
Async Workloads: Async Workloads on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable.
Netlify Database: Netlify Database on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable. Map: paid plan.
AI Gateway: AI Gateway on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable.
Form spam filters: Form spam filters on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable.
Notifications: Notifications on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable. API /hooks and /hooks/types exist in OpenAPI.
Register a domain: Register a domain on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable. Map: paid plan; would cost money.
Netlify DNS: Netlify DNS on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable. API /dns_zones/{zone_id}/dns_records in OpenAPI.
HTTPS/SSL: HTTPS/SSL on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable.
Build hooks: Build hooks on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable. API /sites/{site_id}/build_hooks in OpenAPI.
Build plugins: Build plugins on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable.
Preview Servers: Preview Servers on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable. Map: paid plan.
Cache purge: Cache purge on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable.
Agent Runners: Agent Runners on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable.
Traffic rules: Traffic rules on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable.
Team members: Team members on our own projectnoneblockedNeeds a signed-in Netlify account or token; sign-up was blocked by an invisible reCAPTCHA Enterprise check, so not reachable. Would also invite a person; not done.
Audit log: Check it exists in the docsnoneblocked ✓docs team-audit-log.md 200: 'This feature is available on Pro and Enterprise plans.' UI only. Not callable: no account.
Transfer project: Check it exists in the docsnoneblocked ✓docs team-owned-sites.md 200: '## Transfer projects between teams' (UI). Not callable: no account.
SAML SSO: Check it exists in the docsnoneblocked ✓docs configure-team-saml-sso.md 200: 'This feature is available on Enterprise plans.' Not callable: no account.
Billing and usage: Check it exists in the docsnoneblocked ✓docs billing/overview.md 200: 'Monitor usage for Credit-based plans' (UI). Not callable: no account.
PAT / OAuth app: Check it exists in the docsnoneblocked ✓docs get-started-with-api.md 200: 'Netlify uses OAuth2 for authentication', 'To generate a personal access token (PAT): ... Applications > Personal access tokens' (UI after sign-in). Not callable: no account.
cancel: Cancel/downgrade a plannoneskippednot tested: no plan or trial was started (free plan exists; sign-up blocked). Docs billing FAQ: 'The downgrade is scheduled at the end of the billing cycle.' (done in the team billing UI per docs).
delete account: Delete the account and our projectscliblocked ✓No Netlify account was created (sign-up blocked), so there is no account to delete. Our two anonymous projects (jolly-axolotl-a13c96, polite-caramel-10c81d): `netlify sites:delete <id> --force` -> 'Error: Authentication required...'. Docs: 'You have one hour to claim ownership ... After one hour, unclaimed projects are removed.' Removal not observed within the drive.

Also in Hosting and deploys.