{
  "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": 684,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 8,
        "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-08T21:12:10.129322115Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 468,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 448,
          "p95ms24h": 522,
          "samples24h": 41,
          "samples30d": 41,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 41,
              "ok": 41
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.expensify.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:06:04.180428997Z"
        },
        "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-08T21:12:10.129322115Z"
      }
    },
    "answer": "Mercury API scores 63.8 (B) on agent readiness against Expensify's 41.1 (E), and leads in 5 of 7 scored categories.",
    "b": {
      "slug": "mercury",
      "name": "Mercury API",
      "vendor": "Mercury Technologies, Inc.",
      "vendorUrl": "https://mercury.com",
      "kind": "http-api",
      "category": "spend-management",
      "summary": "Mercury is a US business banking service with accounts, debit and credit cards, payments and invoicing. Its REST API reads transactions, issues virtual cards with spend limits and sends payments, and a hosted MCP server is in beta.",
      "url": "https://www.anchorterminal.com/tools/mercury",
      "markdownUrl": "https://www.anchorterminal.com/tools/mercury.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/mercury.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/mercury.json",
      "repo": "https://github.com/MercuryTechnologies/mercury-cli",
      "license": "Proprietary service under Mercury's Terms of Use. The Mercury CLI on GitHub is Apache-2.0",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.mercury.com/api/v1",
      "packages": [
        {
          "registry": "go",
          "name": "github.com/MercuryTechnologies/mercury-cli"
        },
        {
          "registry": "go",
          "name": "github.com/MercuryTechnologies/mercury-go"
        }
      ],
      "auth": "mixed",
      "authNotes": "Access is self-serve for a Mercury customer. A user with permission creates an API token under Settings, Tokens, choosing read-only, read and write, or custom scopes. The token is sent as a Bearer header or as the basic-auth username, is shown once, can be revoked and is deleted after 45 days unused. Tokens with write scopes need an IP allowlist, except the `RequestSendMoney` scope, which queues payments for dashboard approval. The MCP server takes OAuth 2.0 with dynamic client registration and PKCE, where a person signs in and grants `read` and any of five write scopes. OAuth2 clients for integrations that serve other Mercury customers need Mercury's approval through a form.",
      "pricing": "freemium",
      "pricingNotes": "No separate API fee was found. A Mercury business account is $0 a month, Plus is $35 and Pro $350 on monthly billing ($29.90 and $299 billed annually). The pricing FAQ says mass payments on the API may incur fees and gives no amount, and mercury.com/api says 100 free ACH transfers a month come with every account. A free sandbox with self-serve signup lets an agent's owner start without a business account or a card. Production access needs an approved Mercury business account (checked 2026-10-08).",
      "priceSummary": "$35 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the API docs, the embedded OpenAPI definitions, the API product page or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 35,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.mercury.com",
      "llmsTxt": "https://docs.mercury.com/llms.txt",
      "capabilities": [
        "spend.transactions",
        "spend.cards",
        "spend.expenses"
      ],
      "tags": [
        "hosted",
        "freemium",
        "api-key",
        "oauth",
        "mcp",
        "openapi",
        "llms-txt",
        "webhooks",
        "sandbox",
        "cli",
        "status-page",
        "soc2"
      ],
      "lastRelease": "2026-08-12",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 63.8,
        "grade": "B",
        "agentReady": false,
        "rank": 293,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 2,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 68,
          "maintenance": 64,
          "payments": 30,
          "reliability": 59,
          "schema": 72,
          "security": 82,
          "transparency": 63
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Custom tokens take per-endpoint scopes, write tokens need an IP allowlist, and payments can be queued for approval in the dashboard through `POST /account/{accountId}/request-send-money`. No rate limits, error catalogue or SLA were found in the reviewed documentation, the changelog carries no dates, and the MCP server is beta.",
        "bestFor": "A company that banks with Mercury and wants an agent to read balances and transactions, set notes and categories, upload receipts, issue virtual cards with spend limits and queue payments for human approval.",
        "strengths": [
          "Three token tiers (read-only, read and write, custom scopes), with an IP allowlist required for write scopes and unused permissions removed after 45 days",
          "`POST /account/{accountId}/request-send-money` always queues a payment for approval in the dashboard, and MCP payment tools can only create such requests",
          "`idempotencyKey` is required on send-money calls, and a repeat returns 409 with the original transaction",
          "A free sandbox at `https://api-sandbox.mercury.com/api/v1/` with self-serve signup and preloaded test data",
          "The MCP server uses OAuth 2.0 with dynamic client registration, PKCE S256 and a separate scope for each of its five write tools"
        ],
        "weaknesses": [
          "No rate limits with numbers and no 429 handling were found in the reviewed documentation",
          "Reference pages document only 400 and 404 errors with one-line descriptions, and no error body schema or code list was found",
          "The changelog lists ten entries with no dates, and no deprecation policy was found",
          "The MCP server is labelled beta and can't create recipients, issue or manage cards, or create invoices",
          "No SLA. The Terms of Use supply the services as is and cap liability at $1,000"
        ],
        "agentNotes": [
          "Ask for a Custom token with only the scopes the task needs. Scopes can't be edited later, and a token unused for 45 days is deleted.",
          "Without a fixed IP address, send payments through `POST /account/{accountId}/request-send-money`. Direct sends through `POST /account/{accountId}/transactions` need an allowlisted IP.",
          "Send a stored `idempotencyKey` with every payment. The same recipient, account, amount and method within 24 hours returns 400 even with a new key.",
          "Set `limit` on list calls. `GET /transactions` returns up to 1,000 rows by default.",
          "Test against `https://api-sandbox.mercury.com/api/v1/` with a sandbox token. Webhooks aren't available in the sandbox."
        ],
        "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": 63.8
          }
        ],
        "editorialScores": {
          "ergonomics": 68,
          "maintenance": 64,
          "payments": 30,
          "reliability": 59,
          "schema": 72,
          "security": 82,
          "transparency": 42
        },
        "provenanceScore": 84
      },
      "connect": {
        "install": "curl -sSf https://cli.mercury.com/install.sh | sh",
        "http": "curl https://api.mercury.com/api/v1/accounts --header 'accept: application/json' --header \"Authorization: Bearer TOKEN\"",
        "claudeCode": "claude mcp add --transport http -s user mercury https://mcp.mercury.com/mcp"
      },
      "letme": {
        "capability": "https://letme.dev/spend.transactions",
        "tool": "https://letme.dev/mercury"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Mercury business account",
          "unit": "month",
          "usd": 0,
          "note": "API tokens are created in account settings. ACH, domestic wires and real-time payments are free per the pricing FAQ"
        },
        {
          "item": "Mercury Plus",
          "unit": "month",
          "usd": 35,
          "note": "$29.90 a month billed annually"
        },
        {
          "item": "Mercury Pro",
          "unit": "month",
          "usd": 350,
          "note": "$299 a month billed annually"
        }
      ],
      "provenance": {
        "legalEntity": "Mercury Technologies, Inc.",
        "domain": "mercury.com",
        "domainRegistered": "1990-11-30",
        "endpointOnVendorDomain": true,
        "terms": "https://mercury.com/legal/terms",
        "privacy": "https://mercury.com/legal/privacy",
        "statusPage": "https://status.mercury.com",
        "changelog": "https://docs.mercury.com/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The Terms of Use (last updated 5 October 2026) name Mercury Technologies, Inc. and its affiliates and cover the site, the app and the services, including AI connections made through an API or connector in section 3.2. No separate API or developer agreement was found on the legal index.",
          "The privacy policy (effective 27 August 2026) names Mercury Technologies, Inc. and applies to Mercury's websites, mobile apps and financial products.",
          "Mercury states it is a fintech company and not an FDIC-insured bank. Accounts are held under separate agreements with Choice Financial Group and Column N.A., linked from mercury.com/legal.",
          "The API answers at api.mercury.com, the Vault API at vault-api.mercury.com, the sandbox at api-sandbox.mercury.com and the MCP server at mcp.mercury.com, all mercury.com subdomains.",
          "mercury.com/.well-known/security.txt returns 404. The security page sends vulnerability reports to security@mercury.com.",
          "RDAP for mercury.com gives a registration date of 1990-11-30."
        ],
        "score": 84
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/mercury.json",
      "live": {
        "slug": "mercury",
        "probe": {
          "target": "https://api.mercury.com/api/v1",
          "method": "get",
          "lastAt": "2026-10-08T21:12:15.175705812Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 300,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 301,
          "p95ms24h": 359,
          "samples24h": 21,
          "samples30d": 21,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 21,
              "ok": 21
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.mercury.com",
          "indicator": "minor",
          "summary": "Partial System Degradation",
          "checkedAt": "2026-10-08T21:06:12.336155671Z"
        },
        "updatedAt": "2026-10-08T21:12:15.175705812Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Expensify, Inc.",
        "b": "Mercury Technologies, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations",
        "b": "https://api.mercury.com/api/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "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 Mercury's Terms of Use. The Mercury CLI on GitHub is Apache-2.0",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "35",
        "name": "Tools exposed"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "none",
        "b": "2026-08-12",
        "name": "Last release"
      },
      {
        "a": "2026-09-10",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-04-01",
        "b": "no date given",
        "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": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      }
    ],
    "faq": [
      {
        "answer": "Mercury API scores 63.8 (B) on agent readiness against Expensify's 41.1 (E), and leads in 5 of 7 scored categories.",
        "question": "Which is better for AI agents, Expensify or Mercury API?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Expensify and Mercury API need an API key?"
      },
      {
        "answer": "Yes. Expensify has a hosted endpoint at https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations and Mercury API at https://api.mercury.com/api/v1.",
        "question": "Can an agent call Expensify and Mercury API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "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": [
          "Schema \u0026 documentation, 72 against 28",
          "Agent ergonomics, 68 against 45",
          "Security \u0026 auth, 82 against 34",
          "Maintenance \u0026 community, 64 against 23",
          "Transparency \u0026 trust, 63 against 58"
        ],
        "also": null,
        "goodFor": "A company that banks with Mercury and wants an agent to read balances and transactions, set notes and categories, upload receipts, issue virtual cards with spend limits and queue payments for human approval.",
        "slug": "mercury",
        "watchFor": "No rate limits with numbers and no 429 handling were found in the reviewed documentation"
      }
    ],
    "job": {
      "capability": "spend.transactions",
      "name": "Spend transactions"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-expensify.json",
        "title": "Airwallex Spend and Issuing vs Expensify",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-expensify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-mercury.json",
        "title": "Airwallex Spend and Issuing vs Mercury API",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-mercury"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bill-vs-expensify.json",
        "title": "BILL vs Expensify",
        "url": "https://www.anchorterminal.com/compare/bill-vs-expensify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bill-vs-mercury.json",
        "title": "BILL vs Mercury API",
        "url": "https://www.anchorterminal.com/compare/bill-vs-mercury"
      },
      {
        "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-mercury.json",
        "title": "Brex vs Mercury API",
        "url": "https://www.anchorterminal.com/compare/brex-vs-mercury"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expensify-vs-pleo.json",
        "title": "Expensify vs Pleo API + MCP",
        "url": "https://www.anchorterminal.com/compare/expensify-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/mercury-vs-pleo.json",
        "title": "Mercury API vs Pleo API + MCP",
        "url": "https://www.anchorterminal.com/compare/mercury-vs-pleo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mercury-vs-ramp.json",
        "title": "Mercury API vs Ramp",
        "url": "https://www.anchorterminal.com/compare/mercury-vs-ramp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mercury-vs-spendesk.json",
        "title": "Mercury API vs Spendesk API + MCP",
        "url": "https://www.anchorterminal.com/compare/mercury-vs-spendesk"
      }
    ],
    "scores": [
      {
        "by": 3,
        "edge": "expensify",
        "expensify": 62,
        "key": "reliability",
        "mercury": 59,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 44,
        "edge": "mercury",
        "expensify": 28,
        "key": "schema",
        "mercury": 72,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 23,
        "edge": "mercury",
        "expensify": 45,
        "key": "ergonomics",
        "mercury": 68,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 48,
        "edge": "mercury",
        "expensify": 34,
        "key": "security",
        "mercury": 82,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "expensify": 30,
        "key": "payments",
        "mercury": 30,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 41,
        "edge": "mercury",
        "expensify": 23,
        "key": "maintenance",
        "mercury": 64,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 5,
        "edge": "mercury",
        "expensify": 58,
        "key": "transparency",
        "mercury": 63,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Mercury API scores 63.8 (B) on agent readiness against Expensify's 41.1 (E), and leads in 5 of 7 scored categories. 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.",
      "mercury": "Custom tokens take per-endpoint scopes, write tokens need an IP allowlist, and payments can be queued for approval in the dashboard through `POST /account/{accountId}/request-send-money`. No rate limits, error catalogue or SLA were found in the reviewed documentation, the changelog carries no dates, and the MCP server is beta."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/expensify-vs-mercury",
    "json": "https://www.anchorterminal.com/compare/expensify-vs-mercury.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/expensify-vs-mercury.md",
    "slim": "https://www.anchorterminal.com/compare/expensify-vs-mercury.min.md"
  },
  "markdown": "Mercury API scores 63.8 (B) on agent readiness against Expensify's 41.1 (E), and leads in 5 of 7 scored categories. Both do spend transactions.\n\n- Expensify: grade E, 41.1/100, rank #684 of 722. Markdown https://www.anchorterminal.com/tools/expensify.md · JSON https://www.anchorterminal.com/api/v1/tools/expensify.json\n- Mercury API: grade B, 63.8/100, rank #293 of 722. Markdown https://www.anchorterminal.com/tools/mercury.md · JSON https://www.anchorterminal.com/api/v1/tools/mercury.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\nWatch for: No OpenAPI spec, llms.txt, version number or changelog was found for the Integration Server API\n\n### Mercury API (B)\n\nGood for: A company that banks with Mercury and wants an agent to read balances and transactions, set notes and categories, upload receipts, issue virtual cards with spend limits and queue payments for human approval.\n\nAhead on:\n- Schema \u0026 documentation, 72 against 28\n- Agent ergonomics, 68 against 45\n- Security \u0026 auth, 82 against 34\n- Maintenance \u0026 community, 64 against 23\n- Transparency \u0026 trust, 63 against 58\n\nWatch for: No rate limits with numbers and no 429 handling were found in the reviewed documentation\n\n\n## Score by category\n\n| Category | Weight | Expensify | Mercury API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 62 | 59 | Expensify +3 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 28 | 72 | Mercury API +44 |\n| Agent ergonomics | 13% (16.2 this run) | 45 | 68 | Mercury API +23 |\n| Security \u0026 auth | 14% (17.5 this run) | 34 | 82 | Mercury API +48 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 30 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 23 | 64 | Mercury API +41 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 58 | 63 | Mercury API +5 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **41.1 · E** | **63.8 · B** | |\n\n## Facts side by side\n\n| Fact | Expensify | Mercury API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Expensify, Inc. | Mercury Technologies, Inc. |\n| Hosted endpoint | `https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations` | `https://api.mercury.com/api/v1` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Freemium |\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 Mercury's Terms of Use. The Mercury CLI on GitHub is Apache-2.0 |\n| Tools exposed | none | 35 |\n| Read-only variant documented | yes | yes |\n| llms.txt | no | yes |\n| Last release | none | 2026-08-12 |\n| Terms last updated | 2026-09-10 | no date given |\n| Privacy policy last updated | 2026-04-01 | no date given |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | yes |\n| Terms restrict benchmarking | not found in the text | yes |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | yes | yes |\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**Mercury API.** Custom tokens take per-endpoint scopes, write tokens need an IP allowlist, and payments can be queued for approval in the dashboard through `POST /account/{accountId}/request-send-money`. No rate limits, error catalogue or SLA were found in the reviewed documentation, the changelog carries no dates, and the MCP server is beta.\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### Mercury API\n\n1. Ask for a Custom token with only the scopes the task needs. Scopes can't be edited later, and a token unused for 45 days is deleted.\n2. Without a fixed IP address, send payments through `POST /account/{accountId}/request-send-money`. Direct sends through `POST /account/{accountId}/transactions` need an allowlisted IP.\n3. Send a stored `idempotencyKey` with every payment. The same recipient, account, amount and method within 24 hours returns 400 even with a new key.\n4. Set `limit` on list calls. `GET /transactions` returns up to 1,000 rows by default.\n5. Test against `https://api-sandbox.mercury.com/api/v1/` with a sandbox token. Webhooks aren't available in the sandbox.\n\n## Questions\n\n### Which is better for AI agents, Expensify or Mercury API?\n\nMercury API scores 63.8 (B) on agent readiness against Expensify's 41.1 (E), and leads in 5 of 7 scored categories.\n\n### Do Expensify and Mercury API need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Expensify and Mercury API without installing anything?\n\nYes. Expensify has a hosted endpoint at https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations and Mercury API at https://api.mercury.com/api/v1.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/expensify-vs-mercury.json, and with the fewest tokens: https://www.anchorterminal.com/compare/expensify-vs-mercury.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"expensify\", \"b\": \"mercury\"}`. From a terminal: `anchor compare expensify mercury`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/expensify.json and https://www.anchorterminal.com/api/v1/tools/mercury.json\n\n## Other comparisons with Expensify or Mercury API\n\n- [Airwallex Spend and Issuing vs Expensify](https://www.anchorterminal.com/compare/airwallex-vs-expensify.md)\n- [Airwallex Spend and Issuing vs Mercury API](https://www.anchorterminal.com/compare/airwallex-vs-mercury.md)\n- [BILL vs Expensify](https://www.anchorterminal.com/compare/bill-vs-expensify.md)\n- [BILL vs Mercury API](https://www.anchorterminal.com/compare/bill-vs-mercury.md)\n- [Brex vs Expensify](https://www.anchorterminal.com/compare/brex-vs-expensify.md)\n- [Brex vs Mercury API](https://www.anchorterminal.com/compare/brex-vs-mercury.md)\n- [Expensify vs Pleo API + MCP](https://www.anchorterminal.com/compare/expensify-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- [Mercury API vs Pleo API + MCP](https://www.anchorterminal.com/compare/mercury-vs-pleo.md)\n- [Mercury API vs Ramp](https://www.anchorterminal.com/compare/mercury-vs-ramp.md)\n- [Mercury API vs Spendesk API + MCP](https://www.anchorterminal.com/compare/mercury-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 Mercury API",
        "url": ""
      }
    ],
    "description": "Mercury API scores 63.8 (B) on agent readiness against Expensify's 41.1 (E), and leads in 5 of 7 scored categories. Both do spend transactions. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Expensify E 41.1",
      "Mercury API B 63.8",
      "scores"
    ],
    "h1": "Expensify vs Mercury API",
    "image": "https://www.anchorterminal.com/assets/og/compare-expensify-vs-mercury.png",
    "path": "/compare/expensify-vs-mercury",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Expensify vs Mercury API for AI agents, E 41.1 vs B 63.8",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/expensify-vs-mercury"
  },
  "tokens": {
    "markdown": 2150,
    "slim": 680
  },
  "version": 1
}
