mcp-leclerc-drive
Integrates with E.Leclerc Drive to find nearby drive stores, select a store, search the grocery catalogue with price and stock details, add products to the cart individually or in bulk, update quantities, remove items, and read the cart and total. It stops at cart management and does not check out, book slots, or pay.
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., "@mcp-leclerc-driveAjoute 2 packs de lait demi-écrémé, du beurre doux et des petits pois surgelés à mon panier"
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.
You Ajoute à mon panier : 2 packs de lait demi-écrémé, du beurre doux et des petits pois surgelés.
Claude ▸ search_product « lait demi-écrémé » ▸ search_product « beurre doux » ▸ search_product « petits pois »
▸ add_many (3 produits)
3/3 ajout(s) réussi(s) :
✓ Lait demi-écrémé UHT Délisse Brique - 6x1L (id=2612) +2 → 2 au panier
✓ Beurre Extra fin Les Croisés Doux - 82% MG - 250g (id=2111) +1 → 1 au panier
✓ Petits Pois Notre Jardin 600g (id=87001) +1 → 1 au panier
Panier (magasin 027411) — 3 produit(s), 4 article(s) — Total : 15,98 €What it does
Finds your drive. By postcode or town, nearest first, then remembers the one you pick.
Searches the shelves. Price, price per kilo or litre, pack size, family, customer rating, instant discounts, stock, and what is already in your cart.
Fills the cart. Add one product or up to 30 in one go, set a quantity, remove a line, read the cart and its total. Every change is confirmed by Leclerc Drive; anything it kept short (stock, limits) is said.
Stops at the cart. No tool validates the cart, books a slot, orders or pays. You check the cart and finish on the site, as usual.
Through your own Chrome. The server opens a Chrome window with its own profile; you log into Leclerc Drive there once and it stays logged in. Requests go out one at a time, spaced like a person's.
French, like the site: the tools answer in French; ask Claude in any language.
Related MCP server: RappiMCP
Security
Read this before you install.
It never sees your password. You log in yourself, in the Chrome window it opens. Your session stays in that dedicated Chrome profile (
~/.mcp-leclerc-drive/chrome); the server never reads, stores or logs a cookie, a password or a 2FA code.It only talks to Leclerc Drive. Every page and request is checked against a short list of
leclercdrive.frhosts, even after redirects. No telemetry, no other site.Your main Chrome is never touched. The server refuses to use your everyday Chrome profile, and never connects to a Chrome it did not start.
Cart changes are real. It is your Leclerc cart. Product names come from the site and are shown to the model as data; check the cart before you check out.
While it runs, the window is drivable from this computer. Chrome listens on a local debug port (127.0.0.1:9333) so the server can drive it; another program running as you on this computer could too. Close the window when you are done shopping.
The details, and how to report a vulnerability: SECURITY.md.
Get started
You need: Node.js 22 or later, Google Chrome, a Leclerc Drive account, and an MCP client such as Claude Code or Claude Desktop.
1. Add it to Claude Code, from the latest release (built and attested by GitHub Actions):
claude mcp add --scope user leclerc-drive -- npx -y \
--package=https://github.com/lborruto/mcp-leclerc-drive/releases/download/v0.4.0/mcp-leclerc-drive-0.4.0.tgz \
mcp-leclerc-driveNot
npx mcp-leclerc-driveon its own: that name on npm is the original, unmaintained 0.3.0, without these fixes and checks. This project is never published to npm. To check the tarball was built by this repository's release workflow:gh attestation verify mcp-leclerc-drive-0.4.0.tgz -R lborruto/mcp-leclerc-drive.
Or from a clone, to read the code first or follow main:
git clone https://github.com/lborruto/mcp-leclerc-drive.git && cd mcp-leclerc-drive
npm ci # also builds dist/
claude mcp add --scope user leclerc-drive -- node "$PWD/dist/index.js"2. Log in once. Ask Claude something that needs the site (« trouve les drives autour de 74100 »). A Chrome window opens: log into Leclerc Drive in it and choose your drive. Leave the window open while you shop; your login is kept for next time.
3. Pick your drive in Claude: « find_stores 74100 », then « set_store 027411 » with the id it shows. The shopping works on the drive the Chrome window is logged into.
4. Shop. « Ajoute 2 packs de lait et du beurre », « qu'y a-t-il dans mon panier ? », « enlève le beurre ». Then open the cart on leclercdrive.fr and check out yourself.
Claude Desktop and other clients: add it to the client's MCP configuration, for example
claude_desktop_config.json:
{
"mcpServers": {
"leclerc-drive": {
"command": "npx",
"args": [
"-y",
"--package=https://github.com/lborruto/mcp-leclerc-drive/releases/download/v0.4.0/mcp-leclerc-drive-0.4.0.tgz",
"mcp-leclerc-drive"
]
}
}
}Run one MCP client with it at a time: they would share the same Chrome window.
Tools
Tool | What it does |
| Drives near a postcode or town, nearest first, with the id to pick one. |
| Choose the drive (remembered across sessions) / show it. |
| Search the drive's catalogue: price, per-kilo price, size, family, rating, offers, stock, already in cart. |
| Add units of one product, on top of what the cart holds. |
| Add up to 30 products in one go; one failure does not stop the rest. |
| Set a line to an exact quantity (0 removes it). |
| Remove a line. |
| The cart, line by line, with the total. |
Settings
Optional environment variables, set in the MCP client's configuration (claude mcp add -e NAME=value …):
Variable | Default | What it does |
| Chrome's usual place | The Chrome to start, if yours is elsewhere. |
|
| The server's own Chrome profile, where your Leclerc login is kept. Never your main profile. |
|
| Chrome's local debug port. |
| none | A drive to start with, instead of |
Throttling and retries have their own settings; see CONTRIBUTING.md.
Upgrading
Change the version in the claude mcp add command (remove the old entry with claude mcp remove leclerc-drive), or git pull && npm ci in your clone. What changed is in
CHANGELOG.md. Your login and your drive are kept.
Help and docs
I want to… | Read |
Know what it protects and what it does not | |
Report a vulnerability, privately | |
Hack on it, run the tests, see how it works | |
See how the Leclerc Drive site was mapped | |
See what changed in each version |
Found a bug? Open an issue with the version, your OS, Chrome version and the error text. Never your cookies, account, address or screenshots of your logged-in account.
Licence and credits
MIT, see LICENSE. Started from skunkobi/mcp-leclerc-drive 0.3.0 (MIT), which mapped the site and found how to work through a real Chrome; this project continues it, with its history.
Not affiliated, no warranty
An independent, unofficial project. It is not made, endorsed or supported by E.Leclerc, DataDome, Google or Anthropic; the names are theirs, used here only to say what it works with. It drives a website that can change at any time, with no warranty of any kind: check your cart before you order.
Available Tools
9 toolsadd_manyAjouter plusieurs produitsA
Ajoute plusieurs produits au panier, l'un après l'autre (30 au plus), chacun en plus de ce qui est déjà au panier. Un échec n'arrête pas les suivants (sauf un blocage de Leclerc Drive). Retourne le résultat de chaque ajout et le panier final.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Produits à ajouter, dans l'ordre |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing partial-failure behavior ("Un échec n'arrête pas les suivants"), the one exception (a Leclerc Drive block), additive rather than replacing semantics, per-item ordering, and what is returned (each add's result plus the final cart). For a non-idempotent mutation tool this is exactly the operational context an agent needs.
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?
A single tight sentence carries the batch limit, insertion order, additive semantics, failure policy and return shape with no filler. The most decision-relevant facts (batch, cap, additive) are front-loaded.
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 failure handling, batching and return shape for a non-idempotent mutation with annotations present and no output schema, which is most of what an agent needs. The remaining gap is that it never mentions the store-selection prerequisite implied by the set_store/get_store siblings.
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 product_id, quantity, minItems/maxItems and the 30-item cap are already documented in the schema. The description only reinforces ordering and the cap, adding little parameter-level meaning beyond the schema, so the baseline 3 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?
States a precise verb+resource pair ("Ajoute plusieurs produits au panier") with the batch semantics and a hard cap (30 au plus) up front. That verb and the "plusieurs" scope distinguish it cleanly from the single-item sibling add_to_cart without having to open either schema.
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 additive semantics ("chacun en plus de ce qui est déjà au panier") and the batch cap imply when this tool is the right choice for bulk adds. However, it never explicitly says to use add_to_cart for a single item, nor does it state prerequisites such as selecting a store (set_store) before adding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_to_cartAjouter au panierA
Ajoute quantity unités d'un produit au panier, en plus de ce qui y est déjà. Pour fixer une quantité exacte, utilise update_quantity.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | No | Nombre d'unités à ajouter | |
| product_id | Yes | Identifiant produit (champ id de search_product) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false; the description reinforces the non-idempotent trait concretely by explaining that additions accumulate onto existing cart contents. It does not mention the per-call ceiling (max 99) or what happens when the cart limit is hit, which the schema only partially covers via the `maximum` constraint.
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, both load-bearing: the first defines the additive behavior, the second routes to the sibling. No restatement of the title or schema.
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 two-parameter mutation with annotations covering the safety profile, the definition covers the one genuinely ambiguous aspect (delta vs. absolute quantity). The only gap is the absence of an output schema combined with no mention of what is returned (updated cart, line item, confirmation), which would help an agent chain calls to get_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%, so the baseline is 3, but the description adds real meaning beyond the schema text: 'quantity' is a delta to add rather than a target value, which the schema's 'Nombre d'unités à ajouter' only implies. The reference to product_id being the `id` field from search_product is supplied by the schema rather than the 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?
States a specific verb and resource (adds N units of a product to the cart) and immediately clarifies the semantics: 'en plus de ce qui y est déjà' — additive, not setting. This distinguishes it from update_quantity by name, so an agent can choose without opening either schema.
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 names the alternative and the condition that selects it: 'Pour fixer une quantité exacte, utilise update_quantity.' The when-not case (wanting an exact quantity) is stated rather than inferred, which is exactly the routing an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_storesTrouver un driveARead-only
Recherche les drives E.Leclerc proches d'un code postal ou d'une ville, triés par distance. Retourne pour chacun : nom, identifiant (à passer à set_store), type de service (drive/relais/livraison) et distance.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Code postal ou ville, ex. '44000' ou 'Nantes' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds real value by disclosing the sort order (distance), the returned fields, and the service-type values (drive/relais/livraison). It omits result count, radius, or pagination behavior, which matters for a geo search.
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 compact sentence covering search criteria, sort order, and the return payload, with the primary purpose front-loaded and zero filler.
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 one-parameter read tool with no output schema, the description adequately covers inputs and enumerates the returned fields. The remaining gap is operational: no indication of how many stores come back or the search radius, which an agent might need to reason about coverage.
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 description coverage is 100% and the single parameter already documents 'Code postal ou ville' with examples. The description restates the same meaning ('code postal ou une ville') without adding format, validation, or fallback behavior, so the baseline of 3 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?
The description gives a specific verb and resource ('Recherche les drives E.Leclerc') plus the scope ('proches d'un code postal ou d'une ville, triés par distance'), which is enough to distinguish it from get_store or search_product. It even links forward to the set_store sibling by noting the returned identifier is meant to be passed to it.
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?
It clearly establishes the triggering context (locating nearby stores from a postal code or city) and implicitly positions itself as the lookup step before set_store. It stops short of naming alternatives or stating when not to use it, so no exclusions are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cartVoir le panierARead-only
Affiche le contenu complet du panier avec le total.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, and the description does not contradict them; it adds that the full cart contents plus total are returned. It does not cover edge cases such as an empty cart or whether the total includes taxes, so added value is modest.
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?
A single short sentence with no waste, and the resource and returned scope are front-loaded. Every clause earns its place.
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 zero-parameter read tool with no output schema, the description conveys what is returned (cart contents and total), which is the key missing structured information. It could go further on empty-cart or error behavior, but the core is 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?
The tool takes zero parameters, so the baseline is 4. Nothing more is needed for parameter semantics, and the description correctly implies no filtering is required.
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?
States a specific verb+resource ('Affiche le contenu complet du panier') plus the scope of what is returned ('avec le total'). The read-only verb implicitly distinguishes it from mutating siblings like add_to_cart, remove_from_cart and update_quantity, though no sibling is named explicitly.
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 when-to-use or when-not-to-use guidance. Usage is only implied by the read nature of the verb relative to the mutating siblings, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_storeMagasin actifARead-only
Affiche le magasin actuellement sélectionné (id, hôte).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds only the returned field names (id, hôte), with no note on what happens if no store is selected — a plausible edge case for a zero-param getter.
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?
A single short sentence that front-loads the action and immediately states what is returned. No filler, no redundancy with the title.
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 trivial zero-param read with readOnly annotations, the description covers purpose and return shape, which is most of what an agent needs. It stops short of describing behavior when no store is selected, the one gap that matters here given there is no output schema.
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 tool takes zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. Nothing in the description misleads about inputs.
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 gives a specific verb+resource pair ('Affiche le magasin actuellement sélectionné') and names the returned fields (id, hôte). The word 'actuellement sélectionné' implicitly scopes it away from siblings like find_stores or set_store, though those siblings are never named.
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?
Usage is only implied: the phrase 'actuellement sélectionné' suggests this reads current state rather than searching or changing it, letting an agent infer find_stores/set_store are the alternatives. There is no explicit when-to-use or when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_cartRetirer du panierADestructiveIdempotent
Retire complètement un produit du panier.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Identifiant produit (champ id de search_product) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, covering the safety and repeat-safety profile. The description adds 'complètement' (full removal vs. partial), but says nothing about behavior when the product is absent or effect on cart totals.
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 front-loaded sentence with no waste, but it is very terse even for a simple tool and could carry one more clause about outcome or edge case at negligible cost.
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 one-parameter tool with full schema coverage and annotations declaring destructiveness and idempotency, the definition is nearly complete. Only the not-in-cart behavior is unaddressed, which is minor here.
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% and product_id is documented, including its derivation from search_product's id field. The description adds no parameter detail beyond the schema, so baseline 3 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?
States a specific verb (retire/completely removes) and resource (un produit du panier). The word 'complètement' helps distinguish it from adding or quantity updates, though no sibling is named explicitly.
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 when/when-not guidance or named alternatives. 'Complètement' implicitly distinguishes it from update_quantity, leaving the agent to infer the choice between removal and quantity adjustment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productRechercher des produitsARead-only
Recherche des produits dans le catalogue Leclerc Drive du magasin sélectionné. Retourne libellé, prix, prix au kilo/litre, disponibilité et l'id à utiliser pour add_to_cart.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Termes de recherche, ex. 'lait demi-écrémé bio' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, so the description carries real weight and does add value by disclosing the exact return payload — including the price-per-unit field and the cart-ready id — which is critical with no output schema. What's missing is any mention of result limits, pagination, or empty-result behavior for a live external catalog.
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, zero filler. Scope constraint is front-loaded and the return-value clause directly sets up the next call rather than padding the description.
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 single-parameter read tool with no output schema, the description covers purpose, store dependency, and return fields — enough to call it correctly the first time. It stops short of explaining pagination or what happens when the selected store has no catalog loaded.
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% and the schema's own description already gives an example query ("lait demi-écrémé bio"), so the schema does the heavy lifting. The tool description adds nothing about the query parameter itself (no matching behavior, no accent/plural handling), so baseline 3 is correct.
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?
States a specific verb and resource ("Recherche des produits dans le catalogue Leclerc Drive") plus the scope constraint ("du magasin sélectionné") and even enumerates what comes back (libellé, prix, prix au kilo/litre, disponibilité, id). Sibling names confirm the distinction: all other tools are cart/store operations, so an agent can immediately tell this is the discovery step.
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 phrase "du magasin sélectionné" signals the prerequisite that a store must be chosen first (find_stores/set_store) and that results vary by store. It also links forward in the workflow by noting the returned id is what add_to_cart needs. No explicit when-not or alternative is named, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_storeChoisir le magasinAIdempotent
Sélectionne le magasin actif (et le mémorise pour les prochaines sessions). Utilise l'id renvoyé par find_stores. Les courses ne fonctionnent que sur le drive où la fenêtre Chrome du serveur est connectée.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Hôte du magasin, fdN-courses.leclercdrive.fr (optionnel, si le magasin n'a pas été trouvé via find_stores) | |
| store_id | Yes | Identifiant magasin, tel que find_stores l'affiche (ex. 027411) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as a non-readonly, idempotent, non-destructive operation. The description adds useful behavioral context beyond the annotations by explaining that the store choice is remembered for future sessions and depends on the server's Chrome window connection.
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 three tight sentences with no wasted language. The core action is front-loaded, followed by the required id source and the environment constraint.
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 two-parameter mutation tool with full schema coverage and annotations, the description covers the essential behavior, persistence, and environment dependency. It could say more about error handling or the optional host workflow, but those gaps are minor because the schema documents the host parameter.
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 the schema already documents both store_id and the optional host parameter thoroughly. The description reinforces that store_id should come from find_stores, but it does not add meaningfully more detail about parameters than the schema provides.
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 states a specific verb and resource: it selects the active store and persists that choice for future sessions. It also ties the tool to find_stores, which helps distinguish it from discovery tools like find_stores and get_store.
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?
It clearly directs the agent to use the id returned by find_stores, establishing the intended workflow. It also adds the important constraint that shopping only works on the drive where the server's Chrome window is connected, though it does not explicitly state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_quantityFixer une quantitéADestructiveIdempotent
Fixe la quantité exacte d'un produit dans le panier (0 le retire).
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | Yes | Nouvelle quantité (0 pour retirer) | |
| product_id | Yes | Identifiant produit (champ id de search_product) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and idempotentHint=true, but the description adds the crucial detail that a quantity of 0 deletes the line from the cart — the concrete destructive outcome the hint only gestures at. It does not cover permissions or behavior when the product is absent from the cart, which keeps it short of a 5.
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?
A single sentence with the core action front-loaded and the edge case in parentheses. Nothing is wasted and nothing essential is buried.
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 two-parameter idempotent cart mutation with full annotation coverage and no output schema, the definition supplies everything needed to call it correctly. Only the case of updating a product that is not in the cart is left unstated.
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% and both parameters carry their own descriptions, including the 0-means-remove semantics, so the description adds no meaning beyond the schema. The baseline of 3 applies when the schema does the heavy lifting.
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 names a specific verb and resource ('Fixe la quantité exacte d'un produit dans le panier') and clarifies the special case that a value of 0 removes the item. This sets it apart from add_to_cart and remove_from_cart in practice, though it never names those siblings explicitly.
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 parenthetical '(0 le retire)' implies when this tool substitutes for remove_from_cart, but there is no explicit guidance on when to prefer this over add_to_cart or remove_from_cart. The agent must infer the routing from the verb 'Fixe' alone.
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.
9 tool updates
v0.4.0- First observed
add_many - First observed
add_to_cart - First observed
find_stores - First observed
get_cart - First observed
get_store - First observed
remove_from_cart - First observed
search_product - First observed
set_store - First observed
update_quantity
TDQS
Scored across 9 tools
Most tools target clearly distinct actions: search_product vs find_stores, and get_cart vs get_store are unambiguous. The main overlap is remove_from_cart vs update_quantity(0), which both remove an item, though descriptions clarify that update_quantity sets an exact quantity (0 removing). add_to_cart vs add_many are well differentiated as single vs bulk add.
All tools use snake_case verb_noun form (search_product, add_to_cart, remove_from_cart, update_quantity, get_cart, find_stores, set_store, get_store) with a predictable get/set/find pattern for stores. 'add_many' is a minor deviation since it lacks an explicit noun, but the convention is otherwise consistent.
Nine tools is well-scoped: three for store selection (find/set/get), one for catalog search, and five for cart management. Every tool earns its place with no filler.
The cart lifecycle (add, bulk add, remove, update, view) and store selection are fully covered, but there is no checkout/order-placement operation and no category browsing or product-detail tool. An agent can shop but cannot complete the purchase, which is a notable gap for a grocery-drive workflow.
Maintenance
Related MCP Connectors
Give AI agents a real cloud Chrome: open sessions, navigate, read pages, click, type and screenshot.
Turn any shopping list into a ready-to-checkout grocery cart across 26 European supermarkets.
Search live store shelves, verify delivery windows, and run instant AI agent checkouts.
Run your online shop from Claude: orders, prices, sales, catalogue and design, confirmed by you.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables Claude to search products, build a shopping cart on Selver.ee, and open it in the browser for checkout.422-
- 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
- AlicenseBqualityBmaintenanceEnables Claude to automate grocery shopping on Blinkit, including product search, cart management, location setup, and payment via UPI.1554MIT
- AlicenseAqualityBmaintenanceEnables product search and basket management for Intermarché Drive through a visible Chromium browser, using the browser session to handle anti-bot measures. Provides tools to search products, view and modify the basket, and set substitutions, while checkout and payment remain on the website.371MIT