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.
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.
78.8% · 63/80 · Agent-Ready Grade · reading 30 pts · readiness 50 pts
AI agent readiness · 40/50
The Reading Test
| Task | GPT 5.6 Sol | Opus 5 | DeepSeek v4F | Consensus |
|---|---|---|---|---|
| Accept a test payment | PARTIAL | PARTIAL | PASS | PARTIAL |
| Find the rate limits | PASS | PARTIAL | PASS | PASS |
| Recover from a 429 | PASS | PASS | PASS | PASS |
| Webhooks end to end | PARTIAL | PARTIAL | PASS | PARTIAL |
| Use the Python SDK | PARTIAL | PARTIAL | PASS | 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
PARTIALCredentials 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
PASSThe 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
PASSUnanimous. 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
PARTIALThe 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
PARTIALThe 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.
Put another docs site through the battery.
Nominate a docs site