Skip to main content
Glama

cyclesite-mcp-server

Get valuation

get_valuation
Read-onlyIdempotent

What a used UK bike is worth right now, Cyclesite's flagship tool. Returns median, range, a measured price-by-model-year curve, confidence level, and comparable active listings. When year is given, the answer is resolved against that model year's own measured median and confidence interval, instead of the all-years median. Sourced from real UK sold prices, refreshed nightly. Example: 'what's a 2022 Trek Domane SL 6 worth?'.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "brand": "<brand>",
      "model": "<model>"
    },
    "name": "get_valuation"
  }
}

Input Schema

NameRequiredDescriptionDefault
yearNoModel year, e.g. 2022. Optional. When given, the response carries a `forYear` block resolving the valuation to that year, or saying in words why it could not be.
brandYes
modelYes

Output Schema

NameRequiredDescriptionDefault
urlNo
basisNo
forYearNo
summaryYesOne-sentence summary safe to quote verbatim.
retentionNo
confidenceNo
priceTrendNo
sampleSizeNo
attributionYesCitation string for the data in this result.
maxPriceGbpNoPrice in GBP.
minPriceGbpNoPrice in GBP.
citationUrlsNo
avgDaysToSellNo
activeListingsNo
medianPriceGbpNoPrice in GBP.
priceByModelYearNo
conditionBreakdownNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / attribution / description
      Previous value: -"Citation string — include verbatim when surfacing data."New value: +"Citation string for the data in this result."
  2. Changed4 schema fields changed
    • addedInput schema / properties / year
      Added value: +{
      +  "description": "Model year, e.g. 2022. Optional. When given, the response carries a `forYear` block resolving the valuation to that year, or saying in words why it could not be.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / forYear
      Added value: +{
      +  "properties": {
      +    "available": {
      +      "type": "boolean"
      +    },
      +    "hi": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "lo": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "medianPriceGbp": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "sampleSize": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "year": {
      +      "type": "number"
      +    },
      +    "yearsCovered": {
      +      "items": {
      +        "type": "number"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / priceByModelYear / items / properties / hi
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / priceByModelYear / items / properties / lo
      Added value: +{
      +  "type": "number"
      +}
  3. Changed6 schema fields changed
    • addedOutput schema / properties / activeListings
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / basis
      Added value: +{
      +  "enum": [
      +    "uk_listings_asking",
      +    "cyclesite_sold"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / citationUrls
      Added value: +{
      +  "additionalProperties": {
      +    "format": "uri",
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / priceByModelYear
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "median": {
      +        "type": "number"
      +      },
      +      "n": {
      +        "type": "number"
      +      },
      +      "year": {
      +        "type": "number"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / retention
      Added value: +{
      +  "properties": {
      +    "after3y": {
      +      "type": "number"
      +    },
      +    "after5y": {
      +      "type": "number"
      +    },
      +    "anchorYear": {
      +      "type": "number"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / sampleSize
      Added value: +{
      +  "type": "number"
      +}
  4. Changed3 schema fields changed
    • removedOutput schema / properties / activeListingsCount
      Removed value: -{
      -  "type": "number"
      -}
    • removedOutput schema / properties / conditionBreakdown / additionalProperties / properties / count
      Removed value: -{
      -  "type": "number"
      -}
    • removedOutput schema / properties / recentSalesCount
      Removed value: -{
      -  "type": "number"
      -}
  5. First observed

TDQS

A3.8/5.0
Behavior4/5

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

The annotations handle the safety profile (read-only, idempotent, closed-world), so the description only needs to add context — and it does, disclosing provenance ('real UK sold prices') and freshness ('refreshed nightly'), plus the fallback behavior when a year cannot be resolved. Return format is partly covered but the 'could not be resolved' wording versus a real error is not clarified.

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?

The core answer is front-loaded in the first sentence and the example at the end anchors usage. Some slack exists — 'Cyclesite's flagship tool' is marketing filler and the year behavior is stated twice, once in prose and once in the schema.

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?

For a simple three-parameter read tool with an output schema and full annotations, the description covers purpose, freshness, and year handling adequately. The remaining material gap is how to construct `brand` and `model` strings correctly, which is the most likely failure mode given only 33% schema coverage.

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 only 33%: `year` is well documented in the schema and the description largely restates that behavior, while `brand` and `model` are bare strings with no format or matching rules anywhere. The description does not compensate for that gap — an agent still does not know whether brand must match list_brands output exactly.

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?

The description states a concrete verb and resource — returning what a used UK bike is worth — and enumerates the payload (median, range, year curve, confidence, comparables). That scope implicitly separates it from siblings like get_depreciation and get_price_trends, though no sibling is named explicitly.

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 closing example ('what's a 2022 Trek Domane SL 6 worth?') gives a clear usage context, and the `year` paragraph explains when to supply a year versus omitting it. There is no explicit when-not-to-use guidance or naming of nearby alternatives such as suggest_listing_price.

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.

Resources