Skip to main content
Glama

cars-data.com — Car Specs API

Get variant specs

get_specs
Read-onlyIdempotent

Full localized specs for one vehicle variant, in any of 20 languages — 232 spec types covering engine & fuel, performance, EV/hybrid, safety, comfort & interior, exterior, chassis, dimensions & weights, consumption (WLTP/NEDC). Each spec carries a confidence score; the response carries last_synced_at — surface both so you don't overstate certainty. This answers from a fixed 40-car demo set. For the full 103,372-variant catalogue call get_specs_full — paid per call with x402 (USDC on Base), $0.05, no key, no account.

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": {
      "variant_id": "<variant_id>"
    },
    "name": "get_specs"
  }
}

Input Schema

NameRequiredDescriptionDefault
localeNoResponse language, one of the 20 published languages (en, ro, fr, de, es, it, sr, hr, pt, pl, cs, sk, hu, no, sv, el, bg, da, ar, tr). Spec labels and enum values come back translated. Default: en.
variant_idYesOpaque variant id from search_cars or filter_cars, e.g. v_1a2b3c4d

Output Schema

NameRequiredDescriptionDefault
specsYesEvery spec the variant carries, keyed by spec key (e.g. range_wltp_km)
localeYesLanguage the response is in
variant_idYesOpaque variant id, e.g. v_1a2b3c4d. Pass it to get_specs / get_images / compare_variants.
full_catalogueNoPresent on demo answers: the paid tool that answers the same question over the full catalogue, with its price
last_synced_atYesISO-8601 time the data was last synced — surface it with the specs

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / full_catalogue
      Added value: +{
      +  "description": "Present on demo answers: the paid tool that answers the same question over the full catalogue, with its price",
      +  "type": "string"
      +}
  2. Changed3 schema fields changed
    • addedInput schema / properties / locale / description
      Added value: +"Response language, one of the 20 published languages (en, ro, fr, de, es, it, sr, hr, pt, pl, cs, sk, hu, no, sv, el, bg, da, ar, tr). Spec labels and enum values come back translated. Default: en."
    • changedInput schema / properties / variant_id / description
      Previous value: -"opaque variant id from search_cars or filter_cars, e.g. v_1a2b3c4d"New value: +"Opaque variant id from search_cars or filter_cars, e.g. v_1a2b3c4d"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "properties": {
      +    "last_synced_at": {
      +      "description": "ISO-8601 time the data was last synced — surface it with the specs",
      +      "type": "string"
      +    },
      +    "locale": {
      +      "description": "Language the response is in",
      +      "enum": [
      +        "en",
      +        "ro",
      +        "fr",
      +        "de",
      +        "es",
      +        "it",
      +        "sr",
      +        "hr",
      +        "pt",
      +        "pl",
      +        "cs",
      +        "sk",
      +        "hu",
      +        "no",
      +        "sv",
      +        "el",
      +        "bg",
      +        "da",
      +        "ar",
      +        "tr"
      +      ],
      +      "type": "string"
      +    },
      +    "specs": {
      +      "additionalProperties": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "confidence": {
      +            "anyOf": [
      +              {
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Confidence score 0–1 for this value; null when not scored"
      +          },
      +          "label": {
      +            "description": "Spec name in the requested language",
      +            "type": "string"
      +          },
      +          "unit": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Unit of the value (km, kW, l/100km, …); null when unitless"
      +          },
      +          "value": {
      +            "description": "The value: a string, number or boolean, already localized. Absent when the source holds no value"
      +          }
      +        },
      +        "required": [
      +          "label",
      +          "unit",
      +          "confidence"
      +        ],
      +        "type": "object"
      +      },
      +      "description": "Every spec the variant carries, keyed by spec key (e.g. range_wltp_km)",
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "variant_id": {
      +      "description": "Opaque variant id, e.g. v_1a2b3c4d. Pass it to get_specs / get_images / compare_variants.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "variant_id",
      +    "locale",
      +    "last_synced_at",
      +    "specs"
      +  ],
      +  "type": "object"
      +}
  3. Changed5 schema fields changed
    • changedInput schema / properties / locale / enum
      Previous value: -[
      -  "en",
      -  "ro",
      -  "fr",
      -  "de",
      -  "es",
      -  "it",
      -  "sr",
      -  "hr",
      -  "pt",
      -  "pl",
      -  "cs",
      -  "sk",
      -  "hu",
      -  "no",
      -  "sv",
      -  "el",
      -  "bg",
      -  "da",
      -  "ar"
      -]New value: +[
      +  "en",
      +  "ro",
      +  "fr",
      +  "de",
      +  "es",
      +  "it",
      +  "sr",
      +  "hr",
      +  "pt",
      +  "pl",
      +  "cs",
      +  "sk",
      +  "hu",
      +  "no",
      +  "sv",
      +  "el",
      +  "bg",
      +  "da",
      +  "ar",
      +  "tr"
      +]
    • changedInput schema / properties / variant_id / description
      Previous value: -"from search_cars or filter_cars"New value: +"opaque variant id from search_cars or filter_cars, e.g. v_1a2b3c4d"
    • removedInput schema / properties / variant_id / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / variant_id / minimum
      Removed value: --9007199254740991
    • changedInput schema / properties / variant_id / type
      Previous value: -"integer"New value: +"string"
  4. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/closed-world, but the description adds real behavioral context beyond them: each spec carries a confidence score, the response carries last_synced_at, and the caller is told to surface both to avoid overstating certainty. The demo-set limitation is also disclosed. No rate-limit or error-mode detail, so not a full 5.

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?

Front-loaded with the core purpose and scope, then the sibling routing. The pricing/key details in the last sentence are useful but slightly over-detailed for a description whose job is selection, not billing; still, every sentence carries information.

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?

With an output schema present, return values needn't be explained, yet the description still flags the confidence/last_synced_at fields that matter for interpretation. Annotations cover safety, schema covers parameters, and the demo-vs-paid boundary is disclosed — nothing needed to call this correctly is missing.

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%: both variant_id (opaque id from search_cars/filter_cars) and locale (20-language enum, labels translated, default en) are fully documented in the schema. The description only restates the language count and 'one vehicle variant', so it adds little beyond the structured fields — baseline 3.

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?

Specific verb+resource: 'Full localized specs for one vehicle variant' with concrete scope (20 languages, 232 spec types, named categories). It explicitly names the sibling it is not (get_specs_full) and the demo-set boundary, so an agent can distinguish it from get_specs_full without opening either schema.

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

Usage Guidelines5/5

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

Routes clearly: this tool for the fixed 40-car demo set, get_specs_full for the full 103,372-variant catalogue, including the paid/x402 condition ($0.05, no key). The selection condition between the two tools is stated explicitly rather than inferred.

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.