Skip to main content
Glama

Bikefuchs — Bike Parts Price Comparison

Find Alternative Shops

find_alternatives_for_product
Read-onlyIdempotent

Given a product's EAN barcode, return every shop that carries it with prices and availability, sorted cheapest-first.

Input Schema

NameRequiredDescriptionDefault
eanYesEAN barcode (8–14 digits, e.g. '4524667749493')
countryNoCountry for pricing (DE or AT, default DE)DE

Output Schema

NameRequiredDescriptionDefault
eanYes
disclosureNo
shop_statesNo
alternativesYes
product_nameYes
pending_shopsNo
not_found_shopsNo
refresh_pendingNo
refresh_requiredNo
retry_after_secondsNo
cheapest_price_staleNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / not_found_shops
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / pending_shops
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / refresh_required
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "instruction": {
      +      "type": "string"
      +    },
      +    "retry_after_seconds": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "retry_after_seconds",
      +    "instruction"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / shop_states
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "affiliate_url": {
      +        "type": "string"
      +      },
      +      "price": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "shop": {
      +        "type": "string"
      +      },
      +      "shop_id": {
      +        "type": "string"
      +      },
      +      "state": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "shop",
      +      "shop_id",
      +      "state",
      +      "price"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  2. Changed5 schema fields changed
    • addedOutput schema / properties / alternatives / items / properties / price_as_of
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / alternatives / items / properties / price_stale
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / cheapest_price_stale
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / refresh_pending
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / retry_after_seconds
      Added value: +{
      +  "type": "number"
      +}
  3. Changed1 schema field changed
    • addedOutput schema / properties / disclosure
      Added value: +{
      +  "type": "string"
      +}
  4. First observed

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety bar is low. The description adds useful context: results are exhaustive ('every shop that carries it'), include prices and availability, and are ordered cheapest-first. It does not mention what happens with zero matches or how the country parameter affects availability versus pricing.

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?

One front-loaded sentence with no filler. The input, output contents, and sort order are all delivered compactly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations are rich, so the description needn't explain return values or safety. However, given six siblings with overlapping product/price purposes, the definition leaves the agent without routing guidance and never mentions the country parameter's effect on results.

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 coverage is 100%, so both ean and country are fully documented in the schema with pattern and enum constraints. The description only echoes the EAN input and says nothing about the country parameter or its default, so it adds little beyond structured data. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('return every shop that carries it with prices and availability') and clarifies the ambiguous tool name 'find_alternatives' as meaning alternative shops rather than alternative products. It does not explicitly distinguish itself from sibling get_best_price, which covers similar ground.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'every shop ... sorted cheapest-first' hints at a full-listing use case versus get_best_price's single-result case, but no when-to-use or when-not-to-use statement is given. The agent must infer the choice between this tool, get_best_price, and search_product from the phrasing alone.

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.