Skip to main content
Glama

Bikefuchs — Bike Parts Price Comparison

Resolve Product URL

resolve_product
Read-onlyIdempotent

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.

Input Schema

NameRequiredDescriptionDefault
urlYesProduct page URL from a supported shop (e.g. 'https://www.rosebikes.de/p/<product-name>-<id>')
countryNoCountry for pricing (DE or AT, default DE)DE

Output Schema

NameRequiredDescriptionDefault
eanNo
axisNoVariant axis of the options: 'size', 'colour', 'mixed', 'size_name' or 'name'.
shopYes
brandNo
priceNo
statusNo'not_resolved' when the exact variant could not be determined; 'pick_variant' when labeled variant options are returned to choose from.
messageNo
optionsNoVariants of ONE product. Ask the user to pick one, then use that variant's EAN.
resolvedNo
min_priceNo
disclosureNo
family_urlNoBranded /go/ link to the product family page so the user can pick the variant.
product_nameYes
affiliate_urlNoAffiliate link for this product.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedOutput schema / properties / min_price
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / options / items / properties / ean / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / options / items / properties / ean / description
      Previous 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."
    • removedOutput schema / properties / options / items / properties / ean / type
      Removed value: -"string"
    • addedOutput schema / properties / options / items / properties / product_url
      Added value: +{
      +  "description": "Direct /go/ link to this exact size at the input shop.",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / disclosure
      Added value: +{
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / url / description
      Previous 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>')"
  4. Changed1 schema field changed
    • changedInput schema / properties / url / description
      Previous 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')"
  5. Changed2 schema fields changed
    • changedOutput schema / properties / axis / description
      Previous 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'."
    • addedOutput schema / properties / options / items / properties / product_name
      Added value: +{
      +  "description": "Verbatim product name for a flat name-axis option; use as the choice label when present.",
      +  "type": "string"
      +}
  6. Changed7 schema fields changed
    • addedOutput schema / properties / options / items / properties / in_stock / anyOf
      Added value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / options / items / properties / in_stock / description
      Added value: +"Stock at the input shop; null when unknown per variant."
    • removedOutput schema / properties / options / items / properties / in_stock / type
      Removed value: -"boolean"
    • addedOutput schema / properties / options / items / properties / price / anyOf
      Added value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / options / items / properties / price / description
      Added value: +"Price at the input shop; null when only a family-level page price exists."
    • removedOutput schema / properties / options / items / properties / price / type
      Removed value: -"number"
    • changedOutput schema / properties / options / items / required
      Previous value: -[
      -  "ean",
      -  "price",
      -  "in_stock"
      -]New value: +[
      +  "ean"
      +]
  7. Changed2 schema fields changed
    • changedOutput schema / properties / axis / description
      Previous value: -"Variant axis of the options: 'size', 'colour' or 'mixed'."New value: +"Variant axis of the options: 'size', 'colour', 'mixed' or 'size_name'."
    • addedOutput schema / properties / options / items / properties / donor_label
      Added value: +{
      +  "description": "Verbatim variant/product name; use as the choice label when present.",
      +  "type": "string"
      +}
  8. Changed3 schema fields changed
    • addedOutput schema / properties / axis
      Added value: +{
      +  "description": "Variant axis of the options: 'size', 'colour' or 'mixed'.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / options
      Added 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"
      +}
    • changedOutput schema / properties / status / description
      Previous 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."
  9. Changed4 schema fields changed
    • addedOutput schema / properties / family_url
      Added value: +{
      +  "description": "Branded /go/ link to the product family page so the user can pick the variant.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / message
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / resolved
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / status
      Added value: +{
      +  "description": "'not_resolved' when the exact variant could not be determined.",
      +  "type": "string"
      +}
  10. First observed

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.