# Bridge to Brands — Enable your agents to buy from every brand portal. (Full documentation.) > Bridge to Brands enables your agents to buy from every brand portal. Claude, ChatGPT or your own agent browses brand dealer (B2B) portals, checks live warehouse availability and dealer price, and orders over MCP or a REST API. Bridge to Brands places your orders with the brand — within your caps and confirmation settings — and, for a brand whose portal is not yet verified for placing, stages the order for you to review and place in Bridge — in a signed-in portal window, never a portal login. Bridge to Brands is a product of RunOps Inc. Source: https://brdg2b.ai/. Regenerated on every deploy. Facts current as of 2026-10-17. --- # Getting started with Bridge to Brands URL: https://brdg2b.ai/docs/getting-started Updated: 2026-10-16 Bridge to Brands enables your agents to buy from every brand portal. You connect the dealer (B2B) portals you already have logins for once; then your agents (over MCP), your code (over REST) and your team (in the Browser) reach all of them the same way. Every order is built in the brand's portal and, where the brand is verified and you have turned it on, placed within your caps and confirmation settings; otherwise you review it and place it in Bridge, in a signed-in portal window — never a portal login. ## 1. Sign in and connect a brand Sign in at [app.brdg2b.ai](https://app.brdg2b.ai) with Google. On **Brands**, choose a brand and enter your existing dealer-portal username and password. They are encrypted and used only by the worker that talks to that portal; API keys and MCP tokens can never read them. ## 2. Create an API key On **Keys**, create a key. Choose scopes (`read`, or `read` + `orders`), optionally restrict it to some brands, and set an expiry. Keys look like `b2b_live__`; test keys start with `b2b_test_` (see [Test mode](/docs/test-mode)). ## 3. Make your first call ```bash curl https://api.brdg2b.ai/v1/brands \ -H "Authorization: Bearer $BRDG2B_KEY" ``` Each brand comes back with its `capabilities` and this account's `connection` status. ## 4. Read availability ```bash curl "https://api.brdg2b.ai/v1/brands/brooks/products/120443/availability?color_id=120443189" \ -H "Authorization: Bearer $BRDG2B_KEY" ``` ## 5. Connect an AI agent Point Claude, ChatGPT or any MCP client at `https://mcp.brdg2b.ai/mcp`. See [MCP](/docs/mcp). --- # Authentication: API keys, scopes and OAuth URL: https://brdg2b.ai/docs/authentication Updated: 2026-10-16 ## REST API: bearer API keys Every request carries `Authorization: Bearer b2b_live__`. The REST API accepts API keys only. | Scope | Grants | |---|---| | `read` | brands, catalog, availability, lookup, ship-tos, own usage | | `orders` | place, read and acknowledge orders | A key can also carry a **brand allowlist**, an **expiry** and an **IP allowlist**. | Status | Meaning | |---|---| | `401` | unknown, revoked or expired key | | `403` | the key lacks the scope or the brand is not on its allowlist | | `429` | rate limited; honour `Retry-After` | ## MCP server: API key or OAuth 2.1 The MCP server at `https://mcp.brdg2b.ai/mcp` accepts, in order: 1. `Authorization: Bearer b2b_live_…`: a raw API key (Claude Code, the Claude Messages API, Claude.ai request headers where enabled). 2. `Authorization: Bearer `: an access token issued by brdg2b's OAuth 2.1 server (ChatGPT, Claude.ai sign-in). Tokens are short-lived (1 hour) with rotating refresh tokens. 3. Nothing or invalid: `401` with `WWW-Authenticate: Bearer resource_metadata="https://mcp.brdg2b.ai/.well-known/oauth-protected-resource"` so compliant clients discover the authorization server. OAuth uses PKCE (S256), the `code` and `refresh_token` grants and Dynamic Client Registration. On the consent screen you sign in with Google and choose which API key the client acts as, or mint a new one. Every OAuth token is bound to a key, so usage is attributed to it and revoking the key disconnects the client. ## What keys can never do Portal credentials, key management, members and the cross-key usage dashboard live under the web app only. A leaked API key cannot read or change a portal password or mint more keys. --- # REST API v1 reference URL: https://brdg2b.ai/docs/rest-api Updated: 2026-10-16 Base URL: `https://api.brdg2b.ai/v1`. One schema for products, availability, prices, ship-tos and orders across every brand; the brand is a path parameter. The machine-readable contract is [/openapi.json](/openapi.json). ## Conventions - **Auth**: `Authorization: Bearer b2b_live__`; scopes `read` and `orders`. See [Authentication](/docs/authentication). - **Errors**: RFC 9457 `application/problem+json`; `type` is a stable URL under `https://brdg2b.ai/problems/`. See [Errors](/docs/errors). - **Pagination**: cursor-based, `?limit=` (max 100) and `?cursor=`; responses are `{ "data": [...], "next_cursor": "...", "meta": {...} }`. - **Idempotency**: `Idempotency-Key` header required on `POST /orders`; the same key within 24 hours replays the original response. - **Request ids**: `X-Request-Id` is echoed; include it in support requests. - **Schemas**: unknown fields are rejected with `400`. - **Money**: strings with two decimals plus `currency`, never floats. - **Time**: RFC 3339 UTC. `as_of` on every availability response says when the portal was asked. - **Versioning**: `/v1` is stable and changes additively; breaking changes go to `/v2`. ## Brands | Method | Path | Scope | Notes | |---|---|---|---| | GET | `/brands` | read | every supported brand with `capabilities`, `platform`, and this account's `connection` | | GET | `/brands/{brand}` | read | one brand | Capabilities: `catalog_search`, `prices`, `width_axis`, `ordering_modes`, `ordering`, `drop_ship`, `drop_ship_requires_phone`, `drop_ship_requires_email`, `drop_ship_max_per_send`, `po_max_length`, `submit` and `submit_verified` (placing orders; not yet verified for any brand), `portal_url`. ### Several logins per brand A retailer can keep more than one login for a brand, for example one for the stores and one for Amazon. `GET /accounts` lists them with the name and description the retailer wrote. Brand calls take an optional `account` (the id or exact name); without it they use the brand's default login. Answers say which login they came from (`account: {id, name}`), and availability takes `accounts` to compare logins side by side. ## Catalog and availability | Method | Path | Scope | Notes | |---|---|---|---| | GET | `/brands/{brand}/products?q=` | read | free-text search; `capability_unavailable` without `catalog_search` | | GET | `/brands/{brand}/products/{style_id}` | read | colourways, size columns, images, prices | | GET | `/brands/{brand}/products/{style_id}/availability?color_id=` | read | canonical grids keyed by colour id | | POST | `/brands/{brand}/lookup` | read | up to 200 items by UPC, SKU or style + colour + size | ```json { "brand": "brooks", "style_id": "120443", "color_id": "120443189", "status": "ok", "columns": [ { "key": "7.0/B", "size": "7", "width": "B" } ], "rows": [ { "date": null, "ordering_mode": "at_once", "cells": { "7.0/B": { "qty": 200, "display": "200+", "order_limit": null } } }, { "date": "2026-11-15", "ordering_mode": "future", "cells": { "7.0/B": { "qty": 48, "display": "48" } } } ], "cap_threshold": 200, "cap_applied_by": "server", "price": { "wholesale": "70.00", "retail": "140.00", "currency": "USD" }, "as_of": "2026-10-16T15:04:05Z" } ``` ## Ship-tos `GET /brands/{brand}/ship-tos` (read): your stores as the vendor knows them, with `ref`, `account_ref`, `name`, `city`, `state`, `postal` and your own `label`. ## Orders | Method | Path | Scope | Notes | |---|---|---|---| | POST | `/orders` | orders | place one order in one brand portal (or stage it for review in Bridge); `Idempotency-Key` required | | GET | `/orders/{order_id}` | orders | one order | | GET | `/orders?brand=&status=&since=` | orders | list | | POST | `/orders/{order_id}/acknowledge-draft` | orders | confirm a `draft_left_behind` was dealt with | ```json { "brand": "brooks", "kind": "fill_in", "ship_to_ref": "1002", "po": "FILL-1016-COLA", "lines": [ { "variant_id": "1204431B189.070", "quantity": 2 }, { "upc": "195394123456", "quantity": 1, "ordering_mode": "at_once" } ] } ``` A drop-ship order adds `"kind": "drop_ship"` and a `consumer` block (addressee, street, city, state, postal, country, and phone or email only when the brand requires them; the email is the store's). Orders take `mode: "stage" | "submit"` and, to place, `confirm: true` with a key holding `orders:submit`; the effective mode is the most conservative of the request, the key, the account's per-brand setting and the brand's verified capability, within the account caps. The response is `202 Accepted` with `status` (`pending`, `staged_in_portal`, `submitted`, `partial`, `failed`, `submit_unknown`, `draft_left_behind`), `submitted` (true only with a vendor order number or a positive read-back), the portal URL, the vendor order number or draft id, and staged and skipped lines with reasons. ## Usage `GET /usage?from=&to=&group_by=day|brand|operation` (read): the calling key's own requests, results, orders, lines and units. ## Not in the API, on purpose Connecting portals, managing keys and members, and the cross-key dashboard live in the web app (`/app/*`, Google sign-in), never under `/v1`. --- # MCP server: connect Claude, ChatGPT and other agents URL: https://brdg2b.ai/docs/mcp Updated: 2026-10-16 **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** ```bash claude mcp add --transport http brdg2b https://mcp.brdg2b.ai/mcp \ --header "Authorization: Bearer b2b_live_XXXXXXXX_..." ``` **Claude Messages API** ```json "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. ## Tool list The MCP server exposes 17 tools (generated from the server): | 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. | --- # Errors: problem types and how to handle them URL: https://brdg2b.ai/docs/errors Updated: 2026-10-16 Errors are `application/problem+json` (RFC 9457). `type` is a stable URL under `https://brdg2b.ai/problems/`. Portal-side failures carry `brand` and, for `portal_down`, `retry_after`. Include the `X-Request-Id` in support requests. ```json { "type": "https://brdg2b.ai/problems/brand_not_connected", "title": "Brand not connected", "detail": "This account has not connected hoka. Ask the account owner to connect it in app.brdg2b.ai/brands.", "brand": "hoka" } ``` | Type | Meaning | What to do | |---|---|---| | `validation_error` | the request failed validation; unknown fields are rejected | fix the request | | `brand_not_connected` | the account has not connected the brand | the account owner connects it in the web app | | `brand_not_supported` | no connector for that brand code | check `GET /v1/brands` | | `capability_unavailable` | the brand does not support the operation | check the brand's `capabilities` | | `credentials_invalid` | the portal rejected the stored login | the account owner re-enters the portal password | | `portal_down` | the portal is unavailable | retry after `retry_after` | | `portal_rejected` | the portal refused the request | read `detail`; fix the line or ship-to | | `portal_changed` | the portal response no longer matched the connector | retry later | | `push_busy` | another order is staging on the same connection | retry shortly | | `draft_left_behind` | the vendor may hold a draft carrying this order | check the portal, then `POST /orders/{id}/acknowledge-draft` | | `rate_limited` | a key or account limit was hit | honour `Retry-After` | Over MCP, the same problems come back as tool results, not exceptions, so the model can recover. --- # Rate limits URL: https://brdg2b.ai/docs/rate-limits Updated: 2026-10-16 | Operation | Limit (per key) | |---|---| | search / product / availability | 60 / min, burst 10 | | lookup (bulk) | 10 / min, up to 200 items each | | orders | 10 / min | | everything, per account | 600 / min | Over the limit you get `429` with a `rate_limited` problem and a `Retry-After` header. Wait that many seconds before retrying. **Portal pacing is separate.** Each brand connection has one live portal session on one worker, and every portal call is paced so the brand sees a steady, polite rate however many keys you run. It is not configurable. Prefer `POST /brands/{brand}/lookup` (up to 200 items) over many single calls. --- # Test mode URL: https://brdg2b.ai/docs/test-mode Updated: 2026-10-16 Keys that start with `b2b_test_` hit the fake portals our own test suite uses: - one captured catalog per brand, - deterministic availability, - orders staged into a sandbox record with a fake portal URL. Same schemas, same errors, zero portal traffic. Test calls are metered as `surface=rest, env=test` and excluded from billing views. Use test keys in CI, demos and while building an agent. --- # Changelog URL: https://brdg2b.ai/changelog Updated: 2026-10-17 ## 2026-10-17: the Browser orders; orders are reviewed and placed in Bridge - The web Browser now orders: add from the availability grid, paste or upload a list (CSV or XLSX; a multi-brand sheet is split into one basket per brand), then check out a fill-in to a store or a drop-ship to a consumer address. - A staged order is reviewed in Bridge: the portal basket is read back line by line against what was asked. Where the brand is verified you place it from Bridge; otherwise you finish it in the portal window — the brand's real portal, already signed in, inside Bridge. Nobody signs in to a vendor portal. - API and MCP order messages and `portal.instructions` now point to the review in Bridge instead of a portal sign-in. ## 2026-10-16: Karhu and Diadora connectors - Two brand connectors added, lifted from RunOps production: Karhu (b2b.karhu.com, a Shopify store; orders staged as a new cart per store and warehouse) and Diadora (b2b.diadora.com; orders staged in the account's one cart, one store at a time). - 45 verified connectors listed: 43 brand connectors plus the NuORDER and Wolverine Worldwide platform logins. - Neither brand offers drop-ship, catalog search or submit yet; their orders come back as staged_in_portal for review in Bridge. ## 2026-10-16: public site and v1 contract published - Published the v1 REST API contract (`https://api.brdg2b.ai/v1`) and the MCP tool list (`https://mcp.brdg2b.ai/mcp`). - MCP server auth decided: OAuth 2.1 **and** API-key bearer; the REST API is API-key only. - 43 verified connectors listed: 41 brand connectors plus the NuORDER and Wolverine Worldwide platform logins, across the NuORDER, Elastic Suite, Envoy, Epicuro and BigCommerce B2B Edition platforms and brand-built portals. - Machine-readable surface: `/llms.txt`, `/llms-full.txt`, `/openapi.json`, `/.well-known/mcp/server.json`, `/.well-known/agent-card.json`. --- # Supported brands ## adidas dealer portal API URL: https://brdg2b.ai/brands/adidas Markdown: https://brdg2b.ai/brands/adidas.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the adidas CLICK dealer portal and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## Altra dealer portal API URL: https://brdg2b.ai/brands/altra Markdown: https://brdg2b.ai/brands/altra.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Altra dealer portal (Elastic Suite) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Arc'teryx dealer portal API URL: https://brdg2b.ai/brands/arcteryx Markdown: https://brdg2b.ai/brands/arcteryx.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Arc'teryx on NuORDER and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## ASICS dealer portal API URL: https://brdg2b.ai/brands/asics Markdown: https://brdg2b.ai/brands/asics.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the ASICS dealer portal and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## Bates dealer portal API URL: https://brdg2b.ai/brands/bates Markdown: https://brdg2b.ai/brands/bates.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Bates dealer portal (Wolverine Worldwide) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Birkenstock dealer portal API URL: https://brdg2b.ai/brands/birkenstock Markdown: https://brdg2b.ai/brands/birkenstock.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Birkenstock dealer portal and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Blundstone dealer portal API URL: https://brdg2b.ai/brands/blundstone Markdown: https://brdg2b.ai/brands/blundstone.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Blundstone dealer portal (Elastic Suite) and places fill-in orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. Drop-ship is not offered for this brand in v1. ## Bogs dealer portal API URL: https://brdg2b.ai/brands/bogs Markdown: https://brdg2b.ai/brands/bogs.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Weyco Outdoor B2B portal and places fill-in orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. Drop-ship is not offered for this brand in v1. ## Brooks dealer portal API URL: https://brdg2b.ai/brands/brooks Markdown: https://brdg2b.ai/brands/brooks.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Brooks FastTrack dealer portal and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Cat Footwear dealer portal API URL: https://brdg2b.ai/brands/cat-footwear Markdown: https://brdg2b.ai/brands/cat-footwear.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Cat Footwear dealer portal (Wolverine Worldwide) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Chaco dealer portal API URL: https://brdg2b.ai/brands/chaco Markdown: https://brdg2b.ai/brands/chaco.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Chaco dealer portal (Wolverine Worldwide) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Chrome Industries dealer portal API URL: https://brdg2b.ai/brands/chrome Markdown: https://brdg2b.ai/brands/chrome.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Chrome Industries on NuORDER and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## Dansko dealer portal API URL: https://brdg2b.ai/brands/dansko Markdown: https://brdg2b.ai/brands/dansko.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Dansko B2B portal and places fill-in orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. Drop-ship is not offered for this brand in v1. ## Diadora dealer portal API URL: https://brdg2b.ai/brands/diadora Markdown: https://brdg2b.ai/brands/diadora.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Diadora B2B portal and places fill-in orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. Drop-ship is not offered for this brand in v1. ## Feetures dealer portal API URL: https://brdg2b.ai/brands/feetures Markdown: https://brdg2b.ai/brands/feetures.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Feetures dealer portal (Elastic Suite) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## Fleks dealer portal API URL: https://brdg2b.ai/brands/fleks Markdown: https://brdg2b.ai/brands/fleks.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Fleks on NuORDER and places fill-in orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. Drop-ship is not offered for this brand in v1. ## Forsake dealer portal API URL: https://brdg2b.ai/brands/forsake Markdown: https://brdg2b.ai/brands/forsake.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Weyco Outdoor B2B portal and places fill-in orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. Drop-ship is not offered for this brand in v1. ## Harley-Davidson Footwear dealer portal API URL: https://brdg2b.ai/brands/harley-davidson Markdown: https://brdg2b.ai/brands/harley-davidson.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Harley-Davidson Footwear dealer portal (Wolverine Worldwide) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Hoka dealer portal API URL: https://brdg2b.ai/brands/hoka Markdown: https://brdg2b.ai/brands/hoka.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Hoka dealer portal (Deckers B2B) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## Hush Puppies dealer portal API URL: https://brdg2b.ai/brands/hush-puppies Markdown: https://brdg2b.ai/brands/hush-puppies.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Hush Puppies dealer portal (Wolverine Worldwide) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## HYTEST dealer portal API URL: https://brdg2b.ai/brands/hytest Markdown: https://brdg2b.ai/brands/hytest.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the HYTEST dealer portal (Wolverine Worldwide) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Injinji dealer portal API URL: https://brdg2b.ai/brands/injinji Markdown: https://brdg2b.ai/brands/injinji.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Injinji on NuORDER and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## Karhu dealer portal API URL: https://brdg2b.ai/brands/karhu Markdown: https://brdg2b.ai/brands/karhu.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Karhu B2B portal and places fill-in orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. Drop-ship is not offered for this brand in v1. ## KEEN dealer portal API URL: https://brdg2b.ai/brands/keen Markdown: https://brdg2b.ai/brands/keen.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the KEEN on NuORDER and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## KEEN Utility dealer portal API URL: https://brdg2b.ai/brands/keen-utility Markdown: https://brdg2b.ai/brands/keen-utility.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the KEEN Utility on NuORDER and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## KIZIK dealer portal API URL: https://brdg2b.ai/brands/kizik Markdown: https://brdg2b.ai/brands/kizik.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the KIZIK on NuORDER and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## Lems dealer portal API URL: https://brdg2b.ai/brands/lems Markdown: https://brdg2b.ai/brands/lems.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Lems dealer portal (Elastic Suite) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Merrell dealer portal API URL: https://brdg2b.ai/brands/merrell Markdown: https://brdg2b.ai/brands/merrell.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Merrell dealer portal (Wolverine Worldwide) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Mizuno dealer portal API URL: https://brdg2b.ai/brands/mizuno Markdown: https://brdg2b.ai/brands/mizuno.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Mizuno USA B2B portal and places fill-in orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. Drop-ship is not offered for this brand in v1. ## New Balance dealer portal API URL: https://brdg2b.ai/brands/new-balance Markdown: https://brdg2b.ai/brands/new-balance.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the New Balance dealer portal (Elastic Suite) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## On dealer portal API URL: https://brdg2b.ai/brands/on Markdown: https://brdg2b.ai/brands/on.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the On Backstage dealer portal and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## OOFOS dealer portal API URL: https://brdg2b.ai/brands/oofos Markdown: https://brdg2b.ai/brands/oofos.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the OOFOS dealer portal and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## PUMA dealer portal API URL: https://brdg2b.ai/brands/puma Markdown: https://brdg2b.ai/brands/puma.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the PUMA dealer portal (Elastic Suite) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Saucony dealer portal API URL: https://brdg2b.ai/brands/saucony Markdown: https://brdg2b.ai/brands/saucony.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Saucony dealer portal (Wolverine Worldwide) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Stride Rite dealer portal API URL: https://brdg2b.ai/brands/stride-rite Markdown: https://brdg2b.ai/brands/stride-rite.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Stride Rite dealer portal (Wolverine Worldwide) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Superfeet dealer portal API URL: https://brdg2b.ai/brands/superfeet Markdown: https://brdg2b.ai/brands/superfeet.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Superfeet B2B portal and places fill-in orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. Drop-ship is not offered for this brand in v1. ## Sweaty Betty dealer portal API URL: https://brdg2b.ai/brands/sweaty-betty Markdown: https://brdg2b.ai/brands/sweaty-betty.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Sweaty Betty dealer portal (Wolverine Worldwide) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. ## Taos dealer portal API URL: https://brdg2b.ai/brands/taos Markdown: https://brdg2b.ai/brands/taos.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Taos on NuORDER and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## TOMS dealer portal API URL: https://brdg2b.ai/brands/toms Markdown: https://brdg2b.ai/brands/toms.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the TOMS on NuORDER and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## Topo Athletic dealer portal API URL: https://brdg2b.ai/brands/topo Markdown: https://brdg2b.ai/brands/topo.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Topo Athletic on NuORDER and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## Vibram dealer portal API URL: https://brdg2b.ai/brands/vibram Markdown: https://brdg2b.ai/brands/vibram.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Vibram on NuORDER and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size and delivery window. ## Wilson dealer portal API URL: https://brdg2b.ai/brands/wilson Markdown: https://brdg2b.ai/brands/wilson.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Wilson dealer portal (Elastic Suite) and places fill-in orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. Drop-ship is not offered for this brand in v1. ## Wolverine dealer portal API URL: https://brdg2b.ai/brands/wolverine Markdown: https://brdg2b.ai/brands/wolverine.md Bridge to Brands reads live warehouse availability, dealer price and retail price from the Wolverine dealer portal (Wolverine Worldwide) and places fill-in and drop-ship orders within your limits (placed from Bridge until verified) through one normalized REST API and MCP server. Availability is returned per colourway, by size, width and delivery window. --- # Use cases ## AI agent ordering through brand dealer portals (MCP) URL: https://brdg2b.ai/use-cases/ai-agent-ordering Bridge to Brands runs an MCP server at https://mcp.brdg2b.ai/mcp that lets AI agents such as Claude and ChatGPT search brands, read live availability and dealer pricing, and place fill-in and drop-ship orders in brand dealer portals. Agents authenticate with OAuth 2.1 or an API key; orders are placed only within your caps and confirmation settings, or staged for a person to review and place in Bridge. ## Why MCP Dealer portals are built for people clicking through seasons and size runs. Agents need tools with typed inputs, structured errors and plain-language descriptions. The brdg2b MCP server mirrors the REST API one-to-one, so an agent and your code see the same data. ## Safe by construction - **Placed only within your limits**: `place_order` stages first, places only where verified and allowed, and never sends a second submit; otherwise a person reviews and places it in Bridge, with no portal login. - **Idempotent**: every order carries an idempotency key. - **Scoped**: `read` keys cannot order; brand allowlists limit which brands a key reaches. - **Errors as data**: "brand not connected: ask the account owner to connect HOKA" comes back as a result the model can act on. ## Drop-ship API for brand dealer portals URL: https://brdg2b.ai/use-cases/drop-ship-api Bridge to Brands places drop-ship orders, shipped from the brand's warehouse to your customer, in each brand's dealer portal through one REST API and MCP server. The server checks the brand's rules first: drop-ship capability, PO length, required phone or store email, and per-send limits. Orders are placed within your caps where the brand is verified and you allow it; otherwise you review and place it in Bridge. ## How it works 1. Look up the item with `POST /v1/brands/{brand}/lookup` (UPC, SKU or style + colour + size) to get the vendor `variant_id` and current availability. 2. Send `POST /v1/orders` with `kind: "drop_ship"`, your `ship_to_ref` (the store the order bills to), a `po`, the `consumer` address and the lines, plus an `Idempotency-Key` header. 3. The server validates the brand's drop-ship rules before anything reaches the portal: capability on, PO present and within the brand's length limit, phone and email only where the brand requires them (the email is the store's, never the consumer's), US-only where the brand says so. 4. The order is staged in the portal and, where verified and allowed, placed. The `202` response carries `status` (`submitted` or `staged_in_portal`), the portal URL, the vendor order number or `draft_id`, and which lines were staged or skipped and why. ## Why not just email the rep? Email drop-ships are slow, error-prone and invisible to your systems. Staging the draft directly means the brand's own availability check runs at the moment you order, and your system keeps the draft id for reconciliation. ## Fill-in ordering API across brand dealer portals URL: https://brdg2b.ai/use-cases/fill-in-ordering Bridge to Brands lets a buyer or a replenishment system check live warehouse availability for the sizes it is short on, then place at-once fill-in orders to the right store ship-to in each brand's dealer portal. One request shape covers every brand; orders are placed only within your caps and confirmation settings, or staged for a buyer to review and place in Bridge. ## The loop 1. Your system (POS, spreadsheet, forecasting tool or AI agent) decides what is short. 2. `POST /v1/brands/{brand}/lookup` resolves your UPCs or SKUs to vendor variants with immediate availability and price, up to 200 items per call. 3. `POST /v1/orders` with `kind: "fill_in"`, the store's `ship_to_ref`, your PO and the lines stages the order in the portal. 4. Where the brand is verified for submit and you allow it, the order is placed within your caps (`status: submitted`, with the brand's order number); otherwise (`status: staged_in_portal`) a buyer reviews the basket in Bridge and places it there, in a signed-in portal window — never a portal login. Idempotency keys make retries safe: the same key within 24 hours replays the original response instead of staging a second draft. ## Wholesale availability feed from brand dealer portals URL: https://brdg2b.ai/use-cases/wholesale-availability-feed Bridge to Brands turns each brand's dealer portal into a normalized wholesale availability feed: per colourway, sizes and widths by delivery window, quantities as the portal shows them, order limits, dealer and retail price, and an as_of timestamp. Use it to show vendor stock on your site, power endless-aisle selling, or plan buys. ## One shape for every brand Every brand returns the same `AvailabilityGrid`: `columns` keyed like `7.0/B`, `rows` for at-once and each future delivery date, and `cells` with `qty`, `display` and `order_limit`. Where a portal caps what it shows (for example "200+"), the cap is preserved in `display` and reported in `cap_threshold` and `cap_applied_by`. ## What people build with it - **Endless aisle**: show "ships from the brand" for sizes you do not stock. - **Buying sheets**: pull the next delivery windows for a style before a rep meeting. - **Agents**: let an AI assistant answer "do they have the 10.5 wide in black?" from live data. --- # Glossary ## At-once vs futures orders: what is the difference? URL: https://brdg2b.ai/glossary/at-once-vs-futures An at-once order ships from inventory the brand has available now; a futures order (also called a pre-book or booking) reserves product for a later delivery window, often months ahead, usually at season-planning time. In a Bridge to Brands availability grid, the at-once row has `date: null` and `ordering_mode: "at_once"`; each future delivery window is its own row with a `date` and `ordering_mode: "future"`. Order lines can name the mode explicitly with `ordering_mode`. ## What is a B2B dealer portal? URL: https://brdg2b.ai/glossary/b2b-portal A B2B portal, or dealer portal, is the password-protected website a brand gives its authorized retailers (dealers) to browse the wholesale catalog, see warehouse availability and dealer pricing, manage ship-to locations and place at-once and future orders. Most footwear and outdoor brands run one: some build their own, others use a platform such as [NuORDER](/platforms/nuorder), [Elastic Suite](/platforms/elastic-suite), [Envoy](/platforms/envoy) or [Epicuro](/platforms/epicuro). Each has its own login, size conventions, season structure and order flow, which is why retailers who carry dozens of brands spend hours a week clicking through them. Bridge to Brands connects to each portal with the retailer's own login and exposes all of them through one normalized REST API and MCP server. ## What is a drop-ship order in wholesale retail? URL: https://brdg2b.ai/glossary/drop-ship A drop-ship order is an order a retailer places with a brand that the brand ships directly from its warehouse to the retailer's customer, using the consumer's address as the ship-to while the retailer is billed at dealer price. Drop-ship lets a store sell sizes and colours it does not stock without holding inventory. In a dealer portal it usually means entering a consumer address, a PO and sometimes a phone number or the store's email. Not every portal allows it: some set the ship-to only at checkout. Bridge to Brands reports this per brand as the `drop_ship` capability and enforces each brand's rules before staging. See the [drop-ship API](/use-cases/drop-ship-api). ## What is a fill-in order? URL: https://brdg2b.ai/glossary/fill-in A fill-in order is an in-season replenishment order a retailer places to restock sizes and styles it already carries, shipped from the brand's currently available warehouse stock (at-once) to one of the retailer's store ship-tos. Fill-ins are the opposite of a pre-season booking: small, frequent and driven by what sold last week. The hard part is knowing, per brand, what is actually in the warehouse before ordering. Bridge to Brands reads that availability live and places fill-ins in each portal, or stages them for review in Bridge where a brand is not yet verified. See [fill-in ordering](/use-cases/fill-in-ordering). ## What is a ship-to in a dealer portal? URL: https://brdg2b.ai/glossary/ship-to A ship-to is a delivery location a brand holds on file for a retailer's account, usually one per store, identified by a vendor reference number; orders name a ship-to to say where the goods go and which store they belong to. `GET /v1/brands/{brand}/ship-tos` returns your ship-tos as the brand knows them, with a `label` you choose (for example "Downtown"). A fill-in order ships to the ship-to; a drop-ship order names the ship-to for billing and adds a consumer address for delivery.