Make any store agent-buyable.
Tote is a commerce layer for AI agents. Point your agent at Tote and it can search real stores, build a real cart, and hand back a checkout link. No integration from the store, no plugin from the merchant, no payment handling. Everything below works today.
claude mcp add --transport http tote https://usetote.dev/mcp # then run /mcp inside Claude Code and sign in with your email. # Prefer an API key? add: --header "Authorization: Bearer YOUR_KEY"
What your agent can do
- Search a verified index of stores, ranked by real usage.
- Read live products, prices, and stock from any store's catalog.
- Add items to a real, per-session cart and read the running total.
- Get a checkout link a human clicks to pay, on the store's own site.
- Reach any Shopify or WooCommerce store with no merchant setup.
How it works
Quickstart
Get a key, add the connector, and ask. The whole flow, start to checkout link, is four calls.
- 1. Create a key on the keys page.
- 2. Add the connector with the snippet above.
- 3. Ask your agent: "find a coffee store on Tote and build a cart."
- 4. Open the checkout link it returns.
Authentication
Pass your key as a bearer token in the Authorization header. Keys travel in the header only, never in the URL. Create and inspect keys on the keys page.
Authorization: Bearer cg_live_...
Choose your path
MCP
Connect Claude, Cursor, or any MCP client to the five tools.
REST
Call /v1 endpoints directly from any language over HTTPS.
No-install prompt
Paste one prompt into a browsing-enabled chat, zero setup.
search_stores
Find verified stores by name or domain, ranked by real usage (checkouts, adds, and calls).
GET https://usetote.dev/v1/stores?query=coffee&limit=3
{
"stores": [
{
"domain": "deathwishcoffee.com",
"name": "Death Wish Coffee",
"product_count": 146,
"currency": "USD",
"avg_latency_ms": 434
}
]
}list_products
Products, prices, and availability from a store's live catalog. Optional query filters within the store.
GET https://usetote.dev/v1/stores/deathwishcoffee.com/products?limit=2
{
"store": "deathwishcoffee.com",
"products": [
{
"handle": "pumpkin-chai-coffee",
"title": "Pumpkin Chai Coffee",
"variants": [
{ "id": 41181425598519, "price": "13.99", "available": true }
]
}
]
}get_product
Full detail for one product by its handle, including images and description.
GET https://usetote.dev/v1/stores/deathwishcoffee.com/products/pumpkin-chai-coffee
{
"handle": "pumpkin-chai-coffee",
"title": "Pumpkin Chai Coffee",
"vendor": "Death Wish Coffee",
"images": ["https://..."],
"variants": [
{ "id": 41181425598519, "price": "13.99", "available": true }
]
}add_to_cart
Add a variant to the session's cart for a store and return the running total. Carts persist per (session, store).
POST https://usetote.dev/v1/cart/add
{
"session_id": "me",
"store_domain": "deathwishcoffee.com",
"variant_id": 41181425598519,
"quantity": 1
}{
"store": "deathwishcoffee.com",
"items": [
{ "variant_id": 41181425598519, "title": "Pumpkin Chai Coffee",
"quantity": 1, "price": 1399 }
],
"total_price": 1399,
"currency": "USD",
"item_count": 1
}checkout_url
The real checkout link for everything in the session's cart. Tote stops here; a human completes payment on the store's site.
GET https://usetote.dev/v1/checkout_url?session_id=me&store_domain=deathwishcoffee.com
{
"store": "deathwishcoffee.com",
"checkout_url": "https://deathwishcoffee.com/cart/41181425598519:1",
"items": 1,
"total_price": 1399,
"currency": "USD"
}See the index itself.
Every verified store is a node; every search you run traverses them with the same five tools documented above, labeled hop by hop with real latencies. The interactive field lives on its own page.
Supported platforms
The same five tools work across every platform. Store carts differ under the hood, but the interface your agent sees does not.
Shopify
~4.6M stores. Public AJAX endpoints, no key needed.
WooCommerce
~3M stores. Public Store API, no key needed.
Best Buy
Official developer API. Marketplace adapter template.
The checkout model
Tote never touches payment. Every flow ends at a checkout URL that a human opens and completes on the store's own site. That is a property of the code, not a policy: there is no payment path to misuse, and merchants have nothing to object to.
Telemetry & privacy
Every call logs volume only: tool name, store, outcome, latency, and your key id. Search queries, product handles, and cart contents are never logged as analytics. Check your own usage at /v1/keys/usage, and read the full privacy policy.