MCP server
Ecomone runs a remote Model Context Protocol server with 91 tools. An AI agent can read shop data, build pages and sections, manage products and run e-mail marketing — always within the scopes the merchant granted.
Endpoint#
| URL | https://api.ecomone.shop/api/mcp |
| Transport | Streamable HTTP, stateless (JSON-RPC 2.0 over POST). GET returns 405. |
| Protocol versions | 2025-06-18 2025-03-26 2024-11-05 |
| Auth | OAuth 2.1 (recommended) or an API key, same as REST |
| Methods | initialize ping tools/list tools/call notifications/* (accepted, no reply) |
Connect Claude#
Add a custom connector
In Claude open Settings › Connectors › Add custom connector and enter
https://api.ecomone.shop/api/mcp.Sign in to Ecomone
Claude discovers the OAuth server automatically. Log in, choose your shops and approve the permissions.
Ask
For example: “Show me yesterday's orders that aren't shipped yet” or “Create a landing page for the winter collection”.
Your own agent#
curl -X POST "https://api.ecomone.shop/api/mcp" \
-H "Authorization: Bearer at_..." \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"orders","arguments":{"limit":5}}}'import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const transport = new StreamableHTTPClientTransport(new URL("https://api.ecomone.shop/api/mcp"), {
requestInit: { headers: { Authorization: "Bearer at_..." } },
});
const client = new Client({ name: "my-agent", version: "1.0.0" });
await client.connect(transport);
const { tools } = await client.listTools();With several shops every tool accepts an extra string argument `shop` (slug, exact name or uuid; added to inputSchema only when the connection covers more than one shop). get_capabilities and list_shops without `shop` return a shop list.
Permissions & safety#
- tools/list only lists tools whose scope (or one of anyOfScopes) the connection has.
- Each tools/call: the scope is checked again for the resolved shop; read tools require the acting user to have at least viewer access to the shop, write tools at least manager access.
- The MCP connector requires an active subscription that includes MCP for the shop, except get_capabilities, list_shops and all orders:* tools (error text instead of execution).
- If the subscription is locked, write tools are refused (orders:* tools excepted).
- Some tools additionally require plan features (pop-ups, e-mail marketing, inbox, tracking ...).
- Several tools that cause real-world effects require the argument bestaetigt_vom_haendler=true (merchant confirmed); without it they return ok:false with a summary to present to the merchant.
Tools marked live in the tool catalog change the live shop or send e-mails immediately. Shop-building tools (pages, sections, fonts, colors) work on a draft until the merchant publishes.
Limits#
- tools/call results are {content:[{type:'text', text:<JSON string>}]}; failures set isError:true with a German message. Max result size 150,000 characters (larger: error asking to narrow the query). Timeout 45 s per tool call (100 s for long-running tools: import_media_from_url, generate_media_image, generate_product_images, manage_review, products, look_at and their legacy aliases).
- JSON-RPC batches up to 50 messages (more: error -32600, HTTP 400).
- Rate limit: 600 tool calls per minute per connection, shared with REST.