Servidor MCP

Bikefuchs — Bike Parts Price Comparison

com.bikefuchs/bikefuchs
Comercio y retail Público y accesible MCP 2025-11-25

Qué hace este MCP

Compares bicycle product prices and availability across German and Austrian shops, including shipping costs, direct purchase links, and cart optimization.

find_alternatives_for_product
Find Alternative Shops
Given a product's EAN barcode, return every shop that carries it with prices and availability, sorted cheapest-first.
Solo lectura Idempotente
Esquema de entrada
{'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)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ean', 'product_name', 'alternatives'], 'properties': {'ean': {'type': 'string'}, 'disclosure': {'type': 'string'}, 'alternatives': {'type': 'array', 'items': {'type': 'object', 'required': ['shop', 'price', 'currency', 'affiliate_url'], 'properties': {'shop': {'type': 'string'}, 'price': {'type': 'number'}, 'currency': {'type': 'string'}, 'availability': {'type': 'string'}, 'affiliate_url': {'type': 'string', 'description': 'Direct link to buy at this shop.'}}, 'additionalProperties': False}}, 'product_name': {'type': 'string'}}, 'additionalProperties': False}
get_best_price
Get Best Price by EAN
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.
Solo lectura Idempotente
Esquema de entrada
{'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.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ean', 'product_name', 'prices', 'cheapest_shop', 'cheapest_price'], 'properties': {'ean': {'type': 'string'}, 'prices': {'type': 'array', 'items': {'type': 'object', 'required': ['shop', 'price', 'currency', 'affiliate_url'], 'properties': {'shop': {'type': 'string'}, 'price': {'type': 'number'}, 'currency': {'type': 'string'}, 'availability': {'type': 'string'}, 'affiliate_url': {'type': 'string', 'description': 'Direct link to buy at this shop. Always show this URL to the user.'}}, 'additionalProperties': False}}, 'next_step': {'type': 'object', 'required': ['tool', 'hint'], 'properties': {'eans': {'type': 'array', 'items': {'type': 'string'}}, 'hint': {'type': 'string'}, 'tool': {'type': 'string'}}, 'additionalProperties': False}, 'disclosure': {'type': 'string'}, 'product_name': {'type': 'string'}, 'cheapest_shop': {'type': 'string'}, 'cheapest_price': {'type': 'number'}, 'reference_comparison': {'type': 'object', 'required': ['reference_shop', 'reference_price', 'saving'], 'properties': {'saving': {'type': 'number'}, 'reference_shop': {'type': 'string'}, 'saving_percent': {'type': 'number'}, 'reference_price': {'type': 'number'}}, 'additionalProperties': False}}, 'additionalProperties': False}
get_shipping_breakdown
Get Shipping Cost
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.
Solo lectura Idempotente
Esquema de entrada
{'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)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shop', 'country', 'cart_value', 'shipping_cost', 'currency'], 'properties': {'shop': {'type': 'string'}, 'country': {'type': 'string'}, 'currency': {'type': 'string'}, 'cart_value': {'type': 'number'}, 'shipping_cost': {'type': 'number'}, 'free_shipping_threshold': {'type': 'number'}}, 'additionalProperties': False}
get_shop_info
Get Shop Overview
Return an overview of the supported shops, including their shipping cost tiers, free-shipping thresholds, and supported countries (DE and AT).
Solo lectura Idempotente
Esquema de entrada
{'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)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shops'], 'properties': {'shops': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'country'], 'properties': {'name': {'type': 'string'}, 'country': {'type': 'string'}, 'categories': {'type': 'array', 'items': {'type': 'string'}}, 'shipping_at': {'type': 'string'}, 'shipping_de': {'type': 'string'}, 'free_shipping_threshold_at': {'type': 'number'}, 'free_shipping_threshold_de': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
optimize_cart
Optimize Shopping Cart
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.
Solo lectura Idempotente
Esquema de entrada
{'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)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['optimization'], 'properties': {'disclosure': {'type': 'string'}, 'optimization': {'type': 'object', 'required': ['total_cost', 'total_shipping', 'grand_total', 'currency', 'shops_used'], 'properties': {'currency': {'type': 'string'}, 'shops_used': {'type': 'array', 'items': {'type': 'object', 'required': ['shop', 'subtotal', 'shipping', 'items'], 'properties': {'shop': {'type': 'string'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'price', 'affiliate_url'], 'properties': {'ean': {'type': 'string'}, 'name': {'type': 'string'}, 'price': {'type': 'number'}, 'affiliate_url': {'type': 'string', 'description': 'Direct link to buy this item. Always show this URL to the user.'}}, 'additionalProperties': False}}, 'shipping': {'type': 'number'}, 'subtotal': {'type': 'number'}}, 'additionalProperties': False}}, 'total_cost': {'type': 'number'}, 'grand_total': {'type': 'number'}, 'total_shipping': {'type': 'number'}}, 'additionalProperties': False}, 'savings_info': {'type': 'string'}, 'stale_cache_warning': {'type': 'object', 'required': ['eans_to_refresh', 'suggestion'], 'properties': {'suggestion': {'type': 'string'}, 'eans_to_refresh': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}
resolve_product
Resolve Product URL
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.
Solo lectura Idempotente
Esquema de entrada
{'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)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['product_name', 'shop'], 'properties': {'ean': {'type': 'string'}, 'axis': {'type': 'string', 'description': "Variant axis of the options: 'size', 'colour', 'mixed', 'size_name' or 'name'."}, 'shop': {'type': 'string'}, 'brand': {'type': 'string'}, 'price': {'type': 'number'}, 'status': {'type': 'string', 'description': "'not_resolved' when the exact variant could not be determined; 'pick_variant' when labeled variant options are returned to choose from."}, 'message': {'type': 'string'}, 'options': {'type': 'array', 'items': {'type': 'object', 'required': ['ean'], 'properties': {'ean': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'EAN of this exact variant; null when the shop has no barcode for this size — then there is no price comparison, use product_url.'}, 'size': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'price': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'description': 'Price at the input shop; null when only a family-level page price exists.'}, 'colour': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'in_stock': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'description': 'Stock at the input shop; null when unknown per variant.'}, 'donor_label': {'type': 'string', 'description': 'Verbatim variant/product name; use as the choice label when present.'}, 'product_url': {'type': 'string', 'description': 'Direct /go/ link to this exact size at the input shop.'}, 'product_name': {'type': 'string', 'description': 'Verbatim product name for a flat name-axis option; use as the choice label when present.'}}, 'additionalProperties': False}, 'description': "Variants of ONE product. Ask the user to pick one, then use that variant's EAN."}, 'resolved': {'type': 'boolean'}, 'min_price': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'disclosure': {'type': 'string'}, 'family_url': {'type': 'string', 'description': 'Branded /go/ link to the product family page so the user can pick the variant.'}, 'product_name': {'type': 'string'}, 'affiliate_url': {'type': 'string', 'description': 'Affiliate link for this product.'}}, 'additionalProperties': False}
search_product
Search Bike Products
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.
Solo lectura Idempotente
Esquema de entrada
{'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 name, description, and specifications (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)'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query', 'results', 'total_results'], 'properties': {'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'ean', 'price', 'currency', 'shop', 'affiliate_url'], 'properties': {'ean': {'type': 'string'}, 'name': {'type': 'string'}, 'shop': {'type': 'string'}, 'brand': {'type': 'string'}, 'price': {'type': 'number'}, 'currency': {'type': 'string'}, 'availability': {'type': 'string'}, 'affiliate_url': {'type': 'string', 'description': 'Direct link to buy this product. Always show this URL to the user.'}}, 'additionalProperties': False}}, 'disclosure': {'type': 'string'}, 'next_steps': {'type': 'array', 'items': {'type': 'object', 'required': ['tool', 'hint'], 'properties': {'eans': {'type': 'array', 'items': {'type': 'string'}}, 'hint': {'type': 'string'}, 'tool': {'type': 'string'}}, 'additionalProperties': False}}, 'total_results': {'type': 'number'}}, 'additionalProperties': False}
Modificado
resolve_product
1 de October de 2026 a las 02:53
Modificado
resolve_product
21 de September de 2026 a las 02:59
Modificado
find_alternatives_for_product
21 de September de 2026 a las 02:59
Modificado
optimize_cart
21 de September de 2026 a las 02:59
Modificado
get_best_price
21 de September de 2026 a las 02:59
Modificado
search_product
21 de September de 2026 a las 02:59
Modificado
resolve_product
19 de September de 2026 a las 02:50
Modificado
find_alternatives_for_product
19 de September de 2026 a las 02:50
Modificado
get_shipping_breakdown
19 de September de 2026 a las 02:50
Modificado
get_shop_info
19 de September de 2026 a las 02:50
Modificado
optimize_cart
19 de September de 2026 a las 02:50
Modificado
get_best_price
19 de September de 2026 a las 02:50
Modificado
search_product
19 de September de 2026 a las 02:50
Añadido
resolve_product
17 de September de 2026 a las 12:34
Añadido
find_alternatives_for_product
17 de September de 2026 a las 12:34
Añadido
get_shipping_breakdown
17 de September de 2026 a las 12:34
Añadido
get_shop_info
17 de September de 2026 a las 12:34
Añadido
optimize_cart
17 de September de 2026 a las 12:34
Añadido
get_best_price
17 de September de 2026 a las 12:34
Añadido
search_product
17 de September de 2026 a las 12:34