product-intelligence
Server Details
Compare prices across Swiss and European shops — barcode (GTIN) lookup and daily price history.
- Status
- Healthy
- Uptime
- 72.3% over 37 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
Each tool targets a distinct concern: search_products for discovery, get_product for exact identifier lookup, and get_price_history for price trend analysis. There is no overlap in purpose, so an agent can confidently select the right tool.
All tool names follow a consistent verb_noun pattern: get_price_history, get_product, search_products. The verbs (get, search) and nouns (price_history, product, products) are clear and consistent.
With only three tools, the server is tightly scoped yet complete for its purpose. Each tool covers a fundamental product intelligence operation without unnecessary redundancy.
The set covers the full value chain: search to find products, get_product to retrieve specific details, and get_price_history to evaluate price competitiveness. No obvious missing operations exist for the stated domain.
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. |
| 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, and non-destructive behavior. The description adds that it returns the product's best offer for the given country, which is useful. However, it does not disclose behavior for not-found cases or per-language differences, leaving some gaps beyond the annotation coverage.
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: first states the main action, second provides usage guidance, third summarizes the result. Every sentence earns its place with no redundancy or fluff.
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?
The tool is simple and has an output schema and good annotations, so the description need not cover return values. Core usage is explained well, but the language parameter is entirely omitted and edge behaviors (e.g. no match) are not mentioned, making it not fully complete.
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% (id and country described). The description enhances id by specifying GTIN/EAN/UPC barcode and Ponito product id, and frames country as determining country-specific offers. However, the language parameter has no schema description and is not mentioned in the description, leaving that parameter under-specified.
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 clearly states the tool 'looks up one product' by specific identifiers (GTIN/barcode or Ponito product id), making the verb and resource explicit. It also distinguishes this from sibling search_products by noting it is for when you already know exactly which product you mean.
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?
The description gives clear context for when to use the tool ('when you already know exactly which product you mean') with practical examples. It does not explicitly name alternatives or exclusion criteria, but the 'use this when' phrasing implicitly contrasts with search behavior, so it is clear.
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?
The description discloses that results are GTIN-anchored, include the best offer (lowest price in integer minor units), and a shop count—details not in the annotations. The tool is annotated as read-only and idempotent, and the description's search behavior is consistent with that, adding useful context beyond the 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, each serving a purpose: what it is, when to use it, and what it returns. No redundant filler; front-loaded with the tool's core purpose.
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?
For a search tool with annotations and a full output schema, the description covers purpose, usage context, and key return characteristics. It does not mention pagination or edge cases, but the schema covers limit and the output schema would handle return structure, so the description is sufficiently complete.
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?
The input schema already provides full descriptions for all five parameters (100% coverage), including enums and defaults. The description adds no additional parameter-level detail, but it does clarify the meaning of 'best offer' in the return value; since coverage is high, 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 clearly states the tool searches Ponito's product catalogue and returns GTIN-anchored products with best offers and shop count. It gives situational examples ('finding products, comparing options...'), differentiating it from a generic search, but does not explicitly distinguish from sibling tools like get_product or get_price_history.
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?
The description explicitly instructs 'Call this for any shopping query' and lists concrete use cases, providing clear context for when to invoke it. It does not mention when not to use it or point to alternatives, so it lacks exclusions.
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.
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
Pay-per-call Swiss retail price intelligence (22 retailers). $0.01 USDC via x402.
Compare prices across Latvian online retailers: offers, price history and wishlists.
Search products, compare prices and discover deals across 6 European markets with your AI assistant.
Related MCP Servers
AlicenseNot gradedqualityFmaintenanceEnables product search, price comparison, and price history analysis across 6 European marketplaces (DE, AT, GB, FR, IT, ES).19MIT- AlicenseAqualityCmaintenanceEnables 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.7105 npm32AGPL 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.