Mercadona MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Mercadona MCP Serversearch for whole wheat bread"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mercadona for Claude
Shop your Mercadona online groceries by talking to Claude.
This is an MCP server that drives your own authenticated Mercadona session. Claude can search the catalog scoped to your delivery area, read your purchase history and "my regulars," and add, change, or remove items in your real cart — so you and Claude fill it together. Products are presented as a photo grid.
You stay in control of payment. There is no checkout or payment tool, by design. Claude fills the cart; you review and pay in the Mercadona app, where Strong Customer Authentication happens.
It installs as a Claude Desktop extension (described by manifest.json) — load it unpacked
via developer mode (see Install; the packed .mcpb doesn't install reliably). It can
also run as a plain local MCP server.
Independent project. Not affiliated with, endorsed by, or sponsored by Mercadona. macOS-focused.
Tools
Tool | What it does |
| The shopping playbook. Read first. |
| Whether the session is valid and how long the token lasts. |
| Open a browser to sign in (handles 2FA); saves the session locally. |
| Find products + ids in your delivery area. |
| Details for a single product by id. |
| The current real cart: items, quantities, total. |
| What you usually buy ( |
| Past orders: date, total, status, item count. |
| Items in a past order, without adding anything. |
| Available delivery windows for your address. |
| Add a product by id (increments if present). |
| Set the exact quantity ( |
| Remove a product entirely. |
| "Buy again" — add a whole past order in one step. |
Related MCP server: RappiMCP
Requirements
Node.js ≥ 18
Google Chrome installed (the
logintool opens it via Playwright'schromechannel)
Build
npm install
npm run build # bundles src/ -> dist/server.mjs with esbuildplaywright-core is kept external (it stays in node_modules); everything else is bundled into
dist/server.mjs.
Install
Install it unpacked (developer mode). This is the recommended and reliable path — the packed
.mcpbdoes not currently install cleanly in Claude Desktop, so use the unpacked folder below.
As an unpacked Claude Desktop extension (recommended)
Load this folder directly. The build output (dist/) and runtime dependency
(node_modules/playwright-core) are git-ignored, so after cloning you must produce them first:
npm install # installs playwright-core into node_modules/
npm run build # writes dist/server.mjsThe folder then contains everything an unpacked extension needs:
manifest.json
icon.png
dist/server.mjs
node_modules/playwright-coreIn Claude Desktop: Settings → Extensions → Advanced settings → "Install unpacked extension…",
then select this folder (the one containing manifest.json). It loads as the "Mercadona" extension;
run the login tool once to sign in.
Requirements: Node ≥ 18 on your PATH and Google Chrome installed (the login tool opens
it). Rebuild (npm run build) after changing anything under src/, then reload the extension.
As a local MCP server
If you don't want a Claude Desktop extension at all, run it as a plain MCP server:
npm install && npm run build
node dist/server.mjsPoint any MCP client at node /path/to/dist/server.mjs. For Claude Desktop's config:
{
"mcpServers": {
"mercadona": {
"command": "node",
"args": ["/absolute/path/to/mercadona-claude-extension/dist/server.mjs"],
"env": { "MERCADONA_BROWSER_CHANNEL": "chrome" }
}
}
}As a packed Claude Desktop extension (.mcpb)
⚠️ Not currently recommended — Claude Desktop does not install the packed bundle reliably. Use the unpacked path above instead. Kept here for completeness.
npm run pack # builds dist/, then packs a .mcpb via @anthropic-ai/mcpbThis produces a single .mcpb bundle (it includes dist/ and the production node_modules, i.e.
playwright-core).
Signing in
Run the login tool (or just ask Claude to log in). A Chrome window opens at the Mercadona store;
sign in and complete any 2FA. The extension waits until it sees your first authenticated request,
then saves the session to:
~/.mercadona/storage_state.jsonThis file holds your Mercadona auth and never leaves your machine. It is git-ignored here — do
not commit it. Tokens last a few days; re-run login when auth_status says it has expired.
Override the location with MERCADONA_STATE_PATH, or the browser with MERCADONA_BROWSER_CHANNEL
(default chrome).
How it works
Auth (
src/auth): Mercadona stores the logged-in user — including the API access token — inlocalStorageunderMO-user. Theloginflow captures PlaywrightstorageState, andstore.mjsreads the token straight out of it. No separate token endpoint.API (
src/mercadona/api.mjs): a thin client overtienda.mercadona.es/api. Catalog search goes through Mercadona's public, search-only Algolia index (scoped to your warehouse). Cart writes are a read-modify-write against the cart's optimistic-lockversion, retried once on conflict.Server (
src/server.mjs): registers the tools over stdio and turns expired-token / not-signed-in errors into friendly messages.
License
MIT © Igor Safonov
Available Tools
14 toolsadd_to_cartAdd to cartA
Add a product to the real cart by id (get the id from search_products or get_my_regulars first). If already present, increases the quantity. Returns the updated cart with its total.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | No | How many to add (default 1) | |
| product_id | Yes | Product id from search_products/get_my_regulars, e.g. '10922' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: increases quantity if already present, returns updated cart with total. No annotations provided, so description carries full burden. Lacks statement on mutation (e.g., modifies real data) but implies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no filler. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sufficient for a simple add-to-cart tool. No output schema, but description states what is returned. All necessary information covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters, description adds value by explaining how to obtain product_id and default quantity. Provides context beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (add product to real cart), identifies the source of product ID, and distinguishes from sibling tools like remove_from_cart and set_quantity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit preconditions: get the product ID from search_products or get_my_regulars. Also explains behavior when product is already present. Could be more explicit about when not to use, but sibling tools cover alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_statusAuth statusA
Check whether the Mercadona session is valid and how long the token lasts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly states that the tool checks validity and token duration, which is sufficient for a read-only status check. It could mention prerequisites like needing an existing session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple status check with no parameters and no output schema, the description is fairly complete. It could be improved by hinting at the return value format (e.g., boolean and expiry), but overall it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100%. The description does not need to add parameter information. Baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Check' and clearly identifies the resource: session validity and token duration. It distinguishes from siblings like login which creates sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after login to verify session state, but does not explicitly state when not to use or provide alternatives. Still, the context is clear given the tool's name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cartGet cartB
Show the current real shopping cart (items, quantities, total).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. It implies read-only but does not mention side effects, authentication needs, or other traits. Insufficient for a safe usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, very concise and front-loaded. However, it could include more detail without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple zero-parameter read tool. Mentions key output, but lacks any information about pagination, authentication, or edge cases. Minimum viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (0 params), baseline 4 applies. Description adds value by specifying what output includes (items, quantities, total), though no param info needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Show' and resource 'current real shopping cart' with specific output (items, quantities, total). Distinguishes from sibling tools like add_to_cart or remove_from_cart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use vs alternatives. Only implies it's for viewing the current cart, but lacks explicit context or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_delivery_slotsDelivery slotsA
Available delivery slots. Uses your first address if address_id is omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| address_id | No | Optional address id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full burden. Only discloses default address behavior but lacks details on output format, error handling, or what happens when no address is available.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with purpose. No unnecessary words, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description is fairly complete. Could mention what delivery slots represent (dates/times) but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with description. Description adds value by explaining default behavior when address_id is omitted, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves delivery slots and mentions optional address filtering. Distinguishes from siblings as no other sibling deals with delivery slots.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or alternatives. Only implies usage for checking available slots, but no context on prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_regularsMy regularsA
Products you usually buy. kind='precision' = most bought; kind='recall' = also bought.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Default 'precision' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It explains the meaning of the two kind values but does not disclose auth needs, data source, or any side effects. Minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words. Every sentence provides essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with one optional parameter, but description could benefit from indicating output format (e.g., list of product objects) to be fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for 'kind' (Default 'precision'). The description adds value by explaining what each enum value means ('most bought' vs 'also bought').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Products you usually buy' with a verb 'get' implied. It distinguishes from sibling tools like get_product (single product) or get_purchase_history (past purchases) by focusing on regular items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like search_products or get_purchase_history. The description does not mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_order_itemsOrder itemsA
List the products in a past order (without adding anything). Defaults to the most recent order if order_id is omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | No | Order id from get_purchase_history; default = latest order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It explicitly states the tool is read-only ('without adding anything'), which is a key behavioral trait. It does not disclose other details like authentication requirements or return format, but for a simple read tool, this is relatively transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, no wasted words, and front-loaded with the main action. Every sentence adds value: first states purpose, second adds default behavior and modifies guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description adequately covers purpose, default behavior, and non-destructive nature. It could mention that the response is a list of items, but the sibling context (get_product, search_products) helps fill gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (only one parameter). The parameter description in the schema ('Order id from get_purchase_history; default = latest order') is sufficient. The main description reinforces the default behavior, adding extra context over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists products in a past order, with the verb 'List' and resource 'products in a past order'. It distinguishes from modifying siblings like add_to_cart and reorder_order by noting 'without adding anything', and implies it is for past orders, not the current cart (get_cart).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like get_cart (for current cart) or get_purchase_history (for order list). It implicitly suggests use for past orders and defaults to most recent, but lacks clear when/not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productGet productA
Get details for a single product by id.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Product id, e.g. '10381' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description is minimal; no behavioral traits disclosed beyond the obvious read operation. No annotations, so description carries full burden—lacks details on error handling, auth, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundant information, efficiently conveys the tool's core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is largely complete. It could elaborate on what 'details' include, but the purpose is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the description adds no additional meaning beyond the parameter description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves details for a single product by ID. It distinguishes itself from sibling tools like search_products, which returns multiple products.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage: use when needing details for one specific product. No explicit when-not or alternatives mentioned; context from siblings suggests not for search or cart operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_purchase_historyPurchase historyB
List past orders (date, total, status, item count). Page is 1-based.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Default 1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It mentions page is 1-based, implying pagination, but does not disclose page size, default ordering, or whether all orders are returned. No information about rate limits, authentication needs, or data freshness is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two sentences, no redundant information. However, it could be better structured by grouping the return fields in a list or noting the pagination more explicitly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description partially compensates by listing return fields. However, it omits important context like authentication requirements, pagination limit, and total count. For a list tool of moderate complexity, this is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter. The description adds value by specifying 'Page is 1-based', which clarifies the parameter's behavior beyond the schema's 'Default 1'. This helps the agent understand page numbering convention.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists past orders and specifies the fields returned (date, total, status, item count). It distinguishes from sibling tools like 'get_order_items' which likely lists items within an order. However, it does not explicitly state the scope (e.g., for the current user), leaving minor ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'get_order_items' or 'get_cart'. The description does not mention any prerequisites, exclusions, or context where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shopping_guideShopping guide (read first)A
Return the Mercadona shopping playbook: how to present products (ALWAYS as a photo-grid artifact), fill and review the real cart, use 'my regulars', and reorder past shops. Call this once at the start of any Mercadona task — before searching or adding to the cart — and follow it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It accurately describes the tool as returning a guide with no side effects. Could mention it's read-only explicitly, but context makes it clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph, front-loaded with purpose. Slightly lengthy but each sentence adds value. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, description fully covers tool's role. Provides complete guidance for agent to use as prerequisite step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline is 4 per rules. Description adds no param info, but none needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns the 'Mercadona shopping playbook' covering presentation, cart actions, regulars, and reordering. Distinguishes from siblings by being a meta-instruction tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Call this once at the start of any Mercadona task — before searching or adding to the cart — and follow it.' Provides clear when-to-use directive with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginLog in to MercadonaA
Open a browser window to sign in to Mercadona. The user logs in (and handles any 2FA/SCA); the session is then saved so all other tools work. Call this when not signed in, or when a tool reports the session expired.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes browser window, user handles 2FA/SCA, session saved. No annotations, but description covers key behaviors comprehensively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no fluff, front-loaded with essential info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core behavior and usage context well, though could mention that login may require user interaction (implied by 2FA/SCA).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters; description adds no parameter info but schema coverage is 100%. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'sign in' and resource 'Mercadona', distinguishing from sibling tools like auth_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when to call: when not signed in or session expired. Could mention that auth_status can check status first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_cartRemove from cartB
Remove a product from the cart entirely. Returns the updated cart.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Product id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states the action and return. Does not disclose what happens if product is not in cart, idempotency, or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, no wasted words. Front-loads the action ('Remove a product') and includes return value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, the description is adequate but lacks behavioral details like error handling or side effects. With no annotations, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, but description adds no additional context beyond the schema's 'Product id'. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Remove a product from the cart entirely.' The verb+resource combination is specific and distinct from sibling tools like add_to_cart or set_quantity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., set_quantity to zero). Lacks context about prerequisites or scenarios where removal is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_orderBuy again (reorder)A
Add all items from a past order to the cart in one step (a 'buy again'). Defaults to the most recent order. Skips items no longer available and reports them. Returns the updated cart.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | No | Order id from get_purchase_history; default = latest order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: skipping unavailable items and reporting them, and returning the updated cart. However, without annotations, it lacks details on authentication needs, mutation effects, or limits on items. The reporting mechanism is vague, and error handling or side effects are not addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with no wasted words. The description is front-loaded with the core action and includes essential details in a logical order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers the main functionality. However, it is missing information on error handling (e.g., if order not found) and authentication requirements, but these are minor given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for the single parameter, and the description adds significant context: it clarifies that order_id comes from get_purchase_history and defaults to the latest order, enhancing the schema's minimal description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds all items from a past order to the cart, distinguishing it from siblings like add_to_cart (individual items) and get_cart (retrieve cart). The verb 'add' and resource 'items from a past order' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use (reorder a past order) and defaults to the most recent order, providing clear context. However, it does not explicitly mention when not to use or prerequisites like having a purchase history, though the sibling tools imply that add_to_cart is for individual items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsSearch productsA
Find a product and its id (needed before add_to_cart), scoped to the user's delivery area. Use a short term; prefer the house brand 'Hacendado' unless asked otherwise. Returns matches with ids and prices.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 24) | |
| query | Yes | Search text, e.g. 'leche semidesnatada' or 'olive oil' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses scoping to delivery area and output (matches with ids and prices). Does not mention pagination or errors, but is adequate for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, purpose front-loaded. Highly concise and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description fully covers what the tool does, returns, and how to use it, including reference to sibling tool add_to_cart.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; description adds value beyond schema by advising on query length and brand preference, and contextualizing the output for add_to_cart.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Find a product and its id (needed before add_to_cart)' with specific verb and resource, and distinguishes from sibling tools like get_product and add_to_cart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit advice: 'Use a short term; prefer the house brand Hacendado unless asked otherwise.' Implies when to use (before add_to_cart) but lacks explicit when-not or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_quantitySet quantityA
Set the exact quantity of a product in the cart. Quantity 0 removes it. Returns the updated cart.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | Yes | Exact quantity (0 removes) | |
| product_id | Yes | Product id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses that quantity 0 removes the product and that it returns the updated cart. However, it does not mention behaviors such as error handling if product is not in cart, idempotency, or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action, no extra words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple with two parameters and 100% schema coverage, the description is nearly complete. It explains the return value and removal behavior. However, it lacks detail on what happens when product_id is not in the cart (e.g., does it add it or error?), which could be clarified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds no new parameter information beyond what the schema already provides (e.g., 'Exact quantity (0 removes)'). The return value mention is not parameter-related.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'set' and the resource 'exact quantity of a product in the cart', and distinguishes from siblings like add_to_cart and remove_from_cart by specifying exact quantity control including removal via zero.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for setting quantities precisely but does not explicitly state when to use this tool over siblings like add_to_cart or remove_from_cart. No when-not-to-use or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
v0.1.0- First observed
add_to_cart - First observed
auth_status - First observed
get_cart - First observed
get_delivery_slots - First observed
get_my_regulars - First observed
get_order_items - First observed
get_product - First observed
get_purchase_history - First observed
get_shopping_guide - First observed
login - First observed
remove_from_cart - First observed
reorder_order - First observed
search_products - First observed
set_quantity
TDQS
Scored across 14 tools
Each tool has a clearly distinct purpose: search vs product details, cart operations (add, remove, set quantity) are separate, past orders vs current cart, authentication, delivery slots, regulars, and a guide. No two tools overlap in function.
All tool names follow a consistent verb_noun pattern in snake_case, e.g., add_to_cart, get_cart, search_products, set_quantity. Minor deviations like 'auth_status' or 'login' are still clear and consistent with the style.
14 tools cover the essential operations for a grocery delivery service: authentication, search, product details, cart management, order history, and delivery slots. The number is well-scoped and neither too few nor excessive.
The tool set covers search, cart management, and history, but notably lacks a checkout or place_order tool. Users can fill a cart but cannot complete a purchase through the server. Delivery slots are viewable but not selectable. This is a significant gap for an e-commerce server.
Related MCP Connectors
Turn any shopping list into a ready-to-checkout grocery cart across 26 European supermarkets.
Agentic commerce gateway: discovery, search, checkout across Shopify/Woo/Odoo/PrestaShop.
Search Rakuten Ichiba products and compare prices via Claude. Zero setup, no API key needed.
AI shopping gateway for product search, inventory, carts, and merchant-hosted checkout.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables Claude to search products, build a shopping cart on Selver.ee, and open it in the browser for checkout.419-
- AlicenseAqualityDmaintenanceEnables Claude to browse stores, search products, manage the cart, and open checkout on Rappi Chile through natural language, automating grocery and delivery purchases.121MIT
- FlicenseNot gradedqualityDmaintenanceEnables shopping at Tiv Taam grocery store through Claude, including recipe parsing and cart population.-
- AlicenseNot gradedqualityCmaintenanceEnables personalized Mercadona grocery orders via natural language, with Nutri-Score prioritization and supervised cart execution (no payment). Supports user intake, product search, and integration with external menu systems.1MIT