Price comparison & cart optimizer for bike parts across German & Austrian shops
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's EAN barcode, return every shop that carries it with prices and availability, sorted cheapest-first.
EAN barcode (8–14 digits, e.g. '4524667749493')
Country for pricing (DE or AT, default DE)
Tool list last changed Oct 25, 2026.
Given a product's EAN barcode, return every shop that carries it with prices and availability, sorted cheapest-first.
| Argument | Type | Description |
|---|---|---|
| ean* | string | EAN barcode (8–14 digits, e.g. '4524667749493') |
| country | string | Country for pricing (DE or AT, default DE) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"ean"
],
"properties": {
"ean": {
"type": "string",
"pattern": "^\\d{8,14}$",
"description": "EAN barcode (8–14 digits, e.g. '4524667749493')"
},
"country": {
"enum": [
"DE",
"AT"
],
"type": "string",
"default": "DE",
"description": "Country for pricing (DE or AT, default DE)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| ean* | string | EAN barcode (8–14 digits, e.g. '4524667749493') |
| country | string | Country for pricing (DE or AT, default DE) |
| reference_shop | string | Shop id or display name to compare against. When set, the response states how much cheaper the cheapest shop is vs. this shop. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"ean"
],
"properties": {
"ean": {
"type": "string",
"pattern": "^\\d{8,14}$",
"description": "EAN barcode (8–14 digits, e.g. '4524667749493')"
},
"country": {
"enum": [
"DE",
"AT"
],
"type": "string",
"default": "DE",
"description": "Country for pricing (DE or AT, default DE)"
},
"reference_shop": {
"type": "string",
"description": "Shop id or display name to compare against. When set, the response states how much cheaper the cheapest shop is vs. this shop."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| shop* | string | Shop name or ID (e.g. 'rosebikes', 'boc24', 'bike24', 'fahrradteile', 'Rose Bikes') |
| country* | string | Country (DE or AT) |
| cart_value* | number | Total cart value in EUR (e.g. 49.99) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"shop",
"country",
"cart_value"
],
"properties": {
"shop": {
"type": "string",
"description": "Shop name or ID (e.g. 'rosebikes', 'boc24', 'bike24', 'fahrradteile', 'Rose Bikes')"
},
"country": {
"enum": [
"DE",
"AT"
],
"type": "string",
"description": "Country (DE or AT)"
},
"cart_value": {
"type": "number",
"minimum": 0,
"description": "Total cart value in EUR (e.g. 49.99)"
}
}
}Return an overview of the supported shops, including their shipping cost tiers, free-shipping thresholds, and supported countries (DE and AT).
| Argument | Type | Description |
|---|---|---|
| country | string | Filter output to a specific country (optional — omit for both DE and AT) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"country": {
"enum": [
"DE",
"AT"
],
"type": "string",
"description": "Filter output to a specific country (optional — omit for both DE and AT)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| eans* | array | Array of EAN barcodes (8–14 digit numbers as strings, e.g. '4524667749493'). NOT URLs. |
| country | string | Country for pricing and shipping (DE or AT, default DE) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"eans"
],
"properties": {
"eans": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{8,14}$"
},
"maxItems": 20,
"minItems": 1,
"description": "Array of EAN barcodes (8–14 digit numbers as strings, e.g. '4524667749493'). NOT URLs."
},
"country": {
"enum": [
"DE",
"AT"
],
"type": "string",
"default": "DE",
"description": "Country for pricing and shipping (DE or AT, default DE)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| url* | string | Product page URL from a supported shop (e.g. 'https://www.rosebikes.de/p/<product-name>-<id>') |
| country | string | Country for pricing (DE or AT, default DE) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Product page URL from a supported shop (e.g. 'https://www.rosebikes.de/p/<product-name>-<id>')"
},
"country": {
"enum": [
"DE",
"AT"
],
"type": "string",
"default": "DE",
"description": "Country for pricing (DE or AT, default DE)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| q* | string | Search keyword, min 2 chars. Multi-word queries use AND logic across product names (e.g. 'shimano xt bremsbeläge') |
| shop | string | Restrict results to a single supported shop (by id or name) |
| country | string | Country for pricing (DE or AT, default DE) |
| category | string | Filter by merchant category (partial match, e.g. 'Fahrräder' or 'Bremsen') |
| in_stock | boolean | Only return in-stock products (default true) |
| max_price | number | Upper price bound in EUR (inclusive) |
| max_results | integer | Max results (1–20, default 10) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"minLength": 2,
"description": "Search keyword, min 2 chars. Multi-word queries use AND logic across product names (e.g. 'shimano xt bremsbeläge')"
},
"shop": {
"type": "string",
"description": "Restrict results to a single supported shop (by id or name)"
},
"country": {
"enum": [
"DE",
"AT"
],
"type": "string",
"default": "DE",
"description": "Country for pricing (DE or AT, default DE)"
},
"category": {
"type": "string",
"description": "Filter by merchant category (partial match, e.g. 'Fahrräder' or 'Bremsen')"
},
"in_stock": {
"type": "boolean",
"default": true,
"description": "Only return in-stock products (default true)"
},
"max_price": {
"type": "number",
"description": "Upper price bound in EUR (inclusive)",
"exclusiveMinimum": 0
},
"max_results": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1,
"description": "Max results (1–20, default 10)"
}
}
}