MCP server: connect Claude, ChatGPT and other agents
Connect Claude Code, Claude.ai, the Claude Messages API or ChatGPT to the Bridge to Brands MCP server at https://mcp.brdg2b.ai/mcp. Auth, tools and setup snippets.
Endpoint: https://mcp.brdg2b.ai/mcp, MCP Streamable HTTP (SSE kept as a fallback for older clients). One server for all accounts; the credential decides the account.
Which auth your client uses
| Client | API key in a header | OAuth 2.1 |
|---|---|---|
Claude Code / Claude Desktop (claude mcp add --header) |
yes | yes |
Claude Messages API mcp_servers |
yes (authorization_token) |
bring your own token |
| Claude.ai custom connectors | yes, beta “Request headers” (per organisation) | yes |
| ChatGPT custom connectors (Developer mode) / Apps SDK | no | yes |
Setup
Claude Code
claude mcp add --transport http brdg2b https://mcp.brdg2b.ai/mcp \
--header "Authorization: Bearer b2b_live_XXXXXXXX_..."
Claude Messages API
"mcp_servers": [{ "type": "url", "url": "https://mcp.brdg2b.ai/mcp",
"name": "brdg2b", "authorization_token": "b2b_live_..." }]
Claude.ai / Claude Desktop: Settings → Connectors → Add custom connector. URL https://mcp.brdg2b.ai/mcp; either Request headers → Authorization: Bearer b2b_live_… (if your organisation has the beta), or Sign in → Google → pick the key (OAuth).
ChatGPT: Settings → Apps & Connectors → Developer mode → Add. URL https://mcp.brdg2b.ai/mcp, Authentication: OAuth → sign in → pick the key.
Tools
The tool table below is generated from the server’s own tool list at build time.
Read tools carry readOnlyHint: true; every tool is openWorldHint: true because it calls third-party portals. Errors come back as data the model can act on, for example “brand not connected: ask the account owner to connect HOKA in app.brdg2b.ai/brands”. Every tool call is metered to the key behind the credential.
17 tools, generated from the server's own tool list.
| Tool | Kind | What it does |
|---|---|---|
| list_brands() | read-only | Lists every brand Bridge to Brands supports, whether this account has connected each brand's dealer portal, and what each brand can do. |
| list_accounts(brand?) | read-only | Lists the retailer's logins (accounts) per brand — a brand can have several, such as 'Retail stores' and 'Amazon FBA', each seeing different warehouses, prices, availability and ship-tos. |
| search_products(brand, query, account?, limit?, mode?, page?) | read-only | Searches one brand's dealer catalog by free text and returns matching styles with their colourways, images and dealer prices. |
| get_product(brand, style_id, account?) | read-only | Returns one style's colourways, size run, images and dealer prices. |
| get_availability(brand, style_id, account?, accounts?, color_id?) | read-only | Reads the brand's live availability grid — sizes × delivery windows with quantities — for one style (one colourway or all). |
| lookup_items(brand, items, account?) | read-only | Resolves up to 200 items — by UPC, SKU, style+colour+size or vendor variant id — to the brand's exact variant, with immediate availability, future windows and dealer price. |
| list_ship_tos(brand, account?) | read-only | Lists the account's stores as the brand's portal knows them — the destinations a fill-in can ship to. |
| place_order(brand, idempotency_key, kind, lines, po, ship_to_ref, account?, confirm?, consumer?, mode?, ship_dates?, terms_ack?) | writes | Stages an order as an UNSUBMITTED draft or basket in the brand's dealer portal and returns the links where the user reviews and submits it, or with mode `submit` places it with the brand where the brand and the account allow it. |
| submit_order(order_id, confirm?, ship_dates?, terms_ack?) | writes (destructive) | Places a staged order with the brand: the staged basket is read back, compared with the order and submitted exactly once. |
| cancel_order(order_id) | writes (destructive) | Asks the brand's portal to cancel every vendor order of a submitted order, where the brand allows cancelling. |
| get_order(order_id) | read-only | Returns one order — staged by brdg2b or read from the vendor's own order book — with its status, portal links, confirmed lines and shipments. |
| list_orders(account?, brand?, cursor?, limit?, since?, source?, status?) | read-only | Lists the account's orders, newest first: those staged through brdg2b and those in the vendors' own order books. |
| track_order(brand?, order_id?, po?, vendor_order_number?) | read-only | Returns the shipments of one order with carrier, tracking number and a tracking link per package. |
| refresh_order(order_id) | read-only | Re-reads one order from the brand's portal now and returns the updated order. |
| get_usage(group_by?, period?) | read-only | Returns the calling key's own usage — requests, results, orders, lines and units — for a period. |
| request_brand(name, portal_url, note?) | writes | Asks Bridge to Brands to build a connector for a brand that is not in list_brands. |
| list_brand_requests() | read-only | Lists this account's requests for new brands and their status. |