Brex MCP: What the Official Server Can and Can't Touch
Yes — Brex ships an official MCP server, and it’s hosted by Brex. The endpoint is https://api.brex.com/mcp, it supports OAuth with Dynamic Client Registration so most clients connect without any manual token setup, and it exposes more than 50 tools across expenses, cards, banking, bills, travel, and accounting. Brex documents it at developer.brex.com/docs/mcp and labels it beta — the tool list is explicitly subject to change.
That matters because “Brex MCP” is a term where you can easily land on the wrong thing. Brex has also published a good deal about MCP as an engineering story — its internal agent platform, its open-source CrabTrap proxy for policing what agents do on the network. Those are essays about how Brex builds with agents, not the product you connect. And there’s a community mcp-brex-server on GitHub that predates the official one. If you’re wiring up company card data, you want the Brex-hosted endpoint, not either of those.
Brex is one of many — the complete list of MCP servers covers every app that ships one, grouped by category.
What the Brex MCP server can read and write
Model Context Protocol is the open standard that lets an AI client — Claude, ChatGPT, Cursor, Codex — call an outside system through a shared interface. Brex’s implementation is a remote HTTP server, so there’s nothing to host or run locally.
The read surface is the bulk of it, and for a finance lead it’s the useful part:
- Transactions and expenses — find charges by merchant, amount, date, or spend limit; pull the expenses missing a receipt or a memo before close.
- Cards and limits — card details and spend limits, without card numbers being exposed.
- Banking — business account balances and banking transactions.
- Bills and vendors — vendor records and accounts payable.
- Accounting — GL accounts from a connected ERP, plus travel and user records.
The write surface is deliberately narrow. It covers things like updating an expense memo, replacing attendees on a card expense, and assigning a spend limit to an expense. It is not a general-purpose money mover: nothing in the tool list issues a card, moves funds, or pays a bill. If you were worried that connecting an AI client hands it the checkbook — it doesn’t. It hands it the ledger, plus the ability to tidy up expense metadata.
Permissions, OAuth, and who has to be an admin
This is where finance readers should read carefully, because the two auth paths behave differently.
OAuth is the recommended path and the less alarming one. Any employee can authorize it, and the tools they get are scoped to what their own Brex role already allows — “you only see and modify what you’re authorized to.” Actions are recorded as the MCP client acting on behalf of the authenticated user, so the audit trail survives. A cardholder connecting their own Brex sees their own spend, not the company’s.
API tokens are the other path, for clients that don’t do OAuth. Here the picture changes: per Brex’s authentication docs, only account admins or card admins can generate a token, and you choose the token’s scopes at creation time. Scopes are per-API — expenses, transactions, budgets, team, accounting — with read-only variants (transactions.card.readonly and friends) separated from write. Tokens expire after 90 days of inactivity and die immediately if the user they belong to is deactivated.
The practical consequence: an admin token in an MCP client is a company-wide token. It doesn’t inherit a single user’s blast radius the way OAuth does. If you go the token route, scope it to read-only and to the specific APIs the workflow needs, rather than minting a broad one because it’s faster. There’s also a prerequisite people miss — an admin has to enable Developer API access under Settings → Developer → API in the Brex dashboard before any of this works.
The security decision you’re actually making
Worth being blunt about, because most write-ups skip it. Connecting Brex to an AI client means your company’s full spend picture — merchants, amounts, headcount signals, vendor relationships, account balances — gets sent to a model provider and handled under their retention terms, not Brex’s. Brex says as much: queries are processed by OpenAI, Anthropic, or Slack per each platform’s policies. If you’re at the stage where procurement asks about data processing agreements, this is a real one to answer before you paste the URL.
The bigger risk is the third-party option. There is a community Brex MCP server on GitHub (crazyrabbitLTC/mcp-brex-server) that authenticates by taking a BREX_API_KEY from an environment variable. It has single-digit stars and its last code push was August 2025. Handing a long-lived admin-generated Brex token to unaudited third-party code is a materially different decision from an OAuth flow against a Brex-hosted endpoint, and it was a more defensible one back when Brex hadn’t shipped its own. Now that Brex has, there’s no reason to run it.
Where the Brex MCP stops
None of this is a criticism of the protocol — it’s the protocol’s shape.
MCP has no trigger mechanism and no scheduler. Its own Triggers and Events working group opens by conceding that clients learn about server-side changes by polling, and that work is still listed as on the horizon rather than shipped.
For finance ops that limitation is the whole problem, because the events you care about are events. A transaction lands without a receipt. A charge comes in out of policy. A card hits its limit on the 19th. Month-end close arrives and forty expenses are still uncoded. None of these can start anything through MCP. The AI finds out when someone opens a chat and asks.
Two other limits compound it:
- It’s one app at a time. The Brex MCP knows Brex. Getting a flagged charge into Slack, a row into your close checklist, and a note onto the right QuickBooks entry means standing up and authing a separate server for each.
- The write surface won’t grow to meet you. Memos and attendees are the ceiling for now, and it’s beta — the tool list may shift under you.
Brex itself does have the missing piece at the API layer: a Webhooks API where you register an endpoint with POST /v1/webhooks, subscribe to a defined list of event_types, and verify a signature on delivery. That’s a real event stream. It just has nothing to do with MCP, and consuming it means running a public HTTPS endpoint and writing the handler yourself.
Making the money events actually fire
That gap — Brex knows something happened, the AI only finds out if asked — is where Carly fits. Carly connects to Brex natively: no server to host, no long-lived token pasted into someone’s local config. For anything else in your finance stack that isn’t on the native list but has a public API, you paste those credentials into Carly at carlyassistant.com/integrations.
The difference from MCP is the part that matters here: Carly’s workflows are triggered and scheduled, so the work happens whether or not anyone has a chat window open.
- When a transaction posts without a receipt → DM the cardholder in Slack with the merchant and amount, and re-ping at 48 hours if it’s still missing.
- When a charge lands outside policy — wrong category, over threshold, a vendor nobody recognizes — → post it to
#financewith the context already summarized, before it’s buried in a month of rows. - When a card approaches its spend limit → alert the budget owner rather than letting the decline happen at a checkout.
- Every morning during close week → pull the uncoded and unreceipted expenses, group them by owner, and send each person only their own list.
The non-AI steps — the pulling, matching, and routing between Brex, Slack, your ERP, and a sheet — are free and unlimited, the Zapier-style backbone of the workflow. The AI steps, the ones that read a charge and decide whether it’s worth a human’s attention, start at $35/month. You describe the outcome in plain language rather than building the trigger plumbing.
If what you want is to interrogate your spend from a chat window, Brex’s official MCP server is the right tool and takes about a minute to connect. If you want a missing receipt to chase itself, that’s the job MCP wasn’t built for.
FAQ
Does Brex have an official MCP server?
Yes. Brex hosts it at https://api.brex.com/mcp and documents it at developer.brex.com/docs/mcp. It’s in beta, supports OAuth with Dynamic Client Registration plus API-token auth, and works with Claude Code, Claude Desktop, ChatGPT, Cursor, Codex, and other MCP-compatible HTTP clients. Don’t confuse it with the older community mcp-brex-server project on GitHub or with Brex’s engineering writing about its internal agent platform.
Do you need to be a Brex admin to use the Brex MCP? Not for OAuth — any employee can authorize, and they get tools scoped to their existing Brex role. Admins are needed for two things: enabling Developer API access under Settings → Developer → API, and generating API tokens, which only account or card admins can create.
Can the Brex MCP server move money or pay bills? No. The tool list is mostly read — transactions, expenses, cards, balances, bills, vendors, GL accounts — with narrow writes limited to expense metadata like memos, attendees, and limit assignment. No tool issues cards, transfers funds, or pays a bill.
Can Brex MCP alert me when an expense is missing a receipt? Not on its own. MCP has no triggers and no scheduler, so nothing fires when a transaction posts — you have to open a chat and ask. Brex’s own Webhooks API does emit events, but it’s separate from MCP and requires you to run and secure an endpoint. For “when this happens in Brex, do that” without building it yourself, use a workflow tool like Carly. Similar constraints apply to ChatGPT’s MCP support and to the ChatGPT–Brex connection more broadly; the Claude side is the same story.
Ready to automate your busywork?
Carly schedules, researches, and briefs you—so you can focus on what matters.
See what people say
"Before Carly, I relied on a Calendly link, but the whole process felt impersonal and not very professional. Carly changed that by handling all the back-and-forth, so I'm no longer stuck in endless email threads trying to line up schedules.
Now Carly reaches out to candidates, shares my real-time availability, lets them pick a slot, then sends a Zoom link and drops it straight into my calendar. She sends reminders to both of us before each call, which has significantly reduced no-shows and last-minute confusion.
On top of scheduling, Carly acts like a full executive assistant, sending me my schedule the night before so I can prepare for each call. It reminds me of the old x.ai assistant, but Carly is noticeably smarter, faster, and better suited to my healthcare recruitment business."


