Connect your AI assistant
Smart Basket runs a server that AI assistants can talk to. Once you connect your account, you can ask your assistant to check whether we deliver to you, find products and prices, add them to your cart, change quantities, and follow your orders. Checkout stays in the Smart Basket app, where you see the total and choose your delivery window before anything is charged.
Set it up
Meta Muse. Once Smart Basket is listed in Muse's connector directory, open Settings → Connectors, find Smart Basket and tap Connect. Until then, send Muse this message:
Add a custom connector for Smart Basket. It is a remote MCP server using
streamable HTTP at https://api.getsmartbasket.com/v1/mcp/shopper with OAuth
authentication. If you need a client id, use "muse".
Claude. In claude.ai, open Settings → Connectors →
Add custom connector and paste
https://api.getsmartbasket.com/v1/mcp/shopper. In Claude Code, run
claude mcp add --transport http smartbasket https://api.getsmartbasket.com/v1/mcp/shopper.
ChatGPT. In Settings → Connectors, add a custom MCP server with the same address.
Whichever assistant you use, it opens a Smart Basket sign-in page. Enter the phone number you use in the app, type the code we text you, and tap Allow. That is a one-time step. Your assistant stays connected until you disconnect it, from the assistant or from Signed-in devices in the Smart Basket app.
What your assistant can do
- Tell you whether Smart Basket delivers to a ZIP code, and list the ZIP codes we serve.
- Search our catalog and quote prices, sizes and stock for your store.
- Show your cart, add products, change quantities and remove items.
- Show your recent orders, their status and delivery window.
What it cannot do today
- Place an order, pay, or see your card details.
- Change your address, phone number or payment methods.
- Act on any account but the one you signed in with.
Prices and stock are quoted as of the moment you ask and are confirmed in the app at checkout.
Privacy
Your assistant sees your first name, the last four digits of your phone number, your default delivery address's label, city and ZIP, your cart and your orders. Nothing else. Smart Basket does not share your phone number or payment details with the assistant, and does not use what you ask it for advertising. Every action an assistant takes on your account is logged, and you can review and revoke the connection at any time. Our privacy policy applies.
Technical reference
For assistant developers. The server implements the Model Context Protocol over Streamable HTTP with JSON responses, one request per call, no sessions.
| Endpoint | POST https://api.getsmartbasket.com/v1/mcp/shopper |
|---|---|
| Public endpoint (no sign-in) | POST https://api.getsmartbasket.com/v1/mcp/public — delivery area and catalog only |
| Authorization | OAuth 2.1 authorization code with PKCE (S256). Smart Basket is the authorization server. |
| Discovery | /.well-known/oauth-authorization-server and /.well-known/oauth-protected-resource/v1/mcp/shopper on the same origin |
| Client registration | Dynamic (RFC 7591); none, client_secret_basic and client_secret_post are accepted. Meta Muse may also use the pre-registered public client id muse. |
| Scope | mcp (the only scope) |
| Tokens | Access token valid 24 hours; refresh token always issued, rotated on use |
| Revocation | POST /oauth/revoke; also from the shopper's Signed-in devices in the app |
| Rate limits | 120 calls per minute per shopper; 60 per minute per IP on the token endpoint; HTTP 429 when exceeded |
| Errors | A refusal the shopper can act on (out of stock, over the per-order limit, cart locked while an order is being picked) is returned as a tool result with isError: true and a plain-language message. An expired or revoked token gets HTTP 401 with a WWW-Authenticate challenge naming the resource metadata. |
Tools
Classification follows Meta's connector guidelines: Read retrieves without changing anything; Write changes data on the shopper's behalf; a Sensitive write is irreversible or consequential and is approved by the shopper every time. The current tools are reads and cart writes; sensitive-write tools such as placing an order are planned and will be added to this table when they ship.
| Tool | Class | Sign-in | Inputs | Returns and side effects |
|---|---|---|---|---|
check_delivery_area | Read | No | zip | Whether we deliver, and the store; for an unserved ZIP, the served ZIPs and a notify-me link. Records the unserved ZIP as a demand signal. |
list_delivery_areas | Read | No | none | Served ZIP codes. |
search_products | Read | No | query, optional zip, page | Matching products with price, list price, size, stock and sale limit. Records the search. |
get_product | Read | No | productId, optional zip | One product in full. |
list_categories | Read | No | none | Aisles and subcategories. |
list_products | Read | No | optional categoryId, page | A page of the catalog: name, price, size. |
get_app_link | Read | No | none | App Store and Google Play links. |
get_account | Read | Yes | none | First name, masked phone, default address label, city and ZIP. |
get_cart | Read | Yes | none | Cart lines, subtotal, delivery fee, total, and whether the cart is editing a placed order. |
add_to_cart | Write | Yes | productId, quantity (1–99) | Adds to the cart and returns it. Refuses out-of-stock, coming-soon and over-limit items. |
set_cart_quantity | Write | Yes | productId, quantity (0–99) | Sets a line; 0 removes it. Returns the cart. |
remove_from_cart | Write | Yes | productId | Removes the line. Returns the cart. |
list_orders | Read | Yes | limit (1–20) | Recent orders with status, delivery window, total and items. |
get_order | Read | Yes | orderId | One order in full. |
Every cart tool returns the whole cart after the change, so an assistant reports the real state rather than assuming the write succeeded. Order status values are the app's own, with the promised delivery window.
Questions
Email contact@getsmartbasket.com. Security reports to the same address are read first.