{
  "data": {
    "a": {
      "slug": "expensify",
      "name": "Expensify",
      "vendor": "Expensify, Inc.",
      "vendorUrl": "https://www.expensify.com",
      "kind": "http-api",
      "category": "spend-management",
      "summary": "Expensify is an expense management service with receipt scanning, expense reports, approvals, reimbursement and company cards. Its Integration Server API exports report and card data and creates expenses, reports and workspace settings. A hosted MCP server gives read-only search.",
      "url": "https://www.anchorterminal.com/tools/expensify",
      "markdownUrl": "https://www.anchorterminal.com/tools/expensify.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/expensify.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/expensify.json",
      "license": "Proprietary service under the Expensify Terms of Service. The Expensify app client and help articles on GitHub (Expensify/App) are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Access is self-serve for anyone with an Expensify account. Signing in at https://www.expensify.com/tools/integrations/ generates a partnerUserID and partnerUserSecret pair, shown once and replaceable on the same page. The pair travels inside the `requestJobDescription` form field and acts with the account's own rights, so domain and workspace admin jobs need an admin's credentials. Creating reports or expenses in other users' accounts needs Expensify to enable it for the domain by email to Concierge. OAuth2 for the API (authorisation code grant, scope `integrations:api`, two-hour access tokens, rotating refresh tokens) is in private beta by request form. The MCP server uses OAuth 2.1 with PKCE and the `mcp:tools` scope.",
      "pricing": "freemium",
      "pricingNotes": "No separate API fee is published. Collect is $5 per unique member a month, pay-per-use. Control is $18 per member a month on an annual subscription or $36 per active member pay-per-use, and as low as $9 with Expensify Card spend. A workspace starts a 30-day free trial, with a payment card asked for when it ends, and a free Submit workspace exists for individuals. An agent can start on the trial without a contract. No sandbox was found, and whether the API works without a paid plan wasn't established (checked 2026-10-08).",
      "priceSummary": "$5 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Integration Server reference, the help articles or the pricing article (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://integrations.expensify.com/Integration-Server/doc/",
      "capabilities": [
        "spend.transactions",
        "spend.expenses"
      ],
      "tags": [
        "hosted",
        "freemium",
        "api-key",
        "oauth",
        "mcp",
        "soc2",
        "pci-dss"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 41.1,
        "grade": "E",
        "agentReady": false,
        "rank": 593,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 5,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 45,
          "maintenance": 23,
          "payments": 30,
          "reliability": 62,
          "schema": 28,
          "security": 34,
          "transparency": 58
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "One endpoint exports reports through caller-written templates and creates expenses, reports, rules and workspace settings, with limits of 5 requests per 10 seconds published and a status page that tracks the API separately. There is no OpenAPI spec, changelog, SDK, pagination or idempotency key, and one credential pair carries the whole account's rights.",
        "bestFor": "A finance team already on Expensify that wants an agent to export approved reports to an accounting system, create expenses and reports, keep categories, tags and employees in step with an HR system, or mark reports reimbursed.",
        "strengths": [
          "Export templates written in Freemarker let the caller choose every output field, in CSV, XLS, XLSX, TXT, PDF, JSON or XML, filtered by date, state, workspace and report ID",
          "Rate limits are published as 5 requests per 10 seconds and 20 per 60 seconds, with status 429 when exceeded",
          "The status page lists Integration APIs as its own component, and no incident in the 90 days to 8 October 2026 names it",
          "The hosted MCP server at https://www.expensify.com/mcp is read-only and uses OAuth 2.1 with PKCE, the `mcp:tools` scope and a revocation endpoint",
          "Every job in the reference has a curl example, a parameter table with valid values and a sample error response"
        ],
        "weaknesses": [
          "No OpenAPI spec, llms.txt, version number or changelog was found for the Integration Server API",
          "The partnerUserID and partnerUserSecret pair acts with all of the account's rights. No scopes or read-only credential were found for the API",
          "No idempotency key or pagination is documented, and no official SDK was found",
          "Errors arrive as `responseCode` in the body. An invalid credential returned HTTP 200 with `responseCode` 404 when we tried it on 8 October 2026",
          "The Terms of Service allow Expensify to modify or discontinue the service at any time without prior notice, and no SLA was found"
        ],
        "agentNotes": [
          "POST `requestJobDescription` as a form field to the single endpoint. Keep it out of the URL query string, because it carries the secret",
          "Read `responseCode` in the body on every reply. HTTP status can be 200 on failure, and validation errors use 410",
          "Stay under 5 requests per 10 seconds and 20 per 60 seconds. No Retry-After header is documented, so space retries yourself",
          "Export in two calls. A `file` job returns a filename, then a `download` job fetches it. Amounts are in cents",
          "Don't retry a create job blindly. No idempotency key exists, so export and check before resending. Set `dry-run` to true when testing the Advanced Employee Updater"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 41.1
          }
        ],
        "editorialScores": {
          "ergonomics": 45,
          "maintenance": 23,
          "payments": 30,
          "reliability": 62,
          "schema": 28,
          "security": 34,
          "transparency": 41
        },
        "provenanceScore": 75
      },
      "connect": {
        "http": "curl -X POST 'https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations' \\\n  -d 'requestJobDescription={\"type\":\"get\",\"credentials\":{\"partnerUserID\":\"_REPLACE_\",\"partnerUserSecret\":\"_REPLACE_\"},\"inputSettings\":{\"type\":\"policyList\"}}'"
      },
      "letme": {
        "capability": "https://letme.dev/spend.transactions",
        "tool": "https://letme.dev/expensify"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Collect plan, pay-per-use",
          "unit": "seat-month",
          "usd": 5,
          "note": "Per unique member. No separate API fee is published"
        },
        {
          "item": "Control plan, annual subscription",
          "unit": "seat-month",
          "usd": 18,
          "note": "As low as $9 with Expensify Card spend. Active members above the subscription size are $36"
        },
        {
          "item": "Control plan, pay-per-use",
          "unit": "seat-month",
          "usd": 36,
          "note": "Per active member"
        }
      ],
      "provenance": {
        "legalEntity": "Expensify, Inc.",
        "domain": "expensify.com",
        "domainRegistered": "2007-10-26",
        "endpointOnVendorDomain": true,
        "terms": "https://www.expensify.com/terms",
        "privacy": "https://www.expensify.com/privacy",
        "statusPage": "https://status.expensify.com",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The Terms of Service (last updated 10 September 2026) name Expensify, Inc., 401 SW 5th Ave, Portland, OR 97204, and govern the Expensify Service including related software and tools. No separate API agreement was found.",
          "The privacy policy (last updated 1 April 2026) is issued for the Expensify group and names Expensify, Inc. as controller.",
          "The API answers at integrations.expensify.com and the MCP server at www.expensify.com/mcp.",
          "https://www.expensify.com/.well-known/security.txt returned 404 on 8 October 2026.",
          "No changelog was found for the Integration Server API.",
          "RDAP for expensify.com gives a registration date of 2007-10-26."
        ],
        "score": 75
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/expensify.json",
      "live": {
        "slug": "expensify",
        "probe": {
          "target": "https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations",
          "method": "get",
          "lastAt": "2026-10-08T19:08:46.235159528Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 550,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 447,
          "p95ms24h": 550,
          "samples24h": 19,
          "samples30d": 19,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 19,
              "ok": 19
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.expensify.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T19:06:38.6773069Z"
        },
        "pages": [
          {
            "url": "https://www.expensify.com/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:27:38.986175098Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a6875581ee6f"
          },
          {
            "url": "https://www.expensify.com/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:27:41.220273608Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2df10b1a9dea"
          }
        ],
        "updatedAt": "2026-10-08T19:08:46.235159528Z"
      }
    },
    "answer": "Pleo API + MCP scores 62.9 (B) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments \u0026 pricing.",
    "b": {
      "slug": "pleo",
      "name": "Pleo API + MCP",
      "vendor": "Pleo Technologies A/S",
      "vendorUrl": "https://www.pleo.io/en",
      "kind": "http-api",
      "category": "spend-management",
      "summary": "Spend management platform from Pleo Technologies A/S in Copenhagen, covering company cards, expenses, reimbursements, invoices and accounting exports. Outside agents reach it through a hosted MCP server for expense work and a REST API built for accounting integrations.",
      "url": "https://www.anchorterminal.com/tools/pleo",
      "markdownUrl": "https://www.anchorterminal.com/tools/pleo.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/pleo.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/pleo.json",
      "license": "Proprietary service under Pleo's Master Service Agreement, API Terms of Service and AI Access Terms",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://external.pleo.io",
      "packages": [],
      "auth": "mixed",
      "authNotes": "A person signs in for every route. The MCP server uses OAuth 2.0 in a browser (authorisation code with PKCE, dynamic client registration, no keys to configure) and acts with the connecting user's Pleo role, once a company admin has enabled MCP access for that entity. The External API accepts OAuth 2.0 bearer tokens with resource scopes for partner integrations, whose client ID and secret Pleo issues after review in its Early Access Programme. A single company can use a Standalone API Key with chosen scopes and an expiry, sent as the Basic auth username, but only after Pleo support or a Customer Success Manager enables keys for the organisation.",
      "pricing": "paid",
      "pricingNotes": "Per-user plans, with no separate charge for the API or the MCP server. The pricing page shown to a UK visitor lists Start at £8 per user per month, Build at £14 and Optimise at £18, the last two cheaper billed yearly and with a three-user minimum. MCP is listed on Optimise only, which is sold through a demo. Start and Build have a Try for free button and the signup form states 21 days free. Whether the trial needs a payment card isn't stated. A staging environment with test data exists for customers with API keys enabled and for approved partners. Fees for payments and foreign exchange are extra (checked 2026-10-08).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI specs or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.pleo.io/",
      "llmsTxt": "https://developers.pleo.io/llms.txt",
      "openapi": "https://developers.pleo.io/reference/Export%20API.json",
      "capabilities": [
        "spend.transactions",
        "spend.expenses",
        "spend.bills"
      ],
      "tags": [
        "official",
        "hosted",
        "mcp",
        "oauth",
        "api-key",
        "openapi",
        "llms-txt",
        "webhooks",
        "closed-source",
        "status-page",
        "bug-bounty",
        "sandbox"
      ],
      "lastRelease": "2026-10-02",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 62.9,
        "grade": "B",
        "agentReady": false,
        "rank": 293,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 55,
          "maintenance": 64,
          "payments": 15,
          "reliability": 71,
          "schema": 82,
          "security": 71,
          "transparency": 75
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "The hosted MCP server acts with the connecting user's own Pleo permissions, is off until an admin enables it per entity, and can't move money, change cards or alter limits. It is listed only on the Optimise plan, its tool definitions aren't published, API keys need enabling by Pleo support, and no official SDK or SLA was found.",
        "bestFor": "An agent that completes, codes, reviews and queues expenses for a Pleo customer on the Optimise plan, or for a bookkeeping integration that exports accounting entries and syncs tags, tax codes, accounts and vendors.",
        "strengths": [
          "MCP server at mcp.pleo.io/mcp uses OAuth with PKCE and dynamic client registration, and acts with the connecting user's Pleo permissions",
          "Payments, card changes and spending-limit changes are blocked through the MCP by design, per the AI Access Terms",
          "Eleven current OpenAPI 3.0.1 specs with 162 operations, plus llms.txt, llms-full.txt and a Markdown copy of every docs page",
          "One documented rate limit of 600 requests a minute per credential, with written 429 and Retry-After guidance",
          "Staging hosts for both the API (external.staging.pleo.io) and the MCP server (mcp.staging.pleo.io/mcp)",
          "Sub-processor list with locations, customer data in AWS Ireland, and 30 days' notice of new sub-processors in the DPA"
        ],
        "weaknesses": [
          "The pricing page lists MCP on the Optimise plan only (£18 per user per month, three users minimum, sold through a demo)",
          "MCP tool names, schemas and count aren't published, so they can't be read without a customer sign-in",
          "Standalone API keys aren't self-service. Pleo support or a Customer Success Manager enables them, and partner OAuth clients go through a reviewed programme",
          "No Idempotency-Key header, no official SDK and no entry in the official MCP registry",
          "The API terms call the API a beta version that Pleo may discontinue at any time, and no SLA was found",
          "No end-of-life date is published for the deprecated Legacy API, and its Q3 2026 replacements for employee writes and wallet balance aren't in the docs"
        ],
        "agentNotes": [
          "Ask a company admin to enable Pleo MCP access under Settings, General, Pleo AI for each entity before connecting. It is off by default",
          "Name the entity in every request when working outside the default one. Each MCP request targets one entity and the choice doesn't persist",
          "Set the AI client to require approval for Pleo write tools. Pleo leaves confirmation to the client and doesn't enforce it server-side",
          "Send API keys as the Basic auth username with an empty password to external.pleo.io. Legacy tokens for openapi.pleo.io don't work there",
          "Budget every endpoint against one bucket of 600 requests a minute per credential, and on 429 wait for Retry-After or back off from one second",
          "Swap mcp.staging.pleo.io for mcp.pleo.io in the Claude Code command when moving from staging to production. Each needs its own OAuth sign-in"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 62.9
          }
        ],
        "editorialScores": {
          "ergonomics": 55,
          "maintenance": 64,
          "payments": 15,
          "reliability": 71,
          "schema": 82,
          "security": 71,
          "transparency": 63
        },
        "provenanceScore": 87
      },
      "connect": {
        "http": "curl --request GET \\\n-u \"YOUR-API-KEY:\" \\\n-H \"Accept: application/json;charset=UTF-8\" \\\n\"https://external.staging.pleo.io/v2/employees\"",
        "claudeCode": "claude mcp add --transport http pleo-mcp-staging https://mcp.staging.pleo.io/mcp",
        "config": {
          "mcpServers": {
            "pleo": {
              "url": "https://mcp.pleo.io/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/spend.transactions",
        "tool": "https://letme.dev/pleo"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Pleo Technologies A/S",
        "domain": "pleo.io",
        "domainRegistered": "2015-10-07",
        "endpointOnVendorDomain": true,
        "terms": "https://developers.pleo.io/page/terms-of-service",
        "privacy": "https://www.pleo.io/legal-documents/pleo-privacy-policy-en.pdf",
        "statusPage": "https://status.pleo.io",
        "changelog": "https://developers.pleo.io/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The website footer names Pleo Technologies A/S (36538686), Ravnsborg Tværgade 5C, 2200 København N, Denmark. UK payment services come from Pleo Financial Services UK Ltd, FCA firm reference 1020730, company number 15842283.",
          "The API Terms of Service on the developer portal name Pleo Technologies A/S, carry no date, and describe the API as a beta version. The UK Master Service Agreement has an effective date of 7 September 2026 and is governed by the laws of England and Wales.",
          "The API answers at external.pleo.io and the MCP server at mcp.pleo.io, both pleo.io subdomains. The MCP host publishes its OAuth metadata at https://mcp.pleo.io/.well-known/oauth-authorization-server",
          "www.pleo.io/.well-known/security.txt and pleo.io/.well-known/security.txt both return 403 with an AccessDenied body. The vulnerability disclosure policy gives security-vd@pleo.io as the reporting address.",
          "The privacy notice is dated June 2026 and the Data Processing Agreement 14 October 2025. An AI Access Terms document covers the MCP server.",
          "RDAP from the .io registry gives a registration date of 2015-10-07 for pleo.io."
        ],
        "score": 87
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/pleo.json",
      "live": {
        "slug": "pleo",
        "probe": {
          "target": "https://external.pleo.io",
          "method": "get",
          "lastAt": "2026-10-08T19:08:56.056903693Z",
          "lastOk": true,
          "lastStatus": 403,
          "lastMs": 72,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 88,
          "p95ms24h": 163,
          "samples24h": 42,
          "samples30d": 42,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 42,
              "ok": 42
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.pleo.io",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T19:06:55.018945213Z"
        },
        "securityTxt": {
          "url": "https://pleo.io/.well-known/security.txt",
          "state": "unknown",
          "checkedAt": "2026-10-08T15:38:57.657849973Z"
        },
        "pages": [
          {
            "url": "https://developers.pleo.io/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:17:58.324737763Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "7369dd13eb7c"
          },
          {
            "url": "https://developers.pleo.io/page/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:18:00.641635735Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "5da670693385"
          }
        ],
        "updatedAt": "2026-10-08T19:08:56.056903693Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Expensify, Inc.",
        "b": "Pleo Technologies A/S",
        "name": "Vendor"
      },
      {
        "a": "https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations",
        "b": "https://external.pleo.io",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the Expensify Terms of Service. The Expensify app client and help articles on GitHub (Expensify/App) are MIT",
        "b": "Proprietary service under Pleo's Master Service Agreement, API Terms of Service and AI Access Terms",
        "name": "Licence"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "none",
        "b": "2026-10-02",
        "name": "Last release"
      },
      {
        "a": "2026-09-10",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-04-01",
        "b": "",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      }
    ],
    "faq": [
      {
        "answer": "Pleo API + MCP scores 62.9 (B) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Expensify or Pleo API + MCP?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Expensify and Pleo API + MCP need an API key?"
      },
      {
        "answer": "Yes. Expensify has a hosted endpoint at https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations and Pleo API + MCP at https://external.pleo.io.",
        "question": "Can an agent call Expensify and Pleo API + MCP without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Payments \u0026 pricing, 30 against 15"
        ],
        "also": null,
        "goodFor": "A finance team already on Expensify that wants an agent to export approved reports to an accounting system, create expenses and reports, keep categories, tags and employees in step with an HR system, or mark reports reimbursed.",
        "slug": "expensify",
        "watchFor": "No OpenAPI spec, llms.txt, version number or changelog was found for the Integration Server API"
      },
      {
        "aheadOn": [
          "Reliability, 71 against 62",
          "Schema \u0026 documentation, 82 against 28",
          "Agent ergonomics, 55 against 45",
          "Security \u0026 auth, 71 against 34",
          "Maintenance \u0026 community, 64 against 23",
          "Transparency \u0026 trust, 75 against 58"
        ],
        "also": null,
        "goodFor": "An agent that completes, codes, reviews and queues expenses for a Pleo customer on the Optimise plan, or for a bookkeeping integration that exports accounting entries and syncs tags, tax codes, accounts and vendors.",
        "slug": "pleo",
        "watchFor": "The pricing page lists MCP on the Optimise plan only (£18 per user per month, three users minimum, sold through a demo)"
      }
    ],
    "job": {
      "capability": "spend.transactions",
      "name": "Spend transactions"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/brex-vs-expensify.json",
        "title": "Brex vs Expensify",
        "url": "https://www.anchorterminal.com/compare/brex-vs-expensify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brex-vs-pleo.json",
        "title": "Brex vs Pleo API + MCP",
        "url": "https://www.anchorterminal.com/compare/brex-vs-pleo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expensify-vs-ramp.json",
        "title": "Expensify vs Ramp",
        "url": "https://www.anchorterminal.com/compare/expensify-vs-ramp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expensify-vs-spendesk.json",
        "title": "Expensify vs Spendesk API + MCP",
        "url": "https://www.anchorterminal.com/compare/expensify-vs-spendesk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pleo-vs-ramp.json",
        "title": "Pleo API + MCP vs Ramp",
        "url": "https://www.anchorterminal.com/compare/pleo-vs-ramp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pleo-vs-spendesk.json",
        "title": "Pleo API + MCP vs Spendesk API + MCP",
        "url": "https://www.anchorterminal.com/compare/pleo-vs-spendesk"
      }
    ],
    "scores": [
      {
        "by": 9,
        "edge": "pleo",
        "expensify": 62,
        "key": "reliability",
        "name": "Reliability",
        "pleo": 71,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 54,
        "edge": "pleo",
        "expensify": 28,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "pleo": 82,
        "weight": 13
      },
      {
        "by": 10,
        "edge": "pleo",
        "expensify": 45,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "pleo": 55,
        "weight": 13
      },
      {
        "by": 37,
        "edge": "pleo",
        "expensify": 34,
        "key": "security",
        "name": "Security \u0026 auth",
        "pleo": 71,
        "weight": 14
      },
      {
        "by": 15,
        "edge": "expensify",
        "expensify": 30,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "pleo": 15,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 41,
        "edge": "pleo",
        "expensify": 23,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "pleo": 64,
        "weight": 7
      },
      {
        "by": 17,
        "edge": "pleo",
        "expensify": 58,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "pleo": 75,
        "weight": 7
      }
    ],
    "summary": "Pleo API + MCP scores 62.9 (B) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments \u0026 pricing. Both do spend transactions.",
    "verdicts": {
      "expensify": "One endpoint exports reports through caller-written templates and creates expenses, reports, rules and workspace settings, with limits of 5 requests per 10 seconds published and a status page that tracks the API separately. There is no OpenAPI spec, changelog, SDK, pagination or idempotency key, and one credential pair carries the whole account's rights.",
      "pleo": "The hosted MCP server acts with the connecting user's own Pleo permissions, is off until an admin enables it per entity, and can't move money, change cards or alter limits. It is listed only on the Optimise plan, its tool definitions aren't published, API keys need enabling by Pleo support, and no official SDK or SLA was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/expensify-vs-pleo",
    "json": "https://www.anchorterminal.com/compare/expensify-vs-pleo.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/expensify-vs-pleo.md",
    "slim": "https://www.anchorterminal.com/compare/expensify-vs-pleo.min.md"
  },
  "markdown": "Pleo API + MCP scores 62.9 (B) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments \u0026 pricing. Both do spend transactions.\n\n- Expensify: grade E, 41.1/100, rank #593 of 629. Markdown https://www.anchorterminal.com/tools/expensify.md · JSON https://www.anchorterminal.com/api/v1/tools/expensify.json\n- Pleo API + MCP: grade B, 62.9/100, rank #293 of 629. Markdown https://www.anchorterminal.com/tools/pleo.md · JSON https://www.anchorterminal.com/api/v1/tools/pleo.json\n\n## Which one, for what\n\n### Expensify (E)\n\nGood for: A finance team already on Expensify that wants an agent to export approved reports to an accounting system, create expenses and reports, keep categories, tags and employees in step with an HR system, or mark reports reimbursed.\n\nAhead on:\n- Payments \u0026 pricing, 30 against 15\n\nWatch for: No OpenAPI spec, llms.txt, version number or changelog was found for the Integration Server API\n\n### Pleo API + MCP (B)\n\nGood for: An agent that completes, codes, reviews and queues expenses for a Pleo customer on the Optimise plan, or for a bookkeeping integration that exports accounting entries and syncs tags, tax codes, accounts and vendors.\n\nAhead on:\n- Reliability, 71 against 62\n- Schema \u0026 documentation, 82 against 28\n- Agent ergonomics, 55 against 45\n- Security \u0026 auth, 71 against 34\n- Maintenance \u0026 community, 64 against 23\n- Transparency \u0026 trust, 75 against 58\n\nWatch for: The pricing page lists MCP on the Optimise plan only (£18 per user per month, three users minimum, sold through a demo)\n\n\n## Score by category\n\n| Category | Weight | Expensify | Pleo API + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 62 | 71 | Pleo API + MCP +9 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 28 | 82 | Pleo API + MCP +54 |\n| Agent ergonomics | 13% (16.2 this run) | 45 | 55 | Pleo API + MCP +10 |\n| Security \u0026 auth | 14% (17.5 this run) | 34 | 71 | Pleo API + MCP +37 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 15 | Expensify +15 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 23 | 64 | Pleo API + MCP +41 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 58 | 75 | Pleo API + MCP +17 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **41.1 · E** | **62.9 · B** | |\n\n## Facts side by side\n\n| Fact | Expensify | Pleo API + MCP |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Expensify, Inc. | Pleo Technologies A/S |\n| Hosted endpoint | `https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations` | `https://external.pleo.io` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | Proprietary service under the Expensify Terms of Service. The Expensify app client and help articles on GitHub (Expensify/App) are MIT | Proprietary service under Pleo's Master Service Agreement, API Terms of Service and AI Access Terms |\n| Read-only variant documented | yes | no |\n| llms.txt | no | yes |\n| Last release | none | 2026-10-02 |\n| Terms last updated | 2026-09-10 | no date given |\n| Privacy policy last updated | 2026-04-01 |  |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | yes | not found in the text |\n\n## Verdicts\n\n**Expensify.** One endpoint exports reports through caller-written templates and creates expenses, reports, rules and workspace settings, with limits of 5 requests per 10 seconds published and a status page that tracks the API separately. There is no OpenAPI spec, changelog, SDK, pagination or idempotency key, and one credential pair carries the whole account's rights.\n\n**Pleo API + MCP.** The hosted MCP server acts with the connecting user's own Pleo permissions, is off until an admin enables it per entity, and can't move money, change cards or alter limits. It is listed only on the Optimise plan, its tool definitions aren't published, API keys need enabling by Pleo support, and no official SDK or SLA was found.\n\n## Before you call either\n\n### Expensify\n\n1. POST `requestJobDescription` as a form field to the single endpoint. Keep it out of the URL query string, because it carries the secret\n2. Read `responseCode` in the body on every reply. HTTP status can be 200 on failure, and validation errors use 410\n3. Stay under 5 requests per 10 seconds and 20 per 60 seconds. No Retry-After header is documented, so space retries yourself\n4. Export in two calls. A `file` job returns a filename, then a `download` job fetches it. Amounts are in cents\n5. Don't retry a create job blindly. No idempotency key exists, so export and check before resending. Set `dry-run` to true when testing the Advanced Employee Updater\n\n### Pleo API + MCP\n\n1. Ask a company admin to enable Pleo MCP access under Settings, General, Pleo AI for each entity before connecting. It is off by default\n2. Name the entity in every request when working outside the default one. Each MCP request targets one entity and the choice doesn't persist\n3. Set the AI client to require approval for Pleo write tools. Pleo leaves confirmation to the client and doesn't enforce it server-side\n4. Send API keys as the Basic auth username with an empty password to external.pleo.io. Legacy tokens for openapi.pleo.io don't work there\n5. Budget every endpoint against one bucket of 600 requests a minute per credential, and on 429 wait for Retry-After or back off from one second\n6. Swap mcp.staging.pleo.io for mcp.pleo.io in the Claude Code command when moving from staging to production. Each needs its own OAuth sign-in\n\n## Questions\n\n### Which is better for AI agents, Expensify or Pleo API + MCP?\n\nPleo API + MCP scores 62.9 (B) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments \u0026 pricing.\n\n### Do Expensify and Pleo API + MCP need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Expensify and Pleo API + MCP without installing anything?\n\nYes. Expensify has a hosted endpoint at https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations and Pleo API + MCP at https://external.pleo.io.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/expensify-vs-pleo.json, and with the fewest tokens: https://www.anchorterminal.com/compare/expensify-vs-pleo.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"expensify\", \"b\": \"pleo\"}`. From a terminal: `anchor compare expensify pleo`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/expensify.json and https://www.anchorterminal.com/api/v1/tools/pleo.json\n\n## Other comparisons with Expensify or Pleo API + MCP\n\n- [Brex vs Expensify](https://www.anchorterminal.com/compare/brex-vs-expensify.md)\n- [Brex vs Pleo API + MCP](https://www.anchorterminal.com/compare/brex-vs-pleo.md)\n- [Expensify vs Ramp](https://www.anchorterminal.com/compare/expensify-vs-ramp.md)\n- [Expensify vs Spendesk API + MCP](https://www.anchorterminal.com/compare/expensify-vs-spendesk.md)\n- [Pleo API + MCP vs Ramp](https://www.anchorterminal.com/compare/pleo-vs-ramp.md)\n- [Pleo API + MCP vs Spendesk API + MCP](https://www.anchorterminal.com/compare/pleo-vs-spendesk.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "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": "Expensify vs Pleo API + MCP",
        "url": ""
      }
    ],
    "description": "Pleo API + MCP scores 62.9 (B) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments \u0026 pricing. Both do spend transactions. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Expensify E 41.1",
      "Pleo API + MCP B 62.9",
      "scores"
    ],
    "h1": "Expensify vs Pleo API + MCP",
    "image": "https://www.anchorterminal.com/assets/og/compare-expensify-vs-pleo.png",
    "path": "/compare/expensify-vs-pleo",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Expensify vs Pleo API + MCP for AI agents, E 41.1 vs B 62.9",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/expensify-vs-pleo"
  },
  "tokens": {
    "markdown": 2100,
    "slim": 730
  },
  "version": 1
}
