protogrid

Search / uk.co.mygrocerypal/grocery-prices

MyGroceryPal

R0· no sign-in

UK supermarket prices across 13 stores: price items and lists, see history, save lists, set alerts.

v1.3.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality82new
Trust82of 100
Uptime, 30 days96%
Latency p50618 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "grocery-prices": {
      "type": "http",
      "url": "https://mygrocerypal.co.uk/api/mcp"
    }
  }
}
claude mcp add --transport http grocery-prices https://mygrocerypal.co.uk/api/mcp
[mcp_servers.grocery-prices]
url = "https://mygrocerypal.co.uk/api/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "grocery-prices": {
      "type": "remote",
      "url": "https://mygrocerypal.co.uk/api/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "grocery-prices": {
      "type": "http",
      "url": "https://mygrocerypal.co.uk/api/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=grocery-prices&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbXlncm9jZXJ5cGFsLmNvLnVrL2FwaS9tY3AifQ%3D%3D"
}
{
  "servers": {
    "grocery-prices": {
      "type": "http",
      "url": "https://mygrocerypal.co.uk/api/mcp"
    }
  }
}
{
  "mcpServers": {
    "grocery-prices": {
      "httpUrl": "https://mygrocerypal.co.uk/api/mcp"
    }
  }
}
extensions:
  "grocery-prices":
    enabled: true
    name: "grocery-prices"
    type: streamable_http
    uri: "https://mygrocerypal.co.uk/api/mcp"
    timeout: 300

Quality 82 / 100new

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene88 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations11 of 11 tools declare readOnlyHint or destructiveHint
  • warn
    tools.directory_hints2 of 11 tools declare all four hints; missing: find_cheaper_swaps (idempotentHint); search_grocery_prices (idempotentHint); check_price_history (idempotentHint); …
  • pass
    tools.token_costabout 3,477 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
  • pass
    tools.hidden_textno hidden text in tool names, descriptions, schemas or annotations
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pull, stability.new_linkstool history recorded for 6 of the 7 days needed
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

11 tools, about 3,477 tokens to load them all · tool set 5c7f554d5f12 · tools last changed 2026-11-13 · checked 2026-11-14 07:03 UTC

Tool changes

  • compare_basketchangeddescription, output schema
    before

    Total a basket of up to 30 products at each UK supermarket, name the cheapest single store, and suggest a split across two or three stores when it is cheaper or gets more of the list. Needs the user's MyGroceryPal account.

    after · 51% of words in common

    Total a basket of up to 30 products at each UK supermarket, name the cheapest single store, and suggest a split across two or three stores when it is cheaper or gets more of the list. A store that does not sell a product is priced with its own like-for-like equivalent where one clearly matches (another supermarket's own-brand cottage cheese for ASDA's), listed in its swaps. Each store says whether it delivers (false means in store only) and any online minimum order its total misses. Needs the user's MyGroceryPal account.

  • find_cheaper_swapschangedoutput schema
  • price_shopping_listchangeddescription, output schema
    before

    Price a whole shopping list or recipe in one call: up to 40 lines in plain words. Matches each line to a product, then totals the list at one named store, or finds the cheapest single store and any cheaper split across two or three stores. Each priced line has a storeUrl that opens the product at that store: give the user these links when they want to buy. Store totals cover only the lines that store priced: each says itemsPriced, missingLines and complete, so never present a partial total as the full shop. Lines in unmatched are in no total; close_match_only lines carry candidates to offer the user. To hand the user a page with the list priced at every store, call create_list_page. Afterwards, offer to save the list to their MyGroceryPal account with save_shopping_list.

    after · 80% of words in common

    Price a whole shopping list or recipe in one call: up to 40 lines in plain words. Matches each line at each store separately, then totals the list at one named store, or finds the cheapest single store and any cheaper split across two or three stores. Each priced line has a storeUrl that opens the product at that store: give the user these links when they want to buy. Each line's label says how the product compares with the line: same_product, equivalent, or different (a closest match the user should check). Store totals cover only the lines that store prices like-for-like: each says itemsPriced, missingLines, closeMatchLines (closest matches, in no total) and complete, so never present a partial total as the full shop; sharedLines compares the leading stores on the lines they all price. Stores in pausedStores are in no total. Lines in unmatched are in no total; close_match_only lines carry candidates to offer the user. To hand the user a page with the list priced at every store, call create_list_page. Afterwards, offer to save the list to their MyGroceryPal account with save_shopping_list.

  • check_price_historychangeddescription, input schema, output schema
    before

    Say whether a product's cheapest current price is a good deal: its 60-day low and high, its typical price, and a verdict. Give a date to also get each store's price that day, promotions and loyalty prices included, for checking an old receipt; add paidPence to compare what the user paid. History starts in late July 2025; a store with no reading that day shows the nearest one within 3 days, with its date. Dates more than 90 days back need the user's MyGroceryPal account.

    after · 86% of words in common

    Say whether each product's cheapest current price is a good deal: its 60-day low and high, its typical price, and a verdict. Takes up to 40 productIds in one call, so check a whole basket at once. For one product, give a date to also get each store's price that day, promotions and loyalty prices included, for checking an old receipt; add paidPence to compare what the user paid. History starts in late July 2025; a store with no reading that day shows the nearest one within 3 days, with its date. Dates more than 90 days back need the user's MyGroceryPal account.

  • search_grocery_priceschangedoutput schema
  • compare_basketchangedoutput schema
  • find_cheaper_swapsadded

    For a shopping list or basket of up to 40 items and ONE store, find the cheapest acceptable swap for each item at that same store: own brand or value ranges, other brands, and other pack sizes compared per unit. Every swap is labelled same_product, equivalent or different (cheaper but not like-for-like): offer different ones to the user to choose, never as a given. Use this when the user wants to stay at their store but spend less, instead of comparing items by hand.

  • price_shopping_listchangedoutput schema
  • remove_saved_itemsadded

    Remove products from the user's MyGroceryPal shopping list, or delete them from their saved items altogether. Takes productIds from list_saved_items. Confirm with the user before removing. Safe to repeat: products already gone are reported in notFoundProductIds and nothing else changes. Needs the user's MyGroceryPal account.

  • list_saved_itemsadded

    Read the user's MyGroceryPal saved items and shopping list: each product's productId, quantity, whether it is on the shopping list, and its price at their chosen or cheapest store. Up to 100 products, shopping list first, newest first. Use the productIds with remove_saved_items or price tools. Needs the user's MyGroceryPal account.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 82 / 100

no-repository
provenance55
liveness98
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-96% +updated-2d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mygrocerypal.co.uk/api/mcp streamable-httpnoneyes96%618 ms2025-11-252026-11-14

Tools (11)

check_price_historyread-onlySay whether each product's cheapest current price is a good deal: its 60-day low and high, its typical price, and a verdict. Takes up to 40 productIds in one call, so check a whole basket at once. For one product, give a date to also get each store's price that day, promotions and loyalty prices included, for checking an old receipt; add paidPence to compare what the user paid. History starts in late July 2025; a store with no reading that day shows the nearest one within 3 days, with its date. Dates more than 90 days back need the user's MyGroceryPal account.
compare_basketread-onlyTotal a basket of up to 30 products at each UK supermarket, name the cheapest single store, and suggest a split across two or three stores when it is cheaper or gets more of the list. A store that does not sell a product is priced with its own like-for-like equivalent where one clearly matches (another supermarket's own-brand cottage cheese for ASDA's), listed in its swaps. Each store says whether it delivers (false means in store only) and any online minimum order its total misses. Needs the user's MyGroceryPal account.
create_deal_alertWatch a brand or a keyword on the user's MyGroceryPal account, so they hear when a matching product goes on offer. Needs the user's MyGroceryPal account.
create_list_pageread-onlyMake a link to a MyGroceryPal page that prices a shopping list at every UK supermarket, with each store's total, links to buy at each store, and a button to save the list to a MyGroceryPal account. Needs no sign-in and stores nothing. Up to 40 lines; pin a productId on a line to keep the exact product the user chose. Give the user the url when they want to see the list, share it, or shop from it.
find_cheaper_swapsread-onlyFor a shopping list or basket of up to 40 items and ONE store, find the cheapest acceptable swap for each item at that same store: own brand or value ranges, other brands, and other pack sizes compared per unit. Every swap is labelled same_product, equivalent or different (cheaper but not like-for-like): offer different ones to the user to choose, never as a given. Use this when the user wants to stay at their store but spend less, instead of comparing items by hand.
get_nutritionread-onlyNutrition per 100g or 100ml (energy, fat, saturates, carbohydrates, sugars, fibre, protein, salt) and the Nutri-Score grade for one product, from Open Food Facts. Many products have none. Credit Open Food Facts when you use these numbers.
list_saved_itemsread-onlyRead the user's MyGroceryPal saved items and shopping list: each product's productId, quantity, whether it is on the shopping list, and its price at their chosen or cheapest store. Up to 100 products, shopping list first, newest first. Use the productIds with remove_saved_items or price tools. Needs the user's MyGroceryPal account.
price_shopping_listread-onlyPrice a whole shopping list or recipe in one call: up to 40 lines in plain words. Matches each line at each store separately, then totals the list at one named store, or finds the cheapest single store and any cheaper split across two or three stores. Each priced line has a storeUrl that opens the product at that store: give the user these links when they want to buy. Each line's label says how the product compares with the line: same_product, equivalent, or different (a closest match the user should check). Store totals cover only the lines that store prices like-for-like: each says itemsPriced, missingLines, closeMatchLines (closest matches, in no total) and complete, so never present a partial total as the full shop; sharedLines compares the leading stores on the lines they all price. Stores in pausedStores are in no total. Lines in unmatched are in no total; close_match_only lines carry candidates to offer the user. To hand the user a page with the list priced at every store, call create_list_page. Afterwards, offer to save the list to their MyGroceryPal account with save_shopping_list.
remove_saved_itemsdestructiveRemove products from the user's MyGroceryPal shopping list, or delete them from their saved items altogether. Takes productIds from list_saved_items. Confirm with the user before removing. Safe to repeat: products already gone are reported in notFoundProductIds and nothing else changes. Needs the user's MyGroceryPal account.
save_shopping_listAdd products to the user's MyGroceryPal shopping list, so they can open it in the app or on the web, and get deal alerts on saved products the way their MyGroceryPal notification settings say. Only adds: a product already on the list is left as it is. Needs the user's MyGroceryPal account.
search_grocery_pricesread-onlyFind grocery products and their current price at every UK supermarket MyGroceryPal tracks, cheapest store first, the same results shoppers see on mygrocerypal.co.uk. Narrow with brands, stores, ownBrandOnly, onOfferOnly and category; sort by unit_price to compare pack sizes, or biggest_saving for deals. Returns 5 products unless limit says otherwise, with totalHits and a nextCursor for the next page. A loyaltyCard price needs that card (Clubcard, Nectar and so on). Each price has a storeUrl that opens that store's product page: give the user these links, not ones you build, when they want to buy. For a list or a recipe, call price_shopping_list once instead.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "uk.co.mygrocerypal/grocery-prices",
  "icons": [
    {
      "src": "https://mygrocerypal.co.uk/web-icon-512.png",
      "sizes": [
        "512x512"
      ],
      "mimeType": "image/png"
    }
  ],
  "title": "MyGroceryPal",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mygrocerypal.co.uk/api/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.3.0",
  "websiteUrl": "https://mygrocerypal.co.uk/ai-assistants",
  "description": "UK supermarket prices across 13 stores: price items and lists, see history, save lists, set alerts."
}