Can an AI agent use PlanetScale?
As of 2 Oct 2026, an AI agent gets into PlanetScale on its own.
- Find: Docs for agents: llms.txt, an OpenAPI and an MCP server.
- Access: Sign-up by email.
- Use: Work not reached.
- Pay: Card checkout.
- Leave: Leaves on its own: Nothing to cancel, deletes its account.
To reach L3 · Does the work: let a trial or free plan reach the core features.
With an account set up by a person: not measured yet.
What the levels meanDriven 2 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 agentsNot checked: its robots.txt asks crawlers to stay off the sign-up page.
- 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 PlanetScale.
On its own
- Sign up, confirm the account, and log in a command-line tool without ever opening a browser.
- Create API keys and connect to the official AI-agent interface (MCP) to run commands.
- Create and remove teams and members, and view billing and audit history.
1 more
- Get a payment link to add a credit card, but not complete payment without a human's card.
What it can't, and why
- Create a database, and therefore use almost every feature (branching, running queries, backups, scaling)No free plan exists; a credit card must be attached first
- Pay for the service on its ownOnly payment option is a human filling out a card form
- Delete its own account without a browserAccount deletion only exists in the website, not the command-line tool or API
Can an AI agent sign up for PlanetScale on its own?
Yes, over the API, without a browser. Public sign-up form at auth.planetscale.com/sign-up posted with curl (email, password, ToS). No CAPTCHA, no phone, signed datacenter agent let through. It is a web form, not an API.
Does PlanetScale have an MCP server, and can an agent connect to it?
Yes. PlanetScale has an official MCP server. The server is hosted, lists 25 tools and signs an agent in with OAuth.
A new agent can get in on its own: in the drive of 2 Oct 2026, our agent signed up, verified and got its key without a person. Through the MCP server, 0 of our agent's 1 attempt worked.
What the drive found
APIOpenAPIMCP · officialCLI–SDKllms.txtWebhooks–SandboxHow does an AI agent get a PlanetScale API key?
In the drive of 2 Oct 2026, our agent got its PlanetScale API key over the API, without a browser or a person. pscale auth login --format json starts an OAuth device flow; we approved the device code by posting the auth.planetscale.com/oauth/device form with our session cookie. Then pscale service-token create gave an API/MCP token.
Can an AI agent delete its PlanetScale account?
Yes, in a browser, without a human. No delete-account or delete-org route in the API (OpenAPI) or CLI. Web UI Settings > Account > Delete account: type email, re-enter password (confirm-access), done. Verified: CLI token expired, password sign-in fails.
Can an AI agent pay for PlanetScale?
Card checkout.
- Stripe Checkout
- Stripe Projects a third party's
- Cloud marketplace billing card checkout
What would let agents pay on their own
- 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 x402/MPP/L402: api.planetscale.com answers 401 JSON, x402./mpp./agents. subdomains do not resolve, no /.well-known/ucp, no x-payment-info in OpenAPI, nothing in Bazaar or mpp.dev. CLI and MCP return a Stripe Checkout URL to attach a card; we stopped there (no card). Once a card is attached, creating and resizing paid databases is headless via CLI/API, so with a card this would be. Stripe Projects lists planetscale/postgresql but is a developer preview behind an access request.
From the drive of 2 Oct 2026.
For the team behind PlanetScale.
Where agents stop in PlanetScale today, and the fixes that get them further, highest impact first.
The fixes, highest impact first
- Offer a card-free starter database for agentsStep-by-step guide
- Accept an agent-native payment railStep-by-step guide
- Add an account/org delete endpoint
1 more fix
- Clean JSX out of MCP docs-search snippets
- 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).
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
Behind the level.
The part scores and the measures behind them.
Part scores and the measures · paid plans
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
- Work done–
- Reliability75
- Crash test–
Needs a paid plan
Not counted in the level. Our drive used none (no free access).
| Capability | Plan |
|---|---|
| Create a database | Base (card on file), from $5/mo single-node Postgres |
| Create a branch | Base |
| Deploy request | Base |
| Revert schema change | Base |
| Run SQL | Base |
| Read replicas | Base |
| Resize cluster | Base |
| Sharding | Base |
| Promote branch | Base |
| ..(backups, insights, metrics, logs, inspect, passwords/roles, IP restrictions, private links, PgBouncer, traffic control, webhooks, imports, CDC, extensions, Neki) | Base |
| SSO | Base + SSO add-on ($199/mo) |
For agents and builders.
The drive as data, every checkpoint and all 45 attempts.
How an agent connects · 6 tips
/api/tools/planetscale.json/tools/planetscale.mdMCP get_tool {"slug":"planetscale"}
- Install the pscale binary from GitHub releases and always pass --format json: every error comes back with issues and next_steps.
- pscale auth login --format json prints a device URL and code; the human (or a logged-in session) approves it once; then create a service token for everything else.
- Service tokens: REST uses 'Authorization: <id>:<token>'; the MCP server wants 'Authorization: Bearer <token>' (secret only).
- Grant service-token access explicitly (pscale service-token add-access) or calls fail.
- There is no free plan: ask your human to attach a card first (pscale billing payment-method update gives a Stripe Checkout URL), or use Stripe Projects if you have preview access.
- pscale org team create needs --name; a positional name is rejected.
Every checkpoint, in detail · 9 checkpoints
- DocsHeadlessdocs/llms.txt (23.5 KB), .md twin of every page, an agent setup prompt (docs/agent-setup/prompt.md), OpenAPI at /docs/openapi.yaml (280 operations), pscale agent-guide --format json.
- Sign upHeadlessPublic sign-up form at auth.planetscale.com/sign-up posted with curl (email, password, ToS). No CAPTCHA, no phone, signed datacenter agent let through. It is a web form, not an API.
- VerifyHeadlessVerification mail arrived within seconds; opening the confirmation link with curl was enough.
- KeyHeadlesspscale auth login --format json starts an OAuth device flow; we approved the device code by posting the auth.planetscale.com/oauth/device form with our session cookie. Then pscale service-token create gave an API/MCP token.
- First callHeadlesspscale org list --format json and GET api.planetscale.com/v1/organizations with the service token returned org an inbox; MCP tools/list returned 25 tools.
- First actionBlockedCreating a database (CLI, API) returns 422 'We were unable to verify your credit card. Please add your payment information.' No free plan; cheapest is single-node Postgres from $5/mo. MCP has no create-database tool.
- PayNot triedNo x402/MPP/L402: api.planetscale.com answers 401 JSON, x402./mpp./agents. subdomains do not resolve, no /.well-known/ucp, no x-payment-info in OpenAPI, nothing in Bazaar or mpp.dev. CLI and MCP return a Stripe Checkout URL to attach a card; we stopped there (no card). Once a card is attached, creating and resizing paid databases is headless via CLI/API, so with a card this would be. Stripe Projects lists planetscale/postgresql but is a developer preview behind an access request.
- CancelNot neededNothing to cancel: our agent started no paid plan.
- DeleteIn a browserNo delete-account or delete-org route in the API (OpenAPI) or CLI. Web UI Settings > Account > Delete account: type email, re-enter password (confirm-access), done. Verified: CLI token expired, password sign-in fails.
The attempt log · 45 attempts
| Capability | Route | Result | Evidence |
|---|---|---|---|
| Find docs: Read llms.txt, agent setup prompt, plans, billing, Stripe Projects docs | api | done ✓ | https://planetscale.com/docs/llms.txt 200 text/plain (23.5 KB); /docs/agent-setup/prompt.md is an agent-targeted setup page; every page has a .md twin |
| Sign up: Create account with test email via the public sign-up form, headless | api | done ✓ | POST https://auth.planetscale.com/sign-up (Rails form: email, password, confirmation, tos; hidden honeypot left empty) -> 302 to app.planetscale.com/new; verification mail arrived |
| Verify email: Open confirmation link from mail | api | done ✓ | Mail Verify your PlanetScale account arrived within seconds; GET app.planetscale.com/confirmation?confirmation_token=•••• -> 302; account then authorized a device login and created org an inbox |
| Get CLI credentials: pscale auth login --format json (OAuth device flow), approve the device code headless with the session cookie | cli | done ✓ | login.out status pending with user_code; POST auth.planetscale.com/oauth/device (form) -> code_confirmed=true -> Authorization granted; pscale auth check --format json -> authenticated true, organization an inbox |
| First API call: pscale org list --format json | cli | done ✓ | [{name: an inbox, current: true}] |
| Check network latency to regions: pscale ping --format json | cli | done ✓ | JSON list of regions with latency, e.g. AWS eu-central-1 4.9ms, us-east-1 100.5ms |
| Create a database: pscale database create agentdrives-test --engine postgresql --org an inbox --format json | cli | blocked ✓ | CLI JSON: status error, issues[0].code unprocessable: We were unable to verify your credit card. Please add your payment information. |
| Create a database: Create a single-node Postgres (PS-5, $5/mo) via REST API with a service token | api | plan_gated ✓ | POST https://api.planetscale.com/v1/organizations/an inbox/databases {name, kind: postgresql, cluster_size PS_5, replicas 0} -> 422 {code: unprocessable, message: We were unable to verify your credit card. Please add your payment information.}; docs planetscale-plans: no free plan |
| Pay / add payment method: pscale billing payment-method update --format json (no card entered) | cli | partial ✓ | Returned {status: pending, id, checkout_url: https://checkout.stripe.com/c/pay/cs_live_••••, next_steps: payment-method status <id>}. Same via MCP tool planetscale_update_payment_method. We stopped there: no card. |
| Create and manage service tokens: Create service token, grant org access, list it, call the API with it | cli | done ✓ | pscale service-token create -> id [redacted]; add-access read_organization read_databases create_databases -> accesses listed; service-token list shows it; GET api.planetscale.com/v1/organizations with Authorization: <id>:<token> -> 200 list with an inbox |
| Agent access via MCP server: Connect to hosted MCP with service token Bearer, tools/list, call a tool; then run a read query | mcp | partial ✓ | initialize OK (server Gram); tools/list 25 tools incl. planetscale_execute_read_query/_write_query, update_payment_method; tools/call planetscale_list_organizations returned an inbox |
| Review the organization audit log: pscale audit-log list --format json after creating a service token | cli | done ✓ | Entry audit_action service_token.granted_access for auditable_id [redacted] |
| Manage organization members: pscale org member list --format json | cli | partial ✓ | Lists our admin user |
| Create a branch for isolated schema/data development: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). pscale branch create agentdrives-test dev -> 'source database agentdrives-test does not exist in organization an inbox'. |
| Deploy an online, zero-downtime schema change via a reviewable deploy request: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Revert a deployed schema change with no downtime or data loss: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Run SQL against a branch (interactive shell or non-interactive query): Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). pscale sql agentdrives-test main --query 'SELECT 1' -> 'database lookup: Not Found'. |
| Scale read traffic with replicas: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Resize a branch's cluster (compute/memory): Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Horizontally shard a database (explicit sharding workflow): Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Promote a development branch to production / switch over traffic: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Create and restore branch backups: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Restore a Postgres branch to a specific point in time: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| View query insights (slow/expensive queries from production traffic): Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| View anomaly detection and automated schema recommendations: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Query historical and live branch metrics (CPU, connections, QPS, etc.): Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Query recent Postgres/Neki branch logs: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Run live read-only diagnostic checks (bloat, locks, unused indexes, long-running queries): Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Manage database credentials (passwords/roles) for connecting: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Restrict database access by IP address: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Set up a private network connection (AWS PrivateLink / GCP Private Service Connect): Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Provision a dedicated PgBouncer connection pooler: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Set query traffic budgets to throttle runaway Postgres queries (Database Traffic Control): Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Create webhooks for database events: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Import an existing database (Cloudflare D1, Supabase, Neon, Heroku, Aurora): Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Stream change data capture (logical CDC) out of a database: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Enable curated Postgres extensions (pg_cron, pg_partman, pg_stat_statements, pg_strict, TimescaleDB, etc.): Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Manage Neki data topology, shards, routers, and sidecars: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| Configure Single Sign-On (SSO) for an organization: Prerequisite: an existing database on a paid plan | cli | plan_gated ✓ | Needs a database; database create returns 422 'We were unable to verify your credit card. Please add your payment information.' (no free plan). Not attempted beyond the database prerequisite. |
| View and update payment method: pscale billing payment-method show, then update (stop at Stripe Checkout) | cli | partial ✓ | show -> NOT_FOUND payment method does not exist in organization an inbox with next_step update; update -> Stripe Checkout URL + setup id; status command documented |
| Manage organization members, teams, and roles: Create team agentdrives-team, add ourselves, list members, delete team | cli | done ✓ | org team create --name agentdrives-team -> id 6agnb7c9bmpt slug agentdrives-team-2; team member add -> membership 15toeumujk9s; team member list shows it; team delete -> team deleted; team list -> [] |
| Create and manage service tokens: Delete the service token and confirm | cli | done ✓ | pscale service-token delete [redacted] -> token deleted; service-token list -> [] |
| Cancel plan: Nothing to cancel: no plan or database was started | none | skipped | Billing is per database; docs: deleting a database ends its billing; pscale database delete and billing payment-method delete exist in CLI/API |
| Delete account: Delete account and its only-member org | browser | done ✓ | No delete-user/org endpoint in OpenAPI (280 operations: only GET/PATCH /organizations/{org}, GET /user) or CLI. Web UI Settings > Account > Delete account: dialog asks to type email, then a confirm-access password page (sudo mode), then deleted -> redirected to sign-in. Afterwards pscale org list -> NO_AUTH token expired; password sign-in POST -> 302 back to sign-in. |
| CLI agent guide and JSON auth check: pscale agent-guide --format json and auth check --format json | cli | done ✓ | agent-guide status ok with guide text; auth check returned action_required with issues/next_steps before login, ok/authenticated after |
Also in Databases.
AirtableL4Gets in on its ownPlanetScale vs Airtable
NocoDBL4Gets in on its ownPlanetScale vs NocoDB
ConvexL3Gets in on its ownPlanetScale vs Convex
NeonL2Gets in on its ownPlanetScale vs Neon