Kiuki — agentic shopping

Kiuki is a UK online grocery, and this is its MCP server: search ~16,000 products, check live stock and delivery, and hand your human a filled basket — they pay on the site. Read-only, no key needed.

search_productsSearch Kiuki's live catalogue (~16,000 UK grocery and household products). Returns matches with price, seller, live stock and product-page URL. All results are lines Kiuki can actually fulfil.
get_productFull detail for one product by slug, SKU or GTIN/barcode: price, RRP, live stock, categories, dietary tags and nutrition per 100g where known.
list_categoriesThe department tree (departments with product counts and their subcategories) and the dietary tags in use.
browse_categoryList products in a department, optionally narrowed to one subcategory or dietary tag.
check_stockLive in-stock check for up to 100 SKUs at once (fresher than the nightly feed).
delivery_infoDelivery rate, free-delivery threshold and minimum order — and whether a UK postcode is serviceable at all (Northern Ireland, the Scottish Highlands and the islands currently are not). Optionally computes delivery for a basket subtotal.
create_basket_linkTurn a list of products into a link that fills a shopper's basket on kiuki.com. The shopper reviews and pays there — agents cannot spend money on Kiuki. Validates every line and prices the basket, including delivery. IMPORTANT: qty is counted in PACKS, not units. Most of this catalogue is sold in supplier packs (see sold_in_packs_of on each product), and checkout always rounds up to a whole pack — so qty:1 of a pack-of-12 costs twelve times the unit price. The totals returned here are what the shopper will actually pay.
order_statusTrack an existing order by its KIU- reference and the email it was placed with. Returns the stage, ETA once it has been sent for packing, and any messages from the Kiuki team.
get_receiptFetch the receipt for a paid Kiuki order. Read-only. Returns the lines, subtotal, delivery and total. Kiuki Ltd is not VAT registered, so this is a receipt and never a VAT invoice.
request_returnAsk Kiuki to take an item back. THIS FILES A REQUEST AND NOTHING MORE — no refund is issued and no return is approved by calling it. A person reviews it and replies by email. Tell the shopper a request has been raised, never that it is approved.
cancel_orderAsk Kiuki to cancel an order. THIS FILES A REQUEST AND NOTHING MORE — the order is NOT cancelled by calling it. Payment is taken at checkout, so cancelling means a refund, and a person decides that. Orders usually reach the supplier within minutes of payment, so late cancellation may not be possible. Never tell the shopper the order is cancelled.
update_orderAsk Kiuki to change an order — the address, a quantity, a line. THIS FILES A REQUEST AND NOTHING MORE; the order is not amended by calling it. A person reviews it and replies by email. Never tell the shopper the change is made.
create_checkoutStart a checkout an agent can pay for. Prices every line from Kiuki's own catalogue and returns the real totals including delivery. You CANNOT send a price: Kiuki sets them. Quantities count PACKS, as in create_basket_link. Returns a checkout id and a status; only ready_for_complete can be paid. An address Kiuki cannot deliver to comes back as address_undeliverable.
pay_checkoutPay for a checkout from create_checkout, using a Stripe shared payment token you minted yourself against Kiuki's business profile (see payment_handlers in https://kiuki.com/.well-known/ucp). Kiuki never sees a card number. Set the token's usage_limits.max_amount to the TOTAL create_checkout returned: if Kiuki re-prices higher at this point the payment is REFUSED rather than charged at a different figure than your shopper agreed. On success you get the order reference to give them.

Connect: Claude → Settings → Connectors → Add custom connector, and paste this URL. Plain HTTP feeds, if you'd rather skip MCP: the full catalogue and llms.txt.

GET ?format=json returns this description as JSON.