{
  "data": {
    "a": {
      "slug": "brex",
      "name": "Brex",
      "vendor": "Brex LLC",
      "vendorUrl": "https://www.brex.com",
      "kind": "http-api",
      "category": "spend-management",
      "summary": "Brex is a spend platform with corporate cards, expense management, bill pay, travel and business accounts. Its REST Developer API reads and writes cards, expenses, spend limits, vendors and transfers, and a hosted MCP server is in beta.",
      "url": "https://www.anchorterminal.com/tools/brex",
      "markdownUrl": "https://www.anchorterminal.com/tools/brex.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/brex.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/brex.json",
      "license": "Proprietary service under the Brex Platform Agreement and the Brex Access Agreement",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.brex.com",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Access is self-serve for a Brex customer. An account admin or card admin accepts the Developer API agreement in the dashboard, then creates a user token with chosen scopes at Settings \u003e Developer. The token is sent as a Bearer header, is shown once, can be revoked, and expires after 90 days without a call. Partners acting for other Brex accounts apply to Brex for a client ID and secret and use the OAuth 2.0 authorisation code grant, with one-hour access tokens and refresh tokens. The MCP server takes OAuth with dynamic client registration, where each employee signs in with their own permissions, or an admin's user token.",
      "pricing": "freemium",
      "pricingNotes": "No separate API fee. brex.com/pricing lists Brex API access under Essentials at $0 per user per month, with Premium at $12 per user per month and Enterprise priced on request. Access needs an approved Brex business account, so an agent can't start without one. There is no customer sandbox, and the staging server is for approved partners only. The Access Agreement lets Brex introduce API fees on 30 days' notice (checked 2026-10-08).",
      "priceSummary": "$12 / seat-mo",
      "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": 43,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developer.brex.com",
      "llmsTxt": "https://developer.brex.com/llms.txt",
      "openapi": "https://developer.brex.com/_bundle/openapi/team_api.yaml",
      "capabilities": [
        "spend.transactions",
        "spend.expenses",
        "spend.cards",
        "spend.bills"
      ],
      "tags": [
        "hosted",
        "freemium",
        "api-key",
        "oauth",
        "mcp",
        "openapi",
        "llms-txt",
        "webhooks",
        "status-page",
        "soc2",
        "pci-dss"
      ],
      "lastRelease": "2026-10-01",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 60.7,
        "grade": "C",
        "agentReady": false,
        "rank": 345,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 3,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 70,
          "maintenance": 66,
          "payments": 25,
          "reliability": 60,
          "schema": 80,
          "security": 72,
          "transparency": 67
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": -3,
        "negativeNotes": [
          "2026-02 and 2026-09. The changelog records the List expenses maximum `limit` cut from 1,000 to 100 in February 2026, and `GET /v2/users/{id}/limit` removed from the Team API in September 2026 without a deprecated label in the entry. The Team API is at version 1.0, and the launch-stages page says breaking changes to generally available APIs come as new versions with deprecation timelines. Both changes are documented in the month they shipped, and notice by email couldn't be checked, so the smallest deduction applies (https://developer.brex.com/changelog)."
        ],
        "verdict": "User tokens carry per-resource scopes with read-only variants, every POST and PUT accepts an `Idempotency-Key`, and ten OpenAPI specs are public. The Expenses API changes only an expense's memo, there is no customer sandbox or official SDK, and the status page logs API errors lasting over four hours on 4 August 2026.",
        "bestFor": "A finance team already on Brex that wants an agent to read expenses and transactions, issue and lock cards, set spend limits, upload receipts and pay vendors.",
        "strengths": [
          "Ten public OpenAPI 3 specs covering 115 operations, plus llms.txt and a Markdown twin of every docs page",
          "User tokens take scopes chosen at creation, most with a read-only variant, and card numbers need the separate `cards.pan` scope",
          "Every POST and PUT accepts an `Idempotency-Key`, and Create transfer and Create card require one",
          "API access is listed on the Essentials plan at $0 per user per month",
          "The hosted MCP server uses OAuth with dynamic client registration and each employee's own Brex permissions"
        ],
        "weaknesses": [
          "The Expenses API update endpoint accepts only `memo`, so an outside agent can't set a category or custom field on an expense through it",
          "No customer sandbox. The docs say staging isn't a sandbox and won't accept customer tokens",
          "No official SDK. The docs list three community libraries that Brex doesn't support",
          "status.brex.com logs API request errors from 16:01 to 20:34 UTC on 4 August 2026 and invalidated developer tokens on 21 September 2026",
          "The MCP server is beta with 43 tools, and approvals and card management aren't available through it"
        ],
        "agentNotes": [
          "Ask an account admin or card admin for a user token with only the scopes the task needs, and prefer the `.readonly` variants. A token unused for 90 days expires.",
          "Send a stored `Idempotency-Key` on every POST and PUT. Create transfer and Create card reject requests without one.",
          "Only settled transactions are returned. Poll card and cash transactions with `posted_at_start` and a lookback of at least one day.",
          "Keep under 1,000 requests in 60 seconds per client and account, and back off exponentially with jitter on 429.",
          "Send only ASCII in free-text fields, and quote the `X-Brex-Trace-Id` response header when reporting an error."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 60.7
          }
        ],
        "editorialScores": {
          "ergonomics": 70,
          "maintenance": 66,
          "payments": 25,
          "reliability": 60,
          "schema": 80,
          "security": 72,
          "transparency": 47
        },
        "provenanceScore": 86
      },
      "connect": {
        "http": "curl -i -X GET \\\n  https://api.brex.com/v2/users/me \\\n  -H 'Authorization: Bearer \u003cYOUR_TOKEN_FROM_STEP_1_HERE\u003e'",
        "claudeCode": "claude mcp add --transport http brex https://api.brex.com/mcp",
        "config": {
          "mcpServers": {
            "brex": {
              "headers": {
                "Authorization": "Bearer YOUR_BREX_ACCESS_TOKEN"
              },
              "type": "http",
              "url": "https://api.brex.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/spend.transactions",
        "tool": "https://letme.dev/brex"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Essentials plan",
          "unit": "seat-month",
          "usd": 0,
          "note": "Brex API access listed on this plan"
        },
        {
          "item": "Premium plan",
          "unit": "seat-month",
          "usd": 12,
          "note": "Enterprise is priced on request"
        }
      ],
      "provenance": {
        "legalEntity": "Brex LLC",
        "domain": "brex.com",
        "domainRegistered": "1998-10-22",
        "endpointOnVendorDomain": true,
        "terms": "https://www.brex.com/legal/platform-agreement",
        "privacy": "https://www.brex.com/legal/privacy",
        "statusPage": "https://status.brex.com",
        "changelog": "https://developer.brex.com/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The Platform Agreement defines Brex as Brex LLC, a wholly owned subsidiary of Capital One, N.A., and the pricing page footer gives addresses in San Francisco and Salt Lake City.",
          "API use is also governed by the Brex Access Agreement at https://www.brex.com/legal/developer-portal, which an admin accepts in the dashboard before creating a token.",
          "The API and the MCP server answer at api.brex.com and the authorisation server at accounts-api.brex.com, both brex.com subdomains. The former host platform.brexapis.com still works per the docs.",
          "www.brex.com/.well-known/security.txt returns 404. brex.com/trust/responsible-disclosure has a disclosure policy and a form run with Bugcrowd.",
          "RDAP for brex.com gives a registration date of 1998-10-22."
        ],
        "score": 86
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/brex.json",
      "live": {
        "slug": "brex",
        "probe": {
          "target": "https://api.brex.com",
          "method": "get",
          "lastAt": "2026-10-08T19:08:42.131785756Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 401,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 427,
          "p95ms24h": 469,
          "samples24h": 42,
          "samples30d": 42,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 42,
              "ok": 42
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.brex.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T19:06:28.458206534Z"
        },
        "securityTxt": {
          "url": "https://brex.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:43.637271768Z"
        },
        "pages": [
          {
            "url": "https://developer.brex.com/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:17:07.265606865Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "953aa59e7531"
          },
          {
            "url": "https://www.brex.com/legal/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:26:48.465771046Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b6066f1a37fc"
          },
          {
            "url": "https://www.brex.com/legal/platform-agreement",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:26:45.950905207Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "86931ef51c0f"
          }
        ],
        "updatedAt": "2026-10-08T19:08:42.131785756Z"
      }
    },
    "answer": "Brex scores 60.7 (C) on agent readiness against Expensify's 41.1 (E), and leads in 5 of 7 scored categories. Expensify leads on payments \u0026 pricing.",
    "b": {
      "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"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Brex LLC",
        "b": "Expensify, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.brex.com",
        "b": "https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations",
        "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 Brex Platform Agreement and the Brex Access Agreement",
        "b": "Proprietary service under the Expensify Terms of Service. The Expensify app client and help articles on GitHub (Expensify/App) are MIT",
        "name": "Licence"
      },
      {
        "a": "43",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-01",
        "b": "none",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-09-10",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-04-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      }
    ],
    "faq": [
      {
        "answer": "Brex scores 60.7 (C) on agent readiness against Expensify's 41.1 (E), and leads in 5 of 7 scored categories. Expensify leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Brex or Expensify?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Brex and Expensify need an API key?"
      },
      {
        "answer": "Yes. Brex has a hosted endpoint at https://api.brex.com and Expensify at https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations.",
        "question": "Can an agent call Brex and Expensify without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 80 against 28",
          "Agent ergonomics, 70 against 45",
          "Security \u0026 auth, 72 against 34",
          "Maintenance \u0026 community, 66 against 23",
          "Transparency \u0026 trust, 67 against 58"
        ],
        "also": null,
        "goodFor": "A finance team already on Brex that wants an agent to read expenses and transactions, issue and lock cards, set spend limits, upload receipts and pay vendors.",
        "slug": "brex",
        "watchFor": "The Expenses API update endpoint accepts only `memo`, so an outside agent can't set a category or custom field on an expense through it"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 30 against 25"
        ],
        "also": [
          "No incidents deducted, where Brex loses 3 points for them"
        ],
        "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"
      }
    ],
    "job": {
      "capability": "spend.transactions",
      "name": "Spend transactions"
    },
    "others": [
      {
        "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/brex-vs-ramp.json",
        "title": "Brex vs Ramp",
        "url": "https://www.anchorterminal.com/compare/brex-vs-ramp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brex-vs-spendesk.json",
        "title": "Brex vs Spendesk API + MCP",
        "url": "https://www.anchorterminal.com/compare/brex-vs-spendesk"
      },
      {
        "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"
      }
    ],
    "scores": [
      {
        "brex": 60,
        "by": 2,
        "edge": "expensify",
        "expensify": 62,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "brex": 80,
        "by": 52,
        "edge": "brex",
        "expensify": 28,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "brex": 70,
        "by": 25,
        "edge": "brex",
        "expensify": 45,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "brex": 72,
        "by": 38,
        "edge": "brex",
        "expensify": 34,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "brex": 25,
        "by": 5,
        "edge": "expensify",
        "expensify": 30,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "brex": 66,
        "by": 43,
        "edge": "brex",
        "expensify": 23,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "brex": 67,
        "by": 9,
        "edge": "brex",
        "expensify": 58,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Brex scores 60.7 (C) on agent readiness against Expensify's 41.1 (E), and leads in 5 of 7 scored categories. Expensify leads on payments \u0026 pricing. Both do spend transactions.",
    "verdicts": {
      "brex": "User tokens carry per-resource scopes with read-only variants, every POST and PUT accepts an `Idempotency-Key`, and ten OpenAPI specs are public. The Expenses API changes only an expense's memo, there is no customer sandbox or official SDK, and the status page logs API errors lasting over four hours on 4 August 2026.",
      "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/brex-vs-expensify",
    "json": "https://www.anchorterminal.com/compare/brex-vs-expensify.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/brex-vs-expensify.md",
    "slim": "https://www.anchorterminal.com/compare/brex-vs-expensify.min.md"
  },
  "markdown": "Brex scores 60.7 (C) on agent readiness against Expensify's 41.1 (E), and leads in 5 of 7 scored categories. Expensify leads on payments \u0026 pricing. Both do spend transactions.\n\n- Brex: grade C, 60.7/100, rank #345 of 629. Markdown https://www.anchorterminal.com/tools/brex.md · JSON https://www.anchorterminal.com/api/v1/tools/brex.json\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\n## Which one, for what\n\n### Brex (C)\n\nGood for: A finance team already on Brex that wants an agent to read expenses and transactions, issue and lock cards, set spend limits, upload receipts and pay vendors.\n\nAhead on:\n- Schema \u0026 documentation, 80 against 28\n- Agent ergonomics, 70 against 45\n- Security \u0026 auth, 72 against 34\n- Maintenance \u0026 community, 66 against 23\n- Transparency \u0026 trust, 67 against 58\n\nWatch for: The Expenses API update endpoint accepts only `memo`, so an outside agent can't set a category or custom field on an expense through it\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 25\n\nAlso in its favour:\n- No incidents deducted, where Brex loses 3 points for them\n\nWatch for: No OpenAPI spec, llms.txt, version number or changelog was found for the Integration Server API\n\n\n## Score by category\n\n| Category | Weight | Brex | Expensify | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 60 | 62 | Expensify +2 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 80 | 28 | Brex +52 |\n| Agent ergonomics | 13% (16.2 this run) | 70 | 45 | Brex +25 |\n| Security \u0026 auth | 14% (17.5 this run) | 72 | 34 | Brex +38 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 25 | 30 | Expensify +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 66 | 23 | Brex +43 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 67 | 58 | Brex +9 |\n| Negative events | ≤15 | -3 | 0 | |\n| **Total** | | **60.7 · C** | **41.1 · E** | |\n\n## Facts side by side\n\n| Fact | Brex | Expensify |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Brex LLC | Expensify, Inc. |\n| Hosted endpoint | `https://api.brex.com` | `https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations` |\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 Brex Platform Agreement and the Brex Access Agreement | Proprietary service under the Expensify Terms of Service. The Expensify app client and help articles on GitHub (Expensify/App) are MIT |\n| Tools exposed | 43 | none |\n| Read-only variant documented | yes | yes |\n| llms.txt | yes | no |\n| Last release | 2026-10-01 | none |\n| Terms last updated | no date given | 2026-09-10 |\n| Privacy policy last updated | no date given | 2026-04-01 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | yes | yes |\n\n## Verdicts\n\n**Brex.** User tokens carry per-resource scopes with read-only variants, every POST and PUT accepts an `Idempotency-Key`, and ten OpenAPI specs are public. The Expenses API changes only an expense's memo, there is no customer sandbox or official SDK, and the status page logs API errors lasting over four hours on 4 August 2026.\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## Before you call either\n\n### Brex\n\n1. Ask an account admin or card admin for a user token with only the scopes the task needs, and prefer the `.readonly` variants. A token unused for 90 days expires.\n2. Send a stored `Idempotency-Key` on every POST and PUT. Create transfer and Create card reject requests without one.\n3. Only settled transactions are returned. Poll card and cash transactions with `posted_at_start` and a lookback of at least one day.\n4. Keep under 1,000 requests in 60 seconds per client and account, and back off exponentially with jitter on 429.\n5. Send only ASCII in free-text fields, and quote the `X-Brex-Trace-Id` response header when reporting an error.\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## Questions\n\n### Which is better for AI agents, Brex or Expensify?\n\nBrex scores 60.7 (C) on agent readiness against Expensify's 41.1 (E), and leads in 5 of 7 scored categories. Expensify leads on payments \u0026 pricing.\n\n### Do Brex and Expensify need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Brex and Expensify without installing anything?\n\nYes. Brex has a hosted endpoint at https://api.brex.com and Expensify at https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/brex-vs-expensify.json, and with the fewest tokens: https://www.anchorterminal.com/compare/brex-vs-expensify.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"brex\", \"b\": \"expensify\"}`. From a terminal: `anchor compare brex expensify`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/brex.json and https://www.anchorterminal.com/api/v1/tools/expensify.json\n\n## Other comparisons with Brex or Expensify\n\n- [Brex vs Pleo API + MCP](https://www.anchorterminal.com/compare/brex-vs-pleo.md)\n- [Brex vs Ramp](https://www.anchorterminal.com/compare/brex-vs-ramp.md)\n- [Brex vs Spendesk API + MCP](https://www.anchorterminal.com/compare/brex-vs-spendesk.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",
  "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": "Brex vs Expensify",
        "url": ""
      }
    ],
    "description": "Brex scores 60.7 (C) on agent readiness against Expensify's 41.1 (E), and leads in 5 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": [
      "Brex C 60.7",
      "Expensify E 41.1",
      "scores"
    ],
    "h1": "Brex vs Expensify",
    "image": "https://www.anchorterminal.com/assets/og/compare-brex-vs-expensify.png",
    "path": "/compare/brex-vs-expensify",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Brex vs Expensify for AI agents, C 60.7 vs E 41.1 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/brex-vs-expensify"
  },
  "tokens": {
    "markdown": 2000,
    "slim": 680
  },
  "version": 1
}
