# Brex

> Brex through One

- Skill: `withoneai/brex` (Agent Skill)
- Install (CLI): `npx skillmds@latest add withoneai/brex`
- Raw SKILL.md: https://api.skillmd.com/api/skills/withoneai/brex/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: withoneai (https://skillmd.com/u/withoneai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/withoneai/brex

---


# Brex through One

Brex combines corporate cards, business accounts, expense management, bill pay, and travel booking into a single AI-powered financial operations platform—offering unified spend control, real-time visibility, automated workflows, and modern treasury tools designed for startups and enterprises across 120+ countries.

One exposes Brex through four MCP tools. The table below carries real action ids from One's knowledge base, so for a common operation you can skip search and go straight to reading the action's parameters.

## How to run an action

1. Find the action in the table below, or call `search_one_platform_actions` with platform `brex` if it is not listed.
2. Call `get_one_action_knowledge` with the action id. Do this every time, including for actions in this table. The table gives you the id, not the parameters.
3. Call `execute_one_action` with parameters copied from that knowledge.

Never guess a parameter name, a body field, or an enum value. The knowledge has the real schema, and a guessed field is either a 400 or a silent write of the wrong thing.

## Before you start

Call `list_one_integrations` once and confirm Brex is connected. If it is missing, the user has not connected it: say so and point them at https://app.withone.ai rather than reaching for raw HTTP.

Each connection carries an `access` field. If it reports `{"policy": "methods", "methods": ["GET"]}` the agent is read-only here, so plan a read-only answer instead of attempting a write that will be refused.

## Before a write

Creates, updates, deletes and sends land on a real Brex account and cannot be recalled. State the action and the specific target in one line before the first write in a task, and let the user stop you. Reads need no confirmation.

## Actions

### Budgets

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Budget by ID | GET | `/v2/budgets/{{id}}` | `conn_mod_def::GJ094hSR8nE::Z4He1qh-SfGiP8JuXyLXww` |
| Get a Spend Limit by ID | GET | `/v1/budgets/{{id}}` | `conn_mod_def::GJ09-jcQaTU::ZmKtsfSmQOyi8XzCA4luzw` |
| List Budgets | GET | `/v2/budgets` | `conn_mod_def::GJ094q6dtMY::1uQwvjk6R928D49LMnzCrw` |
| List Spend Limits | GET | `/v1/budgets` | `conn_mod_def::GJ09-qOKmWE::oFeeoTxJQku6eUilAEGYQA` |
| Archive a Budget | POST | `/v2/budgets/{{id}}/archive` | `conn_mod_def::GJ094RIHbtQ::VnWj4-OmSYewvpL6Uur_8w` |
| Archive a Spend Limit | POST | `/v1/budgets/{{id}}/archive` | `conn_mod_def::GJ09-SSCsRM::atiUQpjvTFSlLRcGfzVBBA` |
| Create a Spend Limit | POST | `/v1/budgets` | `conn_mod_def::GJ09-aEiULY::G5M1llCBTEm4DWpYPpI49A` |
| Create Budget | POST | `/v2/budgets` | `conn_mod_def::GJ094Z8EAKM::_MF_lncnRcO0Fr2Cuor5jA` |
| Update a Budget | PUT | `/v2/budgets/{{id}}` | `conn_mod_def::GJ094y8cYgw::OrUQReSGQqyXexDH-ie8iQ` |
| Update a Spend Limit | PUT | `/v1/budgets/{{id}}` | `conn_mod_def::GJ09-yXPMqU::LYPOEFUoSzy6snCkEFLzTw` |

### Cards

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Card by ID | GET | `/v2/cards/{{id}}` | `conn_mod_def::GJ095qR_g1A::S1bdeKmfSY2UULkfPz4FhQ` |
| Get a Card’s PAN Details (Number, CVV, Expiration) by Card ID | GET | `/v2/cards/{{id}}/pan` | `conn_mod_def::GJ095xhI9E0::LNnZWV98SMOHeSTWUghA5w` |
| List a User's Cards | GET | `/v2/cards` | `conn_mod_def::GJ0957OpT8c::C6Pta84jR9mOSEIbNvsLZQ` |
| Create Card | POST | `/v2/cards` | `conn_mod_def::GJ095bDDDVk::LcleiXRPSGCbxp6T-Ey0OA` |
| Create Secure Email to Send a Card Number | POST | `/v2/cards/{{id}}/secure_email` | `conn_mod_def::GJ095jUdSSg::AxkEqJyIS1y5v7CnhGfu3g` |
| Lock a Card | POST | `/v2/cards/{{id}}/lock` | `conn_mod_def::GJ096EFZiD8::VYkaHzkCS82WHo1TUy1YnA` |
| Terminate a Card | POST | `/v2/cards/{{id}}/terminate` | `conn_mod_def::GJ096MkXwuo::Ea8INFq6Q8qJv22Eim2XCQ` |
| Unlock a Card | POST | `/v2/cards/{{id}}/unlock` | `conn_mod_def::GJ096U9kb0k::ygqaRoRBS9u1kHT9mxSs4g` |
| Update a Card | PUT | `/v2/cards/{{id}}` | `conn_mod_def::GJ096dUt9rA::3QD34XwtS0Kf6o_rO9sQyw` |

### Fields

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Custom Field by ID | GET | `/v1/fields/{{id}}` | `conn_mod_def::GJ098cFzsT4::kjprY9IYQQqCrJ4jMsqmoQ` |
| List Custom Fields | GET | `/v1/fields` | `conn_mod_def::GJ098jpRfZ0::HwPEaaKiRaaOcdD9Q3Gl9g` |
| Create a Custom Field | POST | `/v1/fields` | `conn_mod_def::GJ098OVll-M::4BfehzxESoScoQ0DdGUnfw` |
| Delete a Custom Field | DELETE | `/v1/fields/{{id}}` | `conn_mod_def::GJ098VLn0-A::1kGrEdWlTQCd7TnarYZ41A` |
| Delete Custom Field Values for a Field | DELETE | `/v1/fields/{{fieldId}}/values` | `conn_mod_def::GJ097r1GRbA::sFkOimd2QaKNdTjMl4UkRA` |
| Update a Custom Field by ID | PUT | `/v1/fields/{{id}}` | `conn_mod_def::GJ098re5A20::Btz8COYhTGeGm4zfv7HGsQ` |
| Update Custom Field Values for a Field | PUT | `/v1/fields/{{fieldId}}/values` | `conn_mod_def::GJ098HZye_g::dVSg9uS3TKeaVhQlsPwA6Q` |

### Users

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a User by ID | GET | `/v2/users/{{id}}` | `conn_mod_def::GJ0-BWEsxw0::68flA6RlT7q-tGYihTmgYQ` |
| Get a User's Monthly Limit | GET | `/v2/users/{{id}}/limit` | `conn_mod_def::GJ0-BMiy6CY::NweIPpT6SAyvZ4sM0imBmw` |
| Get Current User (Me) | GET | `/v2/users/me` | `conn_mod_def::GJ0-BFh4i10::IXrOiqwHQOK5iRLIIX4BYg` |
| List Users | GET | `/v2/users` | `conn_mod_def::GJ0-BnrPjkQ::Q-e0PfRqRhORLFrV4dYVSQ` |
| Invite a User (Create Employee User) | POST | `/v2/users` | `conn_mod_def::GJ0-BdpzCk0::siTev4WbSW2SXSqXhoakDg` |
| Set a User’s Monthly Limit | POST | `/v2/users/{{id}}/limit` | `conn_mod_def::GJ0-Bu1Sw18::IMszeI5rQcWiSmTV4P3kXQ` |
| Update a User | PUT | `/v2/users/{{id}}` | `conn_mod_def::GJ0-B2IRdY8::We8zScfjSd6YbkYz6c6Fdw` |

### WebhookGroups

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Webhook Group | GET | `/v1/webhooks/groups/{{id}}` | `conn_mod_def::GJ0-C0iZzHg::xzvmyA_kQuK7ITa7kYPfdg` |
| List Webhook Groups | GET | `/v1/webhooks/groups` | `conn_mod_def::GJ0-DIa_9bs::MDYtbqQyRRWLUGEOgQUVkw` |
| Add Members to a Webhook Group | POST | `/v1/webhooks/groups/{{id}}/add_members` | `conn_mod_def::GJ0-Cfo1R-o::gqGL-7D-R8-1p9aq4xHTXQ` |
| Create Webhook Group | POST | `/v1/webhooks/groups` | `conn_mod_def::GJ0-CnclD-g::_UVxPqwaQZqe70Ryf3wbmg` |
| Delete a Webhook Group | DELETE | `/v1/webhooks/groups/{{id}}` | `conn_mod_def::GJ0-Ct-Ky5k::gqqcZaQ_SZWsFSqDZFL_6g` |
| Remove Members from a Webhook Group | POST | `/v1/webhooks/groups/{{id}}/remove_members` | `conn_mod_def::GJ0-DP4eMvc::i88rXJFbQgqoYwqzgwytHw` |

### SpendLimits

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Spend Limit by ID | GET | `/v2/spend_limits/{{id}}` | `conn_mod_def::GJ09_In2RyI::LvSNpbBbQ1qY46Tgs1dWvg` |
| List Spend Limits | GET | `/v2/spend_limits` | `conn_mod_def::GJ09_S1cUAI::ZKwYdk58StmuqRG3G_sESw` |
| Archive a Spend Limit | POST | `/v2/spend_limits/{{id}}/archive` | `conn_mod_def::GJ09-5-NW48::PDKBAUb3R82PvGVW7JrwtA` |
| Create a Spend Limit | POST | `/v2/spend_limits` | `conn_mod_def::GJ09_BT98E0::Lm1l00KvRzifamScj3fI2A` |
| Update a Spend Limit | PUT | `/v2/spend_limits/{{id}}` | `conn_mod_def::GJ09_akvas4::dxnurbUlS9eSosHSMCXrKQ` |

### Vendors

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Vendor by ID | GET | `/v1/vendors/{{id}}` | `conn_mod_def::GJ0-CJuCKUQ::TjPoRtC1TvW5cwAWnIkHpQ` |
| List Vendors | GET | `/v1/vendors` | `conn_mod_def::GJ0-CQ8zLE0::i4jAiDt8Q7ijS-f0tEP7rA` |
| Create a Vendor | POST | `/v1/vendors` | `conn_mod_def::GJ0-B818eQs::vrRMP0NwRHiK5vAgEzr9-w` |
| Delete a Vendor | DELETE | `/v1/vendors/{{id}}` | `conn_mod_def::GJ0-CDi1Cyk::wRcWezJUTBS2IVYjriqcZw` |
| Update a Vendor by ID | PUT | `/v1/vendors/{{id}}` | `conn_mod_def::GJ0-CYYMraQ::lxXAWbAUSyu1WOf2tltEfQ` |

### AccountingRecords

| Action | Method | Path | Action id |
|---|---|---|---|
| Get an Accounting Record by ID | GET | `/v3/accounting/records/{{recordId}}` | `conn_mod_def::GJ0923uFS6I::_EmPvppoR_204Pq8BCOIug` |
| Query Accounting Records | GET | `/v3/accounting/records` | `conn_mod_def::GJ093BIFOpc::uJPuqrHdSreZhlkuRBfOsQ` |
| Report Accounting Export Results | POST | `/v3/accounting/records/export-results` | `conn_mod_def::GJ093JAcjVg::t-l1880GT0On7KK8MN-OFA` |

### CashAccounts

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Cash Account by ID | GET | `/v2/accounts/cash/{{id}}` | `conn_mod_def::GJ093QJF94w::K2EZflKJSZSeBMsZ4FHOKA` |
| Get Primary Cash Account | GET | `/v2/accounts/cash/primary` | `conn_mod_def::GJ093Z9RFtQ::VbimbEyuQxGLc4cF3BUMog` |
| List Cash Accounts | GET | `/v2/accounts/cash` | `conn_mod_def::GJ093wPzYr4::0a03YGaYQ26Y4Y7ooC3xpw` |

### CardExpenses

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Card Expense (Deprecated) | GET | `/v1/expenses/card/{{expenseId}}` | `conn_mod_def::GJ094-oyHxA::8ZLT6C0NQUq9MUbapNOV4Q` |
| List Card Expenses (Deprecated) | GET | `/v1/expenses/card` | `conn_mod_def::GJ095LnbzvY::PpIyAglWQ4-tYKe1x0AXGQ` |
| Update a Card Expense | PUT | `/v1/expenses/card/{{expenseId}}` | `conn_mod_def::GJ095TN566o::fFaJD2aiQZGpPRY85MgNeA` |

### Departments

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Department by ID | GET | `/v2/departments/{{id}}` | `conn_mod_def::GJ0968IOP_s::x7giJ4UeRU-HQIKPLfnnyw` |
| List Departments | GET | `/v2/departments` | `conn_mod_def::GJ097D5fbk8::DOA-wx7ZSoCrIDxiOKDOTw` |
| Create a Department | POST | `/v2/departments` | `conn_mod_def::GJ096wZQjL0::N3M9cF_fQI2AGopMCt7RTw` |

### Locations

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Location by ID | GET | `/v2/locations/{{id}}` | `conn_mod_def::GJ099Tbk_6Q::2nGPYn1-T-igp_hGIuenJw` |
| List Locations | GET | `/v2/locations` | `conn_mod_def::GJ099a0inm8::bQ0hI4QYRIeoCIKDK_fYbw` |
| Create a Location | POST | `/v2/locations` | `conn_mod_def::GJ099Mshx74::EesIgOV3Q32sBV410aPYBA` |

### Referrals

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Referral by ID | GET | `/v1/referrals/{{id}}` | `conn_mod_def::GJ09-CB4hy0::KosZEak9RKK-p71KOAwpCA` |
| List Referrals | GET | `/v1/referrals` | `conn_mod_def::GJ09-LNCCNA::5fOtI1u8Q0qRN6xis5GsFA` |
| Create a Referral | POST | `/v1/referrals` | `conn_mod_def::GJ0994trJYk::rXBxH9urSrm_PtpkCQr9Sw` |

### Titles

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Title by ID | GET | `/v2/titles/{{id}}` | `conn_mod_def::GJ09_oCbYmc::r2T_FfoNSUOaM1lACPD3yg` |
| List Titles | GET | `/v2/titles` | `conn_mod_def::GJ09_xi0pgg::Ff9Sp2qHR_-lSkWc0MFLHg` |
| Create Title | POST | `/v2/titles` | `conn_mod_def::GJ09_hrGH7c::ZFpUdxmJQWKWUhsgPg6Fwg` |

### Transfers

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Transfer by ID | GET | `/v1/transfers/{{id}}` | `conn_mod_def::GJ0-AZHSgG0::eQJcLhUbRbyW3eF2Rl0g4g` |
| List Transfers | GET | `/v1/transfers` | `conn_mod_def::GJ0-AhHYLi0::pIYcmKy7TwC-CwgISi4sJg` |
| Create a Transfer | POST | `/v1/transfers` | `conn_mod_def::GJ0-AR7RCds::yH4ECUvZRAWttp7Nmhq-KA` |

### Webhooks

| Action | Method | Path | Action id |
|---|---|---|---|
| List Webhooks | GET | `/v1/webhooks` | `conn_mod_def::GJ0-DmclgXs::g34Xt9SoQuuQQWdk4EXZcQ` |
| Register a Webhook Subscription | POST | `/v1/webhooks` | `conn_mod_def::GJ0-DtrCIsg::65NaMVHAR6CQ0VAk7h8qDQ` |
| Unregister a Webhook Subscription | DELETE | `/v1/webhooks/{{id}}` | `conn_mod_def::GJ0-D0gLrHU::-IfWQwPOQpGltc5CApahRw` |

### AccountingIntegrations

| Action | Method | Path | Action id |
|---|---|---|---|
| Disconnect an Accounting Integration | POST | `/v3/accounting/integration/{{integrationId}}/disconnect` | `conn_mod_def::GJ092m79CGU::IUufMP50SKWxFw4qfIivnw` |
| Reactivate an Accounting Integration | POST | `/v3/accounting/integration/{{integrationId}}/reactivate` | `conn_mod_def::GJ092v69bNo::aWHwOaOVSJmG7LjW46br5A` |

### BudgetPrograms

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Budget Program by ID | GET | `/v1/budget_programs/{{id}}` | `conn_mod_def::GJ094A5dTng::oNcKTqJETgCAOz9UiBcNgg` |
| List Budget Programs | GET | `/v1/budget_programs` | `conn_mod_def::GJ094JurFNY::OvIkMHe2S4qI646WCjvuEA` |

### Expenses

| Action | Method | Path | Action id |
|---|---|---|---|
| Get an Expense | GET | `/v1/expenses/{{id}}` | `conn_mod_def::GJ097Lsr2hw::4g33DV8xSOiEZTXeufIweQ` |
| List Expenses | GET | `/v1/expenses` | `conn_mod_def::GJ097YIcyGU::TP-jfrcmSt-m0zqjKZw9YA` |

### CustomFieldValues

| Action | Method | Path | Action id |
|---|---|---|---|
| List a Custom Field’s Values | GET | `/v1/fields/{{fieldId}}/values` | `conn_mod_def::GJ0978k3IFo::ZsUnqqeHT-CNrZn8yMaqsw` |
| Create Values for a Custom Field | POST | `/v1/fields/{{fieldId}}/values` | `conn_mod_def::GJ097gw-QSI::iYgs6MuSQvWeRl9zWoOnnA` |

### LegalEntities

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Legal Entity | GET | `/v2/legal_entities/{{id}}` | `conn_mod_def::GJ0982Zso6E::uOMOAh-QQw2i9GfVF6-Muw` |
| List Legal Entities | GET | `/v2/legal_entities` | `conn_mod_def::GJ0989jTCLs::0F31SOIpRhWi-4HmF3-uzg` |

### TripBookings

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Trip Booking | GET | `/v1/trips/{{tripId}}/bookings/{{bookingId}}` | `conn_mod_def::GJ0-AqL91cc::n6e_yag-TaGsU_PhHUsuig` |
| List a Trip’s Bookings | GET | `/v1/trips/{{tripId}}/bookings` | `conn_mod_def::GJ0-A3du5LQ::kgcZM8q2Q1Gz0Ke0BrIJfg` |

### Trips

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Trip by ID | GET | `/v1/trips/{{tripId}}` | `conn_mod_def::GJ0-Awavz7k::HRlOtYUeRsuJG_SnxNnghw` |
| List Trips | GET | `/v1/trips` | `conn_mod_def::GJ0-A_EQEBQ::sEW9aPEtT_qE1_Fx6SwdQw` |

This lists 90 of 107 actions. For anything not here, call `search_one_platform_actions` with platform `brex`. The full catalog is at https://www.withone.ai/knowledge/brex.

## When a call fails

The error comes from Brex, not from One. A 400 or 422 means your parameters do not match the schema, so re-read the knowledge and fix the field. A 401 or 403 means the connection needs re-authorizing, which no retry will fix. A 404 means the id is not on this account. A 429 means slow down. Never retry a write more than once: the first attempt may have landed.

Full catalog: https://www.withone.ai/knowledge/brex

Integration knowledge by One (withone.ai), licensed under [One-Knowledge-1.0](https://www.withone.ai/licenses/knowledge). Attribution must be preserved in derivative works.

