Let ChatGPT and Claude sell your products
The store can speak the language of AI agents (the MCP protocol).
The store can speak the language of AI agents (the MCP protocol). With it, Claude, ChatGPT or Perplexity can search your catalogue and recommend specific products, with their real price and stock.
The buy link always points at your site. You win the channel without giving up the checkout or paying anyone a cut per sale. That is the whole idea.
It is off until you switch it on
A fresh store does not answer agents. /mcp is a public address that anyone
can call, and a search by meaning costs a little money, so it only opens when
you decide to.
To switch it on:
- Put at least one AI provider key in the backend
.envand restart (the same keys as in AI → Connectors:ANTHROPIC_API_KEY,OPENAI_API_KEY,GOOGLE_API_KEY,MISTRAL_API_KEY,OPENROUTER_API_KEY,VOYAGE_API_KEYorCOHERE_API_KEY). - In the panel, go to AI → Agents and turn on Let AI agents read the catalogue.
Without any key the switch stays greyed out, and the backend refuses it too
(«It cannot be switched on without an AI provider key»). The setting is saved in
the store settings (store.metadata.mcp.activo), not in the .env.
Also make sure you have set where to send people to buy:
STOREFRONT_URL=https://mystore.com
STOREFRONT_RUTA_PRODUCTO=producto # /producto/<handle>If your theme uses a different path, change it or the links will 404.
Connecting it
Once it is on, AI → Agents shows the address to give the agent. It is the
backend's /mcp, for example https://mystore.com/mcp. In Claude Desktop, in
the MCP server configuration:
{
"mcpServers": {
"my-store": {
"url": "https://mystore.com/mcp"
}
}
}Each agent is configured its own way, but they all ask for the same thing: that address.
What an agent can do
Three things, and none of them touches anything:
| Tool | For |
|---|---|
buscar_productos | Search the catalogue for whatever the customer asks |
ver_producto | The full record of one: price, stock, description |
informacion_tienda | Name, currency, shipping zones and how to buy |
Read-only. An agent cannot create orders, or see customers, or touch prices. The only thing that leaves here is the catalogue that is already public on your site.
Prices
Each variant carries precio: { "amount": 19.99, "currency": "eur" }: the same
shape as the rest of the public API. amount is a decimal in major units
(19.99, not 1999) and currency is your store's default currency in ISO 4217,
lower case. A store that sells in dollars answers in dollars. A variant with no
price in that currency comes with precio: null.
Limits and spend
- Per address. Each IP can send 30 messages a minute (each message inside a
batch counts, and a batch holds at most 20). Past that it answers
429. You can change the number withPCC_MCP_POR_MINUTOin the backend.env. - The AI daily cap. A search by meaning turns the question into a vector, and that costs money. It is logged under AI → Spend as Search and adds to the store's daily cap. Once the cap is passed, agents keep getting answers, searched by keyword only.
When it is off
/mcp answers 403 and runs no tool:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32001,
"message": "This store's AI agent server is switched off. …",
"data": { "motivo": "desactivado" }
}
}motivo is desactivado (switched off in the panel) or sin_claves (there is
no AI key in the .env, so it cannot be on). The message comes in the language
the agent asks for with Accept-Language (English or Spanish).
Sessionless, on purpose
The protocol allows keeping a session between requests. Here each one stands on its own, and no login is needed.
Storing sessions would force you to clean them up, to share them between processes if there is more than one, and to decide what happens when they are lost — a whole layer of complexity for something that only reads a public catalogue.
Checking it works
curl -X POST https://mystore.com/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'It should answer with the three tools. A 403 means it is off (look at
motivo). A 404 means the route is not published in your proxy: /mcp has to
reach the backend.
Worth keeping in mind
An agent recommends what it understands. If your product pages say "Model XR-200" and nothing more, no agent will know what it is for.
That is where the AI that writes product copy pays for itself: not for writing nicely, but because a page that explains what problem the product solves is one an agent can recommend.