Skip to content
Back to SuperMCP

Card snapshot

supermcp.web.app · 2026-08-16 00:16:11 UTC · 4c466d5c76a9f40b76a397a0fee38ef47737ed95a7453ab617c45759433c693d

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "name": "SuperMCP",
  "description": "Israeli online supermarket pricing for AI agents. Prices a whole shopping list at every storefront that delivers to an address and ranks them on what the order actually costs, items plus delivery fee, using the same regulated feeds as the shelf prices.",
  "supportedInterfaces": [
    {
      "url": "https://supermcp.web.app/mcp",
      "protocolBinding": "https://supermcp.web.app/bindings/mcp-streamable-http/v1",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "SuperMCP",
    "url": "https://supermcp.web.app"
  },
  "version": "836f5ef40dede8d9cbddcb604f1eb94729bce8b7",
  "documentationUrl": "https://supermcp.web.app/openapi.json",
  "iconUrl": "https://supermcp.web.app/icon-512.png",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "optimize_delivery",
      "name": "Price a shopping list for delivery",
      "description": "Price 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. Call this ONCE with the full list \u2014 never price lines separately. This is SuperMCP's shopping-list tool for online supermarket delivery. THE HEADLINE FIGURE IS deliveredTotal, not the item subtotal: a \u20aa35.90 delivery fee outweighs most price differences between chains. But RANK 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. Check pricedLines against requestedLines and say when the coverage is partial. Read deliveryTerms.confidence before quoting: 'verified' was read from the retailer's own binding terms, 'reported' from a cited secondary source, 'unknown' means no fee is established and the ranking used an assumption (assumedDeliveryFee) that must not be repeated as a price. deliveryFeeIsFloor=true means the fee is a published lower bound, so quote it as 'from \u20aaX' and treat deliveredTotal as a minimum. meetsMinimum=false means the order cannot be placed as it stands; report amountToMinimum, the top-up needed. Those plans are still listed, after the orderable ones, so present them as options that need topping up rather than hiding them. Rank on cheapestDelivered only if the shopper will happily order twice: it prices missing lines at a market reference. bestSingleOrder is the fullest basket obtainable in one order. Both, and bestVerifiedTerms, carry totals only: find the storefront in plans by serviceSlug for its priced lines. When nextFeeBreak.worthTopUp is true, spending a little more makes the order cheaper overall \u2014 say so. If the shopper says a priced line is wrong, call suggest_similar_products with their Hebrew words and the rejected product_id, then call this tool again with that product_id on the line. Storefronts that cannot serve this basket come back in unavailableStores with a reason. By default only the actionable ones are listed: below_minimum_order, and price_feed_stale for a chain that delivers here but has published no prices for over a fortnight, which is therefore not in plans at all and must not be presented as an option. A plan flagged priceFeedStale is a milder case, over a week old: still worth comparing, but quote it as what the shop last published on priceFeedAsOf. If no storefront inside the fortnight can take the order, the abandoned ones come back in plans rather than leaving the shopper with nothing, and notes says so. unavailableStoresOmitted counts the rest, all ruled out on the address alone. A plan may carry venues: branches of one marketplace chain that priced this basket identically, collapsed into one row. Any slug in it works with get_delivery_terms. By default only the recommended storefronts carry a `lines` breakdown; every other plan reports its totals and pricedLines with `lines: []`. That is not a gap \u2014 re-call with response_detail=standard only if you must compare the same item's price across chains.",
      "tags": [
        "groceries",
        "israel",
        "shopping-list",
        "delivery",
        "prices"
      ]
    },
    {
      "id": "list_delivery_options",
      "name": "List storefronts that deliver here",
      "description": "Which 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 \u2014 without pricing a basket. Use for 'who delivers to me?'. For 'what will my shopping cost delivered?', use optimize_delivery instead. Every entry carries deliveryTerms.confidence and verifiedAt; quote a fee only when it is verified or reported, and say the fee is unknown otherwise. Every entry also carries catalogSize (priced items we hold) and catalogVisibility. catalogVisibility 'partial_index' means WE cannot see the whole shop: that storefront's prices are read off a website that cannot be paged, so catalogSize is the part we indexed and says nothing about how much the retailer stocks. 'full_catalogue' means the count is the retailer's complete published price file. Never recommend a storefront on its delivery fee alone: one where we hold a few hundred items cannot fill a normal basket, so price the basket with optimize_delivery before naming a winner. An entry carrying notesRef instead of notes shares its terms with other storefronts: read the text from sharedNotes[notesRef]. Marketplace terms are written once per chain and held per venue, so they would otherwise repeat verbatim on every branch.",
      "tags": [
        "groceries",
        "israel",
        "delivery",
        "coverage"
      ]
    },
    {
      "id": "get_delivery_terms",
      "name": "Get one storefront's delivery terms",
      "description": "The 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. Use to explain a deliveryFee an optimize_delivery plan reported, or to answer 'what do I need to spend for free delivery?'. Take the slug from a plan's serviceSlug. catalogSize and catalogVisibility are reported here only when already known: this tool answers from published terms and never waits on the item count. A null in either means one of two things, and they are not interchangeable: we hold no priced store for this storefront, OR the count has not been taken yet. Call list_delivery_options for a count you can rely on being present; never read a null here as an empty shop.",
      "tags": [
        "groceries",
        "israel",
        "delivery",
        "fees"
      ]
    },
    {
      "id": "search_products",
      "name": "Search products",
      "description": "Search the canonical product catalog by free text (Hebrew or English), brand, category, or exact GTIN. Also matches chain listing names. Prefer optimize_delivery with query items for shopping lists \u2014 use this only to browse, not to price a list. After optimize_delivery priced the wrong product, call suggest_similar_products with the shopper's Hebrew words and the rejected product_id, then call optimize_delivery again with that product_id. Returns canonical products (not per-chain detail); call get_product for listings.",
      "tags": [
        "groceries",
        "israel",
        "catalogue",
        "search"
      ]
    },
    {
      "id": "get_product",
      "name": "Get product",
      "description": "Fetch 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). Use after search_products to confirm identity, or directly when the GTIN is already known. Each listing carries `orderable`: false means no delivery or pickup storefront prices it, so it cannot be bought through this API. A listing is catalogue identity, not availability: never present an `orderable: false` chain as somewhere the shopper can buy. When every listing is `orderable: false` the product is not purchasable right now, whatever its chains suggest.",
      "tags": [
        "groceries",
        "israel",
        "catalogue"
      ]
    },
    {
      "id": "suggest_similar_products",
      "name": "Suggest similar products",
      "description": "After optimize_delivery priced the wrong product, use this to show other things the shopper might have meant. Send their words in HEBREW (original line or the correction) and the rejected product_id so that SKU is dropped. Example: priced \u05e0\u05e7\u05e0\u05d9\u05e7\u05d9\u05d5\u05ea \u05e4\u05e8\u05d2\u05d9\u05d5\u05ea, shopper said thigh cuts \u2192 query='\u05e4\u05e8\u05d2\u05d9\u05d5\u05ea' or '\u05e9\u05d5\u05e7\u05d9\u05d9\u05dd', product_id=<the sausage>. Then call optimize_delivery again with the same list, that line pinned to the chosen product_id. Do not use this to hunt a cheaper nearby shelf price (that is a different question). Do not use this for a first-pass shopping list \u2014 call optimize_delivery once with every line.",
      "tags": [
        "groceries",
        "israel",
        "catalogue",
        "substitutions"
      ]
    },
    {
      "id": "get_promotions",
      "name": "Get promotions",
      "description": "List promotions (e.g. '2 for 30\u20aa', club-member price, second-unit discount), optionally filtered by store_id or product_id, and by active=true to only return promotions currently running. Use this to explain why an optimize_delivery line price is lower than list_price.",
      "tags": [
        "groceries",
        "israel",
        "promotions",
        "prices"
      ]
    }
  ]
}