product-intelligence
Server Details
Compare prices across Swiss and European shops — barcode (GTIN) lookup and daily price history.
- Status
- Healthy
- Uptime
- 72.6% over 57 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
Each tool has a clearly distinct trigger: search_products for discovery, get_product for known-ID lookup, and get_price_history for historical price context. The descriptions explicitly state when to use each, leaving little overlap or ambiguity.
All three tools follow a consistent snake_case verb_noun pattern: get_price_history, get_product, search_products. The convention is predictable and readable.
Three tools provide a focused core for product lookup, discovery, and price history, but the set is slightly thin for broader product intelligence workflows. A small addition like multi-product comparison or offer listing would round it out without bloating.
The tools cover the main jobs: finding products, retrieving a known product with its best offer, and judging price quality over time. Minor gaps remain, such as comparing multiple products or retrieving all shop offers for a product, but core workflows are supported.
Available Tools
3 toolsget_price_historyGet Price History ToolARead-onlyIdempotentInspect
Daily lowest observed price for a product over the last year, in one country. Use this to judge whether a current price or a claimed discount is actually good — compare today's price against the recent minimum. Recording started 2026-07-27, so earlier days are empty. Prices are integer minor units.
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes | Country whose prices to return. | |
| product_id | Yes | The Ponito product id (from search_products or get_product). |
Output Schema
| Name | Required | Description |
|---|---|---|
| days | Yes | One entry per day; recording started 2026-07-27, earlier days are absent. |
| currency | Yes | ISO currency of all prices in the series. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds valuable context beyond annotations, such as the recording start date (2026-07-27) meaning earlier days are empty, and that prices are integer minor units. This helps set expectations without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, with the core function first, followed by usage guidance and a data caveat. Every sentence adds value and there is no repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 required params), rich annotations, and presence of an output schema, the description is complete. It covers purpose, usage, and an important data availability detail, making it fully sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both product_id (from search_products or get_product) and country (enum with valid countries). The description does not add significant parameter-level meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it returns the daily lowest observed price for a product over the last year in one country. This clearly differentiates it from sibling tools get_product and search_products, which focus on product details and search, not historical price data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: 'Use this to judge whether a current price or a claimed discount is actually good — compare today's price against the recent minimum.' However, it does not explicitly mention when not to use it or contrast with alternatives, so it's strong but not fully complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productGet Product ToolARead-onlyIdempotentInspect
Look up one product by GTIN (EAN/UPC barcode) or Ponito product id. Use this when you already know exactly which product you mean — e.g. from a barcode, a previous search result, or a product page. Returns the product with its best offer in the given country.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A GTIN (8-14 digit EAN/UPC barcode) or a Ponito product id. | |
| country | Yes | The shopper's country (offers and prices are country-specific). | |
| language | No | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Ponito product id. |
| url | Yes | Ponito product page listing all offers in the country. |
| name | Yes | |
| brand | Yes | |
| gtins | Yes | GTIN (EAN/UPC) barcodes. |
| image | Yes | Product photo, served from Ponito. |
| rating | Yes | Average user rating, 0-5. |
| best_offer | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond the annotations: the response is the product with its best offer, and that offer is country-scoped. Still silent on failure modes (invalid GTIN, product not carried in a country), which keeps it short of 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with identity and lookup form, then usage condition, then return shape. No filler and no repetition of schema content beyond what is needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure need not be spelled out, and the description correctly limits itself to the offer/country nuance. The only uncovered item is the language parameter's effect on returned text, which the description never mentions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description adds meaning the schema lacks by explaining why country is required ('offers and prices are country-specific'), which is the key semantic for choosing that enum value. The id formats it restates are already in the schema, so it does not fully carry the undocumented language parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Look up one product') and names the two accepted identifier forms (GTIN/EAN/UPC or Ponito product id). Combined with the singular 'one product' framing, an agent can immediately distinguish this from the sibling search_products.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear positive guidance: 'Use this when you already know exactly which product you mean — e.g. from a barcode, a previous search result, or a product page.' That implicitly excludes the search path but never names search_products or states the exclusion explicitly, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsSearch Products ToolARead-onlyIdempotentInspect
Search Ponito's product catalogue. Call this for any shopping query — finding products, comparing options, or checking who sells something in a given country. Returns GTIN-anchored products with their best offer (lowest price, integer minor units) and shop count.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | "relevance" (popularity-weighted, default) or "cheapest" (lowest price first). | relevance |
| limit | No | Max results, 1-25. | |
| query | Yes | What the shopper is looking for, e.g. "quiet robot vacuum" or "Bosch dishwasher 60cm". | |
| country | Yes | The shopper's country (offers and prices are country-specific). | |
| language | No | Language to search and label results in. | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| products | Yes | Matching products, most relevant (or cheapest) first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description goes beyond them by disclosing the return shape (GTIN-anchored results, best offer, shop count) and the price format (integer minor units), which an agent otherwise could not infer from the annotations. It stops short of noting result-cap or pricing caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose, when to call, and what comes back. Nothing is wasted and the identity of the resource is front-loaded in the first four words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full output schema, rich annotations, and 100% parameter coverage, the only missing piece was intent and result shape, both of which the description supplies. An agent has everything needed to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions and enum values for sort, limit, country, and language, so the schema carries the parameter semantics. The description adds nothing about parameter usage or interactions (e.g., sort vs. limit trade-offs), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource ("Search Ponito's product catalogue") and the closing sentence states what results contain (GTIN-anchored products with best offer and shop count). It is clear what the tool does, but it never names or contrasts against the sibling tools get_product and get_price_history, which is what would push this to a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage contexts: "finding products, comparing options, or checking who sells something in a given country." That is strong when-to-use guidance, but there is no when-not guidance and no pointer to the sibling lookup/history tools for narrower needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
get_product2 fields changed- added
Output schema / properties / imageAdded value: +{ + "description": "Product photo, served from Ponito.", + "type": [ + "string", + "null" + ] +} - changed
Output schema / requiredPrevious value: -[ - "id", - "name", - "brand", - "gtins", - "rating", - "best_offer", - "url" -]New value: +[ + "id", + "name", + "brand", + "gtins", + "rating", + "image", + "best_offer", + "url" +]
- Changed
search_products2 fields changed- added
Output schema / properties / products / items / properties / imageAdded value: +{ + "description": "Product photo, served from Ponito.", + "type": [ + "string", + "null" + ] +} - changed
Output schema / properties / products / items / requiredPrevious value: -[ - "id", - "name", - "brand", - "gtins", - "rating", - "best_offer", - "url" -]New value: +[ + "id", + "name", + "brand", + "gtins", + "rating", + "image", + "best_offer", + "url" +]
3 tool updates
- Changed
get_price_history1 field changed- changed
Input schema / properties / country / enumPrevious value: -[ - "CH", - "DE", - "FR", - "GB" -]New value: +[ + "CH", + "DE", + "FR", + "GB", + "AT", + "ES", + "NL" +]
- Changed
get_product1 field changed- changed
Input schema / properties / country / enumPrevious value: -[ - "CH", - "DE", - "FR", - "GB" -]New value: +[ + "CH", + "DE", + "FR", + "GB", + "AT", + "ES", + "NL" +]
- Changed
search_products1 field changed- changed
Input schema / properties / country / enumPrevious value: -[ - "CH", - "DE", - "FR", - "GB" -]New value: +[ + "CH", + "DE", + "FR", + "GB", + "AT", + "ES", + "NL" +]
2 tool updates
- Changed
get_product1 field changed- changed
Input schema / properties / language / enumPrevious value: -[ - "de", - "fr", - "en" -]New value: +[ + "de", + "fr", + "en", + "it", + "es", + "pt", + "nl" +]
- Changed
search_products1 field changed- changed
Input schema / properties / language / enumPrevious value: -[ - "de", - "fr", - "en" -]New value: +[ + "de", + "fr", + "en", + "it", + "es", + "pt", + "nl" +]
2 tool updates
- Changed
get_product1 field changed- changed
Input schema / properties / language / enumPrevious value: -[ - "en", - "de", - "fr" -]New value: +[ + "de", + "fr", + "en" +]
- Changed
search_products1 field changed- changed
Input schema / properties / language / enumPrevious value: -[ - "en", - "de", - "fr" -]New value: +[ + "de", + "fr", + "en" +]
3 tool updates
- Changed
get_price_history1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "currency": { + "description": "ISO currency of all prices in the series.", + "type": "string" + }, + "days": { + "description": "One entry per day; recording started 2026-07-27, earlier days are absent.", + "items": { + "properties": { + "date": { + "description": "Day, formatted yyyy-MM-dd.", + "type": "string" + }, + "min": { + "description": "Lowest valid price that day in minor units (cents/rappen); null when no shop had a valid price.", + "type": [ + "integer", + "null" + ] + }, + "observed": { + "description": "True when a price was directly observed that day; false when carried forward from a previous observation.", + "type": "boolean" + }, + "shops": { + "description": "Shops with a valid price that day.", + "type": "integer" + } + }, + "required": [ + "date", + "min", + "shops", + "observed" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "currency", + "days" + ], + "type": "object" +}
- Changed
get_product1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "best_offer": { + "properties": { + "currency": { + "type": "string" + }, + "price": { + "description": "Lowest current price in minor units (cents/rappen).", + "type": "integer" + }, + "shops_count": { + "description": "Number of shops currently offering the product.", + "type": "integer" + } + }, + "required": [ + "price", + "currency", + "shops_count" + ], + "type": [ + "object", + "null" + ] + }, + "brand": { + "type": [ + "string", + "null" + ] + }, + "gtins": { + "description": "GTIN (EAN/UPC) barcodes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "description": "Ponito product id.", + "type": "string" + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "rating": { + "description": "Average user rating, 0-5.", + "type": [ + "number", + "null" + ] + }, + "url": { + "description": "Ponito product page listing all offers in the country.", + "type": "string" + } + }, + "required": [ + "id", + "name", + "brand", + "gtins", + "rating", + "best_offer", + "url" + ], + "type": "object" +}
- Changed
search_products1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "products": { + "description": "Matching products, most relevant (or cheapest) first.", + "items": { + "properties": { + "best_offer": { + "properties": { + "currency": { + "type": "string" + }, + "price": { + "description": "Lowest current price in minor units (cents/rappen).", + "type": "integer" + }, + "shops_count": { + "description": "Number of shops currently offering the product.", + "type": "integer" + } + }, + "required": [ + "price", + "currency", + "shops_count" + ], + "type": [ + "object", + "null" + ] + }, + "brand": { + "type": [ + "string", + "null" + ] + }, + "gtins": { + "description": "GTIN (EAN/UPC) barcodes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "description": "Ponito product id.", + "type": "string" + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "rating": { + "description": "Average user rating, 0-5.", + "type": [ + "number", + "null" + ] + }, + "url": { + "description": "Ponito product page listing all offers in the country.", + "type": "string" + } + }, + "required": [ + "id", + "name", + "brand", + "gtins", + "rating", + "best_offer", + "url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "products" + ], + "type": "object" +}
3 tool updates
- First observed
get_price_history - First observed
get_product - First observed
search_products
Related MCP Connectors
Track prices & price history on any online shop, with alerts and an API
Compare 18M+ prices across Denmark, Sweden, Norway and Germany: product search, wishlists. No login.
Product search, store prices and price history from Norwegian web shops. Read-only, no login.
Pay-per-call Swiss retail price intelligence (22 retailers). $0.01 USDC via x402.
Related MCP Servers
AlicenseNot gradedqualityFmaintenanceEnables product search, price comparison, and price history analysis across 6 European marketplaces (DE, AT, GB, FR, IT, ES).19MIT- AlicenseAqualityDmaintenanceEnables product search and discovery on Galaxus and Digitec, with tools for searching, browsing, comparing, and looking up prices and specifications.71MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol server for real-time Swiss grocery shopping that searches and compares products across 8 major Swiss retailers (Migros, Coop, Aldi, Denner, Lidl, Farmy, Volgshop, Otto’s), normalizes per-unit prices, surfaces promotions, computes optimal multi-store shopping plans, and works with any MCP-compatible client without API keys or accounts.2771 npm34AGPL 3.0
- AlicenseAqualityDmaintenanceEnables AI assistants to search products and retrieve detailed information from Galaxus and Digitec, including prices, specifications, and price history.52MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.