← The evidence ledger
Evidence row 533240
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 3131f612-ad89-48ce-862e-6d9ce49a45d7
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- c54dcde8c9b6bbdb2e44eb3de9410983edc4f62694b3fe421050f12f0e9c32c0
- Leaf
- 0x606a6e02f37d222808ebcfd62a93b101c3c61ec27314d3d560ce548feec62414
What was observed
{
"count": 8,
"tools": [
{
"description": "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?'.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idOrUrl": {
"description": "Lowvyn product ID or retailer URL",
"type": "string"
}
},
"required": [
"idOrUrl"
],
"type": "object"
},
"name": "find_cheaper"
},
{
"description": "List the product categories Lowvyn covers, with item counts. Useful for narrowing search_products calls.",
"inputSchema": {
"additionalProperties": false,
"type": "object"
},
"name": "get_categories"
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"days": {
"description": "How many days back to return; default 90, max 365",
"type": "integer"
},
"idOrUrl": {
"description": "Lowvyn product ID or retailer URL",
"type": "string"
}
},
"required": [
"idOrUrl"
],
"type": "object"
},
"name": "get_price_history"
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idOrUrl": {
"description": "Lowvyn product ID or a retailer URL (amazon.ca/walmart.ca/bestbuy.ca/canadiantire.ca)",
"type": "string"
}
},
"required": [
"idOrUrl"
],
"type": "object"
},
"name": "get_product"
},
{
"description": "List the Canadian retailers Lowvyn currently tracks, with item counts and last-update timestamps.",
"inputSchema": {
"additionalProperties": false,
"type": "object"
},
"name": "get_retailers"
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"query": {
"description": "A natural-language description of what the shopper wants, e.g. 'a quiet gaming laptop under $1500' or 'a reliable stroller for travel'",
"type": "string"
},
"sort": {
"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.",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "intent_search"
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"category": {
"description": "Optional category slug (e.g. 'cribs')",
"type": "string"
},
"maxPrice": {
"description": "Optional max price in CAD",
"type": "number"
},
"query": {
"description": "Free-text search across product titles",
"type": "string"
},
"retailer": {
"description": "Optional retailer filter: 'amazon', 'walmart', 'bestbuy', or 'canadiantire'",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_products"
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"claimedPrice": {
"description": "The price the deal claims, in CAD; omit to verify the live tracked price",
"type": "number"
},
"idOrUrl": {
"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",
"type": "string"
}
},
"required": [
"idOrUrl"
],
"type": "object"
},
"name": "verify_deal"
}
]
}What the leaf hashes
{"body":"c54dcde8c9b6bbdb2e44eb3de9410983edc4f62694b3fe421050f12f0e9c32c0","id":533240,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793127481771905,"prev":null,"subject":"3131f612-ad89-48ce-862e-6d9ce49a45d7","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).
- 0x606a868afb9872c889512537a5ff037d8562d659711ab463911d92c0376b72a2
- 0x3f82bed107f4c4fdeaed383fbf15fb2e5e53993c628d78d0e82d0cfa1f79c085
- 0xda5d3c7bc79cd6bfb071634074db6f3399d8046b7dfade41bcd6a3bbf0d728e4
- 0x59d2bff9d13c5ef178e8b39a348c2b538fb1aa697a6be8537d74266792ffc0d1
- 0xe34bbb1940c6fbae5b1a6f399b18b29f4c162f449a752bee3a04cd0ee3001f10
- 0xcf5e02c9bc97aeaa4e5e6a75211716bdbaef27417b0b6a508c4c6adc71c01412
- 0x9b682890b8e681c8b6ebeb4edf123ba25e24e33d5f93f16a45bdd31e23c794ed
- 0xa9431944fed981f8f5a579e964b5f86531f94f91cc64257829e22045fccd0b8d
- 0x4ebcaaf688d5937610f25be194d4fd6fc64c675ec282f736d3ac7605ed3c08c3
- 0xde1d4091b964030686aabb2c829b674b046cbd75d244ba2b915500dd8d284a67
- 0x042ed023614c046dfcee504f2fb14ba7df71bf698e682b1391b1905d7f519255
- 0x4fbbcb97bbe92a4202db4cfe9ed5ce98ec76cb76473d9a37a3775c708528409e
- 0x38f17e73d675dd35d0dd4a9f0ebd22a3333bcd28f96e42d5dd126e08211ffc4a
- 0x4277e02be0b5d91d78bc2247e37d402572474ba896c2e8f45765c8dc4e244d36
- 0x6f00f0da417f4126951ba8ba9b7962c847e91f5c61364ad9ad47e5f979698a60
- 0x23cf9bb4337ee8be7fcae368fd69d24c62c11fb45882127b4cd919bb96a19996
- 0x0e01aa9525097570a6edaf32bfc959de57bf5c24317cf10c0716affea85ca60d
- 0xa20d48798a34aba12eb9c7297722982d910f06c148f5e27ac59307422964a585
- 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
- Day root
- 0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
- Chained
- 0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
- Published
- On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4