eCommerce
supermcp.co.il
Compares Israeli online supermarkets by pricing entire shopping lists, delivery fees, and service terms, and can split orders across shops to minimize cost.
ENDPOINT 1
https://supermcp.co.il/mcp
MCP server metadata
- Name
- super-mcp
- Version
- 0007863b
Shopping list to be DELIVERED → call optimize_delivery exactly once with all items and the delivery address. Never price each line separately. Israeli online supermarket storefronts: catalogue, price and promotion data from the same regulated feeds as the shelf prices, plus each storefront's delivery terms. Online prices are NOT shelf prices — a chain's website runs its own price book, so quote what this server returns rather than a branch price. Call optimize_delivery with items[{query|gtin|product_id, pack_qty|amount+unit}] and address (free-text, e.g. 'מנדלסון 1, תל אביב') or city. EVERY item query must be in HEBREW, whatever language the shopper used: the catalogue is Hebrew and a Latin brand name ('Pampers', 'Coca Cola') matches nothing, so the line is silently dropped. Translate before you call (פמפרס, קוקה קולה). If status is needs_confirmation, answer every required question and call again with only {continuation, answers}. ASK WHERE THE SHOPPER LIVES BEFORE PRICING, whenever you can get it in the same breath. A city is enough, and it usually decides the answer rather than sharpening it: most towns here are served by a single chain. It is also the cheap path, a handful of storefronts against every one in the country. Cannot ask? Call optimize_delivery once with the items and no destination. Status needs_destination prices the list at every storefront in the country but tests none of them against a service area, so quote it as a range, never name a cheapest and never offer a link to order. Ask for the shopper's city, then call again with only {continuation, city}. THE HEADLINE NUMBER IS deliveredTotal, not the item subtotal: a ₪29 delivery fee outweighs most price differences between chains, so a storefront with dearer items can still win. Read each plan's itemsSubtotal, deliveryFee, deliveredTotal and deliveryTerms.confidence. Compare storefronts on deliveredComparableTotal, never on deliveredTotal: totalScope is priced_lines_only, so a storefront that stocks four of your twelve items reports a small deliveredTotal precisely because it cannot fill the basket. pricedLines out of requestedLines says how much of the list a plan actually covers, and imputedLines how many the comparable figure had to price at a market reference. Say so when coverage is partial. deliveryTerms.confidence=verified means we checked the retailer's own published terms on deliveryTerms.verifiedAt; reported means a cited secondary source. When it is unknown the fee is null and the ranking used assumedDeliveryFee, which is NOT a price and must not be repeated as one. When deliveryFeeIsFloor is true the fee is a published lower bound (a marketplace sets the real figure at checkout from the distance), so say 'from ₪X' and treat deliveredTotal as a minimum. meetsMinimum=false means the order CANNOT be placed as it stands: report amountToMinimum, the shekels of extra goods needed. Such a plan still appears in plans, after every orderable one, because a storefront held back only by its minimum is the shopper's call to make. Show it as an option that needs a top-up of that many shekels, never as one they can order now. cheapestDelivered ranks on a total that prices missing lines at a market reference, so it can win by not stocking things; bestSingleOrder is the most of the list obtainable in ONE order. When they differ, say so and let the shopper choose. Those three recommendation fields carry the totals only; look the storefront up in plans by serviceSlug for its priced lines. nextFeeBreak names a cheaper fee tier the shopper could reach: gap is the extra spend, saving is what it takes off the fee, and worthTopUp=true means spending it leaves them better off overall. Volunteer that unprompted. A priced line carrying cheaperAlternative can be met for less at the SAME storefront: it names the product, the packs needed, the new line total and the saving. Every one is cheaper per 100g/ml/piece as well as per line, so it is a real saving and not a smaller pack; quote the saving as it stands. Volunteer these when the shopper cares about money, present them as a choice, and never swap one in silently. splitOrder is the same list bought from two shops rather than one, with each leg's items, its own published fees and its own handoffUrl. reason=cheaper saves money after BOTH delivery fees; reason=more_of_the_list means no single shop stocks the whole list, costs more, and reports a negative saving. Volunteer it unprompted. null means one order is the right answer. split_order asks the same question on its own and can spread over three shops. A line that names no quantity is priced as ONE pack and reported in assumptions with reason=quantity_defaulted — pass the shopper's own words through and do not invent numbers. reason=pack_multiple_applied is the opposite end of the same question: the line counted PACKS and the chosen product holds several items each, so pack_qty=4 on a six-pack is 24 bottles. Read it back to the shopper before quoting the line, and re-send with amount+unit=יח if they were counting items. reason=unit_count_assumed is the mirror of it and the one to watch: the line counted ITEMS and nothing states how many the chosen product holds, so it was priced as that many of the listing. The message names the filed size. If that listing is a multipack or a per-kilogram shelf price, the line is a multiple of what was asked, so check it before quoting the total and re-send that line with a mass or volume amount to price it exactly. Storefronts that cannot serve this basket are in unavailableStores with a reason, not silently dropped. At the default detail only the actionable ones are listed: below_minimum_order, and price_feed_stale for a chain that delivers here but whose price feed has been silent over a week, which is left out of plans rather than quoted from a dead feed. The rest are counted in unavailableStoresOmitted. Conditional prices are flagged exactly as on the shelf: clubOnly needs the chain loyalty card, couponOnly needs a clipped coupon. Set preference=cheapest to take the lowest delivered figure outright; leave it balanced (default) to prefer a storefront whose terms we verified when the money is close. Set slot_type=pickup for click-and-collect, which is cheaper where offered but means the shopper travels. Use list_delivery_options to answer 'who delivers to me' without pricing a basket, and get_delivery_terms for one storefront's fee schedule, minimum and slots. Use search_products / get_promotions for single lines only. Given a city or address, search_products answers 'how much is X': each hit carries fromPrice, the lowest at any storefront delivering there across pricedAtStorefronts shops, and normalizedUnitPrice, the same money per 100g/ml/piece. Compare on normalizedUnitPrice, quote fromPrice as 'from ₪X' and never as a national price, and never add those figures up into a basket — they sit at different storefronts, each with its own delivery fee. If the shopper says a priced line is wrong, call suggest_similar_products with their words in Hebrew and the rejected product_id, then call optimize_delivery again with that product_id on the line. This is the SuperMCP server: Israeli online supermarket delivery and click-and-collect. protocol=delivery-optimize-v1; build=0007863b
Known tools 8
optimize_deliveryPrice a whole shopping list at every Israeli online supermarket that delivers to an address, and rank them on what the order actually costs: items + delivery fee + service fee.
Inferred read-onlylist_delivery_optionsWhich Israeli online supermarkets deliver to an address, with each one's delivery fee, minimum order, free-delivery threshold and whether it offers click-and-collect — without pricing a basket.
Inferred read-onlyget_delivery_termsThe full published terms for a single online storefront: every fee band over basket size, the minimum order, the service area, and where each figure came from.
Inferred read-onlysearch_productsSearch the canonical product catalog by free text (Hebrew or English), brand, category, or exact GTIN, and answer 'how much is X' for a SINGLE item.
Inferred read-onlyget_productFetch full detail for one canonical product by product_id (UUID) or GTIN barcode, including every per-chain listing (chain-specific item code, display name, and package size).
Inferred read-onlysuggest_similar_productsAfter optimize_delivery priced the wrong product, use this to show other things the shopper might have meant.
Inferred read-onlyCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.super-mcp]
url = "https://supermcp.co.il/mcp"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"super-mcp": {
"type": "http",
"url": "https://supermcp.co.il/mcp"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: super-mcp
Remote MCP URL: https://supermcp.co.il/mcp
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"super-mcp": {
"url": "https://supermcp.co.il/mcp"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"super-mcp": {
"type": "http",
"url": "https://supermcp.co.il/mcp"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "super-mcp",
"transport": "streamable-http",
"url": "https://supermcp.co.il/mcp"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Loading Trust v2 evidence…
Checking the associated registrable domain. The BuiltWith key remains server-side.
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.