{
 "slug": "stripe",
 "name": "Stripe",
 "url": "https://stripe.com",
 "domain": "stripe.com",
 "category": "payments",
 "category_name": "Payments",
 "tested_at": "2026-10-06",
 "run": "20261006T042207Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261006T042207Z",
   "date": "2026-10-06",
   "level": 3,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  }
 ],
 "level": 3,
 "level_name": "Does the work",
 "level_selfhost": null,
 "entry": "self-start",
 "door": {
  "passed": 1,
  "tries": 1,
  "self_start": true
 },
 "badges": [
  "agent-can-leave"
 ],
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: key by API"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "part",
   "text": "Work done: 67% of the core"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "part",
   "text": "Reaches the checkout: an agent payment on its API, none made yet",
   "value": "ready",
   "route": "agent_rail"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Leaves on its own: nothing to cancel, what it made goes after 7 days",
   "how": "no-account",
   "left": "expires",
   "after_hours": 168
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Find",
   "state": "yes",
   "text": "Docs agents can read: llms.txt, an OpenAPI and an MCP server",
   "have": [
    "llms_txt",
    "openapi",
    "mcp"
   ]
  },
  {
   "key": "access",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: key by API",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "part",
   "text": "Work done: 67% of the core",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "part",
   "text": "Reaches the checkout: an agent payment on its API, none made yet",
   "value": "ready",
   "route": "agent_rail",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Leaves on its own: nothing to cancel, what it made goes after 7 days",
   "how": "no-account",
   "left": "expires",
   "after_hours": 168,
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "key_by_api",
   "label": "Key by API",
   "routes": [],
   "minutes": 1.9,
   "core": "6/9"
  }
 ],
 "minutes": 1.9,
 "next": {
  "to": 4,
  "text": "Next: do 80% of the core work (now 67%)"
 },
 "stop": "pay",
 "core": "6/9",
 "scores": {
  "coverage": 47,
  "reliability": 100,
  "resilience": null,
  "setup": 100,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 100,
  "security": null,
  "standards": [
   {
    "standard": "MCP",
    "state": "current",
    "behind": null,
    "value": "2026-07-28"
   },
   {
    "standard": "MCP discovery",
    "state": "current",
    "behind": null,
    "value": "ok"
   },
   {
    "standard": "MCP client registration",
    "state": "behind",
    "behind": null,
    "value": "dcr"
   },
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 2,
    "value": "3.0.0"
   }
  ]
 },
 "reliability_method": "first-try",
 "resilience": null,
 "stress": [],
 "surface_audit": null,
 "coverage_core": 67,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 2,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": null,
  "prompt_sha": "f3d0adeeb256",
  "kb_version": "2+overlay-9e43028a2c",
  "identity": null
 },
 "methodology": 15,
 "rules_date": "2026-10-15",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 2,
  "signed": true,
  "inbox": [
   "agentdrives.com"
  ],
  "robots": "start"
 },
 "same_level_drives": 1,
 "drives": 1,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": null,
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "in"
  },
  "signed": {
   "state": "page",
   "kind": "signup",
   "at": "2026-10-12"
  },
  "browser": {
   "state": "in",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "docs.stripe.com/llms.txt (text/markdown, with instructions for LLM agents); every docs page as .md or via Accept: text/markdown."
  },
  "signup": {
   "status": "n/a",
   "note": "The documented `stripe sandbox create --non-interactive` CLI route gave working test credentials with no account, and the first call and the first action succeeded on them, so no sign-up was required to use the product headless. The optional upgrade, claiming the sandbox into a full Dashboard account via dashboard.stripe.com/register?claim=…, hit a visible hCaptcha puzzle after Create account."
  },
  "verify": {
   "status": "n/a",
   "note": "The CLI sandbox route asks for no email verification and no mail arrived; the full sign-up never got past hCaptcha, so its verification step was not reached."
  },
  "credentials": {
   "status": "headless",
   "note": "`stripe sandbox create --email <inbox> --non-interactive` (CLI 1.53.0) returned a restricted rkcs_test_ key, a pk_test_ key and a claim URL in 1.9 s, via proof-of-work, no account. The key is limited: balance, account, meters, Connect, payouts, Terminal, Tax, Issuing, disputes, reporting and credit-note creation answer 403 until a human claims the sandbox. The sandbox expires in 7 days.",
   "via": ""
  },
  "first_call": {
   "status": "headless",
   "note": "GET /v1/customers 200 with the sandbox key; MCP server/discover at mcp.stripe.com accepted the same key as Bearer."
  },
  "first_action": {
   "status": "headless",
   "note": "POST /v1/payment_intents with test card pm_card_visa: status succeeded, read back by GET."
  },
  "pay": {
   "status": "blocked",
   "grade": "P3",
   "rails": [
    "x402 v2 (USDC on Base",
    "MPP (WWW-Authenticate: Payment, methods tempo and evm)"
   ],
   "rail_ids": [
    "x402",
    "mpp"
   ],
   "first_party": true,
   "rail_scope": "side",
   "trial_path": "free tier",
   "note": "Stripe itself is pay-as-you-go with no setup or monthly fee (stripe.com/de/pricing), so there is no plan to buy; going live needs an account application in the Dashboard, which we could not reach (sign-up stopped at hCaptcha). Agent-native rails exist only on a side product: climate.stripe.dev/api/contribute (listed first-party on mpp.dev) answered 402 with PAYMENT-REQUIRED x402Version 2 and WWW-Authenticate: Payment. Not paid: no wallet.",
   "detected_grade": "P4",
   "exercised": false
  },
  "cancel": {
   "status": "n/a",
   "grade": "X5",
   "note": "Nothing to cancel: our agent used the free plan.",
   "docs_note": "No plan was started and nothing on Stripe recurs for the merchant (pay-as-you-go, no monthly fee).",
   "nothing": "free_plan"
  },
  "delete": {
   "status": "blocked",
   "note": "Our customers, coupon and webhook endpoint were deleted, the invoice voided, and the product/prices/payment link archived or deactivated via the API, but the sandbox account itself was not deleted: DELETE /v1/account returned 400 ('only on connected accounts'), the CLI has no sandbox-delete command, and the rkcs_test_ key still works (no rejected call was shown afterward). It is documented to expire unclaimed on the 13 Oct 2026 MCP spec, but that is not an agent-performed, verified deletion.",
   "left": "expires",
   "after_hours": 168,
   "account": false
  }
 },
 "routes": [],
 "checkout": null,
 "docs": null,
 "claims": null,
 "pay_options": {
  "checked": "2026-10-06",
  "source": "drive",
  "options": [
   {
    "id": "x402",
    "name": "x402",
    "kind": "agent-rail",
    "first_party": true,
    "lead": false,
    "networks": [],
    "testnet": false
   },
   {
    "id": "mpp",
    "name": "MPP",
    "kind": "agent-rail",
    "first_party": true,
    "lead": false,
    "networks": [],
    "testnet": false
   }
  ],
  "agentic": [
   "x402",
   "mpp"
  ],
  "paid": null,
  "exercised": false,
  "detected_grade": "P4",
  "trial": {
   "no_card": null,
   "card_required": null,
   "free_plan": true
  },
  "owner_fixes": [
   {
    "title": "List your plans on Stripe Projects",
    "how": "Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev)."
   },
   {
    "title": "Sell the plan or credits over the rail, not only side endpoints",
    "how": "Let the paid call buy what the product sells, so the rail covers the whole product."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "openapi": true,
  "cli": true,
  "sdk": true,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": true
 },
 "surface_notes": {
  "api": "REST v1 (+v2), form-encoded, idempotency keys honoured (Idempotent-Replayed: true)",
  "openapi": "official spec on GitHub stripe/openapi, openapi 3.0.0, version 2026-09-30.endive",
  "mcp": "official remote server, the 28 Jul 2026 spec, 9 tools incl. generic stripe_api_read/write and docs search",
  "cli": "stripe CLI 1.53.0: sandbox create, listen, trigger, resource commands"
 },
 "can_do": [
  "Get working test API keys with one CLI command, no account or browser",
  "Take a test card payment with a PaymentIntent and refund part of it",
  "Create products, prices and a payment link that resolves",
  "Create a Checkout Session and complete it in a browser with a test card",
  "Mount the Payment Element and confirm a payment with it",
  "Create, update and cancel a subscription",
  "Create, discount, finalize and send an invoice with a coupon and promotion code",
  "Create a webhook endpoint and receive signed events through stripe listen",
  "Search Stripe docs and call any API operation through the official MCP server"
 ],
 "cannot_do": [
  {
   "what": "Claim the sandbox into a full Stripe account",
   "why": "Visible hCaptcha puzzle on the sign-up form"
  },
  {
   "what": "Usage metering, Connect, Terminal, Tax, payouts, Issuing, disputes, credit notes, reporting/Sigma, payment method settings, crypto deposit addresses",
   "why": "The unclaimed-sandbox key answers 403 'claimable sandbox key with limited permissions' until a human claims it"
  },
  {
   "what": "Dashboard-only features (Data Pipeline, Authorization Boost, Capital, apps, team, support plans)",
   "why": "No Dashboard access without a claimed account"
  },
  {
   "what": "Delete the sandbox account now",
   "why": "No API or CLI delete; it expires after 7 days"
  }
 ],
 "blockers": [
  "Visible hCaptcha on dashboard.stripe.com/register (sandbox claim)",
  "Limited permissions on unclaimed sandbox keys"
 ],
 "tips_for_owner": [
  "Let verified agents claim sandboxes without CAPTCHA",
  "Widen unclaimed sandbox key permissions",
  "Fix stripe trigger fixtures for new sandboxes",
  "Add a sandbox delete command",
  "Match MCP path-parameter docs to the tool",
  "Offer MPP or x402 for Stripe's own add-ons"
 ],
 "tips_for_agents": [
  "Run `stripe sandbox create --email <you> --non-interactive` first: test keys in two seconds, no browser.",
  "Unclaimed sandbox keys are restricted: billing meters, Connect, Terminal, Tax, payouts, credit-note creation and reporting answer 403; plan for a human claim if you need them.",
  "Confirm PaymentIntents with automatic_payment_methods[enabled]=true and allow_redirects=never; payment_method_types is rejected on new sandboxes, which also breaks `stripe trigger`.",
  "The MCP server at mcp.stripe.com accepts the sandbox key as a Bearer token and speaks 2026-07-28; for stripe_api_read pass path parameters as 'id'.",
  "Use Idempotency-Key on creates: a replay returns the original object with Idempotent-Replayed: true.",
  "Hosted Checkout pages carry hidden instructions for AI agents (Link CLI) and an 'I am an AI agent' checkbox."
 ],
 "selfhost": null,
 "summary": "An agent gets working Stripe test keys with one CLI command and no account, then drives payments, Checkout, Elements, subscriptions, invoices, coupons, refunds, webhooks and the official MCP server headless (6 of 9 core capabilities). The unclaimed-sandbox key is restricted, and turning it into a full account means a sign-up form that showed a visible hCaptcha puzzle, so metering, Connect, Terminal and every Dashboard feature stayed out of reach. Agent-native payment rails (x402 v2 and MPP) exist, but only on Stripe's Climate side endpoint.",
 "wall": "hCaptcha puzzle when claiming the sandbox",
 "plan_scope": "unclaimed CLI sandbox (free, no account)",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "Stripe is a payments platform. An agent can get working test keys in seconds with no sign-up, and on its own it successfully took test payments, built invoices and subscriptions, and used Stripe's official AI-agent server. It stopped when trying to turn that test setup into a claimed (full) account, because a picture puzzle (CAPTCHA) appeared.",
  "can_do": [
   "Get working test payment keys instantly, with no sign-up or browser",
   "Take a test card payment and refund part of it",
   "Set up products, prices and a payment page",
   "Complete a payment through Stripe's hosted checkout page and a custom payment form",
   "Create, change and cancel a subscription",
   "Send an invoice with a discount code applied",
   "Get notified automatically when a payment happens",
   "Search Stripe's help docs and use Stripe's tools through its official AI assistant connection"
  ],
  "cannot_do": [
   {
    "what": "Turn the test setup into a claimed (full) account",
    "why": "A picture puzzle appeared on the sign-up form"
   },
   {
    "what": "Usage-based billing, routing money to other businesses, in-person card readers",
    "why": "These need a claimed account, which the picture puzzle blocked"
   },
   {
    "what": "Tax calculation, payouts, issuing cards, handling disputes, reports",
    "why": "Also restricted until a real account is set up"
   },
   {
    "what": "Delete the test setup itself right now",
    "why": "There is no delete button or command for it; it simply expires after 7 days"
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Payments",
   "capability": "Accept an online card payment",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/payment_intents",
    "mcp": "stripe_api_write",
    "cli": "stripe payment_intents create",
    "ui": "Dashboard > Payments"
   },
   "check": "GET /v1/payment_intents/{id} shows status succeeded",
   "source": "https://stripe.com/en-de/payments; https://docs.stripe.com/api/payment_intents"
  },
  {
   "id": "cap-02",
   "group": "Payments",
   "capability": "Create a no-code payment link",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/payment_links",
    "mcp": "stripe_api_write",
    "cli": "stripe payment_links create",
    "ui": "Dashboard > Payment links"
   },
   "check": "GET /v1/payment_links/{id} returns active:true and url resolves",
   "source": "https://stripe.com/en-de/payments/payment-links; https://docs.stripe.com/api/payment-link/create"
  },
  {
   "id": "cap-03",
   "group": "Payments",
   "capability": "Embed a prebuilt Checkout page",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/checkout/sessions",
    "mcp": "stripe_api_write",
    "cli": "stripe checkout sessions create",
    "ui": "Dashboard > Checkout settings"
   },
   "check": "GET /v1/checkout/sessions/{id} shows status complete after redirect flow",
   "source": "https://stripe.com/en-de/payments/checkout; https://docs.stripe.com/api/checkout/sessions/create"
  },
  {
   "id": "cap-04",
   "group": "Payments",
   "capability": "Build a custom payment UI with Elements",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Embedded JS components (Payment Element)"
   },
   "check": "Rendered Payment Element on page collects card and confirms a PaymentIntent",
   "source": "https://stripe.com/en-de/payments/elements"
  },
  {
   "id": "cap-05",
   "group": "Payments",
   "capability": "Accept in-person payments via Terminal",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": "POST /v1/terminal/readers/{reader}/process_payment_intent",
    "mcp": null,
    "cli": "stripe terminal",
    "ui": "Dashboard > Terminal readers"
   },
   "check": "GET /v1/payment_intents/{id} shows succeeded with payment_method_details.card_present",
   "source": "https://stripe.com/en-de/terminal; https://docs.stripe.com/api/terminal"
  },
  {
   "id": "cap-06",
   "group": "Revenue",
   "capability": "Create and manage a subscription",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST/PATCH/DELETE /v1/subscriptions",
    "mcp": "stripe_api_write (create/update/cancel subscription)",
    "cli": "stripe subscriptions create",
    "ui": "Dashboard > Billing > Subscriptions"
   },
   "check": "GET /v1/subscriptions/{id} shows status active, then canceled after cancel call",
   "source": "https://stripe.com/en-de/billing/subscriptions; https://docs.stripe.com/api/subscriptions"
  },
  {
   "id": "cap-07",
   "group": "Revenue",
   "capability": "Send a one-time or recurring invoice",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/invoices + POST /v1/invoices/{id}/finalize",
    "mcp": "stripe_api_write (create/finalize invoice)",
    "cli": "stripe invoices create",
    "ui": "Dashboard > Invoices"
   },
   "check": "GET /v1/invoices/{id} shows status open/paid and hosted_invoice_url reachable",
   "source": "https://stripe.com/en-de/invoicing; https://docs.stripe.com/api/invoices/create"
  },
  {
   "id": "cap-08",
   "group": "Revenue",
   "capability": "Meter usage-based billing",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": "POST /v1/billing/meter_events",
    "mcp": "stripe_analytics (query usage)",
    "cli": "stripe billing meter_events create",
    "ui": "Dashboard > Billing > Meters"
   },
   "check": "GET /v1/billing/meters/{id}/event_summaries shows incremented aggregated value",
   "source": "https://stripe.com/en-de/billing/usage-based-billing; https://docs.stripe.com/billing/subscriptions/usage-based"
  },
  {
   "id": "cap-09",
   "group": "Platforms",
   "capability": "Route payments and payouts for a connected platform/marketplace",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": "POST /v1/accounts, POST /v1/transfers",
    "mcp": null,
    "cli": "stripe accounts create",
    "ui": "Dashboard > Connect"
   },
   "check": "GET /v1/transfers/{id} shows destination connected account received funds",
   "source": "https://stripe.com/en-de/connect; https://docs.stripe.com/connect"
  },
  {
   "id": "cap-10",
   "group": "Payments",
   "capability": "Refund a payment",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/refunds",
    "mcp": "stripe_api_write (create refund)",
    "cli": "stripe refunds create",
    "ui": "Dashboard > Payments > Refund"
   },
   "check": "GET /v1/refunds/{id} shows status succeeded and charge.refunded=true",
   "source": "https://docs.stripe.com/api/refunds/create"
  },
  {
   "id": "cap-11",
   "group": "Revenue",
   "capability": "Automate sales tax and VAT calculation/filing",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /v1/tax/calculations",
    "mcp": null,
    "cli": "stripe tax calculations create",
    "ui": "Dashboard > Tax"
   },
   "check": "GET /v1/tax/calculations/{id} returns calculated tax_amount_exclusive > 0",
   "source": "https://stripe.com/en-de/tax"
  },
  {
   "id": "cap-12",
   "group": "Revenue",
   "capability": "Create and track a credit note",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/credit_notes",
    "mcp": "stripe_api_write (list credit notes)",
    "cli": "stripe credit_notes create",
    "ui": "Dashboard > Invoices > Credit notes"
   },
   "check": "GET /v1/credit_notes/{id} shows status issued against the invoice",
   "source": "https://docs.stripe.com/api/credit_notes/list"
  },
  {
   "id": "cap-13",
   "group": "Revenue",
   "capability": "Apply a coupon or promotion code",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/coupons, POST /v1/promotion_codes",
    "mcp": "stripe_api_write (create coupon/promotion code)",
    "cli": "stripe coupons create",
    "ui": "Dashboard > Products > Coupons"
   },
   "check": "GET /v1/invoices/{id} shows discount applied reducing total",
   "source": "https://docs.stripe.com/api/coupons/create; https://docs.stripe.com/api/promotion_codes/create"
  },
  {
   "id": "cap-14",
   "group": "Revenue",
   "capability": "Run custom SQL reports on payments data (Sigma)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "stripe_analytics",
    "cli": null,
    "ui": "Dashboard > Sigma"
   },
   "check": "Saved Sigma query returns a result set in the Dashboard query editor",
   "source": "https://stripe.com/en-de/sigma"
  },
  {
   "id": "cap-15",
   "group": "Revenue",
   "capability": "Sync Stripe data to a warehouse (Data Pipeline)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Data Pipeline"
   },
   "check": "Destination warehouse table receives a new synced row after an event",
   "source": "https://stripe.com/en-de/data-pipeline"
  },
  {
   "id": "cap-16",
   "group": "Revenue",
   "capability": "Automate revenue recognition entries",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "GET /v1/reporting/report_runs",
    "mcp": null,
    "cli": "stripe reporting report_runs create",
    "ui": "Dashboard > Revenue Recognition"
   },
   "check": "GET /v1/reporting/report_runs/{id} shows status succeeded with recognized revenue rows",
   "source": "https://stripe.com/en-de/revenue-recognition"
  },
  {
   "id": "cap-17",
   "group": "Payments",
   "capability": "Enable additional local/alternative payment methods",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET/POST /v1/payment_method_configurations",
    "mcp": "stripe_api_read (list payment method configurations)",
    "cli": "stripe payment_method_configurations list",
    "ui": "Dashboard > Settings > Payment methods"
   },
   "check": "GET /v1/payment_method_configurations/{id} shows the method status active",
   "source": "https://stripe.com/en-de/payments/payment-methods; https://docs.stripe.com/api/payment_method_configurations/list"
  },
  {
   "id": "cap-18",
   "group": "Payments",
   "capability": "Boost card authorization rates automatically",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Settings > Authorization Boost"
   },
   "check": "Dashboard analytics show improved authorization rate after enabling the feature",
   "source": "https://stripe.com/en-de/authorization-boost"
  },
  {
   "id": "cap-19",
   "group": "Payments",
   "capability": "Offer Link accelerated/saved-card checkout",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Checkout/Elements > Link toggle"
   },
   "check": "Returning Link customer completes checkout with autofilled saved payment method",
   "source": "https://stripe.com/en-de/payments/link"
  },
  {
   "id": "cap-20",
   "group": "Money management",
   "capability": "Verify linked bank account data (Financial Connections)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /v1/financial_connections/sessions",
    "mcp": null,
    "cli": "stripe financial_connections sessions create",
    "ui": "Embedded Financial Connections modal"
   },
   "check": "GET /v1/financial_connections/accounts shows linked account with retrieved balance",
   "source": "https://stripe.com/en-de/financial-connections"
  },
  {
   "id": "cap-21",
   "group": "Money management",
   "capability": "Send payouts to third parties (Global Payouts)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /v1/payouts",
    "mcp": null,
    "cli": "stripe payouts create",
    "ui": "Dashboard > Payouts"
   },
   "check": "GET /v1/payouts/{id} shows status paid",
   "source": "https://stripe.com/en-de/payouts"
  },
  {
   "id": "cap-22",
   "group": "Money management",
   "capability": "Apply for business financing (Capital)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Capital offer"
   },
   "check": "Dashboard shows an active financing offer accepted and funded to the balance",
   "source": "https://stripe.com/en-de/capital"
  },
  {
   "id": "cap-23",
   "group": "Money management",
   "capability": "Issue stablecoin-backed or crypto payments",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Crypto"
   },
   "check": "GET on crypto wallet balance endpoint shows a settled stablecoin transaction",
   "source": "https://stripe.com/en-de/use-cases/crypto; https://docs.stripe.com/treasury/stablecoins"
  },
  {
   "id": "cap-24",
   "group": "Money management",
   "capability": "Embed a crypto on-ramp for customers",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Embedded Crypto Onramp widget"
   },
   "check": "Onramp session completes and customer's external wallet balance increases",
   "source": "https://stripe.com/en-de/crypto-onramp"
  },
  {
   "id": "cap-25",
   "group": "Platforms",
   "capability": "Issue physical or virtual cards",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /v1/issuing/cards",
    "mcp": null,
    "cli": "stripe issuing cards create",
    "ui": "Dashboard > Issuing"
   },
   "check": "GET /v1/issuing/cards/{id} shows status active and a test authorization approved",
   "source": "https://stripe.com/en-de/issuing"
  },
  {
   "id": "cap-26",
   "group": "Platforms",
   "capability": "Offer embedded financial services to platform users (Treasury)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /v1/treasury/financial_accounts",
    "mcp": "get_balance_summary",
    "cli": "stripe treasury financial_accounts create",
    "ui": "Dashboard > Treasury"
   },
   "check": "GET /v1/treasury/financial_accounts/{id} shows status open with a nonzero balance",
   "source": "https://stripe.com/en-de/treasury/platforms"
  },
  {
   "id": "cap-27",
   "group": "Agentic commerce",
   "capability": "Monetize/sell through agentic commerce (AI checkout)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /v1/checkout/sessions (agent flows)",
    "mcp": "stripe_implementation_planner",
    "cli": null,
    "ui": "Dashboard > Agentic commerce settings"
   },
   "check": "An agent-initiated Checkout Session completes and GET shows status complete",
   "source": "https://stripe.com/en-de/use-cases/agentic-commerce"
  },
  {
   "id": "cap-28",
   "group": "Operations",
   "capability": "Receive event notifications via webhooks",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/webhook_endpoints",
    "mcp": "stripe_api_write (create webhook endpoint)",
    "cli": "stripe webhook_endpoints create",
    "ui": "Dashboard > Developers > Webhooks"
   },
   "check": "Endpoint URL receives a signed POST event after triggering a matching Stripe action",
   "source": "https://docs.stripe.com/api/webhook_endpoints/create"
  },
  {
   "id": "cap-29",
   "group": "Operations",
   "capability": "Manage products and prices in the catalog",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST/PATCH /v1/products, /v1/prices",
    "mcp": "stripe_api_write (create/update product or price)",
    "cli": "stripe products create",
    "ui": "Dashboard > Product catalog"
   },
   "check": "GET /v1/products/{id} and /v1/prices/{id} reflect created/updated values",
   "source": "https://docs.stripe.com/api/products/create; https://docs.stripe.com/api/prices/create"
  },
  {
   "id": "cap-30",
   "group": "Operations",
   "capability": "Manage disputes and chargebacks",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/disputes/{id}",
    "mcp": "stripe_api_write (update dispute)",
    "cli": "stripe disputes update",
    "ui": "Dashboard > Disputes"
   },
   "check": "GET /v1/disputes/{id} shows evidence submitted and status under_review",
   "source": "https://docs.stripe.com/api/disputes/update"
  },
  {
   "id": "cap-31",
   "group": "Operations",
   "capability": "Search Stripe documentation and knowledge base from an agent",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "search_stripe_documentation",
    "cli": null,
    "ui": "docs.stripe.com search"
   },
   "check": "MCP tool call returns relevant doc snippets with source URLs for a query",
   "source": "https://docs.stripe.com/mcp"
  },
  {
   "id": "cap-32",
   "group": "Account admin",
   "capability": "Configure business/branding settings",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/accounts (business_profile)",
    "mcp": "get_stripe_account_info",
    "cli": "stripe accounts update",
    "ui": "Dashboard > Settings > Branding"
   },
   "check": "GET /v1/accounts retrieve shows updated business_profile and branding fields",
   "source": "https://docs.stripe.com/api/accounts/retrieve"
  },
  {
   "id": "cap-33",
   "group": "Account admin",
   "capability": "Install third-party app integrations from the marketplace",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "marketplace.stripe.com"
   },
   "check": "Installed app appears under Dashboard > Apps with an active connection",
   "source": "https://marketplace.stripe.com/; https://stripe.com/en-de/apps"
  },
  {
   "id": "cap-34",
   "group": "Account admin",
   "capability": "Invite and manage team members with roles",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Team and security"
   },
   "check": "Dashboard team list shows invited member with assigned role",
   "source": "https://docs.stripe.com/mcp (Team and security section)"
  },
  {
   "id": "cap-35",
   "group": "Account admin",
   "capability": "Purchase a managed support plan",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Support plans"
   },
   "check": "Account support tier shown in Dashboard reflects the purchased plan",
   "source": "https://stripe.com/en-de/support-plans"
  }
 ],
 "attempts": [
  {
   "t": "01:05",
   "cap": "discovery",
   "capability": "robots.txt / aipref",
   "task": "Fetch stripe.com/robots.txt",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "200 text/plain; groups for ia_archiver, *, rogerbot; no Content-Usage or Content-signal lines; no Disallow affecting our agent beyond /handoff etc."
  },
  {
   "t": "01:05",
   "cap": "discovery",
   "capability": "MCP PRM",
   "task": "GET mcp.stripe.com/.well-known/oauth-protected-resource",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "200 application/json {\"resource\":\"https://mcp.stripe.com\",\"authorization_servers\":[\"https://access.stripe.com/mcp\"]}"
  },
  {
   "t": "01:05",
   "cap": "docs",
   "capability": "docs",
   "task": "Read llms.txt and docs as markdown",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "docs.stripe.com/llms.txt 200 text/markdown (92 KB) with LLM-agent instructions; .md URLs work (docs.stripe.com/cli/sandbox.md 200 text/markdown); docs/cli/sandbox.md documents `stripe sandbox create` provisioning a sandbox with test keys without an account via proof-of-work",
   "quality": {
    "docs_match": "match"
   }
  },
  {
   "t": "01:54",
   "cap": "credentials",
   "capability": "credentials",
   "task": "stripe sandbox create --email <inbox> --non-interactive (no account)",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "CLI v1.53.0 provisioned claimable sandbox [redacted] in 1.9 s via proof-of-work; returned rkcs_test_ restricted key + pk_test + claim_url, expires 2026-10-13 (7 days); keys saved to CLI profile",
   "notes": "No sign-up form, no email verification, no browser. Key is a claimable-sandbox key with limited permissions.",
   "quality": {
    "docs_match": "match"
   }
  },
  {
   "t": "01:55",
   "cap": "first_call",
   "capability": "The first call",
   "task": "GET /v1/balance, /v1/account, then GET /v1/customers",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "/v1/balance and /v1/account 403 'This is a claimable sandbox key with limited permissions. Use the claim URL...'; /v1/customers 200 list",
   "notes": "Probed 28 list endpoints: 200 for customers, products, prices, payment_intents, payment_links, checkout/sessions, subscriptions, invoices, refunds, credit_notes, coupons, promotion_codes, webhook_endpoints, events, charges; 403 for billing/meters, accounts, transfers, reporting, payment_method_configurations, financial_connections, payouts, issuing, treasury, disputes, terminal",
   "quality": {
    "error_legibility": "clear",
    "docs_match": "match"
   }
  },
  {
   "t": "02:04",
   "cap": "cap-01",
   "capability": "Accept an online card payment",
   "task": "Create+confirm a $19.99 PaymentIntent with test card pm_card_visa, read back",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v1/payment_intents -> pi_3UNPvBPTuDFQX5QN1CuvR41C status succeeded; GET shows succeeded, latest_charge ch_3UNPvBPTuDFQX5QN1UWctMxP. Retry with same Idempotency-Key returned same id (pi_3UNPvBPTuDFQX5QN1CuvR41C); changed body with same key -> 400 This is an unclaimed Stripe sandbox. Dashboard links in this error message will not work until the sandbox is claimed. K",
   "quality": {
    "verify_route": "yes",
    "idempotent": "yes",
    "docs_match": "match",
    "error_legibility": "clear"
   }
  },
  {
   "t": "02:04",
   "cap": "first_action",
   "capability": "The first action",
   "task": "First object created: PaymentIntent",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "pi_3UNPvBPTuDFQX5QN1CuvR41C succeeded (test mode)"
  },
  {
   "t": "02:17",
   "cap": "cap-29",
   "capability": "Manage products and prices in the catalog",
   "task": "Create product, one-time and monthly price, update product description, read back",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "product prod_VOCK5CyLqQI2uo, prices price_1UNPvVPTuDFQX5QND8NIIegJ (1500 usd) and price_1UNPvVPTuDFQX5QN8eyPfyb9 (900 usd/month); GET product shows description 'Updated by AgentDrives', GET price unit_amount 1500",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   }
  },
  {
   "t": "02:27",
   "cap": "cap-02",
   "capability": "Create a no-code payment link",
   "task": "Create payment link for the $15 price, read back, open URL",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "plink_1UNPvXPTuDFQX5QNd7Wh29OT active:true; https://buy.stripe.com/test_bJebJ37SF4U67UJ2jSffy00 returns 200",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   }
  },
  {
   "t": "02:27",
   "cap": "cap-10",
   "capability": "Refund a payment",
   "task": "Partial refund $5 of the $19.99 PaymentIntent",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "re_3UNPvBPTuDFQX5QN1vNGaPO9 status succeeded; charge amount_refunded=500, refunded=false (partial, as expected)",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   }
  },
  {
   "t": "02:43",
   "cap": "cap-06",
   "capability": "Create and manage a subscription",
   "task": "Customer + attached test card; create $9/month subscription, update quantity to 2, cancel, read back",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "sub_1UNPvkPTuDFQX5QNQUOebb5Y status active on create; quantity updated to 2; DELETE -> GET status canceled",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   }
  },
  {
   "t": "02:56",
   "cap": "cap-07",
   "capability": "Send a one-time or recurring invoice",
   "task": "Create send_invoice invoice for our test customer, add $50 item, finalize, send, read back",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "in_1UNPvzPTuDFQX5QNReY9WY9H finalized status open, total 4000; POST /send -> 200; hosted_invoice_url returns 200",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   },
   "notes": "Customer email is inbox"
  },
  {
   "t": "02:56",
   "cap": "cap-13",
   "capability": "Apply a coupon or promotion code",
   "task": "Create 20% once coupon + promotion code AGENTDRIVES20, apply coupon to invoice",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "coupon uHNxxKMK, promo promo_1UNPvyPTuDFQX5QNtjxtmroo; GET invoice subtotal 5000 total 4000 (20% off) discount amounts [{'amount': 1000, 'discount': 'di_1UNPvzPTuDFQX5QNkYFMNQ0w'}]",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   },
   "notes": "promotion_codes create accepted the newer promotion[type]=coupon shape"
  },
  {
   "t": "04:35",
   "cap": "cap-28",
   "capability": "Receive event notifications via webhooks",
   "task": "Create webhook endpoint via API; receive a signed event via `stripe listen` forwarding after creating a PaymentIntent",
   "route": "cli",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v1/webhook_endpoints -> we_1UNPwMPTuDFQX5QNx14jZhG8 (GET status enabled); `stripe listen --format json` got whsec_ signing secret and received payment_intent.succeeded evt_3UNPxDPTuDFQX5QN15YFfDmn for pi_3UNPxDPTuDFQX5QN1KQTgXWZ",
   "notes": "`stripe trigger payment_intent.succeeded` failed: its fixture sends payment_method_types, which this sandbox rejects ('The payment_method_types parameter is no longer supported'). `--print-json` is deprecated in favour of `--format json`.",
   "quality": {
    "verify_route": "yes",
    "docs_match": "drift",
    "error_legibility": "clear",
    "recoverable": "yes"
   }
  },
  {
   "t": "04:36",
   "cap": "cap-08",
   "capability": "Meter usage-based billing",
   "task": "POST /v1/billing/meters and /v1/billing/meter_events",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key'",
   "notes": "Not a paid plan: blocked until a human claims the sandbox (claim URL opens the Dashboard sign-up/sign-in in a browser).",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "04:36",
   "cap": "cap-09",
   "capability": "Route payments and payouts for a connected platform/marketplace",
   "task": "POST /v1/accounts (express, US)",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key'",
   "notes": "Not a paid plan: blocked until a human claims the sandbox (claim URL opens the Dashboard sign-up/sign-in in a browser).",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "04:36",
   "cap": "cap-05",
   "capability": "Accept in-person payments via Terminal",
   "task": "POST /v1/terminal/locations (prerequisite for a simulated reader)",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key'",
   "notes": "Not a paid plan: blocked until a human claims the sandbox (claim URL opens the Dashboard sign-up/sign-in in a browser).",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "04:36",
   "cap": "cap-12",
   "capability": "Create and track a credit note",
   "task": "POST /v1/credit_notes against the finalized invoice",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key'",
   "notes": "Blocked until the sandbox is claimed by a human.",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "04:36",
   "cap": "cap-11",
   "capability": "Automate sales tax and VAT calculation/filing",
   "task": "POST /v1/tax/calculations (US 98101)",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key'",
   "notes": "Blocked until the sandbox is claimed by a human.",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "04:36",
   "cap": "cap-16",
   "capability": "Automate revenue recognition entries",
   "task": "POST /v1/reporting/report_runs balance.summary.1",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key'",
   "notes": "Blocked until the sandbox is claimed by a human.",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "04:36",
   "cap": "cap-17",
   "capability": "Enable additional local/alternative payment methods",
   "task": "GET /v1/payment_method_configurations",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key'",
   "notes": "Blocked until the sandbox is claimed by a human.",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "04:36",
   "cap": "cap-20",
   "capability": "Verify linked bank account data (Financial Connections)",
   "task": "POST /v1/financial_connections/sessions",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key'",
   "notes": "Blocked until the sandbox is claimed by a human.",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "04:36",
   "cap": "cap-21",
   "capability": "Send payouts to third parties (Global Payouts)",
   "task": "POST /v1/payouts",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key'",
   "notes": "Blocked until the sandbox is claimed by a human.",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "04:36",
   "cap": "cap-25",
   "capability": "Issue physical or virtual cards",
   "task": "POST /v1/issuing/cardholders",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key'",
   "notes": "Blocked until the sandbox is claimed by a human.",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "04:36",
   "cap": "cap-30",
   "capability": "Manage disputes and chargebacks",
   "task": "Create disputed test payment (pm_card_createDispute -> charge disputed=True), then GET /v1/disputes",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key'",
   "notes": "Blocked until the sandbox is claimed by a human.",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "04:36",
   "cap": "cap-26",
   "capability": "Offer embedded financial services to platform users (Treasury)",
   "task": "POST /v1/treasury/financial_accounts",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "400 'Unrecognized request URL (POST: /v1/treasury/financial_accounts)' on the unclaimed sandbox (GET list gave the claimable-sandbox limited-permission message)",
   "quality": {
    "error_legibility": "vague"
   }
  },
  {
   "t": "04:36",
   "cap": "cap-32",
   "capability": "Configure business/branding settings",
   "task": "POST /v1/account business_profile[name]",
   "route": "api",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "400 'You cannot use this method on your own account: you may only use it on connected accounts.'; GET /v1/account 403 limited key",
   "notes": "Branding for own account is Dashboard-only in docs",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "05:00",
   "cap": "discovery",
   "capability": "MCP version",
   "task": "POST server/discover to https://mcp.stripe.com (2026-07-28), unauthenticated then with sandbox key",
   "route": "mcp",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "no key: 401 www-authenticate Bearer resource_metadata=…/.well-known/oauth-protected-resource; with Bearer rkcs key: 200 supportedVersions [2026-07-28, 2025-03-26], serverInfo stripe-mcp 1.0.0, extensions io.modelcontextprotocol/skills; tools/list: 9 tools"
  },
  {
   "t": "05:00",
   "cap": "cap-31",
   "capability": "Search Stripe documentation and knowledge base from an agent",
   "task": "MCP search_stripe_documentation 'How do I record usage with billing meter events?'",
   "route": "mcp",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "tools/call returned results with titles and docs.stripe.com URLs (e.g. changelog usage-based-billing-v2-meter-events-api)",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   }
  },
  {
   "t": "05:14",
   "cap": "mcp",
   "capability": "MCP write/read",
   "task": "MCP stripe_api_write PostCustomers, read back via stripe_api_read and REST",
   "route": "mcp",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "created cus_VOCM8UFnOmvBGk (MCP response redacts name/email as [REDACTED]); REST GET name='AgentDrives Test MCP'. stripe_api_read first failed 'Missing required path parameters: id' although the schema description says to pass 'customer'; retried with id -> ok",
   "quality": {
    "docs_match": "drift",
    "error_legibility": "clear",
    "recoverable": "yes"
   }
  },
  {
   "t": "05:14",
   "cap": "cap-14",
   "capability": "Run custom SQL reports on payments data (Sigma)",
   "task": "MCP stripe_analytics execute_query_run 'select count(*), sum(amount) from charges'",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "isError: 'Permission denied ... Enabling Financial Statement Read (report_runs_and_report_types_read) permissions on this key would allow this request' (unclaimed sandbox key)",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "08:33",
   "cap": "cap-03",
   "capability": "Embed a prebuilt Checkout page",
   "task": "Create a Checkout Session via API, complete it in a browser with Stripe test card 4242 (sandbox, no money)",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "POST /v1/checkout/sessions -> cs_test_a11OLA2tp9aZuIri4oneb1H0PX9YodlydQ87FQY99puXS0LnYJ3mE3hNrH (open); hosted page completed in browser, redirected to success_url; GET shows status complete, payment_status paid, 1500 usd",
   "notes": "Session created headless; paying is by design a buyer step on checkout.stripe.com. The card option's button only reacted to a dispatched click in Playwright. Invisible hCaptcha present on the page, passed without challenge. Page carries hidden instructions for AI agents (Link CLI) and an 'I am an AI agent' checkbox.",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   }
  },
  {
   "t": "09:21",
   "cap": "signup",
   "capability": "signup",
   "task": "Claim the sandbox: open claim_url, fill Stripe sign-up form (email = inbox, name AgentDrives Test, generated password, country left at the form default), click Create account",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "claim_url redirects to dashboard.stripe.com/register?claim=…; after Create account a visible hCaptcha picture puzzle appeared ('Tap on all things that can be filled up using air').",
   "notes": "Wall for the full account (and full API key). The unclaimed sandbox (credentials step) needed no sign-up at all.",
   "quality": {
    "recoverable": "no"
   }
  },
  {
   "t": "09:21",
   "cap": "verify",
   "capability": "verify",
   "task": "Email verification",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "No full account was created (sign-up stopped at hCaptcha); the CLI sandbox route asked for no verification"
  },
  {
   "t": "10:17",
   "cap": "pay",
   "capability": "pay",
   "task": "Probe 402 rails: api.stripe.com, x402./mpp./agents.stripe.com, /.well-known/ucp, auth.md, SKILL.md; registries mpp.dev and x402 Bazaar",
   "route": "api",
   "documented": true,
   "result": "partial",
   "verified": true,
   "evidence": "api.stripe.com unauthenticated 401 Basic realm=Stripe (no 402); x402./mpp./agents.stripe.com answer as the API host (401/404 JSON), no 402; /.well-known/ucp, /auth.md, /SKILL.md 404. mpp.dev lists stripe-climate (first-party, https://climate.stripe.dev). x402 Bazaar: no stripe.com resources."
  },
  {
   "t": "10:17",
   "cap": "pay",
   "capability": "pay",
   "task": "Unpaid POST https://climate.stripe.dev/api/contribute {amount:1}",
   "route": "api",
   "documented": true,
   "result": "partial",
   "verified": true,
   "evidence": "402 application/problem+json (type https://paymentauth.org/problems/payment-required); PAYMENT-REQUIRED base64 x402Version 2, scheme exact, network eip155:8453, USDC 0x8335…2913, amount 10000; WWW-Authenticate: Payment method=tempo intent=charge and method=evm intent=charge",
   "notes": "Real first-party agent-native rails (x402 v2 + MPP) but on a side product (Stripe Climate contributions), not on Stripe's own payments product. mpp.dev registry also lists method 'stripe' (usd) which the live 402 did not offer. No wallet: not paid."
  },
  {
   "t": "10:17",
   "cap": "pay",
   "capability": "pay",
   "task": "How would an agent start paying for Stripe itself",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Stripe has no plan to buy: it is free to start and charges per transaction once the account is activated for live payments. Activation runs through the Dashboard account application (claimable-sandboxes doc: user must complete an account application before going live). Our sign-up stopped at hCaptcha before that.",
   "notes": "Live activation (business identity and bank details) is a human step"
  },
  {
   "t": "10:40",
   "cap": "pay",
   "capability": "pay",
   "task": "Read stripe.com/pricing",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "stripe.com/pricing redirects to /de/pricing (geo); text: 'Pay-as-you-go-Preisen zu: Keine Einrichtungsgebühren, monatlichen Gebühren oder versteckten Gebühren' (no setup, monthly or hidden fees)"
  },
  {
   "t": "11:06",
   "cap": "cap-04",
   "capability": "Build a custom payment UI with Elements",
   "task": "Mount the Payment Element (Stripe.js, publishable key + PaymentIntent client_secret) on a page, fill test card 4242, stripe.confirmPayment",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "confirmPayment returned status succeeded; GET /v1/payment_intents/pi_3UNQ3ePTuDFQX5QN0ubhIuv0 status succeeded, payment_method pm_1UNQ3tPTuDFQX5QN7thdH9Bb",
   "notes": "Elements is a client-side UI component, so a browser is inherent; mounted on our own page.",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   }
  },
  {
   "t": "11:06",
   "cap": "cap-15",
   "capability": "Sync Stripe data to a warehouse (Data Pipeline)",
   "task": "UI-only capability",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Dashboard-only per map; no Dashboard access: sandbox unclaimed (sign-up stopped at hCaptcha)"
  },
  {
   "t": "11:06",
   "cap": "cap-18",
   "capability": "Boost card authorization rates automatically",
   "task": "UI-only capability",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Dashboard-only setting; no Dashboard access (sandbox unclaimed)"
  },
  {
   "t": "11:06",
   "cap": "cap-19",
   "capability": "Offer Link accelerated/saved-card checkout",
   "task": "UI-only capability",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Dashboard/Checkout toggle; no Dashboard access. Link opt-in box was shown on our Checkout page (not used)"
  },
  {
   "t": "11:06",
   "cap": "cap-22",
   "capability": "Apply for business financing (Capital)",
   "task": "UI-only capability",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Dashboard-only, needs a live activated account"
  },
  {
   "t": "11:06",
   "cap": "cap-23",
   "capability": "Issue stablecoin-backed or crypto payments",
   "task": "UI-only capability",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Dashboard-only per map; no Dashboard access"
  },
  {
   "t": "11:06",
   "cap": "cap-24",
   "capability": "Embed a crypto on-ramp for customers",
   "task": "UI-only capability",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Onramp needs approval in the Dashboard; no Dashboard access"
  },
  {
   "t": "11:06",
   "cap": "cap-33",
   "capability": "Install third-party app integrations from the marketplace",
   "task": "UI-only capability",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "marketplace install needs Dashboard login; sandbox unclaimed"
  },
  {
   "t": "11:06",
   "cap": "cap-34",
   "capability": "Invite and manage team members with roles",
   "task": "UI-only capability",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Dashboard-only; sandbox unclaimed; would also message a third party"
  },
  {
   "t": "11:06",
   "cap": "cap-35",
   "capability": "Purchase a managed support plan",
   "task": "UI-only capability",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "Dashboard-only and costs money: not attempted"
  },
  {
   "t": "11:22",
   "cap": "cap-27",
   "capability": "Monetize/sell through agentic commerce (AI checkout)",
   "task": "Seller side of machine payments (x402): POST /v1/crypto/deposit_addresses network=base with Stripe-Version 2026-05-27.preview",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "403: The provided key 'rkcs_test_51*******************************************************************************************uQEh' does not have access to this endpoint. This is a claimable sandbox key wi",
   "notes": "Docs: stablecoin payments must first be requested in Dashboard > Payment methods (Stablecoins and Crypto); 'Agents' (embedded commerce) is private preview with a waitlist.",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "11:51",
   "cap": "delete",
   "capability": "delete",
   "task": "Delete what we created and the sandbox itself",
   "route": "api",
   "documented": true,
   "result": "partial",
   "verified": true,
   "evidence": "Deleted 2 customers, the coupon and the webhook endpoint (deleted:true); voided the invoice; archived product, 2 prices, deactivated the payment link (products with prices cannot be deleted); GET /v1/customers -> 0. DELETE /v1/account -> 400 'You cannot use this method on your own account: you may only use it on connected accounts.' No sandbox delete command in the CLI (sandbox has create and claim only); docs: the unclaimed sandbox expires after 7 days (2026-10-13).",
   "quality": {
    "error_legibility": "clear",
    "verify_route": "yes"
   }
  },
  {
   "t": "11:51",
   "cap": "cancel",
   "capability": "cancel",
   "task": "Cancel or downgrade a plan",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": true,
   "evidence": "No plan was started; Stripe pricing is pay-as-you-go with no monthly fee (stripe.com/de/pricing); the test subscription we created for a customer was cancelled via DELETE /v1/subscriptions"
  },
  {
   "t": "12:21",
   "cap": "discovery",
   "capability": "markdown",
   "task": "Accept: text/markdown on docs.stripe.com/payments/checkout; .md URLs",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "content-type text/markdown, vary: Accept, Accept-Language; docs.stripe.com/<page>.md also 200 text/markdown"
  },
  {
   "t": "12:21",
   "cap": "discovery",
   "capability": "OpenAPI",
   "task": "Official spec github.com/stripe/openapi latest/openapi.spec3.sdk.json",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "openapi: 3.0.0, info.version 2026-09-30.endive (live API header stripe-version: 2026-09-30.endive)"
  },
  {
   "t": "12:21",
   "cap": "discovery",
   "capability": "MCP auth",
   "task": "GET https://access.stripe.com/.well-known/oauth-authorization-server/mcp",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "issuer access.stripe.com/mcp; registration_endpoint …/oauth2/register (DCR); no client_id_metadata_document_supported; grant types authorization_code, refresh_token; PKCE S256; no device_authorization_endpoint; no agent_auth block"
  }
 ],
 "stale": false,
 "icon": "/logos/stripe.png",
 "monitored": false,
 "verdict": "Gets in on its own through the CLI sandbox, no sign-up needed: L3 · Does the work. A working test key, a public key and a claim link arrived from one command, and that key passed the first call and the first action. It drove payments, Checkout, Elements, subscriptions, invoices, coupons, refunds, webhooks and the official MCP server headless. Claiming the sandbox into a full Dashboard account stopped at an hCaptcha puzzle after Create account, so metering, Connect, Terminal and every Dashboard feature stayed out of reach. Stripe charges per use with nothing to buy upfront; going live needs that same blocked sign-up. Cleanup removed the test data, but the sandbox account itself could not be deleted.",
 "page": "https://agentdrives.com/tools/stripe?via=api"
}