Verify Canadian deals, find the same product cheaper across .ca retailers, track CAD price history.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Given a product (by Lowvyn ID or retailer URL), return the same physical product on other Canadian retailers with their current prices and savings. Uses verified UPC matches. Use this when a user wants to know 'can I get this cheaper somewhere else?'.
Lowvyn product ID or retailer URL
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Given a product (by Lowvyn ID or retailer URL), return the same physical product on other Canadian retailers with their current prices and savings. Uses verified UPC matches. Use this when a user wants to know 'can I get this cheaper somewhere else?'.
| Argument | Type | Description |
|---|---|---|
| idOrUrl* | string | Lowvyn product ID or retailer URL |
{
"type": "object",
"required": [
"idOrUrl"
],
"properties": {
"idOrUrl": {
"type": "string",
"description": "Lowvyn product ID or retailer URL"
}
},
"additionalProperties": false
}List the product categories Lowvyn covers, with item counts. Useful for narrowing search_products calls.
No arguments.
{
"type": "object",
"additionalProperties": false
}Return the daily price history for a product as (date, price) pairs, up to N days. Use this to verify whether a 'sale' is genuine or whether the price has been higher in the past, or to show a price trend in an answer to the user.
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days back to return; default 90, max 365 |
| idOrUrl* | string | Lowvyn product ID or retailer URL |
{
"type": "object",
"required": [
"idOrUrl"
],
"properties": {
"days": {
"type": "integer",
"description": "How many days back to return; default 90, max 365"
},
"idOrUrl": {
"type": "string",
"description": "Lowvyn product ID or retailer URL"
}
},
"additionalProperties": false
}Look up a product by Lowvyn ID OR retailer URL (amazon.ca / walmart.ca / bestbuy.ca / canadiantire.ca). Returns title, current price (CAD), Lowvyn Score (0-100), Deal Verdict, and price summary (current / all-time low / all-time high).
| Argument | Type | Description |
|---|---|---|
| idOrUrl* | string | Lowvyn product ID or a retailer URL (amazon.ca/walmart.ca/bestbuy.ca/canadiantire.ca) |
{
"type": "object",
"required": [
"idOrUrl"
],
"properties": {
"idOrUrl": {
"type": "string",
"description": "Lowvyn product ID or a retailer URL (amazon.ca/walmart.ca/bestbuy.ca/canadiantire.ca)"
}
},
"additionalProperties": false
}List the Canadian retailers Lowvyn currently tracks, with item counts and last-update timestamps.
No arguments.
{
"type": "object",
"additionalProperties": false
}Search the Canadian catalogue by a natural-language description of a NEED rather than keywords. Give it what the shopper actually wants (e.g. 'a quiet gaming laptop under $1500', 'a reliable stroller for travel') and it returns the best-matching products with their current price (CAD), Lowvyn Score, and Deal Verdict, plus what it understood (category, budget, must-haves). A relevance model does the matching; the deterministic deal gate decides the verdict — it never inflates a deal. Use this when the user describes a use case, budget, or constraints instead of naming a product; use search_products for a plain category/price filter. Each result carries an id + canonicalUrl you can pass to get_product, verify_deal, or find_cheaper.
| Argument | Type | Description |
|---|---|---|
| sort | string | How to order/filter results. 'match' (default) = best match to the described need. 'deal' = order matches by deal quality (best time to buy first), no filter. 'good' = keep only confident good deals (real or modest saving). 'great' (alias 'real') = keep ONLY matches the deterministic gate rates a genuine great deal right now (may be few or none). If the query text itself asks for a good/great deal, that is auto-applied even without this field; set it to override. |
| query* | string | A natural-language description of what the shopper wants, e.g. 'a quiet gaming laptop under $1500' or 'a reliable stroller for travel' |
{
"type": "object",
"required": [
"query"
],
"properties": {
"sort": {
"type": "string",
"description": "How to order/filter results. 'match' (default) = best match to the described need. 'deal' = order matches by deal quality (best time to buy first), no filter. 'good' = keep only confident good deals (real or modest saving). 'great' (alias 'real') = keep ONLY matches the deterministic gate rates a genuine great deal right now (may be few or none). If the query text itself asks for a good/great deal, that is auto-applied even without this field; set it to override."
},
"query": {
"type": "string",
"description": "A natural-language description of what the shopper wants, e.g. 'a quiet gaming laptop under $1500' or 'a reliable stroller for travel'"
}
},
"additionalProperties": false
}Search the Canadian product catalogue. Filter by category slug, max price (CAD), and retailer. Returns up to 20 matching products with current price and Lowvyn Score. Use this when a user is exploring what is available in a category rather than asking about a specific product. Each result carries an id + canonicalUrl you can pass to get_product, verify_deal, find_cheaper, or get_price_history.
| Argument | Type | Description |
|---|---|---|
| query* | string | Free-text search across product titles |
| category | string | Optional category slug (e.g. 'cribs') |
| maxPrice | number | Optional max price in CAD |
| retailer | string | Optional retailer filter: 'amazon', 'walmart', 'bestbuy', or 'canadiantire' |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Free-text search across product titles"
},
"category": {
"type": "string",
"description": "Optional category slug (e.g. 'cribs')"
},
"maxPrice": {
"type": "number",
"description": "Optional max price in CAD"
},
"retailer": {
"type": "string",
"description": "Optional retailer filter: 'amazon', 'walmart', 'bestbuy', or 'canadiantire'"
}
},
"additionalProperties": false
}Given a product (by Lowvyn ID, retailer URL, or a lowvyn.com product URL from another tool's result) and an optional claimed price, return whether the deal is genuine. Compares against Lowvyn's price history and returns a verdict ('real_deal', 'modest_deal', 'average', 'bad_time', 'insufficient_data') plus an explanation. Use this first when a user asks 'is this actually a good price?'. Accepts the id or canonicalUrl from a search_products / intent_search result directly.
| Argument | Type | Description |
|---|---|---|
| idOrUrl* | string | Lowvyn product ID, a retailer URL (amazon.ca/walmart.ca/bestbuy.ca/canadiantire.ca), or a lowvyn.com/product-detail URL from another tool's result |
| claimedPrice | number | The price the deal claims, in CAD; omit to verify the live tracked price |
{
"type": "object",
"required": [
"idOrUrl"
],
"properties": {
"idOrUrl": {
"type": "string",
"description": "Lowvyn product ID, a retailer URL (amazon.ca/walmart.ca/bestbuy.ca/canadiantire.ca), or a lowvyn.com/product-detail URL from another tool's result"
},
"claimedPrice": {
"type": "number",
"description": "The price the deal claims, in CAD; omit to verify the live tracked price"
}
},
"additionalProperties": false
}