Bikefuchs — Bike Parts Price Comparison
Server Details
Price comparison & cart optimizer for bike parts across German & Austrian shops
- Status
- Healthy
- Uptime
- 100.0% over 73 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- bikefuchs/bikefuchs-mcp-stub
- GitHub Stars
- 0
- Server Listing
- bikefuchs-mcp-stub
TDQS
Scored across 7 tools
find_alternatives_for_product and get_best_price are nearly indistinguishable in practice: both take an EAN and return per-shop prices with stock and links, sorted cheapest-first. Descriptions offer hints ("use get_best_price instead" for search_product), but the duplication between the two EAN lookup tools invites misselection. The shipping tools and resolve/search/optimize are otherwise clearly separated.
All seven tools follow a consistent snake_case verb_noun pattern (get_best_price, search_product, resolve_product, optimize_cart, get_shop_info). The one longer name, find_alternatives_for_product, still fits the same verb_object convention with a clarifying qualifier.
Seven tools is well-scoped for a price-comparison server, covering discovery, lookup, shipping, and cart optimization without bloat. Each tool maps to a distinct step in the shopping workflow.
The lifecycle is largely covered: search by name, resolve a shop URL to an EAN, look up prices across shops, understand shipping tiers, and optimize a multi-item cart. Minor gaps remain (no price history/alerting or direct product-to-product comparison), and the redundant alternatives tool suggests a slightly unresolved surface rather than a missing capability.
Available Tools
7 toolsfind_alternatives_for_productFind Alternative ShopsARead-onlyIdempotentInspect
Given a product's EAN barcode, return every shop that carries it with prices and availability, sorted cheapest-first.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | Yes | EAN barcode (8–14 digits, e.g. '4524667749493') | |
| country | No | Country for pricing (DE or AT, default DE) | DE |
Output Schema
| Name | Required | Description |
|---|---|---|
| ean | Yes | |
| disclosure | No | |
| alternatives | Yes | |
| product_name | Yes | |
| refresh_pending | No | |
| retry_after_seconds | No | |
| cheapest_price_stale | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds one genuine behavioral trait beyond that: results are sorted cheapest-first, which tells the agent how to interpret ordering without post-processing. It says nothing about result caps, pagination, or staleness of prices.
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?
A single sentence that front-loads the input (EAN barcode) and then the output contract (shops, prices, availability, sort order). No filler, no restatement of the title or name.
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 an output schema present, the description need not enumerate return fields, and annotations cover the safety profile, so what remains is mostly covered. The one gap is that openWorldHint=false combined with a cross-shop lookup could mislead an agent about where the data comes from, and there is no note on result volume or freshness.
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 both ean (pattern, example) and country (enum, default) fully documented in the schema. The description restates the EAN input but adds nothing about the country parameter or its DE/AT pricing effect. Baseline 3 is correct when the schema carries the parameter burden.
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?
States a specific verb and resource with explicit scope: given an EAN, return every shop carrying it with prices and availability, sorted cheapest-first. This clearly separates it from search_product and resolve_product, which operate on product identity rather than shop listings. It does not explicitly contrast with get_best_price, which is the closest sibling by output, so sibling differentiation is only partial.
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 input precondition (an EAN barcode) is stated, so usage is implied, but there is no when-to-use vs when-not guidance and no mention of the obvious alternative get_best_price for agents that only need the cheapest offer. The agent must infer the routing decision from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_best_priceGet Best Price by EANARead-onlyIdempotentInspect
Look up a single product by its EAN barcode and return the price at every shop that carries it, sorted cheapest-first, with stock status and direct purchase links.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | Yes | EAN barcode (8–14 digits, e.g. '4524667749493') | |
| country | No | Country for pricing (DE or AT, default DE) | DE |
| reference_shop | No | Shop id or display name to compare against. When set, the response states how much cheaper the cheapest shop is vs. this shop. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ean | Yes | |
| prices | Yes | |
| next_step | No | |
| disclosure | No | |
| product_name | Yes | |
| cheapest_shop | Yes | |
| cheapest_price | Yes | |
| refresh_pending | No | |
| retry_after_seconds | No | |
| cheapest_price_stale | No | |
| reference_comparison | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, covering the safety profile. The description adds sorting, stock status, and purchase links, but an output schema exists so those return details are redundant. No additional behavioral context such as auth or rate limits is provided. Baseline 3 is appropriate.
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?
A single, front-loaded sentence that packs purpose, scope, and output shape with zero wasted 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?
Given 100% schema coverage, an output schema, and annotations that fully cover safety, the description provides sufficient context. An agent has everything needed to select and invoke the tool 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%, and the schema documents all three parameters including the enum for country and the reference_shop comparison behavior. The description does not mention any parameters, so it adds no meaning beyond the schema. Baseline 3.
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?
States a specific verb ('Look up'), resource ('single product by its EAN barcode'), and scope (price at every shop, sorted cheapest-first). It clearly distinguishes from siblings like search_product or resolve_product by requiring an EAN and returning a price comparison.
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 implies usage (look up by EAN for price comparison), but does not explicitly say when to use this tool versus alternatives like search_product or resolve_product. No exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shipping_breakdownGet Shipping CostARead-onlyIdempotentInspect
Return the exact shipping cost for a specific shop, country, and cart value, including all shipping tiers and how much more is needed to reach the next free-shipping threshold.
| Name | Required | Description | Default |
|---|---|---|---|
| shop | Yes | Shop name or ID (e.g. 'rosebikes', 'boc24', 'bike24', 'fahrradteile', 'Rose Bikes') | |
| country | Yes | Country (DE or AT) | |
| cart_value | Yes | Total cart value in EUR (e.g. 49.99) |
Output Schema
| Name | Required | Description |
|---|---|---|
| shop | Yes | |
| country | Yes | |
| currency | Yes | |
| cart_value | Yes | |
| shipping_cost | Yes | |
| free_shipping_threshold | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds no further side-effect or operational context such as costs, errors, or special cases. The mention of tiers and the free-shipping threshold describes output content rather than a behavioral trait, so no significant extra value beyond the safety annotations is added.
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?
A single, front-loaded sentence starts with the action ('Return the exact shipping cost') and packs the required parameters and outputs into one efficient clause. There is no filler, repetition, or tangential information.
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 three-parameter read-only tool with a full input schema, complete annotations, and an output schema available, the description supplies all context an agent needs to decide and invoke correctly. It explains the key derived output, the free-shipping threshold gap, that a caller would otherwise not anticipate.
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 detailed descriptions for all three parameters, so the schema carries the meaning. The description restates the parameter concepts but adds no new format, unit, or edge-case information beyond the schema.
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 names a precise action (return exact shipping cost), a clear resource (a specific shop, country, and cart value), and the distinct outputs (all shipping tiers and the gap to free-shipping). This differentiates it from sibling tools such as get_best_price, which concern product pricing rather than shipping cost.
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 clearly implies when to use the tool: whenever the agent needs the shipping cost for a known shop, country, and cart value. It doesn't explicitly list alternatives or exclusion conditions, but the strong context makes the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shop_infoGet Shop OverviewARead-onlyIdempotentInspect
Return an overview of the supported shops, including their shipping cost tiers, free-shipping thresholds, and supported countries (DE and AT).
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Filter output to a specific country (optional — omit for both DE and AT) |
Output Schema
| Name | Required | Description |
|---|---|---|
| shops | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds content-level context but no additional behavioral traits such as rate limits, required permissions, or data-source caveats. This is acceptable given the strong 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 a single front-loaded sentence with no filler or redundant information. Every clause adds value: the resource, the nature of the output, and the specific countries covered are all stated efficiently.
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?
This is a simple read-only tool with one optional parameter, a rich schema, an output schema, and strong annotations. The description provides enough detail about the returned content and the supported countries for an agent to invoke it correctly without further clarification.
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 the schema already documenting the optional country parameter and its DE/AT restriction. The tool description reinforces that DE and AT are the supported countries but does not add new meaning beyond the schema, so the baseline score of 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 states a specific verb and resource ('Return an overview of the supported shops') and enumerates concrete contents: shipping cost tiers, free-shipping thresholds, and countries DE/AT. This clearly differentiates it from siblings like get_shipping_breakdown or get_best_price, which focus on transactional or pricing details rather than shop-level overviews.
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 says what the tool returns but gives no guidance on when to prefer it over alternatives or when not to use it. It does not mention any sibling tools or conditions that would route an agent to get_shipping_breakdown, get_best_price, or optimize_cart instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_cartOptimize Shopping CartARead-onlyIdempotentInspect
Find the cheapest way to buy multiple products together: computes the optimal split across shops — which items to order from which shop — accounting for each shop's shipping costs and free-shipping thresholds, and returns the lowest achievable total including shipping. Takes an array of EAN barcodes. For accurate results, call get_best_price for each EAN first, then call optimize_cart.
| Name | Required | Description | Default |
|---|---|---|---|
| eans | Yes | Array of EAN barcodes (8–14 digit numbers as strings, e.g. '4524667749493'). NOT URLs. | |
| country | No | Country for pricing and shipping (DE or AT, default DE) | DE |
Output Schema
| Name | Required | Description |
|---|---|---|
| disclosure | No | |
| optimization | Yes | |
| savings_info | No | |
| stale_cache_warning | No | |
| excluded_stale_offers | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context: it accounts for shipping costs and free-shipping thresholds and guarantees the lowest achievable total including shipping, which is more than the annotations convey.
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 front-loaded with the core behavior, then the input, then the prerequisite workflow. It stays efficient, though the first sentence's clauses are dense enough that the 'what it returns' point could be sharper.
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 values don't need explaining, and the description supplies the key workflow context that would otherwise be missing. It doesn't mention that only DE/AT are supported or the 20-EAN cap, but the schema covers both.
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%, so both the eans array and the country enum are fully documented in the schema. The description only repeats that it takes an array of EAN barcodes and says nothing extra about country or the 20-item cap, 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 states a specific verb and resource — it computes the cheapest way to split a multi-item purchase across shops and returns the lowest total including shipping. It clearly distinguishes itself from siblings like get_best_price (single-item pricing) and get_shipping_breakdown (per-shop cost detail).
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 an explicit prerequisite: call get_best_price for each EAN first, then call optimize_cart. That sequencing guidance is concrete, though it doesn't say when *not* to use this tool or how it relates to get_shipping_breakdown for a detailed breakdown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_productResolve Product URLARead-onlyIdempotentInspect
Turn a product page URL from a supported shop into structured product data — EAN barcode, price, stock status, and a purchase link — so the EAN can then be used with get_best_price or optimize_cart. Multi-variant product families return a labeled candidate list (size/colour, price, EAN per variant): ask the user to pick a variant, then use that exact variant's EAN with the other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Product page URL from a supported shop (e.g. 'https://www.rosebikes.de/p/<product-name>-<id>') | |
| country | No | Country for pricing (DE or AT, default DE) | DE |
Output Schema
| Name | Required | Description |
|---|---|---|
| ean | No | |
| axis | No | Variant axis of the options: 'size', 'colour', 'mixed', 'size_name' or 'name'. |
| shop | Yes | |
| brand | No | |
| price | No | |
| status | No | 'not_resolved' when the exact variant could not be determined; 'pick_variant' when labeled variant options are returned to choose from. |
| message | No | |
| options | No | Variants of ONE product. Ask the user to pick one, then use that variant's EAN. |
| resolved | No | |
| min_price | No | |
| disclosure | No | |
| family_url | No | Branded /go/ link to the product family page so the user can pick the variant. |
| product_name | Yes | |
| affiliate_url | No | Affiliate link for this product. |
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 genuinely new behavior beyond that: multi-variant families return a labeled candidate list rather than a single product, and the agent must ask the user to pick before proceeding. It does not mention failure modes for unsupported shops or ambiguous URLs.
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?
Two tightly packed sentences with the core capability front-loaded and the variant-handling caveat second. Dense but every clause carries information; no filler or repetition of the title.
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 values need not be re-explained, and annotations cover the safety profile. The description supplies the one non-obvious piece an agent needs — the multi-variant candidate-list flow and the required user confirmation step — which would otherwise cause incorrect downstream EAN usage.
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% and both parameters (url, country) are documented in the schema with format and enum. The description only loosely restates 'URL from a supported shop' and says nothing about the country parameter, so it adds little beyond the schema. 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?
States a specific verb+resource ('Turn a product page URL ... into structured product data') and enumerates the outputs (EAN, price, stock status, purchase link). It also positions itself against siblings by naming get_best_price and optimize_cart as the downstream consumers of the EAN.
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?
Clearly frames when to use it (you have a product URL and need an EAN) and names the downstream alternatives to hand off to. It also gives a concrete branching instruction for multi-variant families. It stops short of stating a when-not case, e.g. that an already-known EAN should skip this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productSearch Bike ProductsARead-onlyIdempotentInspect
Search for bicycle parts, components, accessories, and cycling clothing by name, brand, or model number. Returns matching products sorted cheapest-first, each with its price, stock status, EAN barcode, and a direct purchase link. Supports DE and AT pricing. If you already have a product's EAN, use get_best_price instead.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search keyword, min 2 chars. Multi-word queries use AND logic across product names (e.g. 'shimano xt bremsbeläge') | |
| shop | No | Restrict results to a single supported shop (by id or name) | |
| country | No | Country for pricing (DE or AT, default DE) | DE |
| category | No | Filter by merchant category (partial match, e.g. 'Fahrräder' or 'Bremsen') | |
| in_stock | No | Only return in-stock products (default true) | |
| max_price | No | Upper price bound in EUR (inclusive) | |
| max_results | No | Max results (1–20, default 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| results | Yes | |
| disclosure | No | |
| next_steps | No | |
| total_results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful behavioral detail: results are sorted cheapest-first and pricing supports DE and AT. It does not disclose rate limits or default stock filtering, but those are either schema-covered or minor.
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 front-loaded and mostly efficient, with the alternative tool named at the end. The sentence listing returned fields is slightly redundant because an output schema exists, though the cheapest-first sorting detail still earns its place.
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 annotations, full schema coverage, and an output schema, the description provides enough context to call the tool correctly: it covers purpose, result ordering, country support, and the key alternative sibling. Nothing essential is missing for an agent deciding whether to invoke it.
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%, so the schema already explains all seven parameters in detail. The description adds only modest meaning, mainly that the query may target a brand or model number and that pricing supports DE/AT; it does not add syntax or filtering semantics beyond the schema.
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?
It states a specific verb and resource: searching bicycle products by name, brand, or model number across clearly named categories. It also distinguishes itself from the closest pricing sibling by telling the agent to use get_best_price when an EAN is already known.
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 says when to use it (searching parts/components/accessories/clothing by name, brand, or model number) and names the explicit alternative when an EAN is already available. This is a clear routing rule, not just implied guidance.
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.
1 tool update
- Changed
search_product1 field changed- changed
Input schema / properties / q / descriptionPrevious value: -"Search keyword, min 2 chars. Multi-word queries use AND logic across product name, description, and specifications (e.g. 'shimano xt bremsbeläge')"New value: +"Search keyword, min 2 chars. Multi-word queries use AND logic across product names (e.g. 'shimano xt bremsbeläge')"
3 tool updates
- Changed
find_alternatives_for_product5 fields changed- added
Output schema / properties / alternatives / items / properties / price_as_ofAdded value: +{ + "type": "string" +} - added
Output schema / properties / alternatives / items / properties / price_staleAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / cheapest_price_staleAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / refresh_pendingAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / retry_after_secondsAdded value: +{ + "type": "number" +}
- Changed
get_best_price5 fields changed- added
Output schema / properties / cheapest_price_staleAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / prices / items / properties / price_as_ofAdded value: +{ + "type": "string" +} - added
Output schema / properties / prices / items / properties / price_staleAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / refresh_pendingAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / retry_after_secondsAdded value: +{ + "type": "number" +}
- Changed
optimize_cart1 field changed- added
Output schema / properties / excluded_stale_offersAdded value: +{ + "additionalProperties": false, + "properties": { + "count": { + "type": "number" + }, + "shops": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "count", + "shops" + ], + "type": "object" +}
1 tool update
- Changed
resolve_product5 fields changed- added
Output schema / properties / min_priceAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / options / items / properties / ean / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / options / items / properties / ean / descriptionPrevious value: -"EAN of this exact variant — use it with get_best_price / optimize_cart."New value: +"EAN of this exact variant; null when the shop has no barcode for this size — then there is no price comparison, use product_url." - removed
Output schema / properties / options / items / properties / ean / typeRemoved value: -"string" - added
Output schema / properties / options / items / properties / product_urlAdded value: +{ + "description": "Direct /go/ link to this exact size at the input shop.", + "type": "string" +}
5 tool updates
- Changed
find_alternatives_for_product1 field changed- added
Output schema / properties / disclosureAdded value: +{ + "type": "string" +}
- Changed
get_best_price1 field changed- added
Output schema / properties / disclosureAdded value: +{ + "type": "string" +}
- Changed
optimize_cart1 field changed- added
Output schema / properties / disclosureAdded value: +{ + "type": "string" +}
- Changed
resolve_product1 field changed- added
Output schema / properties / disclosureAdded value: +{ + "type": "string" +}
- Changed
search_product1 field changed- added
Output schema / properties / disclosureAdded value: +{ + "type": "string" +}
1 tool update
- Changed
resolve_product1 field changed- changed
Input schema / properties / url / descriptionPrevious value: -"Product page URL from a supported shop (e.g. 'https://www.rosebikes.de/p/sram-pc-951-9-fach-kette-159128')"New value: +"Product page URL from a supported shop (e.g. 'https://www.rosebikes.de/p/<product-name>-<id>')"
1 tool update
- Changed
resolve_product1 field changed- changed
Input schema / properties / url / descriptionPrevious value: -"Product page URL from a supported shop (e.g. 'https://www.bike24.de/p2462871.html')"New value: +"Product page URL from a supported shop (e.g. 'https://www.rosebikes.de/p/sram-pc-951-9-fach-kette-159128')"
1 tool update
- Changed
resolve_product2 fields changed- changed
Output schema / properties / axis / descriptionPrevious value: -"Variant axis of the options: 'size', 'colour', 'mixed' or 'size_name'."New value: +"Variant axis of the options: 'size', 'colour', 'mixed', 'size_name' or 'name'." - added
Output schema / properties / options / items / properties / product_nameAdded value: +{ + "description": "Verbatim product name for a flat name-axis option; use as the choice label when present.", + "type": "string" +}
1 tool update
- Changed
resolve_product7 fields changed- added
Output schema / properties / options / items / properties / in_stock / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - added
Output schema / properties / options / items / properties / in_stock / descriptionAdded value: +"Stock at the input shop; null when unknown per variant." - removed
Output schema / properties / options / items / properties / in_stock / typeRemoved value: -"boolean" - added
Output schema / properties / options / items / properties / price / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - added
Output schema / properties / options / items / properties / price / descriptionAdded value: +"Price at the input shop; null when only a family-level page price exists." - removed
Output schema / properties / options / items / properties / price / typeRemoved value: -"number" - changed
Output schema / properties / options / items / requiredPrevious value: -[ - "ean", - "price", - "in_stock" -]New value: +[ + "ean" +]
1 tool update
- Changed
resolve_product2 fields changed- changed
Output schema / properties / axis / descriptionPrevious value: -"Variant axis of the options: 'size', 'colour' or 'mixed'."New value: +"Variant axis of the options: 'size', 'colour', 'mixed' or 'size_name'." - added
Output schema / properties / options / items / properties / donor_labelAdded value: +{ + "description": "Verbatim variant/product name; use as the choice label when present.", + "type": "string" +}
1 tool update
- Changed
resolve_product3 fields changed- added
Output schema / properties / axisAdded value: +{ + "description": "Variant axis of the options: 'size', 'colour' or 'mixed'.", + "type": "string" +} - added
Output schema / properties / optionsAdded value: +{ + "description": "Variants of ONE product. Ask the user to pick one, then use that variant's EAN.", + "items": { + "additionalProperties": false, + "properties": { + "colour": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "ean": { + "description": "EAN of this exact variant — use it with get_best_price / optimize_cart.", + "type": "string" + }, + "in_stock": { + "type": "boolean" + }, + "price": { + "type": "number" + }, + "size": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "ean", + "price", + "in_stock" + ], + "type": "object" + }, + "type": "array" +} - changed
Output schema / properties / status / descriptionPrevious value: -"'not_resolved' when the exact variant could not be determined."New value: +"'not_resolved' when the exact variant could not be determined; 'pick_variant' when labeled variant options are returned to choose from."
1 tool update
- Changed
resolve_product4 fields changed- added
Output schema / properties / family_urlAdded value: +{ + "description": "Branded /go/ link to the product family page so the user can pick the variant.", + "type": "string" +} - added
Output schema / properties / messageAdded value: +{ + "type": "string" +} - added
Output schema / properties / resolvedAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / statusAdded value: +{ + "description": "'not_resolved' when the exact variant could not be determined.", + "type": "string" +}
7 tool updates
- First observed
find_alternatives_for_product - First observed
get_best_price - First observed
get_shipping_breakdown - First observed
get_shop_info - First observed
optimize_cart - First observed
resolve_product - First observed
search_product
Related MCP Connectors
Live prices, deals & optimal multi-stop shopping routes for German grocery & drug stores.
Track prices & price history on any online shop, with alerts and an API
Deutscher Preisvergleich für E-Bikes – Bestpreis-Suche (read-only).
Compare prices across Swiss and European shops — barcode (GTIN) lookup and daily price history.
Related MCP Servers
- AlicenseBqualityAmaintenanceEnables users to search parts and products across German and global retailers, inspect item details, and manage per-store shopping carts with accurate shipping, pickup options, and free-shipping thresholds.11MIT

idealo MCP Serverofficial
AlicenseNot gradedqualityFmaintenanceEnables product search, price comparison, and price history analysis across 6 European marketplaces (DE, AT, GB, FR, IT, ES).21MIT- AlicenseNot gradedqualityBmaintenanceEnables AI to search Geizhals price-comparison data, including products, best prices, price history, ratings, categories, and deals.6MIT
- AlicenseNot gradedqualityBmaintenanceEnables real-time multi-merchant price comparison, coupon stacking, delivery-speed trade-offs, stock volatility tracking, and optimal purchase routing for cross-platform commerce inventory arbitrage.7MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.