Can an AI agent use Polar (polar.sh)?
As of 12 Oct 2026, an AI agent can't use Polar on its own: Cloudflare Turnstile on the email sign-in.
- Find: Docs for agents: llms.txt, an OpenAPI and an MCP server.
- Access: Can't sign up.
- Use: Work not reached.
- Pay: Payment not reached.
- Leave: Leaving not reached.
To reach L2 · Gets in: let an agent sign up on its own.
With an account set up by a person: not measured yet.
What the levels meanDriven 12 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 serverTurned away when they send the sign-up form.
- Signed agentsThe sign-up page opens. The check on the form still applies.
- 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 Polar (polar.sh).
On its own
- Read all the product documentation in machine-readable form
- Download the technical API specification
- Register as a developer application automatically
What it can't, and why
- Create an accountA human verification puzzle blocked the sign-up form
- Get an API keyKeys are only created inside the website dashboard, which needs sign-in
- Use any feature of the productNo account or key was ever obtained
1 more
- Pay for or cancel a paid planPlan changes only happen in the dashboard behind the same sign-in wall
Can an AI agent sign up for Polar on its own?
No. Sign-up: needs a human. Email sign-in on /auth shows a Cloudflare Turnstile widget; it failed our agent's browser ('Verification failed. Please try again.'). Other routes are Google/Apple/GitHub OAuth; no API or CLI sign-up.
Does Polar (polar.sh) have an MCP server, and can an agent connect to it?
Yes. Polar has an official MCP server. The server signs an agent in with OAuth.
A new agent can't get in on its own: in the drive of 12 Oct 2026, our agent stopped at sign up (it needs a person). Through the MCP server, 0 of our agent's 1 attempt worked.
What the drive found
APIOpenAPIMCP · officialCLISDKllms.txtWebhooksSandboxNot reached in this drive: the API key, deleting the account and paying. Every checkpoint, in detail
For the team behind Polar.
Where agents stop in Polar (polar.sh) today, and the fixes that get them further, highest impact first.
The fixes, highest impact first
- Let verified agents pass sign-in TurnstileStep-by-step guide
- Add an API route to create access tokensStep-by-step guide
- Offer device flow for CLI and MCPStep-by-step guide
2 more fixes
- Add a plan and billing API Step-by-step guide
- Document and expose account deletion
- 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.
Our agent couldn't get into Polar (polar.sh), so the work, its reliability and the crash test aren't measured. The part scores are what it could judge from the outside.
Part scores · 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).
Level history
- 6 Oct 2026L1Needs a person
- 12 Oct 2026L1Needs a person
For agents and builders.
The drive as data, every checkpoint and all 13 attempts.
How an agent connects · 3 tips
/api/tools/polar.json/tools/polar.mdMCP get_tool {"slug":"polar"}
- Read docs via https://polar.sh/docs/llms.txt and .md page URLs
- A human must sign in once and create an organization access token (Settings > Developers) or approve MCP OAuth
- Use https://sandbox-api.polar.sh with a sandbox token for tests; sandbox.polar.sh disallows all crawlers in robots.txt
Every checkpoint, in detail · 9 checkpoints
- DocsHeadlessllms.txt at /docs/llms.txt, .md pages and Accept: text/markdown, OpenAPI 3.1.0 at /docs/openapi/2026-10.openapi.json
- Sign upNeeds a humanEmail sign-in on /auth shows a Cloudflare Turnstile widget; it failed our agent's browser ('Verification failed. Please try again.'). Other routes are Google/Apple/GitHub OAuth; no API or CLI sign-up.
- VerifyNot reachedNo code mail sent: the Turnstile check failed first.
- KeyNot reachedOrganization access tokens are dashboard-only; DCR (POST /v1/oauth2/register) works headless but /oauth2/authorize sends to the same Turnstile sign-in. No device flow, no CIMD.
- First callNot reachedGET /v1/products/ -> 401 Unauthorized without a token.
- First actionNot reachedNo token.
- PayNot reachedFree Starter plan; Pro $20/mo, Growth $100/mo, Scale $400/mo switched in the dashboard behind the human sign-in. No 402, x402, MPP, Stripe Projects listing or billing API found. We paid nothing: no 402 asking for USDC.
- CancelNot reachednot tested: no plan or trial was started. Docs: plans can be switched anytime in the dashboard; downgrading to Starter moves to 5% + 50c.
- DeleteNot reachedNo account was created; the OpenAPI has no user or organization delete operation.
The attempt log · 13 attempts
| Capability | Route | Result | Evidence |
|---|---|---|---|
| docs: Find docs, llms.txt, OpenAPI | api | done ✓ | https://polar.sh/docs/llms.txt 200 text/plain (662 lines, H1 # Polar); /llms.txt 308 redirect; OpenAPI https://polar.sh/docs/openapi/2026-10.openapi.json openapi 3.1.0, info.version 2026-10, 128 paths/190 operations; also 2026-04 and 2027-01 specs listed |
| markdown docs: Accept: text/markdown on a docs page | api | done ✓ | GET https://polar.sh/docs/integrate/sandbox with Accept: text/markdown -> content-type: text/markdown; charset=utf-8, vary: rsc, accept-encoding, Accept, User-Agent; .md URLs (e.g. /docs/integrate/mcp.md) return markdown |
| MCP server/discover: POST server/discover to https://mcp.polar.sh/mcp/polar-mcp and /polar-sandbox | mcp | blocked ✓ | Both answer HTTP 401 application/json with WWW-Authenticate: Bearer resource_metadata="https://mcp.polar.sh/.well-known/oauth-protected-resource/mcp/polar-mcp"; PRM answers {resource, authorization_servers:[https://api.polar.sh]}; AS metadata has registration_endpoint https://api.polar.sh/v1/oauth2/register (DCR), no client_id_metadata_document_supported, no device_authorization_endpoint, code_challenge_methods S256 and plain. Hosted on Speakeasy Gram (CORS headers). Docs list 3 meta-tools search_tools/describe_tools/execute_tool over 100 operations |
| cards and preferences: AI catalog, server card, A2A card, aipref | api | done ✓ | polar.sh/.well-known/ai-catalog.json 404 html; mcp.polar.sh/mcp/polar-mcp/server-card 404 text/plain; /.well-known/agent-card.json and /.well-known/agent.json 404 html; robots.txt has no Content-Usage or Content-signal lines; no Content-Usage header on https://polar.sh/; /.well-known/ucp 404; /auth.md 404; /SKILL.md 404 |
| find docs: Find the docs an agent needs | api | done ✓ | llms.txt at https://polar.sh/docs/llms.txt, .md pages, OpenAPI 3.1.0 (2026-10), MCP, CLI and sandbox docs fetched headless |
| sign up: Create an account with the agent's inbox via https://polar.sh/signup (redirects to /auth; email sign-in creates the account) | browser | blocked ✓ | Only routes: Google, Apple, GitHub OAuth or email. Email path shows a Cloudflare Turnstile widget (Verify you are human, iframe challenges.cloudflare.com/.../turnstile/...) before the code is sent; after ~20 s the form said Verification failed. Please try again. No documented API or CLI sign-up (CLI polar auth login opens the browser; OpenAPI has no user/account creation). sandbox.polar.sh robots.txt is User-Agent: * Disallow: / |
| verify email: Read the login code mail | none | blocked | No mail sent: the Turnstile check failed before the code request |
| API credentials: Get an organization access token or OAuth token headless | api | blocked ✓ | OATs are created only in the dashboard (docs/integrate/oat: Settings > Developers > New Token); OpenAPI 2026-10 has no token-creation endpoint. DCR works headless: POST https://api.polar.sh/v1/oauth2/register -> 201 with client_id polar_ci_Yo93...; but /oauth2/authorize redirects to /auth (the Turnstile sign-in). No device flow, no CIMD in AS metadata. |
| first authenticated call: GET /v1/products/ | api | blocked ✓ | GET https://api.polar.sh/v1/products/ without token -> 401 application/json {"error":"Unauthorized","detail":"Unauthorized"}, WWW-Authenticate: Bearer realm="polar" |
| first create: Create a product | api | blocked | no token |
| pay step public probes: Find an agent way to pay for a Polar plan (Pro $20/mo, Growth $100/mo, Scale $400/mo) | api | blocked ✓ | pay_probe.json: no 402 challenges, no MPP/Stripe Projects/Bazaar listings, no checkout found; pay_tx.json: refused, no 402 asking for USDC. Own probes: GET https://api.polar.sh/v1/checkouts/ 401 (no 402); x402.polar.sh, mpp.polar.sh, agents.polar.sh do not resolve; /.well-known/ucp 404; llms.txt has 0 mentions of x402/MPP/USDC/Stripe Projects; OpenAPI 2026-10 has no plan or billing operation for the seller org. docs/merchant-of-record/fees.md: free Starter plan, paid plans you can switch between anytime (in the dashboard; checkout not visible without an account) |
| cancel plan: Cancel a paid plan | none | skipped | fees.md: You can switch between plans anytime ... downgrading to Starter lands you on the new 5% + 50c rate |
| delete account: Delete the account | none | blocked | No account was created (sign-up blocked by Turnstile). OpenAPI 2026-10 has no user or organization delete operation (organizations: list/create/get/update only) |
Also in Payments.
StripeL3Gets in on its ownPolar vs Stripe
Lemon SqueezyL1Can't sign up on its ownPolar vs Lemon Squeezy
MollieL1Can't sign up on its ownPolar vs Mollie