Beta

The Partner Trading API v1 is in beta — endpoints and response shapes may still change.

Developers
Cru World Wine
API v1 · REST & MCP
MCP server

MCP tools

The 27 tools Cru’s MCP server offers, in the order tools/list returns them. A connection is shown only the tools its permissions allow, and partner keys get the write tools in a version of their own. Each has a page of its own, with its arguments, what it returns, and a console that calls it on your connection and shows what Cru answers.

TOOLNEEDSREST EQUIVALENT
READwhoami
Your Cru account
meta:readGET /ping
READsearch_wines
Search wines
market:readGET /wines
READget_wine
Wine details
wines:readGET /wines/{lwin18}
READlist_warehouses
Cru warehouses
meta:readGET /warehouses
READlist_inbond_warehouses
Inbond warehouses
meta:readGET /warehouses/inbond
READlist_inbond_addresses
Inbond addresses
addresses:readGET /addresses/inbond
READlist_bids
Bids: what you could sell for
market:readGET /market/bids
READlist_offers
Offers: what you could buy at
market:readGET /market/offers
READlist_market
Market: bids and offers
market:readGET /market
READget_my_portfolio
Your portfolio
portfolio:readGET /portfolio
READlist_my_bids
Your bids
bids:readGET /bids
READlist_my_listings
Your listings
offers:readGET /offers
READlist_my_purchases
Your purchases
trades:readGET /trades/purchases
READlist_my_sales
Your sales
trades:readGET /trades/sales
STAGEplace_bid
Place a bid
bids:writePOST /bids
STAGEupdate_bid
Change a bid
bids:writePATCH /bids/{code}
STAGEcancel_bid
Cancel a bid
bids:writeDELETE /bids/{code}
STAGErenew_bid
Renew a bid
bids:writePOST /bids/{code}/renew
STAGEbuy_wine
Buy wine now
bids:write + orders:writePOST /market/offers/{code}/buy
STAGElist_for_sale
List wine for sale
offers:writePOST /offers
STAGEupdate_listing
Change a listing
offers:writePATCH /offers/{code}
STAGEremove_offers
Remove an offer
offers:writeDELETE /offers/{code}
STAGEsell_to_bid
Sell into a bid
offers:write + orders:writePOST /market/bids/{code}/sell
WRITEsuggest_inbond_warehouse
Suggest an inbond warehouse
warehouses:suggestPOST /warehouses/inbond
STAGEadd_inbond_address
Add an inbond address
addresses:writePOST /addresses/inbond
STAGEremove_inbond_address
Remove an inbond address
addresses:writeDELETE /addresses/inbond/{id}
CONFIRMconfirm_instruction
Confirm an instruction
bids:write or offers:write or addresses:writePOST /confirmations/{code}
Changed: the tools for your own account

list_my_trades is gone: list_my_purchases and list_my_sales take its place. get_my_portfolio now returns portfolio lines, as GET /portfolio does, with the same filters, and refuses include_market_price, as every wine now has its market price. list_my_listings takes those filters too, and answers under offers rather than listings, each a wine with its listed lines. list_for_sale and sell_to_bid now require stock_type, and update_listing and remove_offers take a line’s portfolio_id, a listing’s code being optional.

Conventions every tool shares

  • Prices are normal amounts in the market’s currency — 12345.5 is 12,345.50 — and every result says which currency. Price filters take whole units.
  • Wines are LWIN18 codes, 18 digits; search_wines finds them by name. A list of LWIN18s may be an array or one comma-separated string, up to 20.
  • Paging is limit and offset, with pagination in the result: 10 a page by default, at most 50, or 25 for search_wines.
  • Unknown arguments are refused with a tool error listing what the tool accepts. Numbers may arrive as strings, and booleans as "true" or 1.
  • Results come as structuredContent and as the same object in JSON text. Errors come back as a result with isError: true, worded for the assistant to act on.

Reading

The 14 read tools answer at once and change nothing. All are marked readOnlyHint, so an assistant may run them without asking.

Trading

With a connected app’s token, the 11 trading tools prepare an instruction and change nothing: they are marked read-only for that reason. Each checks the request against live data, refuses with a reason if Cru would not do it, and otherwise returns a summary and a confirmation code.

What a trading tool returns
{
  "confirmation_code": "cnf_5DT4rt0U-KyEjnQUzHPTGKw86dNTZ8uZud_zQFdTa-k",
  "expires_at": "2026-10-19T10:25:55Z",
  "action": "bid.place",
  "summary": "Bid GBP 1,650.50 per unit for 1 x Lafite Rothschild 2024 (6x75cl) - GBP 1,650.50 in total, live for 90 days.",
  "preview": {
    "summary": "…the same sentence…",
    "lwin18": "101187220240600750",
    "quantity": 1,
    "price": 1650.5,
    "total": 1650.5,
    "currency": "GBP",
    "expires_on": "2027-01-17",
    "allowance_remaining": 48349.5
  },
  "next": "Nothing has happened yet. Show the customer the summary and ask them to confirm it. Only if they say yes in this conversation, call confirm_instruction with this confirmation_code. If they decline or want changes, do not confirm it; it expires on its own."
}

Confirmation

One tool carries a staged instruction out: confirm_instruction, marked destructiveHint. Every staging result ends with the same instruction to the assistant:

Nothing has happened yet. Show the customer the summary and ask them to confirm it. Only if they say yes in this conversation, call confirm_instruction with this confirmation_code. If they decline or want changes, do not confirm it; it expires on its own.

Who confirms The customer, by saying yes in the conversation. There is no email or website step. Cru binds the code to the connection that staged it, so no other app, account or market can use it.
WhenWithin 15 minutes, once. If the customer declines, the code simply expires.
What runs Exactly what was staged. Cru re-checks anything that may have moved — the price, the units, the bid — and refuses rather than doing something the customer did not see.
How manyAt most 10 waiting per customer at once, across all their apps.
Hosts Assistants that honour destructiveHint may also ask the customer before calling confirm_instruction, as a second check of their own.

The same instructions can be inspected and confirmed over REST by the same app. Confirmations in full →

With partner keys

Cru builds the tool list for each caller. Called with partner keys — CLIENT-KEY and CLIENT-SECRET — a write over MCP is carried out at once, as it is over REST; only a connected app’s token gets a confirmation step. The pages here describe the token’s version, and a partner key’s differs in these ways:

  • confirm_instruction is not offered, since nothing waits to be confirmed.
  • Each write tool’s description opens with what it does, as below, and closes “It is carried out straight away, with no confirmation step; sending the same reference again returns the first result instead of doing it twice.” in place of saying it only prepares. buy_wine also drops “The preview gives the exact total.”, as there is no preview.
  • Each takes a required last argument, reference, up to 50 characters: “Your own unique reference for this instruction.”
  • Each is marked idempotentHint and not readOnlyHint, and those that move money or wine or remove an address — all but add_inbond_address and suggest_inbond_warehouse — destructiveHint.
  • It returns the action’s result as the REST response’s data gives it, with replayed — true when the reference was used before. There is no confirmation_code, summary or next.
TOOLWITH A TOKEN, OPENSWITH PARTNER KEYS, OPENS
place_bidPrepares a bid…Places a bid…
update_bidPrepares a change to the price…Changes the price…
cancel_bidPrepares the cancellation of one of…Cancels one of…
renew_bidPrepares putting…Puts…
buy_winePrepares buying…Buys…
list_for_salePrepares a new offer…Makes a new offer…
update_listingPrepares a change to the asking price…Changes the asking price…
remove_offersPrepares taking…Takes…
sell_to_bidPrepares selling…Sells…
add_inbond_addressPrepares saving…Saves…
remove_inbond_addressPrepares removing…Removes…

suggest_inbond_warehouse is offered to partner keys alone: it needs warehouses:suggest, which Cru grants only to a partner credential. Its page shows the version they get.

Cru World Wine Developers · Partner Trading API v1
Based on the API as built on 15 October 2026.

API credentials

Enter the client key and secret issued by Cru. They are kept for this browser tab’s session — a reload keeps them, closing the tab or clearing them ends them.

Credentials are never included in copied examples, and are redacted from anything the console prints back.

Request API access

Tell us who you are and what you want to build. Cru issues a client key and secret for your organisation, scoped to what you need.

Markets you trade in (choose one or more)

We use what you send here to reply about API access, and for nothing else. Cloudflare Turnstile checks the form for bots (privacy policy).