---
title: "Brex MCP server for AI agents - actionlake"
description: "Give Claude 115 Brex actions through one MCP server: cards, users, webhook groups, budgets. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/brex
updated: 2026-10-22
---

Connectors · Accounting & finance

# Brex MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Brex and the rest of your systems. It gives your agent 115 Brex actions (60 reads, 39 writes and 16 that wait for a confirmation) and holds the Brex credential itself, so the agent never does. It paces Brex's limits and records every call.

[Connect Brex free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

`claude mcp add --transport http actionlake https://connect.actionlake.com/mcp`

the first call

```
do {
  action: "brex.transfers.list",
  intent: "check which Brex account is connected"
}
# Lists transfers · read · 1 upstream call
```

- 115 actions in one signed file
- 60 read look, never change
- 39 write create and update
- 16 wait for a yes destructive, confirmed first

Set up

## Connect Brex in three steps.

1. 01
   ### Add actionlake to Claude.
   Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
   `https://connect.actionlake.com/mcp`
2. 02
   ### Connect Brex.
   Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
   - `api_token` Brex user token: an account or card admin opens dashboard.brex.com > Developer > Settings > Create Token and picks…
   ```
   account { op: "connections.requirements", service: "brex" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "brex.transfers.list" }
   # lists transfers · read · 1 upstream call
   check { action: "brex.transfers.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

Brex at a glance

**Sign-in**

Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.

**You provide**

`api_token`

**Limits we pace to**

1,000 calls a minute, per connection

**API covered**

Brex (corporate cards, expenses, budgets, payments, banking, travel and team management) API Brex public APIs (Team v2, Payments v1, Transactions v2, Expenses v1, Budgets v1/v2, Fields v1, Travel v1, Webhooks v1, Onboarding v1, Accounting v3)`api.brex.com`

**Built from**

Brex's documentation, read 22 October 2026[developer.brex.com](https://developer.brex.com/_spec/openapi/accounting_api.yaml) [developer.brex.com](https://developer.brex.com/_spec/openapi/budgets_api.yaml) [developer.brex.com](https://developer.brex.com/_spec/openapi/expenses_api.yaml)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

58 of 60 reads, for up to 5 minutes; a write clears what it affects

**Shared entities**

7, so ask can line Brex up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in Brex.

115 actions in 35 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

- **60** read look, never change
- **39** write create and update
- **16** destructive wait for a confirmation

1. ### Cards
   9
   3 read · 5 write · 1 destructive
   Create card · Create secure email to send card number · List cards · Get card
2. ### Users
   6
   3 read · 3 write · 0 destructive
   List users · Invite user · Get user · Update user
3. ### Webhook groups
   6
   2 read · 2 write · 2 destructive
   Create Webhook Group · List Webhook Groups · Add Webhook Group Members · Get Webhook Group
4. ### Budgets
   5
   2 read · 2 write · 1 destructive
   List Budgets · Create Budget · Get Budget · Update Budget
5. ### Budgets V1
   5
   2 read · 2 write · 1 destructive
   Create Spend Limit · List Spend Limits · Get Spend Limit · Update Spend Limit
6. ### Card expenses
   5
   2 read · 3 write · 0 destructive
   Update an expense · List card expenses · Create a new receipt match · Create a new receipt upload
7. ### Departments
   5
   2 read · 2 write · 1 destructive
   List departments · Create department · Get department · Update department
8. ### Field values
   5
   2 read · 2 write · 1 destructive
   Create custom field values · List custom field values · Get a field value · Update custom field values

**27 more areas · 69 actions**

- Fields **5**
- Locations **5**
- Referrals **5**
- Spend limits **5**
- Titles **5**
- Vendors **5**
- Webhook subscriptions **5**
- Accounting integration **3**
- Accounting records **3**
- Cash accounts **3**
- Transfers **3**
- Budget programs **2**
- Cost centers **2**
- Expenses **2**
- Legal entities **2**
- Trip bookings **2**
- Trips **2**
- Card accounts **1**
- Card statements **1**
- Card transactions **1**
- Cash statements **1**
- Cash transactions **1**
- Company **1**
- Incoming transfers **1**
- Linked accounts **1**
- Webhook group members **1**
- Webhook secrets **1**

Top actions

## The Brex API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 27 of Brex's 27 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `brex.transfers.list` Lists transfers | Lists transfers. | read | `finance.payment.list` 75 connectors |
| `brex.expenses.list` List expenses | List expenses. | read | `finance.expense.list` 40 connectors |
| `brex.cash_accounts.list` List cash accounts | List cash accounts. | read | `finance.bank_account.list` 35 connectors |
| `brex.users.list` List users | List users. | read | `identity.user.list` 474 connectors |
| `brex.transfers.create` Create transfer | Create transfer. | destructive | `finance.payment.create` 67 connectors |
| `brex.departments.list` List departments | List departments. | read | `hr.department.list` 40 connectors |
| `brex.locations.list` List locations | List locations. | read | `hr.location.list` 32 connectors |
| `brex.expenses.get` Get an expense | Get an expense. | read | `finance.expense.get` 42 connectors |
| `brex.users.create` Invite user | Invite user. | write | `identity.user.create` 262 connectors |
| `brex.cash_accounts.get` Get cash account by ID | Get cash account by ID. | read | `finance.bank_account.get` 30 connectors |
| `brex.departments.create` Create department | Create department. | write | `hr.department.create` 32 connectors |
| `brex.locations.create` Create location | Create location. | write | `hr.location.create` 23 connectors |

Try it

## Prompts to paste into Claude.

Each one names the Brex actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   List the payments recorded in Brex this month, largest first.
   calls `brex.transfers.list`
2. Write write
   Invite user in Brex. Show me exactly what you will send before you save it.
   calls `brex.users.create`
3. Across systems read
   Which Brex companies have invoices in ConnectWise PSA, and how many each?
   calls `brex.vendors.list` `connectwise_manage.invoices.list`

Across your systems

## Brex, joined to the rest of your business.

One `ask` fetches from Brex and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.

- Which Brex companies have invoices in ConnectWise PSA, and how many each?
  `brex.vendors.list` + `connectwise_manage.invoices.list`, on `crm.company` · [ConnectWise PSA](https://actionlake.com/connectors/connectwise-psa)
- Which Brex companies have tickets in HubSpot CRM, and how many each?
  `brex.vendors.list` + `hubspot_crm.tickets.list`, on `crm.company` · [HubSpot CRM](https://actionlake.com/connectors/hubspot-crm)

Also mapped by other connectors `identity.user` **517** `crm.company` **227** `finance.payment` **53** `hr.department` **36** `finance.expense` **26** `hr.location` **26** `finance.bank_account` **25**

ask

```
ask {
  intent: "which Brex companies have invoices in ConnectWise PSA, and how many each",
  steps: [
    { action: "brex.vendors.list", as: "co", input: {}, limit: 100, max_pages: 5 },
    { action: "connectwise_manage.invoices.list", as: "inv", input: {}, limit: 100, max_pages: 5 },
    { join: {
        left: "co",
        right: "inv",
        on: "crm.company",
        group_by: "co.name",
        select: ["co.name", "count(inv.id) as invoices"]
    } }
  ]
}
```

Example. Run it through check first: it validates the steps and prices them, and it is free.

Governance for Brex

## Destructive actions wait for a yes.

16 Brex actions are destructive. These are all of them:

- Create transfer `brex.transfers.create`
- Delete department `brex.departments.delete`
- Delete location `brex.locations.delete`
- Create incoming transfer `brex.incoming_transfers.create`
- Delete a custom field `brex.fields.delete`
- Delete title `brex.titles.delete`
- Delete vendor. `brex.vendors.delete`
- Archive a Budget `brex.budgets.archive`
- Terminate card `brex.cards.terminate`
- Archive a Spend Limit `brex.budgets_v1.archive`
- Delete custom field values `brex.field_values.delete`
- Archive a Spend Limit `brex.spend_limits.archive`
- Delete Webhook Group `brex.webhook_groups.delete`
- Unregister Webhook `brex.webhook_subscriptions.delete`
- Remove Webhook Group Members `brex.webhook_groups.remove_members`
- Disconnect accounting integration `brex.accounting_integration.disconnect`

A destructive action runs only with `confirm: true`. Under the `human` policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

do brex.departments.delete confirm_policy: **human**

Delete department?

**intent:** the user asked me to delete department

run suspended · waiting for a named person · key _brex-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "brex-agent",
  allowed_actions: ["brex.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "brex.transfers.create", approver: "lead@example.com" },
    { match: "brex.departments.delete", approver: "lead@example.com" },
    { match: "brex.locations.delete", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to Brex only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What Brex costs on actionlake.

Every Brex action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call Brex refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

- 1 upstream call per action all 115 Brex actions
- 115 actions page each page of a long list is one call
- 58 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every Brex action.

115 actions by area: the id your agent calls, what it does, and its effect.

**Cards 9**

- `brex.cards.create` Create card write
- `brex.cards.email_card_number` Create secure email to send card number write
- `brex.cards.get` Get card read
- `brex.cards.get_card_number` Get card number read
- `brex.cards.list` List cards read
- `brex.cards.lock` Lock card write
- `brex.cards.terminate` Terminate card destructive
- `brex.cards.unlock` Unlock card write
- `brex.cards.update` Update card write

**Users 6**

- `brex.users.add` Create user write
- `brex.users.create` Invite user write
- `brex.users.get` Get user read
- `brex.users.get_me` Get current user read
- `brex.users.list` List users read
- `brex.users.update` Update user write

**Webhook groups 6**

- `brex.webhook_groups.add_members` Add Webhook Group Members write
- `brex.webhook_groups.create` Create Webhook Group write
- `brex.webhook_groups.delete` Delete Webhook Group destructive
- `brex.webhook_groups.get` Get Webhook Group read
- `brex.webhook_groups.list` List Webhook Groups read
- `brex.webhook_groups.remove_members` Remove Webhook Group Members destructive

**Budgets 5**

- `brex.budgets.archive` Archive a Budget destructive
- `brex.budgets.create` Create Budget write
- `brex.budgets.get` Get Budget read
- `brex.budgets.list` List Budgets read
- `brex.budgets.update` Update Budget write

**Budgets V1 5**

- `brex.budgets_v1.archive` Archive a Spend Limit destructive
- `brex.budgets_v1.create` Create Spend Limit write
- `brex.budgets_v1.get` Get Spend Limit read
- `brex.budgets_v1.list` List Spend Limits read
- `brex.budgets_v1.update` Update Spend Limit write

**Card expenses 5**

- `brex.card_expenses.get` Get a card expense read
- `brex.card_expenses.list` List card expenses read
- `brex.card_expenses.receipt_match` Create a new receipt match write
- `brex.card_expenses.receipt_upload` Create a new receipt upload write
- `brex.card_expenses.update` Update an expense write

**Departments 5**

- `brex.departments.create` Create department write
- `brex.departments.delete` Delete department destructive
- `brex.departments.get` Get department read
- `brex.departments.list` List departments read
- `brex.departments.update` Update department write

**Field values 5**

- `brex.field_values.create` Create custom field values write
- `brex.field_values.delete` Delete custom field values destructive
- `brex.field_values.get` Get a field value read
- `brex.field_values.list` List custom field values read
- `brex.field_values.update` Update custom field values write

**Fields 5**

- `brex.fields.create` Create a custom field write
- `brex.fields.delete` Delete a custom field destructive
- `brex.fields.get` Get custom field read
- `brex.fields.list` List custom fields read
- `brex.fields.update` Update a custom field write

**Locations 5**

- `brex.locations.create` Create location write
- `brex.locations.delete` Delete location destructive
- `brex.locations.get` Get location read
- `brex.locations.list` List locations read
- `brex.locations.update` Update location write

**Referrals 5**

- `brex.referrals.create` Creates a referral write
- `brex.referrals.document_upload` Create a new document upload write
- `brex.referrals.get` Gets a referral by ID read
- `brex.referrals.list` List referrals read
- `brex.referrals.process_ein_document` Process a delayed EIN document after upload write

**Spend limits 5**

- `brex.spend_limits.archive` Archive a Spend Limit destructive
- `brex.spend_limits.create` Create Spend Limit write
- `brex.spend_limits.get` Get Spend Limit read
- `brex.spend_limits.list` List Spend Limits read
- `brex.spend_limits.update` Update Spend Limit write

**Titles 5**

- `brex.titles.create` Create title write
- `brex.titles.delete` Delete title destructive
- `brex.titles.get` Get title read
- `brex.titles.list` List titles read
- `brex.titles.update` Update title write

**Vendors 5**

- `brex.vendors.create` Create vendor write
- `brex.vendors.delete` Delete vendor. destructive
- `brex.vendors.get` Get vendor read
- `brex.vendors.list` Lists vendors read
- `brex.vendors.update` Update vendor write

**Webhook subscriptions 5**

- `brex.webhook_subscriptions.create` Register Webhook write
- `brex.webhook_subscriptions.delete` Unregister Webhook destructive
- `brex.webhook_subscriptions.get` Get Webhook read
- `brex.webhook_subscriptions.list` List Webhooks read
- `brex.webhook_subscriptions.update` Update Webhook write

**Accounting integration 3**

- `brex.accounting_integration.create` Create accounting integration write
- `brex.accounting_integration.disconnect` Disconnect accounting integration destructive
- `brex.accounting_integration.reactivate` Reactivate accounting integration write

**Accounting records 3**

- `brex.accounting_records.get` Get accounting record by ID read
- `brex.accounting_records.list` Query accounting records read
- `brex.accounting_records.report_export_results` Report accounting export results write

**Cash accounts 3**

- `brex.cash_accounts.get` Get cash account by ID read
- `brex.cash_accounts.get_primary` Get primary cash account read
- `brex.cash_accounts.list` List cash accounts read

**Transfers 3**

- `brex.transfers.create` Create transfer destructive
- `brex.transfers.get` Get transfer read
- `brex.transfers.list` Lists transfers read

**Budget programs 2**

- `brex.budget_programs.get` Get Budget Program read
- `brex.budget_programs.list` List Budget Programs read

**Cost centers 2**

- `brex.cost_centers.get` Get cost center read
- `brex.cost_centers.list` List cost centers read

**Expenses 2**

- `brex.expenses.get` Get an expense read
- `brex.expenses.list` List expenses read

**Legal entities 2**

- `brex.legal_entities.get` Get legal entity read
- `brex.legal_entities.list` List legal entities read

**Trip bookings 2**

- `brex.trip_bookings.get` Get booking read
- `brex.trip_bookings.list` List trip bookings read

**Trips 2**

- `brex.trips.get` Get trip read
- `brex.trips.list` List trips read

**Card accounts 1**

- `brex.card_accounts.list` List card accounts read

**Card statements 1**

- `brex.card_statements.list_primary` List primary card account statements. read

**Card transactions 1**

- `brex.card_transactions.list_primary` List transactions for all card accounts. read

**Cash statements 1**

- `brex.cash_statements.list` List cash account statements. read

**Cash transactions 1**

- `brex.cash_transactions.list` List transactions for the selected cash account. read

**Company 1**

- `brex.company.get` Get company read

**Incoming transfers 1**

- `brex.incoming_transfers.create` Create incoming transfer destructive

**Linked accounts 1**

- `brex.linked_accounts.list` Lists linked accounts read

**Webhook group members 1**

- `brex.webhook_group_members.list` List Webhook Group Members read

**Webhook secrets 1**

- `brex.webhook_secrets.list` List Webhook Secrets read

Questions

## The Brex MCP server, answered.

**Is there a Brex MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 115 Brex actions across cards, users, webhook groups and budgets, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Brex.

**What do I need to connect Brex?**

Brex user token: an account or card admin opens dashboard.brex.com > Developer > Settings > Create Token and picks…. The free call account { op: "connections.requirements", service: "brex" } lists exactly what to paste.

**Can an AI agent delete or change things in Brex?**

Only if its key allows it, and only with an explicit confirmation. 16 Brex actions are destructive, including create transfer, delete department and delete location. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

**Will an AI agent use up my Brex API limit?**

actionlake paces every call to the limits in the Brex service file: 1,000 calls a minute per connection. Repeated reads are answered from cache (58 Brex actions can be), which never reaches Brex.

**What does a Brex action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (115 Brex actions page). Cache hits, searches, dry runs and calls Brex refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

**Which Brex API does it cover?**

The Brex (corporate cards, expenses, budgets, payments, banking, travel and team management) API Brex public APIs (Team v2, Payments v1, Transactions v2, Expenses v1, Budgets v1/v2, Fields v1, Travel v1, Webhooks v1, Onboarding v1, Accounting v3) at api.brex.com. It is built from Brex's documentation as read on 22 October 2026. 115 actions in 35 areas, each one in the signed service file (version 1.0.0).

**Can I combine Brex with my other systems?**

Yes. ask joins Brex to ConnectWise PSA or HubSpot CRM on the same customer and returns the answer rather than every row. Brex maps crm.company, which 227 other connectors also map.

**Does actionlake keep my Brex data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Brex credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

**Which AI clients can use it?**

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

## More connectors like Brex

Shares the most action names with

- [Sage Intacct 18](https://actionlake.com/connectors/sage-intacct)
- [Coupa 17](https://actionlake.com/connectors/coupa)
- [BILL 15](https://actionlake.com/connectors/bill)
- [Rippling 11](https://actionlake.com/connectors/rippling)
- [UKG Pro 6](https://actionlake.com/connectors/ukg-pro)
- [Navan 5](https://actionlake.com/connectors/navan)

Joins with, on shared entities

- [HaloPSA 3](https://actionlake.com/connectors/halopsa)
- [Teamwork 3](https://actionlake.com/connectors/teamwork)
- [Zoho Inventory 3](https://actionlake.com/connectors/zoho-inventory)
- [Deel 3](https://actionlake.com/connectors/deel)
- [Zuper 3](https://actionlake.com/connectors/zuper)
- [Accelo 3](https://actionlake.com/connectors/accelo)

Browse

- [All Accounting & finance connectors](https://actionlake.com/connectors/category/accounting-and-finance)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by Brex; the name is the vendor's own. Counts are from the Brex service file, version 1.0.0.

## Give your agent Brex today.

[Connect Brex free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/brex
More: https://actionlake.com/llms.txt
