rami-levy-mcp
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., "@rami-levy-mcpsearch for cottage cheese and add the cheapest to my cart"
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.
rami-levy-mcp
An MCP server that lets an LLM agent shop at Rami Levy (an Israeli supermarket chain): search products, manage a cart, and reorder from purchase history — talking to Rami Levy's real API directly.
The one thing this package does NOT solve
Rami Levy's site is behind Cloudflare, which blocks requests that don't look
like they're coming from a real Israeli browser. This package makes the
request; getting that request to actually reach Rami Levy's origin without
being challenged is your infrastructure's job — a residential/mobile
proxy, a VPN, a box that's actually in Israel, whatever gets you there. If
rami_levy_check_status reports blocked_by_cloudflare, see the error table
below: recapture first, suspect your egress only if a fresh capture still fails.
Related MCP server: Shufersal MCP Server
Requirements
Node >= 22.13. The cart store uses Node's built-in node:sqlite — there is
no native addon to compile. Build with:
npm ci && npm run buildWhat you need to configure
Three required, three optional:
Env var | What it is |
| The |
| A separate JWT, sent as the |
| Must match whatever browser the above were captured from |
| The full cookie string. Measured live (2026-09-18) from an Israeli residential IP: neither the orders API ( |
| Store id (default |
| Where the cart's SQLite file lives (default |
Capturing the bundle: log into rami-levy.co.il in a real browser, go to
/he/dashboard/orders, open DevTools → Network, find the request to
www-api.rami-levy.co.il/api/v3/site/orders, right-click it → Copy → Copy as
cURL, and pull Authorization, ecomtoken, and User-Agent out of the
copied headers. That single request carries everything needed — no separate
capture of the catalog search is required. Only add RAMI_LEVY_COOKIE if you
later see blocked_by_cloudflare and need to supply cf_clearance.
These expire. An expired bearer/ecom session shows up as auth_expired.
If you do supply a cookie with cf_clearance, that's a short-lived anti-bot
cookie (hours to a few days) and an expired one most likely shows up as
blocked_by_cloudflare (a challenge page). Either way, repeat the capture
above first.
The 7 tools
rami_levy_search_products(query, limit?)rami_levy_add_item(productId, name, price, qty?)rami_levy_view_cart()rami_levy_remove_item(productId)rami_levy_clear_cart()rami_levy_reorder_from_history(numOrders?, minOccurrences?)— adds onto whatever is already in the cart, it does not replace it. A newly reordered product is priced at the last price paid — the price from the most recent order line that carried it — which may differ from today's price.view_cart'stotalis therefore only an estimate until the cart is synced;serverTotal(returned by every cart-mutating tool) is the authoritative number.rami_levy_check_status()— probes both the catalog search and page 1 of the order history (which needs the logged-in session); returns the first failure, else{ ok: true, cartSize }.
Every cart-mutating tool (add_item, remove_item, clear_cart,
reorder_from_history) syncs the whole cart to the real account and returns
cartTotal (local estimate), itemCount, and serverTotal (Rami Levy's own
total from the sync response, null if it gave none). If the sync fails at
the transport level (auth_expired, blocked_by_cloudflare,
network_error), the local cart is rolled back: ok: false means nothing
changed, so retrying is safe.
Errors
Every tool responds with { ok: false, reason, ... } instead of throwing.
Reasons and what to do about each:
Reason | When | What to do |
| A JSON response came back 401/403 | Re-capture the token bundle above |
| The response wasn't JSON, at any HTTP status | Recapture the bundle first ( |
| Fetch failed, the body was invalid JSON, the response shape was unexpected, or search ignored the query | Check connectivity; if it persists, the API may have changed (see below) |
| The cart sync succeeded but the server dropped some products ( | They were removed from the local cart too; search for alternatives |
|
| Check |
|
| Pass |
| An unexpected exception was caught at the tool boundary | Inspect the |
Verified against the live API
Search wire format, order response nesting, and the cart sync response were
all verified against the real API on 2026-09-18 with fresh logged-in
captures from an Israeli IP, and match what the client parses. One thing to
know about the cart response: Rami Levy adds its own delivery-fee line to
items server-side (e.g. {id, name: "מחיר משלוח", price, quantity}); this
tool ignores it (it's never matched to a local cart product), and the
top-level price — surfaced as serverTotal — excludes it, so serverTotal
is the product total only, not what checkout will actually charge.
Manual smoke test (not part of automated tests — needs a real, live bundle)
RAMI_LEVY_COOKIE is optional (see above) — leave it unset and the Cookie
header below is just empty, which the real API accepts fine.
curl -s -X POST "https://www.rami-levy.co.il/api/catalog" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $RAMI_LEVY_BEARER_TOKEN" \
-H "ecomtoken: $RAMI_LEVY_ECOM_TOKEN" \
-H "Cookie: $RAMI_LEVY_COOKIE" \
-H "User-Agent: $RAMI_LEVY_USER_AGENT" \
-d '{"q":"milk","store":"412"}' | head -c 600It works only if the response echoes "q":"milk" (not "q":null) and
contains product data. A 200 with "q":null means the query was ignored
(the wire format is wrong). An HTML body, at any status, is a Cloudflare
challenge: recapture the bundle and retry before blaming your egress.
Installing into NanoClaw
This ships as an Agent Plugins 1.0.0 plugin
(plugin.json + mcp.json) — copy this directory into a group's
plugins/rami-levy/, fill in the real values for the placeholder env vars
in that group's stored MCP server config, and restart the group.
Available Tools
7 toolsrami_levy_add_itemA
Add a product to the shared cart. productId, name, and price all come from a prior rami_levy_search_products result — never guessed, and never re-fetched (there is no "get one product" endpoint). If this product is already in the cart, qty is ADDED to what's there, not overwritten. Syncs the whole cart to the real Rami Levy account immediately. Returns cartTotal (local estimate) and serverTotal (Rami Levy's own total — authoritative). ok:false with a transport reason means nothing changed. reason items_rejected means the server refused the listed products; they have been removed from the cart too, so tell the user and pick alternatives.
| Name | Required | Description | Default |
|---|---|---|---|
| qty | No | ||
| name | Yes | ||
| price | Yes | ||
| productId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the behavioral burden. It discloses additive qty semantics, immediate sync to the real Rami Levy account, the distinction between local cartTotal and authoritative serverTotal, and the exact meaning of ok:false, transport failure, and items_rejected. No contradiction exists.
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 dense but every sentence earns its place: purpose, input sourcing rule, qty semantics, sync behavior, return values, and error handling. The most important constraint is front-loaded immediately after the purpose statement.
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 mutation tool with no annotations and no output schema, this is unusually complete. It explains side effects (cart sync, product removal on rejection), return values (cartTotal, serverTotal), and failure modes, so an agent has enough information to invoke it correctly and handle outcomes.
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?
Despite 0% schema description coverage, the description compensates richly: productId, name, and price are tied to a prior search result, and qty is defined as additive rather than overwriting. This gives the agent more semantic meaning than the raw schema alone.
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 opens with a specific verb and resource: 'Add a product to the shared cart.' It also distinguishes itself from the search flow by stating inputs must come from a prior rami_levy_search_products result and that no 'get one product' endpoint exists, so an agent can tell it apart from sibling tools.
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 gives clear usage context: productId, name, and price must come from a prior search result and must never be guessed or re-fetched. It does not explicitly compare itself to alternatives like remove_item or reorder_from_history, but for an add-item operation this is strong enough guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rami_levy_check_statusA
Check whether the Rami Levy connection is working: probes the catalog search and the (session-authenticated) order history, returning the first failure if either fails, else the current cart size. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers: it explicitly states the operation is read-only, reveals that two subsystems are probed, acknowledges the order history requires a session, and specifies the failure/fallback return behavior. This is unusually transparent for a tool definition.
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, well-structured sentence front-loads the purpose and then packs in the probe targets, return semantics, and read-only guarantee. Every clause earns its place with no redundant wording.
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 diagnostic tool, the description is complete: it states what is checked, what the possible outcomes are, and the read-only nature. Without an output schema, the description still conveys the return shape well enough for an agent to invoke and interpret the tool.
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 has zero parameters and the schema covers 100% of them, so the description need not add parameter detail. The baseline of 4 applies, and the description appropriately focuses on behavior rather than nonexistent 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 names a specific verb ('Check whether') and a clear resource (the Rami Levy connection), and it details exactly what is probed: catalog search and session-authenticated order history. This distinguishes it from sibling tools like view_cart or add_item, which perform concrete shopping operations.
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 intended use case is clear: verify that the Rami Levy connection is working. It does not explicitly list alternative tools or exclusion conditions, but the health-check framing makes it obvious when this tool is appropriate versus the sibling operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rami_levy_clear_cartA
Empty the cart completely, both locally and on the real Rami Levy account. Returns cartTotal (local estimate) and serverTotal (Rami Levy's own total — authoritative). ok:false with a transport reason means nothing changed. reason items_rejected means the server refused the listed products; they have been removed from the cart too, so tell the user and pick alternatives.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral traits beyond what annotations provide (no annotations exist). It explains the dual local/server effect, the meaning of ok:false with a transport reason ('nothing changed'), and the items_rejected case where the server refused products and they are removed locally. This is rich, actionable behavioral context.
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?
Three sentences, each carrying distinct information: the action and scope, the return values and their meaning, and the failure modes with guidance. No filler, no repetition of the name 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 zero-parameter tool with no output schema, the description is complete. It explains the action, the return values, the failure modes, and the recommended follow-up action. An agent can invoke this tool correctly and interpret its result without additional information.
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 has zero parameters, so the schema provides no parameter semantics. The description doesn't need to explain parameters, but it does explain the return values (cartTotal, serverTotal, ok, reason), which is the closest analog. Since there are no parameters, the description fully covers what an agent needs to know to invoke it.
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 ('Empty'), a specific resource ('the cart'), and the scope ('completely, both locally and on the real Rami Levy account'). It clearly distinguishes this from sibling tools like rami_levy_remove_item (which removes a single item) and rami_levy_view_cart (which views).
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 clearly implies when to use this tool: when the user wants to clear the entire cart. It doesn't explicitly name alternatives or exclusions, but the sibling list makes the distinction obvious. It also provides guidance on how to interpret the result and what to do in the items_rejected case ('tell the user and pick alternatives').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rami_levy_remove_itemA
Remove one product from the cart by productId, then re-syncs the remaining cart to the real account. Returns cartTotal (local estimate) and serverTotal (Rami Levy's own total — authoritative). ok:false with a transport reason means nothing changed. reason items_rejected means the server refused the listed products; they have been removed from the cart too, so tell the user and pick alternatives.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure scrub and does so thoroughly. It discloses a side-effect beyond the obvious removal: 're-syncs the remaining cart to the real account'. It also explains return semantics (cartTotal vs serverTotal), the meaning of ok:false with a transport reason, and the special items_rejected case including follow-up guidance to 'tell the user and pick alternatives'. This is rich, practical behavior context.
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 sentences with no filler. It front-loads the primary action, then explains return valuesholistically, and finally addresses failure semantics. Every sentence adds meaningful, non-redundant information, making the description dense and structured for an agent to quickly 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 single-parameter tool with no annotations or output schema, the description is notably complete: it covers the action, side effects, return fields, failure modes, and a recommended user interaction upon items_rejected. Minor gaps remain, such as how to locate a valid productId or what happens if the product is not already in the cart, but these are secondary to the tool's core behavior and are partially implied by the description.
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 input schema only defines productId as a required string with minLength 1ley, and schema description coverage is 0%. The description adds some meaning by identifying productId as the identifier of the product to remove, but it does not elaborate further on what format or where the productId comes from. Given the low schema coverage, the description partially compensates but could provide more detail about how to obtain a valid productId.
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: remove one product from the cart by productId ('Remove one product from the cart'). It also clarifies the action's scope ('one product'), which distinguishes it from sibling tools like clear_cart and add_item. The follow-up re-sync behavior further defines the tool's responsibility.
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 clearly implies when to use this tool – when a single product must be removed from the cart – but it does not explicitly provide exclusion conditions or point to alternatives. It also does not name sibling tools or explain when another tool (e.g., clear_cart) would be more appropriate. Usage is inferred rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rami_levy_reorder_from_historyA
Look at the last numOrders (default 10, max 50) real orders, find items that appear in at least minOccurrences (default 3) of them, and add each at its median past quantity. ADDS onto whatever is already in the cart — it does not replace it. Returns cartTotal (local estimate) and serverTotal (Rami Levy's own total — authoritative). ok:false with a transport reason means nothing changed. reason items_rejected means the server refused the listed products; they have been removed from the cart too, so tell the user and pick alternatives.
| Name | Required | Description | Default |
|---|---|---|---|
| numOrders | No | ||
| minOccurrences | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries behavioral disclosure. It explicitly states that items are added to the cart without replacement, explains the meaning of cartTotal vs serverTotal, and details error semantics (transport vs items_rejected, including that rejected items are removed). This is excellent transparency.
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 dense but every sentence earns its place: the algorithm, the non-replacing behavior, the output semantics, and the error handling. No redundancy or filler, with the core action 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?
For a tool with no output schema or annotations, the description covers the main aspects: input parameters, side effects, return values, and failure modes. It could mention duplicate handling or interaction with existing cart items in more detail, but it is otherwise quite 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?
The schema has 0% description coverage, but the description compensates fully by explaining both parameters: numOrders controls the number of past orders examined (default 10, max 50) and minOccurrences sets the frequency threshold (default 3). This adds essential meaning absent from 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 defines the tool's operation: analyzing past orders, finding items meeting a frequency threshold, and adding them to the cart at median quantity. It is easily distinguishable from siblings like add_item (single item) and view_cart (inspection), making its purpose 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 implicitly conveys when to use this tool: when a user wants to reorder frequent items from order history. It does not explicitly name alternatives or state when not to use it, but the context is clear enough that an agent can select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rami_levy_search_productsA
Search Rami Levy's real catalog. Returns productId, name, price for each hit. Call this before rami_levy_add_item — a productId is never invented.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns productId, name, and price, and that it accesses a 'real catalog' (implying authoritative data). However, it doesn't explicitly state that it's read-only or has no side effects, though this is implied by the search nature. It adds useful context without contradicting anything.
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 compact and efficiently organized. It opens with the core action, then lists the return fields, and closes with a crucial usage note. Every sentence adds value without redundancy.
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 search tool with no output schema, the description provides essential information: what is returned (productId, name, price) and when to use it (before add_item). The missing detail of the 'limit' parameter is a minor gap, but since it's in the schema and optional, it doesn't compromise the overall completeness. The description is sufficient for an agent to invoke it correctly.
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 0%, and the description does not explain the 'limit' parameter at all. The 'query' parameter is obvious from the tool name and description ('Search'), but the description fails to mention that 'limit' constrains the number of results, its range, or its optionality. The description does not compensate for the lack of schema descriptions.
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's purpose: it searches Rami Levy's real catalog and returns productId, name, and price for each hit. It distinguishes itself from siblings like rami_levy_add_item by explicitly noting that a productId is never invented, making it clear this is the source for valid product IDs.
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 provides explicit usage guidance: 'Call this before rami_levy_add_item'. This tells the agent when to use this tool, and the phrase 'a productId is never invented' reinforces that this is the only way to obtain a valid productId for adding items. This is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rami_levy_view_cartA
Show everything currently in the cart, with the running total and the checkout URL. Reads local state only — no network call.
| 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 behavioral burden and does so well: it explicitly states there is no network call and that it reads local state only, signaling a read-only, side-effect-free operation. It does not discuss edge cases like an empty cart, but for a local view operation the core behavior is disclosed.
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, front-loaded sentence covers action, output details, and the key local/network behavior. No filler or repetition; 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, no-output-schema view operation, the description is sufficient: it says what is shown (cart items, total, checkout URL) and how it behaves (local, no network). An agent can invoke it correctly without additional context.
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 has zero parameters and the schema confirms this, so the baseline is 4. The description needs to explain no parameter semantics, and it doesn't introduce any confusing parameter expectations.
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 opens with a specific verb and object ('Show everything currently in the cart') and adds the exact outputs (running total, checkout URL). This clearly distinguishes it from sibling mutation/search tools like add_item or search_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?
'Reads local state only — no network call' gives clear context for when this lightweight read is appropriate. It doesn't explicitly name exclusions or alternatives, but the sibling names and the phrase 'currently in the cart' make the intended use obvious.
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.
7 tool updates
v0.1.0- First observed
rami_levy_add_item - First observed
rami_levy_check_status - First observed
rami_levy_clear_cart - First observed
rami_levy_remove_item - First observed
rami_levy_reorder_from_history - First observed
rami_levy_search_products - First observed
rami_levy_view_cart
TDQS
Scored across 7 tools
Each tool maps to a clear, distinct action: searching, viewing, adding, removing, clearing, reordering, and status checking. Even where add_item and reorder_from_history both add to the cart, their purposes are obviously different (single product vs. bulk from order history). check_status overlaps slightly with view_cart by reporting cart size, but its primary role is connection health, which is separate.
All tool names share the rami_levy_ prefix and follow the same verb_noun snake_case pattern: view_cart, search_products, add_item, remove_item, clear_cart, reorder_from_history, check_status. This makes the tool surface highly predictable and easy for an agent to navigate.
Seven tools is a well-scoped size for this server's purpose: search a catalog, manage a cart, reorder from history, and verify connectivity. Each tool earns its place with no obvious redundancy or bloat.
Core cart lifecycle is covered: search products, view cart, add, remove, clear, reorder, and check status. The main gap is that there is no way to adjust a product's quantity directly (only add-to-existing or remove the whole line), and order history is used internally by reorder_from_history but not exposed for viewing.
Maintenance
Related MCP Connectors
Agentic commerce gateway: discovery, search, checkout across Shopify/Woo/Odoo/PrestaShop.
Product search for AI agents: Amazon + Shopify, cart-to-checkout buy path. Pay-per-call, no API key.
AI-powered commerce API for luxury skincare shopping. Enables AI agents to search products, browse collections, manage shopping carts, and generate checkout URLs for the Regenique Elegance Shopify store.
Directory of APIs, merchants, and tools AI agents can actually use.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables interaction with the Rami Levy Online Grocery Store API, allowing users to perform product searches, add or remove items from their cart, and prepare for checkout, all while integrating with MCP-enabled LLMs.11MIT
- FlicenseNot gradedqualityFmaintenanceProvides automated shopping capabilities for the Shufersal website using Puppeteer, enabling LLMs to search products, create shopping lists, and add items to shopping carts.19-
- FlicenseNot gradedqualityDmaintenanceEnables searching for groceries and automatically adding items to cart through various grocery vendor APIs like Rami Levy and Keshet.3-
- AlicenseAqualityDmaintenanceEnables AI agents to manage H-E-B grocery shopping tasks including product search, cart management, and coupon clipping through natural language.2558MIT