How Plaid’s scores are calculated
The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.
verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10
PA Score18/100
Agent-ready 33.8 × 0.30 = 10.14
API quality 11.4 × 0.20 = 2.28
Openness 8.6 × 0.20 = 1.72
Built-in AI 14.0 × 0.15 = 2.10
Automation 10.3 × 0.15 = 1.55
(10.14 + 2.28 + 1.72 + 2.10 + 1.55) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 17.79 ÷ 1.00 = 17.8
Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.
Agent-ready33.8/100×0.30 of the PA blend
Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.
Point an agent at llms.txt or agent-oriented docsweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [probe] https://plaid.com/llms.txt“PROBE llms.txt: HTTP 200 at https://plaid.com/llms.txt # Plaid > Plaid helps all companies build fintech solutions by making it easy, safe and reliable for people to connect”
- [probe] https://plaid.com/docs/.md“PROBE docs-md: HTTP 404 at https://plaid.com/docs/.md”
- [probe] https://plaid.com/openapi.json“PROBE openapi: all candidate paths 404 (https://plaid.com/openapi.json, https://plaid.com/swagger.json, https://plaid.com/api/openapi.json, https://plaid.com/.well-known/openapi.json)”
Run the product headlessly / in CI for automationweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [claimed-docs] https://plaid.com/docs/sandbox/index.html.md“you can also create Items in Sandbox via the API, using a special Sandbox-only endpoint, /sandbox/public_token/create. This endpoint allows you to generate a public_token for an arbitrary institution ID, initial products, and test credentials.”
- [claimed-docs] https://plaid.com/docs/sandbox/index.html.md“The Plaid Sandbox is a free and fully-featured environment for application development and testing. All Plaid functionality of both the Plaid API and Plaid Link is supported in the Sandbox environment.”
- [github] https://github.com/plaid/plaid-node“try { await plaidClient.transactionsSync(request); } catch (error) { const err = error.response.data; }”
- [github] https://github.com/plaid/plaid-node“All errors can now be caught using try/catch with async/await or through promise chaining.”
- [claimed-docs] https://plaid.com/docs/quickstart/index.html.md“Let's test out running Plaid locally by cloning the Quickstart app. You'll need API keys, which you can receive by signing up in the Dashboard.”
Plug MCP servers into this product so it can use their toolsweight 3
n/a — not applicable to this product: excluded from numerator and denominator
- [claimed-docs] https://plaid.com/docs/resources/mcp/index.html.md“The Dashboard MCP server is a remote MCP server hosted by Plaid. It provides Production diagnostics and analytics tools, including tools for debugging Items, reviewing Link conversion data, and checking usage metrics.”
- [probe] https://plaid.com/docs/resources/mcp/“official MCP server documented at https://plaid.com/docs/resources/mcp/”
Connect an agent via an official MCP serverweight 3
3 (weight) × 7 (quality) × 0.6 (partial) = 12.6 of 30 max
- [claimed-docs] https://plaid.com/docs/resources/mcp/index.html.md“The Dashboard MCP server is a remote MCP server hosted by Plaid. It provides Production diagnostics and analytics tools, including tools for debugging Items, reviewing Link conversion data, and checking usage metrics.”
- [probe] https://plaid.com/docs/resources/mcp/“official MCP server documented at https://plaid.com/docs/resources/mcp/”
Use an official CLIweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Drive the product through a documented public APIweight 3
3 (weight) × 7 (quality) × 0.6 (partial) = 12.6 of 30 max
- [claimed-docs] https://plaid.com/docs/auth/index.html.md“Auth allows you to request a user's checking, savings, or cash management account and routing number, making it easy for you to initiate credits or debits via ACH, wire transfer, or equivalent international networks.”
- [claimed-docs] https://plaid.com/docs/balance/index.html.md“Balance is Plaid's product for receiving real-time balance information. This data is commonly used to tell if an account has sufficient funds before using it as a funding source for a payment transaction”
- [claimed-docs] https://plaid.com/docs/identity/index.html.md“Plaid's Identity product helps you verify users' identities by accessing information on file with their financial institution.”
- [claimed-docs] https://plaid.com/docs/transactions/index.html.md“Retrieve up to 24 months of transaction data and stay up-to-date with webhooks”
- [claimed-docs] https://plaid.com/docs/sandbox/index.html.md“The Plaid Sandbox is a free and fully-featured environment for application development and testing... you can create an unlimited number of test Items.”
- [claimed-docs] https://plaid.com/docs/api/webhooks/index.html.md“Plaid sends webhooks to programmatically inform you about changes to Plaid Items or the status of asynchronous processes.”
- [claimed-docs] https://plaid.com/docs/sandbox/index.html.md“you can also create Items in Sandbox via the API, using a special Sandbox-only endpoint, /sandbox/public_token/create. This endpoint allows you to generate a public_token for an arbitrary institution ID, initial products, and test credentials.”
- [github] https://github.com/plaid/plaid-node“try { await plaidClient.transactionsSync(request); } catch (error) { const err = error.response.data; }”
- [github] https://github.com/plaid/plaid-node“All errors can now be caught using try/catch with async/await or through promise chaining.”
- [probe] https://plaid.com/docs/.md“PROBE docs-md: HTTP 404 at https://plaid.com/docs/.md”
- [probe] https://plaid.com/openapi.json“PROBE openapi: all candidate paths 404 (https://plaid.com/openapi.json, https://plaid.com/swagger.json, https://plaid.com/api/openapi.json, https://plaid.com/.well-known/openapi.json)”
Issue scoped/least-privilege API credentials for an agentweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://plaid.com/docs/resources/mcp/index.html.md“The Dashboard MCP server is a remote MCP server hosted by Plaid. It provides Production diagnostics and analytics tools, including tools for debugging Items, reviewing Link conversion data, and checking usage metrics.”
- [claimed-docs] https://plaid.com/docs/quickstart/index.html.md“Let's test out running Plaid locally by cloning the Quickstart app. You'll need API keys, which you can receive by signing up in the Dashboard.”
- [claimed-docs] https://plaid.com/docs/sandbox/index.html.md“The Plaid Sandbox is a free and fully-featured environment for application development and testing... you can create an unlimited number of test Items.”
Build against official SDKsweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [github] https://github.com/plaid/plaid-node“try { await plaidClient.transactionsSync(request); } catch (error) { const err = error.response.data; }”
- [github] https://github.com/plaid/plaid-node“All errors can now be caught using try/catch with async/await or through promise chaining.”
- [claimed-docs] https://plaid.com/docs/quickstart/index.html.md“Let's test out running Plaid locally by cloning the Quickstart app. You'll need API keys, which you can receive by signing up in the Dashboard.”
Subscribe to events via webhooksweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [claimed-docs] https://plaid.com/docs/api/webhooks/index.html.md“Plaid sends webhooks to programmatically inform you about changes to Plaid Items or the status of asynchronous processes.”
- [claimed-docs] https://plaid.com/docs/transactions/index.html.md“Retrieve up to 24 months of transaction data and stay up-to-date with webhooks”
Agent-ready = 60.8 ÷ 180 × 100 = 33.8
API quality11.4/100×0.20 of the PA blend
The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.
Explore an interactive API reference with runnable examplesweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://plaid.com/docs/quickstart/index.html.md“Let's test out running Plaid locally by cloning the Quickstart app. You'll need API keys, which you can receive by signing up in the Dashboard.”
- [probe] https://plaid.com/docs/.md“PROBE docs-md: HTTP 404 at https://plaid.com/docs/.md”
- [probe] https://plaid.com/openapi.json“PROBE openapi: all candidate paths 404 (https://plaid.com/openapi.json, https://plaid.com/swagger.json, https://plaid.com/api/openapi.json, https://plaid.com/.well-known/openapi.json)”
Download a machine-readable API spec (OpenAPI or equivalent)weight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://plaid.com/openapi.json“PROBE openapi: all candidate paths 404 (https://plaid.com/openapi.json, https://plaid.com/swagger.json, https://plaid.com/api/openapi.json, https://plaid.com/.well-known/openapi.json)”
- [probe] https://plaid.com/docs/.md“PROBE docs-md: HTTP 404 at https://plaid.com/docs/.md”
- [probe] https://plaid.com/llms.txt“PROBE llms.txt: HTTP 200 at https://plaid.com/llms.txt # Plaid > Plaid helps all companies build fintech solutions by making it easy, safe and reliable for people to connect”
Test against a sandbox environment without touching production dataweight 1
1 (weight) × 8 (quality) × 1.0 (full) = 8.0 of 10 max
- [claimed-docs] https://plaid.com/docs/sandbox/index.html.md“The Plaid Sandbox is a free and fully-featured environment for application development and testing... you can create an unlimited number of test Items.”
- [claimed-docs] https://plaid.com/docs/sandbox/index.html.md“The Plaid Sandbox is a free and fully-featured environment for application development and testing. All Plaid functionality of both the Plaid API and Plaid Link is supported in the Sandbox environment.”
- [claimed-docs] https://plaid.com/docs/sandbox/index.html.md“you can also create Items in Sandbox via the API, using a special Sandbox-only endpoint, /sandbox/public_token/create. This endpoint allows you to generate a public_token for an arbitrary institution ID, initial products, and test credentials.”
- [claimed-docs] https://plaid.com/docs/quickstart/index.html.md“Let's test out running Plaid locally by cloning the Quickstart app. You'll need API keys, which you can receive by signing up in the Dashboard.”
Rely on versioned APIs with a documented deprecation policyweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
API quality = 8.0 ÷ 70 × 100 = 11.4
Openness8.6/100×0.20 of the PA blend
Can you leave, inspect, or self-host — data export, open source, portability.
Do everything through the API that I can do in the UIweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://plaid.com/docs/link/index.html.md“You can customize parts of Link's flow straight from the Dashboard. You can preview your changes in real time and then publish them instantly once you're ready to go live.”
- [claimed-docs] https://plaid.com/docs/sandbox/index.html.md“you can also create Items in Sandbox via the API, using a special Sandbox-only endpoint, /sandbox/public_token/create. This endpoint allows you to generate a public_token for an arbitrary institution ID, initial products, and test credentials.”
- [claimed-docs] https://plaid.com/docs/quickstart/index.html.md“Let's test out running Plaid locally by cloning the Quickstart app. You'll need API keys, which you can receive by signing up in the Dashboard.”
- [probe] https://plaid.com/openapi.json“PROBE openapi: all candidate paths 404 (https://plaid.com/openapi.json, https://plaid.com/swagger.json, https://plaid.com/api/openapi.json, https://plaid.com/.well-known/openapi.json)”
Export all of my data in open formats and leaveweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Read the product's source under an open licenseweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Self-host the core productweight 3
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Openness = 6.0 ÷ 70 × 100 = 8.6
Built-in AI14.0/100×0.15 of the PA blend
Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.
Get AI-generated insights and suggestions from my data inside the productweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://plaid.com/docs/resources/mcp/index.html.md“The Dashboard MCP server is a remote MCP server hosted by Plaid. It provides Production diagnostics and analytics tools, including tools for debugging Items, reviewing Link conversion data, and checking usage metrics.”
Set up automations that run autonomously in the backgroundweight 2
2 (weight) × 3 (quality) × 0.6 (partial) = 3.6 of 20 max
- [claimed-docs] https://plaid.com/docs/api/webhooks/index.html.md“Plaid sends webhooks to programmatically inform you about changes to Plaid Items or the status of asynchronous processes.”
- [github] https://github.com/plaid/plaid-node“try { await plaidClient.transactionsSync(request); } catch (error) { const err = error.response.data; }”
- [claimed-docs] https://plaid.com/docs/resources/mcp/index.html.md“The Dashboard MCP server is a remote MCP server hosted by Plaid. It provides Production diagnostics and analytics tools, including tools for debugging Items, reviewing Link conversion data, and checking usage metrics.”
Delegate tasks to a built-in AI assistant inside the productweight 3
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Operate the product with natural-language commandsweight 2
2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max
- [claimed-docs] https://plaid.com/docs/resources/mcp/index.html.md“The Dashboard MCP server is a remote MCP server hosted by Plaid. It provides Production diagnostics and analytics tools, including tools for debugging Items, reviewing Link conversion data, and checking usage metrics.”
- [probe] https://plaid.com/docs/resources/mcp/“official MCP server documented at https://plaid.com/docs/resources/mcp/”
Built-in AI = 8.4 ÷ 60 × 100 = 14.0
Automation10.3/100×0.15 of the PA blend
Depth of automation primitives — rules, scheduling, bulk operations, webhooks.
Perform bulk operations across many items at onceweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Define rules that trigger actions automatically on eventsweight 3
3 (weight) × 4 (quality) × 0.6 (partial) = 7.2 of 30 max
- [claimed-docs] https://plaid.com/docs/api/webhooks/index.html.md“Plaid sends webhooks to programmatically inform you about changes to Plaid Items or the status of asynchronous processes.”
- [claimed-docs] https://plaid.com/docs/transactions/index.html.md“Retrieve up to 24 months of transaction data and stay up-to-date with webhooks”
- [github] https://github.com/plaid/plaid-node“try { await plaidClient.transactionsSync(request); } catch (error) { const err = error.response.data; }”
Schedule recurring jobs or workflowsweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Version, review, and roll back my automationsweight 1
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Automation = 7.2 ÷ 70 × 100 = 10.3