# Plaid docs: AI Agent Readiness Score 93.8% (A)

**93.8% · 75/80 · AI Agent Readiness Score · 25/30 reading points · 50/50 agent surface points**

Plaid received 10 PASS votes and passed 5 of five agent surface checks. The clearest finding came from the find the exact limits task.

- Tested: 2026-09-22
- Published: 2026-09-22
- Battery: v1
- Scoring: reading 30 pts · surface 50 pts
- Docs: https://plaid.com/docs/

Three AI models, GPT 5.6 Sol, Claude Opus 5, and DeepSeek v4 Flash, each read Plaid’s public documentation independently and attempted five first-hour developer jobs: link a Sandbox account, find the exact limits, recover from a 429, verify a webhook, use the Node client library.

No accounts, API calls, or code execution were used. Every verdict came from public pages and every published quotation passed a live verification check.

## Freshness

[How rechecks work](https://docsforagents.com/methodology/#freshness)

- Category: [Payments & business data](https://docsforagents.com/grades/?category=payments-business)
- Tested: 2026-09-22
- Quotes verified: 2026-09-22
- Surface rechecked: Not yet rechecked

## Agent surface checks · 50/50

| Check | Verdict | Points |
| --- | --- | --- |
| llms.txt | PASS | 10 |
| llms-full.txt | PASS | 10 |
| Markdown mirror | PASS | 10 |
| MCP server | PASS | 10 |
| Docs AI | PASS | 10 |

## The Reading Test · 25/30

| Task | GPT 5.6 Sol | Opus 5 | DeepSeek v4F | Consensus |
| --- | --- | --- | --- | --- |
| Link a Sandbox account | PASS | PASS | PASS | PASS |
| Find the exact limits | PARTIAL | PARTIAL | PARTIAL | PARTIAL |
| Recover from a 429 | PASS | PASS | PARTIAL | PASS |
| Verify a webhook | PASS | PASS | PASS | PASS |
| Use the Node client library | PARTIAL | PASS | PASS | PASS |

Docs platform: Custom Next.js (unscored) · verified 2026-09-22

## What to fix first

This fix could add up to 3 points to the AI Agent Readiness Score. The list ranks each fix by the points it would add. [How the ranking works](https://docsforagents.com/methodology/#what-to-fix-first)

1. **+3 points · Find the exact limits · PARTIAL**

   **Found:** The rate limit page hides the Sandbox table behind a client-side toggle, so the Markdown mirror carries only the Production table, and the page disclaims its own completeness.

   **Fix:** Put the Sandbox and Production rate limit tables in the page HTML and the .md mirror without a toggle, and label each column's scope.

   **Evidence:** [plaid.com/docs/errors/rate-limit-exceeded](https://plaid.com/docs/errors/rate-limit-exceeded/)

## What the docs get right

- **Link a Sandbox account: 3 PASS votes.** The Quickstart documents the complete five-step flow: get API keys, create link_token, open Link, exchange public_token for access_token, make product calls with access_token. One clear path with code examples.
- **Verify a webhook: 3 PASS votes.** The webhook pages cover URL registration, POST receipt, Sandbox firing, key retrieval, ES256 validation, age checks, and body-hash comparison.
- **5 of 5 agent surface checks.** Present: llms.txt, llms-full.txt, markdown mirrors, an MCP server, docs AI.

## Link a Sandbox account

**PASS**

PASS consensus from 3 PASS.

The Quickstart covers keys, Sandbox Link credentials, link-token creation, public-token exchange, and an /accounts/get response. The Quickstart runs API keys, /link/token/create, Link with user_good / pass_good, /item/public_token/exchange, and a first /accounts/get call as one numbered path with runnable Node code and a sample response. The Quickstart documents the complete five-step flow: get API keys, create link_token, open Link, exchange public_token for access_token, make product calls with access_token. One clear path with code examples.

## Find the exact limits

**PARTIAL**

PARTIAL consensus from 3 PARTIAL.

Plaid lists Sandbox and Production defaults by Item and client, and Billing states a 10-Item Trial quota, but the table disclaims completeness and customer uniformity. Production and Sandbox per-endpoint values agree exactly with the per-error-code prose where both exist, but the Sandbox table renders only after a client-side radio toggle and is absent from the page HTML and from the plaid.com/docs/errors/rate-limit-exceeded.md mirror, which carries only the Production table plus thirteen Sandbox sentences. The table lists 150+ endpoints with per-Item and per-client limits, but the entire page is client-rendered: column headers (Production vs Sandbox), explanatory text about retry strategy, and context about what each column means are invisible to fetching agents. Value formatting is inconsistent (some use combined '5 per minute, 30 per hour', others just '15 per minute'). Many Sandbox entries show N/A with no explanation.

## Recover from a 429

**PASS**

PASS consensus from 2 PASS, 1 PARTIAL.

The response examples show HTTP 429 and a specific error_code, while matching sections give causes and recovery steps. Each RATE_LIMIT_EXCEEDED error code carries a common-causes list, the exact limit that was hit, the verbatim HTTP 429 body, Dashboard activity-log troubleshooting, and a named escalation path to raise the limit. The docs identify RATE_LIMIT_EXCEEDED as an error_type with HTTP 429 status, but the page's guidance on retry behavior is in client-rendered content that cannot be extracted. The only specific Retry-After documentation lives on the webhooks page and describes Plaid's behavior when your server returns 429 to Plaid, not what to do when Plaid returns 429 to your client. An agent cannot reach a complete programmatic correction without guessing at backoff values.

## Verify a webhook

**PASS**

PASS consensus from 3 PASS.

The webhook pages cover URL registration, POST receipt, Sandbox firing, key retrieval, ES256 validation, age checks, and body-hash comparison. Registration via the webhook parameter of /link/token/create, on-demand delivery via /sandbox/item/fire_webhook, and ES256 JWT verification including the kid lookup, the 5-minute iat check, and the request_body_sha256 constant-time comparison are all documented with a complete Node implementation. The verification page documents every step end to end: extract JWT header from Plaid-Verification header, verify alg is ES256, fetch JWK via /webhook_verification_key/get, validate signature with JWT library, check iat within 5 minutes, compare request_body_sha256. The page includes a complete Node.js example implementation with key caching.

## Use the Node client library

**PASS**

PASS consensus from 2 PASS, 1 PARTIAL.

The concise async example matches the API reference's response.data.access_token, but the README's Promise example instead reads tokenResponse.access_token. plaid-node is named and linked on the Libraries page, and the add-to-app guides give npm install --save plaid plus a Configuration / PlaidApi / PlaidEnvironments initialization whose method form matches the Node snippets in the endpoint reference. The official plaid-node package on npm is documented with a README that shows installation, configuration with client_id/secret, and working examples for token exchange and product calls (accountsGet, transactionsSync). The method signatures match the API reference exactly. The Quickstart page uses the same library patterns, confirming consistency.

## The receipt

> Note that this table is not an exhaustive listing of all Plaid rate limits or rate-limited endpoints, that some customers may experience different rate limit thresholds from those shown, and that rate limits are subject to change at any time.

Plaid lists Sandbox and Production defaults by Item and client, and Billing states a 10-Item Trial quota, but the table disclaims completeness and customer uniformity.

- [plaid.com/docs/errors/rate-limit-exceeded/](https://plaid.com/docs/errors/rate-limit-exceeded/)

## Agent surface notes

Initialize returned HTTP 401 with a Bearer OAuth challenge naming realm plaid_mcp and resource metadata at mcp.plaid.com/.well-known/oauth-protected-resource/mcp.

Opening the docs search reveals an Ask Bill tab whose dialog offers a question box and reads Hi, I am Bill, you can ask me all about the Plaid API.

## 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 AI Agent Readiness Score counts fifteen reading votes at PASS 2, PARTIAL 1, and FAIL 0, for 30 possible points. Five agent surface checks add 10 points each. The total is 80. Consensus chips show each row majority and do not affect scoring. The panel split on 2 of five tasks. Quotes shown here were re-fetched and confirmed verbatim on 2026-09-22.

Methodology: https://docsforagents.com/methodology/

Canonical URL: https://docsforagents.com/reports/plaid-docs-ai-agent-readiness/
