Published 2026-08-06 · Tested 2026-08-05

Stripe

C+

Stripe now writes documentation to the AI agent directly. The panel measured what that steering does to the classic integration path.

Panel: GPT 5.6 Sol, Opus 5, DeepSeek v4F Battery: v1 Verified: 2026-08-05 and 2026-08-06

Three AI models, GPT 5.6 Sol, Claude Opus 5, and DeepSeek v4 Flash, each read Stripe’s public documentation independently and attempted five first-hour developer jobs: accept a test payment, find the rate limits, recover from a 429, set up webhooks end to end, and use the Python SDK.

No accounts, no API calls, no code execution. A verdict means the docs got an agent to a confident answer, backed by a verbatim quote from a live page. Where the panel disagreed, the matrix shows the split.

Stripe custom in-house · tested 2026-08-05
C+

78.8% · 63/80 · Agent-Ready Grade · reading 30 pts · readiness 50 pts

llms.txt PASS
llms-full.txt FAIL
markdown mirror PASS
MCP server PASS
docs AI PASS
Task GPT 5.6 SolOpus 5DeepSeek v4F Consensus
Accept a test payment PARTIALPARTIALPASS PARTIAL
Find the rate limits PASSPARTIALPASS PASS
Recover from a 429 PASSPASSPASS PASS
Webhooks end to end PARTIALPARTIALPASS PARTIAL
Use the Python SDK PARTIALPARTIALPASS PARTIAL

docs platform: custom in-house (unscored) · verified 2026-08-05 and 2026-08-06

What the docs get right

  • The most specific rate-limit page in the pilot. Live and sandbox numbers, per-endpoint and concurrency limits, read-request allocations, and a header taxonomy that says which limit was hit.
  • 429 recovery with no dead ends. Four pages chain cleanly from the status table to a typed stripe.RateLimitError with remediation, and a 429 without the rate-limit header is distinguished as a lock timeout.
  • Markdown mirrors of every page. Each page serves a clean .md variant, so tabbed code samples survive fetching.
  • Test keys in every sample. Sample test API keys are embedded in the examples, so an agent can check a call shape immediately.

Accept a test payment

PARTIAL

Credentials are unambiguous. The friction is where the docs steer: the Python quickstart’s first SDK request creates a Product and a Price rather than a payment, and reaching an actual test payment means assembling create and confirm steps from separate pages. The Payment Intents variant of accept-a-payment opens by telling the reading agent not to use that API.

DeepSeek followed the embedded test keys through one path and passed it.

Find the rate limits

PASS

The dedicated page states exact numbers: 100 requests per second in live mode, 25 in sandbox, per-endpoint and resource-specific limits, and read-request allocations, consistent across the pages that reference them.

Opus 5 graded PARTIAL because the canonical table omits limits that exist only on product pages, so an agent reading the canonical page infers a lower limit than some endpoints actually have.

Recover from a 429

PASS

Unanimous. The chain runs from the API status table to the rate_limit error code to the typed exception with remediation, and the Stripe-Rate-Limited-Reason header decodes which limit fired. A 429 without that header is identified as a lock timeout, a distinction none of the other pilot products draw.

Webhooks end to end

PARTIAL

The main guide is unusually complete on one page: handler code, stripe listen forwarding, stripe trigger for the success event, endpoint registration, and both library and manual HMAC verification. Every page agrees the success event is payment_intent.succeeded.

Opus 5’s PARTIAL: the Python samples disagree on the verification API, catching stripe.error.SignatureVerificationError in the quickstart while the error-handling reference documents stripe.SignatureVerificationError. GPT’s PARTIAL traces to the payment-events guide, which labels signature checking optional and opens with a handler example that parses the event without verifying it.

Use the Python SDK

PARTIAL

The SDK is trivially findable, with a pinned version and a repository that resolves. No single Python page shows a minimal payment: the quickstart creates a Product and a Price, and the payment call has to come from the API reference, which uses a different call signature for the same client.

DeepSeek passed it on the strength of the SDK pattern matching the REST shape.

The receipt

Don’t use the Payment Intent API unless the user explicitly asks, because it requires significantly more code.

An instruction addressed to the AI agent reading the page, on the Payment Intents variant of accept-a-payment.

Readiness notes

The MCP server at mcp.stripe.com is live and auth-gated, answering unauthenticated requests with a 401.

Docs pages open with agent-facing setup blocks, including the lines “Integrate with Stripe using skills and plugins” and “run stripe agent setup”. The quickstart PARTIALs trace to this steering layer making the classic path ambiguous.

Method note

This is a reading test of public documentation, not an execution test. No accounts were created and no API calls were run. The Agent-Ready Grade counts the fifteen reading votes at PASS 2, PARTIAL 1, FAIL 0 (30 points) and the five readiness checks at 10 points each (50 points), out of 80, shown as a US school letter grade with its percentage. Consensus chips show each row’s majority and play no scoring role. The panel split on four of the five tasks, and the matrix shows every vote, including a judge spread from five PASS votes to one. Quotes shown here were re-fetched and confirmed verbatim on the dates above.

Read the full methodology

Put another docs site through the battery.

Nominate a docs site