# HuntPrice — Canadian Grocery Prices

> Compare grocery prices across 14 Canadian cities. Search items, compare baskets, weekly rankings.

- name: io.github.hbailla/huntprice
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 79/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.hbailla%2Fhuntprice
- tools: https://api.protogrid.dev/v1/servers/io.github.hbailla%2Fhuntprice/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "huntprice": {
      "type": "http",
      "url": "https://huntprice.ca/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 45
- drivers: +website +reachable +uptime-100% +updated-2d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (new)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: compare_grocery_basket (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_weekly_cheapest_store (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); search_groceries (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 711 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 1 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 4, about 711 tokens to load them all
- tool set hash: 6a6ed7f486532b113763632309db8a50
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.hbailla/huntprice.svg)](https://protogrid.dev/servers/io.github.hbailla/huntprice)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://huntprice.ca/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (4)

- `compare_grocery_basket`: Compare a complete shopping list of multiple items across major grocery chains in any of the 14 supported Canadian cities to find the cheapest store overall.
    
    Args:
        items: List of item names to compare, e.g. ["milk", "eggs", "bread", "bananas", "butter"]
        city: Canadian city to compare in (e.g. 'Ottawa, ON', 'Toronto, ON', 'Vancouver, BC', 'Montreal, QC', 'Calgary, AB', 'Edmonton, AB', 'Winnipeg, MB', 'Quebec City, QC', 'Halifax, NS', 'Saskatoon, SK', 'Gatineau, QC', 'Moncton, NB', "St. John's, NL", 'Charlottetown, PE')
        online_shopping: If True, includes delivery fees instead of in-store shopping
        ranking_mode: 'value' (cheapest per 100g unit price) or 'price' (cheapest package price)
        
    Returns:
        Cheapest store name, total cost, estimated savings, and breakdown per store with matched and missing items.
    
- `get_weekly_cheapest_store`: Get official weekly grocery store price rankings and winner for a city based on the standard basket.
    Updated every week with fresh prices across supermarkets in that city.
- `list_supported_stores`: List all supermarket chains supported by HuntPrice for a given city, with store coverage and sample locations.
    Supports 14 major Canadian metropolitan areas: Ottawa, Toronto, Vancouver, Montreal, Calgary, Edmonton, Winnipeg, Quebec City, Halifax, Saskatoon, Gatineau, Moncton, St. John's, and Charlottetown.
- `search_groceries`: Search live grocery prices across Canadian stores by product name or keyword (e.g. 'eggs', '2% milk', 'butter', 'chicken breast').
    Returns product names, current prices, price per 100g/unit, package size, and store names across major supermarkets.
    Optionally filter by store (e.g. 'Walmart', 'Loblaws', 'Metro', 'Costco', 'FreshCo', 'No Frills', 'Food Basics', 'Save-On-Foods', 'Real Canadian Superstore', 'Sobeys', 'Super C', 'Calgary Co-op', 'Voila').
