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

TableJSON 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

TableJSON 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
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. Changed1 schema field changed
    • addedOutput schema / properties / disclosure
      Added value: +{
      +  "type": "string"
      +}
  2. 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>')"
  3. 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')"
  4. 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"
      +}
  5. 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"
      +]
  6. 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"
      +}
  7. 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."
  8. 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"
      +}
  9. First observed

TDQS

A4.3/5.0
Behavior4/5

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 covered. The description adds valuable behavioral context beyond annotations: the multi-variant candidate list and the instruction to ask the user for a variant selection. It also notes the limitation to 'supported shops'. This adds meaningful transparency without contradicting any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary action and output, then adding essential multi-variant handling. Every clause contributes to understanding the tool's behavior or downstream use. No redundant or filler phrases. It is concise yet comprehensive.

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?

Given the tool's moderate complexity (URL resolution with possible variants), the description covers all necessary operational aspects: inputs, outputs, variant handling, user interaction, and downstream tool integration. An output schema exists (per context signals), so the description need not enumerate return values. It is complete for an agent to call the tool correctly.

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?

The input schema provides full descriptions for both parameters (url and country), including an example and enum/default values, so schema coverage is 100%. The tool description does not add additional parameter-specific meaning beyond what the schema already states. It mentions the overall purpose but not parameter-specific nuances, so the baseline of 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?

The description states a specific verb ("Turn"), a clear resource (product page URL), and a precise output (structured product data with EAN, price, stock status, purchase link). It also names downstream tools (get_best_price, optimize_cart) and distinguishes multi-variant behavior, making it unambiguous and distinct from siblings like search_product.

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?

The description clearly implies the workflow: resolve a URL to get an EAN, then use that EAN with get_best_price or optimize_cart. It also gives explicit guidance for multi-variant families (ask user to pick a variant). However, it does not explicitly state when not to use this tool or name alternatives for cases where a URL is unavailable, so it stops short of full exclusionary guidance.

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.