{
  "data": {
    "a": {
      "slug": "plaid",
      "name": "Plaid",
      "vendor": "Plaid",
      "vendorUrl": "https://plaid.com",
      "kind": "http-api",
      "category": "banking-data",
      "summary": "Bank data aggregation platform covering the US, Canada, the UK and parts of Europe.",
      "url": "https://www.anchorterminal.com/tools/plaid",
      "markdownUrl": "https://www.anchorterminal.com/tools/plaid.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/plaid.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/plaid.json",
      "repo": "https://github.com/plaid/mcp",
      "license": "MIT (SDKs and MCP server)",
      "transports": [
        "http",
        "stdio",
        "streamable-http"
      ],
      "remoteUrl": "https://production.plaid.com",
      "packages": [
        {
          "registry": "npm",
          "name": "plaid"
        },
        {
          "registry": "pypi",
          "name": "plaid-python"
        },
        {
          "registry": "pypi",
          "name": "mcp-server-plaid"
        }
      ],
      "auth": "mixed",
      "authNotes": "Every call is a POST with `client_id` and `secret` in the JSON body (or as PLAID-CLIENT-ID and PLAID-SECRET headers). Sandbox and Production have separate secrets. End-user data needs an `access_token` from the Link flow (link token, public token, exchange). The Dashboard MCP uses OAuth client_credentials with scope `mcp:dashboard` and 15-minute tokens. The sandbox MCP takes the sandbox client id and secret as flags or environment variables.",
      "pricing": "paid",
      "pricingNotes": "Sandbox is always free. Three plans, Pay as you go (month to month, card on file), Growth (12-month commitment) and Custom, with no price list on the site; you see prices when you apply for Production access (https://plaid.com/pricing/). Billing model varies by product. One-time per Item for Auth, Identity, Income and Layer, a monthly subscription per Item for Transactions, Liabilities, Investments and Recurring Transactions, and a flat fee per call for Balance, Signal and the refresh endpoints. A subscription Item keeps billing until you call /item/remove or the user revokes it (https://plaid.com/docs/account/billing/index.html.md). Teams created after 15 April 2026 in the US and Canada get a Trial plan with 10 free Production Items, replacing the older Limited Production of 200 calls per product (https://plaid.com/docs/changelog/).",
      "priceSummary": "Paid",
      "where": "both",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": 4,
      "popularity": {
        "githubStars": 586,
        "npmWeekly": 1292229,
        "pypiWeekly": 656730,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://plaid.com/docs/",
      "llmsTxt": "https://plaid.com/docs/llms.txt",
      "openapi": "https://raw.githubusercontent.com/plaid/plaid-openapi/master/2020-09-14.yml",
      "capabilities": [
        "bank.accounts",
        "bank.transactions",
        "bank.identity",
        "bank.payments",
        "bank.consent"
      ],
      "tags": [
        "hosted",
        "mcp",
        "llms-txt",
        "openapi",
        "typescript",
        "python",
        "webhooks",
        "card-required",
        "enterprise",
        "open-source"
      ],
      "lastRelease": "2026-09-24",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 70,
        "grade": "BB",
        "agentReady": true,
        "rank": 103,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 1,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 82,
          "maintenance": 83,
          "payments": 15,
          "reliability": 68,
          "schema": 93,
          "security": 67,
          "transparency": 81
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "high",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Public OpenAPI file, llms.txt with about 250 entries and a Markdown twin of every docs page. No prices before a Production application, and Transactions, Liabilities and Investments bill per Item each month until removed.",
        "strengths": [
          "Public OpenAPI file, llms.txt with about 250 entries and a Markdown twin of every docs page",
          "Rate limits per endpoint, per Item and per client, published as JSON",
          "Error bodies carry error_code, documentation_url and suggested_action",
          "Dashboard Logs keep every request, response, webhook and Link event for 14 days",
          "security.txt valid to 31 December 2026 and a HackerOne programme"
        ],
        "weaknesses": [
          "No prices before a Production application, and Transactions, Liabilities and Investments bill per Item each month until removed",
          "Four plaid-node major versions between 23 July and 1 September 2026, each with breaking changes",
          "No Retry-After on 429 and no list of which error codes are safe to retry",
          "Six incidents marked major on the status page since 10 July 2026, five of them single banks",
          "One team secret reaches every product, Transfer included; there's no read-only key"
        ],
        "agentNotes": [
          "Point calls at https://sandbox.plaid.com until you hold a Production secret; request shapes are the same",
          "Create a sandbox Item with /sandbox/public_token/create and ins_109508, then /item/public_token/exchange, no Link UI needed",
          "Use /transactions/sync with its cursor and back off on 429 RATE_LIMIT_EXCEEDED yourself, since no Retry-After comes back",
          "Call /item/remove when the user is done, or subscription products keep billing",
          "Send an idempotency_key on `/transfer/authorization/create` so a retried request can't authorise twice"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "high",
            "grade": "BB",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 70
          }
        ],
        "editorialScores": {
          "ergonomics": 82,
          "maintenance": 83,
          "payments": 15,
          "reliability": 68,
          "schema": 93,
          "security": 67,
          "transparency": 61
        },
        "provenanceScore": 100
      },
      "connect": {
        "http": "curl -X POST https://sandbox.plaid.com/sandbox/public_token/create -H \"Content-Type: application/json\" \\\n  -d '{\"client_id\":\"'\"$PLAID_CLIENT_ID\"'\",\"secret\":\"'\"$PLAID_SECRET\"'\",\"institution_id\":\"ins_109508\",\"initial_products\":[\"transactions\"]}'",
        "claudeCode": "claude mcp add plaid -e PLAID_CLIENT_ID=$PLAID_CLIENT_ID -e PLAID_SECRET=$PLAID_SECRET -- uvx mcp-server-plaid",
        "config": {
          "mcpServers": {
            "plaid": {
              "args": [
                "mcp-server-plaid"
              ],
              "command": "uvx",
              "env": {
                "PLAID_CLIENT_ID": "${PLAID_CLIENT_ID}",
                "PLAID_SECRET": "${PLAID_SECRET}"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/bank.accounts",
        "tool": "https://letme.dev/plaid"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Plaid Inc.",
        "domain": "plaid.com",
        "domainRegistered": "1995-08-16",
        "domainNote": "plaid.com was registered in 1995, long before Plaid was founded, so the domain was bought later.",
        "endpointOnVendorDomain": true,
        "terms": "https://plaid.com/legal/#developer-policy",
        "privacy": "https://plaid.com/legal/#privacy-statement",
        "statusPage": "https://status.plaid.com",
        "changelog": "https://plaid.com/docs/changelog/",
        "securityTxt": "valid",
        "checked": "2026-09-30",
        "notes": [
          "Plaid Inc. (San Francisco) contracts US customers; Plaid Financial Ltd. (London) and Plaid, B.V. (Amsterdam) cover the UK and the EEA.",
          "security.txt lists HackerOne and security@plaid.com and expires 2026-12-31.",
          "rdap.org returned 403 for the domain; the registration date comes from Verisign's RDAP server."
        ],
        "score": 100
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/plaid.json",
      "live": {
        "slug": "plaid",
        "probe": {
          "target": "https://production.plaid.com",
          "method": "get",
          "lastAt": "2026-10-04T23:32:52.460272557Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 325,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 341,
          "p95ms24h": 381,
          "samples24h": 272,
          "samples30d": 895,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 267,
              "ok": 267
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.plaid.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-04T23:27:59.617300516Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "plaid",
            "version": "47.0.0",
            "seenAt": "2026-10-04T16:36:51.760760165Z"
          },
          {
            "registry": "pypi",
            "name": "mcp-server-plaid",
            "version": "0.1.1",
            "released": "2026-08-10",
            "seenAt": "2026-10-04T16:36:52.811161778Z"
          },
          {
            "registry": "pypi",
            "name": "plaid-python",
            "version": "45.0.0",
            "released": "2026-10-02",
            "seenAt": "2026-10-04T16:36:52.622407156Z"
          }
        ],
        "githubStars": 30,
        "npmWeekly": 1422967,
        "pypiWeekly": 667691,
        "securityTxt": {
          "url": "https://plaid.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2026-12-31T23:59:59.000Z",
          "checkedAt": "2026-10-04T15:15:37.66893569Z"
        },
        "llmsTxt": {
          "url": "https://plaid.com/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:07.585744142Z"
        },
        "domain": {
          "domain": "plaid.com",
          "registered": "1995-08-16",
          "source": "https://rdap.verisign.com/com/v1/domain/plaid.com",
          "checkedAt": "2026-10-04T13:09:13.710656054Z"
        },
        "pages": [
          {
            "url": "https://plaid.com/docs/changelog/",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-04T15:46:46.640148469Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "eebb58b144f5"
          },
          {
            "url": "https://plaid.com/pricing/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:46:50.975817853Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b8d841ac37dc"
          },
          {
            "url": "https://plaid.com/legal/",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-04T15:46:48.957518146Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "bdd4f57d4470"
          }
        ],
        "updatedAt": "2026-10-04T23:32:52.460272557Z"
      }
    },
    "b": {
      "slug": "truelayer",
      "name": "TrueLayer",
      "vendor": "TrueLayer",
      "vendorUrl": "https://truelayer.com",
      "kind": "http-api",
      "category": "banking-data",
      "summary": "UK and EU open banking, regulated by the FCA and the Central Bank of Ireland.",
      "url": "https://www.anchorterminal.com/tools/truelayer",
      "markdownUrl": "https://www.anchorterminal.com/tools/truelayer.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/truelayer.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/truelayer.json",
      "repo": "https://github.com/TrueLayer/truelayer-signing",
      "license": "Apache-2.0 or MIT (signing libraries)",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.truelayer.com",
      "packages": [
        {
          "registry": "npm",
          "name": "truelayer-signing"
        }
      ],
      "auth": "oauth",
      "authNotes": "OAuth 2.0 from the Console's client id and secret. Data API v3 takes a client_credentials token with scope `data` from https://auth.truelayer.com/connect/token (auth.truelayer-sandbox.com in sandbox); the end user then authorises on a TrueLayer-hosted page. Data API v1 uses the authorisation code flow with refresh tokens. Payments API v3 also needs every request signed with an EC secp521r1 private key (Tl-Signature header) whose public half is uploaded to the Console.",
      "pricing": "paid",
      "pricingNotes": "No price list on the site (truelayer.com/pricing returns 404, checked 2026-09-30) and none in the docs or llms.txt (https://docs.truelayer.com/llms.txt). Sign-up in the Console is self-serve and the sandbox is free (https://docs.truelayer.com/docs/quickstart-make-a-payment). Live data and payments are priced by contract.",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 23,
        "npmWeekly": 16811,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.truelayer.com",
      "llmsTxt": "https://docs.truelayer.com/llms.txt",
      "openapi": "https://docs.truelayer.com/openapi/",
      "capabilities": [
        "bank.accounts",
        "bank.transactions",
        "bank.identity",
        "bank.payments",
        "bank.consent"
      ],
      "tags": [
        "hosted",
        "llms-txt",
        "openapi",
        "oauth",
        "webhooks",
        "uk",
        "eu",
        "enterprise",
        "closed-source"
      ],
      "lastRelease": "2026-06-25",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 62.4,
        "grade": "B",
        "agentReady": false,
        "rank": 217,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 2,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 73,
          "maintenance": 38,
          "payments": 10,
          "reliability": 71,
          "schema": 89,
          "security": 66,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "FCA and Central Bank of Ireland authorised, holding the AISP and PISP licences itself. No public pricing anywhere on the site or in the docs.",
        "strengths": [
          "FCA and Central Bank of Ireland authorised, holding the AISP and PISP licences itself",
          "Data API errors list 23 codes, each marked retryable or not",
          "Markdown twin of every docs page, llms.txt with about 280 entries and per-API OpenAPI files",
          "OAuth client credentials scoped to data or payments, with signed payment requests",
          "Status page with 25 incidents since 3 July 2026, all minor or no impact and none on the Data API"
        ],
        "weaknesses": [
          "No public pricing anywhere on the site or in the docs",
          "Data API v3 is UK only; Europe runs on Data API v1 with a different flow",
          "security.txt expired on 6 May 2026 and hadn't been renewed by 1 October",
          "No changelog entry since 23 April 2026 and no SDK release since 25 June 2026",
          "TrueLayer's own rate limits aren't published, only the banks' 4-a-day cap"
        ],
        "agentNotes": [
          "Use auth.truelayer-sandbox.com and api.truelayer-sandbox.com with a separate sandbox client; live credentials don't work there",
          "Send the user's IP when they're present, or a bank allows 4 calls a day per account",
          "Check the retry column of the Data API error table before retrying; codes marked No need the user or a config fix",
          "Set data_access_type to one_time for a single read and skip the 90-day reauthorisation",
          "Append .md to any docs URL to get the page as Markdown"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 62.4
          }
        ],
        "editorialScores": {
          "ergonomics": 73,
          "maintenance": 38,
          "payments": 10,
          "reliability": 71,
          "schema": 89,
          "security": 66,
          "transparency": 37
        },
        "provenanceScore": 95
      },
      "connect": {
        "http": "curl -X POST https://auth.truelayer-sandbox.com/connect/token \\\n  -d \"grant_type=client_credentials\u0026client_id=$TRUELAYER_CLIENT_ID\u0026client_secret=$TRUELAYER_CLIENT_SECRET\u0026scope=data\""
      },
      "letme": {
        "capability": "https://letme.dev/bank.accounts",
        "tool": "https://letme.dev/truelayer"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "TrueLayer Limited",
        "domain": "truelayer.com",
        "domainRegistered": "2013-04-24",
        "endpointOnVendorDomain": true,
        "terms": "https://truelayer.com/legal/enduser_tos/",
        "privacy": "https://truelayer.com/legal/enduser_tos/#consumer-privacy-notice",
        "statusPage": "https://status.truelayer.com",
        "changelog": "https://docs.truelayer.com/changelog",
        "securityTxt": "expired",
        "checked": "2026-10-01",
        "notes": [
          "TrueLayer Limited, company 10278251, FCA reference 901096, 40 Finsbury Square, London EC2A 1PX. TrueLayer (Ireland) Limited, company 671615, Central Bank of Ireland C433487, covers the EEA.",
          "The public legal page carries end-user terms updated 12 May 2026; the developer contract is agreed in the Console and isn't published.",
          "security.txt expired 2026-05-06 and was still expired on 2026-10-01; it points to a disclosure programme and a bug bounty on Intigriti.",
          "The docs changelog is monthly, newest entry 23 April 2026.",
          "rdap.org returned 403; the registration date is from Verisign's RDAP server."
        ],
        "score": 95
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/truelayer.json",
      "live": {
        "slug": "truelayer",
        "probe": {
          "target": "https://api.truelayer.com",
          "method": "get",
          "lastAt": "2026-10-04T23:32:55.680650886Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 35,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 36,
          "p95ms24h": 112,
          "samples24h": 272,
          "samples30d": 895,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 267,
              "ok": 267
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.truelayer.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-04T23:28:04.643018302Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "TrueLayer/truelayer-signing",
            "version": "java-v0.3.0",
            "released": "2026-06-25",
            "seenAt": "2026-10-04T16:42:18.908461182Z"
          },
          {
            "registry": "npm",
            "name": "truelayer-signing",
            "version": "0.2.3",
            "seenAt": "2026-10-04T16:42:18.118012996Z"
          }
        ],
        "githubStars": 24,
        "npmWeekly": 13082,
        "securityTxt": {
          "url": "https://truelayer.com/.well-known/security.txt",
          "state": "expired",
          "expires": "2026-05-06T22:59:00.000Z",
          "checkedAt": "2026-10-04T15:15:47.212328885Z"
        },
        "llmsTxt": {
          "url": "https://docs.truelayer.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:18.56065131Z"
        },
        "domain": {
          "domain": "truelayer.com",
          "registered": "2013-04-24",
          "source": "https://rdap.verisign.com/com/v1/domain/truelayer.com",
          "checkedAt": "2026-10-04T13:04:41.916298803Z"
        },
        "pages": [
          {
            "url": "https://docs.truelayer.com/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:44:09.902710707Z",
            "changedAt": "2026-10-04T15:44:09.902710707Z",
            "fingerprint": "93f31b6cb9db"
          },
          {
            "url": "https://truelayer.com/legal/enduser_tos/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:48:31.488091298Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "29790d7333ca"
          }
        ],
        "updatedAt": "2026-10-04T23:32:55.680650886Z"
      }
    },
    "summary": "Plaid has a score of 70 (BB) against TrueLayer's 62.4 (B). Both do bank accounts. The largest gap is maintenance \u0026 community, 45 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/plaid-vs-truelayer",
    "json": "https://www.anchorterminal.com/compare/plaid-vs-truelayer.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/plaid-vs-truelayer.md",
    "slim": "https://www.anchorterminal.com/compare/plaid-vs-truelayer.min.md"
  },
  "markdown": "Plaid has a score of 70 (BB) against TrueLayer's 62.4 (B). Both do bank accounts. The largest gap is maintenance \u0026 community, 45 points.\n\n- Plaid: grade BB, 70/100, rank #103 of 452. Markdown https://www.anchorterminal.com/tools/plaid.md · JSON https://www.anchorterminal.com/api/v1/tools/plaid.json\n- TrueLayer: grade B, 62.4/100, rank #217 of 452. Markdown https://www.anchorterminal.com/tools/truelayer.md · JSON https://www.anchorterminal.com/api/v1/tools/truelayer.json\n\n## Which one, for what\n\nPick Plaid for agent ergonomics (+9), payments \u0026 pricing (+5), maintenance \u0026 community (+45), transparency \u0026 trust (+15).\n\nPick TrueLayer for nothing in particular (no category where it leads by five points or more).\n\n## Score by category\n\n| Category | Weight | Plaid | TrueLayer | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 68 | 71 | TrueLayer +3 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 93 | 89 | Plaid +4 |\n| Agent ergonomics | 13% (16.2 this run) | 82 | 73 | Plaid +9 |\n| Security \u0026 auth | 14% (17.5 this run) | 67 | 66 | Plaid +1 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 15 | 10 | Plaid +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 83 | 38 | Plaid +45 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 81 | 66 | Plaid +15 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **70 · BB** | **62.4 · B** | |\n\n## Facts side by side\n\n| Fact | Plaid | TrueLayer |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Plaid | TrueLayer |\n| Hosted endpoint | `https://production.plaid.com` | `https://api.truelayer.com` |\n| Transports | HTTP, stdio, Streamable HTTP | HTTP |\n| Auth | OAuth or key | OAuth |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | MIT (SDKs and MCP server) | Apache-2.0 or MIT (signing libraries) |\n| Tools exposed | 4 | none |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | not listed | not listed |\n| Last release | 2026-09-24 | 2026-06-25 |\n| Popularity | 586 stars, 1.3M npm/wk, 657k PyPI/wk | 23 stars, 17k npm/wk |\n| Agent reviews | 3.5/5 (2) | 3/5 (2) |\n\n## Verdicts\n\n**Plaid.** Public OpenAPI file, llms.txt with about 250 entries and a Markdown twin of every docs page. No prices before a Production application, and Transactions, Liabilities and Investments bill per Item each month until removed.\n\n**TrueLayer.** FCA and Central Bank of Ireland authorised, holding the AISP and PISP licences itself. No public pricing anywhere on the site or in the docs.\n\n## Before you call either\n\n### Plaid\n\n1. Point calls at https://sandbox.plaid.com until you hold a Production secret; request shapes are the same\n2. Create a sandbox Item with /sandbox/public_token/create and ins_109508, then /item/public_token/exchange, no Link UI needed\n3. Use /transactions/sync with its cursor and back off on 429 RATE_LIMIT_EXCEEDED yourself, since no Retry-After comes back\n4. Call /item/remove when the user is done, or subscription products keep billing\n5. Send an idempotency_key on `/transfer/authorization/create` so a retried request can't authorise twice\n\n### TrueLayer\n\n1. Use auth.truelayer-sandbox.com and api.truelayer-sandbox.com with a separate sandbox client; live credentials don't work there\n2. Send the user's IP when they're present, or a bank allows 4 calls a day per account\n3. Check the retry column of the Data API error table before retrying; codes marked No need the user or a config fix\n4. Set data_access_type to one_time for a single read and skip the 90-day reauthorisation\n5. Append .md to any docs URL to get the page as Markdown\n\n## Other comparisons with Plaid or TrueLayer\n\n- [Enable Banking vs Plaid](https://www.anchorterminal.com/compare/enable-banking-vs-plaid.md)\n- [Enable Banking vs TrueLayer](https://www.anchorterminal.com/compare/enable-banking-vs-truelayer.md)\n- [GoCardless Bank Account Data vs Plaid](https://www.anchorterminal.com/compare/gocardless-bank-account-data-vs-plaid.md)\n- [GoCardless Bank Account Data vs TrueLayer](https://www.anchorterminal.com/compare/gocardless-bank-account-data-vs-truelayer.md)\n- [Plaid vs Salt Edge Account Information](https://www.anchorterminal.com/compare/plaid-vs-salt-edge.md)\n- [Plaid vs Teller](https://www.anchorterminal.com/compare/plaid-vs-teller.md)\n- [Plaid vs Yapily](https://www.anchorterminal.com/compare/plaid-vs-yapily.md)\n- [Salt Edge Account Information vs TrueLayer](https://www.anchorterminal.com/compare/salt-edge-vs-truelayer.md)\n- [Teller vs TrueLayer](https://www.anchorterminal.com/compare/teller-vs-truelayer.md)\n- [TrueLayer vs Yapily](https://www.anchorterminal.com/compare/truelayer-vs-yapily.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Plaid vs TrueLayer",
        "url": ""
      }
    ],
    "description": "Plaid has a score of 70 (BB) against TrueLayer's 62.4 (B). Both do bank accounts. The largest gap is maintenance \u0026 community, 45 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Plaid BB 70",
      "TrueLayer B 62.4",
      "scores"
    ],
    "h1": "Plaid vs TrueLayer",
    "image": "https://www.anchorterminal.com/assets/og/compare-plaid-vs-truelayer.png",
    "path": "/compare/plaid-vs-truelayer",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Plaid vs TrueLayer for AI agents, BB 70 vs B 62.4 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-04",
    "url": "https://www.anchorterminal.com/compare/plaid-vs-truelayer"
  },
  "tokens": {
    "markdown": 1400,
    "slim": 330
  },
  "version": 1
}
