MCP
Grocery data for agents
Connect an API-key-compatible MCP client to the same Canadian grocery product, observed-price, and reference-store data as the REST API. Tool calls use the same API keys and plan quota.
Connect a client
Create a key in Data access. Keep it in your private client configuration; do not share it in a prompt, screenshot, repository, or browser app. The examples below contain placeholders. Replace them only on your own machine.
Claude Code
claude mcp add --transport http vynn https://api.vynn.ai/mcp \ --header "Authorization: Bearer vynn_pk_YOUR_KEY"
Claude Desktop
Use mcp-remote as a local stdio bridge in your Desktop configuration. This API-key setup does not provide an OAuth account-connection flow. Remote connectors that require OAuth are not supported by this setup:
{
"mcpServers": {
"vynn": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.vynn.ai/mcp",
"--header",
"Authorization: Bearer vynn_pk_YOUR_KEY"
]
}
}
}Verify the connection
The transport is stateless HTTP at https://api.vynn.ai/mcp. Authenticate with Authorization: Bearer. Start with the MCP initialize handshake:
curl -s https://api.vynn.ai/mcp \
-H "Authorization: Bearer vynn_pk_YOUR_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0", "id": 1, "method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": {"name": "curl", "version": "1"}
}
}'Try a scoped question
Ask: “Search for milk in Ontario. Use one returned retailer SKU and its banner to retrieve 30 days of observed price history. Include observation dates and explain any missing data.”
History uses a retailer SKU and banner, not a barcode. Prices come from scheduled collection on the reference-store panel; they are not guaranteed at every store. An empty result does not prove that a product is unavailable. Confirm coverage with the store tool.
Tools
| Tool | Arguments | Backend contract |
|---|---|---|
lookup_product | upc (required), province (required), limit | Resolve a UPC/EAN/GTIN barcode to the product it identifies and the current offers for it across Canadian grocery banners in one province. Requires a province because grocery prices are store-scoped: there is no single national price for a product. Returns an empty offer list, not an error, when the barcode is known but not currently carried. |
search_products | query (required), province (required), limit | Search Canadian grocery products by name or brand in one province. Use this when you have a description rather than a barcode. Province is required because the search service does not publish a national mixed-store result. Returns catalogue entries with current prices, not a price history. |
price_history | sku (required), banner (required), province (required), period | Observed price series for a single retailer SKU over a lookback window. IMPORTANT: the identifier is a retailer-scoped SKU (an external_sku), not a UPC — passing a barcode here will not resolve. Use lookup_product or search_products first to obtain a SKU. A province is required, because the series is scoped to that province's reference stores. Prices are observed on our reference-store panel and are not guaranteed to match every store. |
list_reference_stores | province, banner, limit | The active reference stores every published observation is collected from, with their banner, province, coordinates and recent observation volume. Call this to answer 'what does Vynn actually cover?' — it is the panel definition, not a directory of every grocery store in Canada. |
The handshake alone does not verify data access. Confirm that your client lists all four tools and completes a tool call. Handshakes and tools/list are unmetered. Every tools/call, including a rejected call, consumes one call from the same plan quota as REST. If authentication fails, check the key and whether it was revoked. For quota errors, wait for the reported reset; repeated retries do not restore your allowance.