
Create a new accounting system integration (alpha feature - may be restricted).
Disconnect an accounting system integration (alpha feature - may be restricted).
Reactivate a disconnected accounting system integration (alpha feature - may be restricted).
List accounting records. Requires an active accounting integration (use createaccountingintegration first). Filter by ids, reviewstatus, sourcetype, or updatedat (RFC 3339). Set singleentry to get single-entry line items. Alpha feature - may be restricted.
Get a specific accounting record. Use listaccountingrecords to find record IDs. Set single_entry to get single-entry line items. Alpha feature - may be restricted.
Report results of an accounting export (success or failure) (alpha feature - may be restricted).
List all budget programs in the company.
Get a specific budget program by ID. Use listbudgetprograms to find program IDs.
List all budgets in the company. Use cursor and limit for pagination. The Brex Budgets API has no server-side status filter, so filter the returned items by their status field.
Create a budget. Requires parentbudgetid (call listbudgets first to get a parent, e.g. the root 'All Budgets'), name, description, periodrecurrencetype, and amount. Use listusers for owneruserids.
Get a specific budget by ID. Use list_budgets to find budget IDs.
Update a budget's name, description, or limit. Use list_budgets to find budget IDs.
Archive a budget (mark as inactive). Use list_budgets to find budget IDs.
List all spend limits. Filter by member user (use list_users to find user IDs) and use cursor/limit for pagination.
Create a new spend limit for a budget or user.
Get a specific spend limit by ID. Use listspendlimits to find spend limit IDs.
Update a spend limit's name, description, or base limit amount. Use listspendlimits to find spend limit IDs.
Archive a spend limit (mark as inactive). Use listspendlimits to find spend limit IDs.
List Brex cards. Filter by user_id and use cursor/limit for pagination.
Get a specific card by ID.
Create a new card. Use listusers to find a valid owner user ID. WARNING: This creates a real card. A failed call is not always a no-op — Brex creates the backing spend limit before it validates funding, so a failure can still leave one behind; check listspend_limits before retrying.
Update a card's spend controls and metadata.
Lock a card. Provide a reason from the enum (CARDDAMAGED, CARDLOST, etc.).
Unlock a locked card.
Terminate a card permanently. Provide a reason from the enum.
Get the Brex company the credential belongs to, including its legal name, mailing address, and account type (BREXCLASSIC or BREXEMPOWER).
List Brex departments. Filter by name and use cursor/limit for pagination.
Get a specific department by ID.
Create a new department.
List expenses, filtering server-side by status, payment status, expense type, user, budget, or a purchased/updated/payment-posted date range. The filters take lists, e.g. status=['APPROVED','SETTLED']. Use listusers for user IDs and listbudgets for budget IDs. Pass expand (e.g. ['merchant']) for extra detail. Dates are RFC 3339, e.g. 2026-01-31T00:00:00Z.
Get a specific expense by ID. Use listexpenses to find expense IDs. Pass expand (e.g. ['merchant', 'receipts.downloaduris']) for extra detail, and loadcustomfields to include custom field values.
Update a card expense's memo. Use list_expenses to find expense IDs.
Register a receipt so Brex auto-matches it to a card expense by amount and date. Returns a presigned URL (uri) to PUT the receipt file. Provide the receipt file name including its extension.
Get a presigned URL to upload a receipt for a specific card expense. Returns uri to PUT the file (valid ~30 min). Use list_expenses to find expense IDs; provide the receipt file name including its extension.
List Brex locations. Filter by name and use cursor/limit for pagination.
Get a specific location by ID.
Create a new location.
List all onboarding referrals created by this application. Use cursor for pagination; this endpoint has no page-size parameter.
Get an onboarding referral by ID, including its signup URL and status. Use listreferrals, or the id returned by createreferral, to find referral IDs.
Create an onboarding referral (partner API). Requires referralcode and applicant details (firstname, lastname, email). Returns referralsignup_url, which the applicant uses to claim the account.
List all vendors in the company. Filter by vendor name and use cursor/limit for pagination.
Create a new vendor.
Get a specific vendor by ID. Use list_vendors to find vendor IDs.
Update a vendor's name, email, phone, or beneficiary name. Use list_vendors to find vendor IDs. Bank details cannot be changed here — rotate a vendor's payment instrument in the Brex dashboard.
Delete a vendor by ID. Use list_vendors to find vendor IDs.
List all transfers. Use cursor/limit for pagination. The Brex API does not support server-side status filtering here; filter client-side if needed.
Create an outgoing transfer. WARNING: This moves real money out of the account. Requires amount, counterparty (payee), description, externalmemo, and originatingaccount. Use getprimarycashaccount/listcashaccounts for the originating account and listvendors for a vendor counterparty.
Get a specific transfer by ID. Use list_transfers to find transfer IDs.
Pull funds into a Brex account. WARNING: This moves real money. Requires amount, counterparty (payer bank account), description, and receivingaccount. Use getprimarycashaccount/listcashaccounts for the receiving account.
List linked bank accounts eligible to fund ACH transfers into Brex. Requires accountids: the Brex account IDs to scope the lookup to (use listcashaccounts or getprimarycashaccount; the same accountid is also on every listbudgets and listspendlimits result).
List Brex job titles. Filter by name and use cursor/limit for pagination.
Get a specific title by ID.
Create a new job title.
List all card accounts in the company.
List statements for the company's card account, newest period first. Brex exposes statements for the primary card account only, so this takes no account ID.
List all cash accounts in the company, with balances. Account numbers are returned as the last four digits only.
Get the primary cash account for the company.
Get a specific cash account by ID, with balances. Use listcashaccounts to find account IDs. The account number is returned as the last four digits only.
List statements for a cash account. Use listcashaccounts to find account IDs.
List card transactions for the company. Brex exposes only the primary card account, so this takes no account ID. Filter server-side with postedatstart (RFC 3339, e.g. 2026-01-31T00:00:00Z) or userids — use listusers to find user IDs. Pass expand=['expense_id'] to link each transaction to its expense.
List transactions for a cash account. Use listcashaccounts to find account IDs. Filter server-side with postedatstart (RFC 3339, e.g. 2026-01-31T00:00:00Z).
List company trips. Use lastupdatedafter to fetch only trips changed since a timestamp (RFC 3339, e.g. 2026-01-31T00:00:00Z). /v1/trips supports no other filter — to find one traveler's trips, read the traveler field on each result.
Get a specific trip by ID. Use list_trips to find trip IDs.
List all bookings for a trip. Use list_trips to find trip IDs.
Get a specific trip booking by ID. Use listtripbookings to find booking IDs.
List Brex users. Filter by email or remotedisplayid, and pass expand=['limit'] to inline each user's spend limit. Use cursor and limit for pagination.
Get the current authenticated user's information.
Get a specific user by ID.
Create a new Brex user. Use listusers, listlocations, listdepartments, and listtitles to find valid IDs for optional fields.
Update a user's details (status, manager, department, location, title).
Get a user's monthly spend limit.
Set a user's monthly spend limit in cents.
Validate Brex credentials. Verifies OAuth2, user token, or client_credentials access.

In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}It's an MCP server that lets your agents access data and functionality from Brex via tools. Your agents can invoke these tools to pull a card's recent transactions, check an expense's approval status, flag a receipt as missing, review a budget's remaining balance, and more.
Brex has its own MCP server. It covers expenses, transactions, budgets, and user lookups, but it doesn't include DLP controls, cross-connector Tool Packs, or centralized credential management, which is why teams often route through a platform like Merge Agent Handler instead.
The use cases naturally depend on the agent you've built, but here are a few common ones:
Here are some of the most commonly used tools:
get_card_transactions returns recent transactions for a specific card. agents use it to spot duplicate charges or check spend against a limitlist_expenses returns expenses filtered by status, employee, or date range. it's the fastest way for an agent to find every pending or unapproved expense in one callget_expense fetches full detail on a single expense, including receipt attachment status and approval state. agents call this after finding a candidate expense with a list operationlist_budgets returns each budget's allocated amount, spent amount, and remaining balance. useful for any agent built around spend tracking or overspend alertsget_user looks up an employee's Brex profile by ID or email, including department and role. handy for routing approvals to the right managerlist_bills returns vendor bills and their payment status. agents cross-reference this against accounting records during reconciliationSeveral things separate Merge Agent Handler's Brex MCP server from a self-hosted or community alternative:
You can take the following steps:
1. Create or log into your Merge Agent Handler account.
2. Install the Merge CLI by running pipx install merge-api, then run merge configure to link the CLI to your Merge account and merge login to authenticate your session.
3. Register the Agent Handler MCP server with Claude Code by running claude mcp add --transport http agent-handler https://ah-api.merge.dev/mcp, then open Claude Code and run /mcp to confirm agent-handler appears with a connected status.
4. Select agent-handler from the MCP list. This opens a browser window where you select which integrations to authenticate. Choose Brex and complete the auth flow. Merge stores and manages the credentials going forward.
5. Open a Claude Code session and start querying Brex data directly. The first time you use a Brex tool, a Magic Link may appear to complete connector authentication.
If you want to connect Merge Agent Handler's Brex MCP with internal or customer-facing agentic products, you can follow the steps in our docs.
Yes, Merge for Workforce lets your employees connect Claude, ChatGPT, Microsoft Copilot, Cursor, Codex, and other MCP-compatible AI tools to Brex without bypassing IT governance.
Instead of setting up direct connections with personal credentials that IT can't monitor or revoke, each employee authenticates through Merge and gets individual credentials tied to their identity. An employee can ask their AI to check a card's recent transactions, submit a missing receipt, or check an expense's approval status, all within IT-defined permissions.
IT also provisions access by role or group via SCIM. A finance analyst, for example, might get Brex access to reconcile transactions, NetSuite access to post journal entries, and Slack access to post budget alerts, while an engineering manager might get Brex access to review team card spend, GitHub access to check deploy activity, and Jira access to update sprint tickets.
Every tool call an employee's AI makes to Brex is also inspected against your DLP rules and logged to a searchable audit trail, giving security teams full visibility into what data was accessed and by whom.
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now