Skip to main content
Glama

cars-data.com — Car Specs API

Search cars

search_cars
Read-onlyIdempotent

Free-text search across 103,372 vehicle variants, 120 brands, 20 languages. Returns candidate variant_ids to pass to get_specs/get_images/compare_variants. Each result carries generation_id and production years so same-named variants from different generations can be told apart. This answers from a fixed 40-car demo set. For the full 103,372-variant catalogue call search_catalogue — paid per call with x402 (USDC on Base), $0.005, no key, no account.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of results, 1–50. Default: 10.
queryYesFree text matched against brand, model and variant names, accent- and punctuation-insensitive — e.g. 'bmw 3 series' or 'tesla model s'.
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.

Output Schema

NameRequiredDescriptionDefault
dataYesMatches, best first; empty when nothing matches
full_catalogueNoPresent on demo answers: the paid tool that answers the same question over the full catalogue, with its price

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. Changed4 schema fields changed
    • addedInput schema / properties / limit / description
      Added value: +"Maximum number of results, 1–50. Default: 10."
    • 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 / query / description
      Previous value: -"e.g. 'bmw 3 series' or 'tesla model s'"New value: +"Free text matched against brand, model and variant names, accent- and punctuation-insensitive — e.g. 'bmw 3 series' or 'tesla model s'."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "properties": {
      +    "data": {
      +      "description": "Matches, best first; empty when nothing matches",
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "battery_kwh": {
      +            "anyOf": [
      +              {
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Traction battery capacity, kWh; null without one"
      +          },
      +          "body_type_en": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Body type, English label"
      +          },
      +          "brand": {
      +            "type": "string"
      +          },
      +          "display_name": {
      +            "description": "Full variant name",
      +            "type": "string"
      +          },
      +          "fuel_slug": {
      +            "description": "Fuel type, English label (e.g. Electric, Petrol)",
      +            "type": "string"
      +          },
      +          "generation": {
      +            "description": "Generation name",
      +            "type": "string"
      +          },
      +          "generation_id": {
      +            "description": "Opaque generation id — tells same-named variants of different generations apart",
      +            "type": "string"
      +          },
      +          "model": {
      +            "type": "string"
      +          },
      +          "model_id": {
      +            "description": "Opaque model id, e.g. m_1a2b3c4d. Pass it to list_generations.",
      +            "type": "string"
      +          },
      +          "power_hp": {
      +            "anyOf": [
      +              {
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Power, hp"
      +          },
      +          "price_new_eur": {
      +            "anyOf": [
      +              {
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "New list price, EUR"
      +          },
      +          "variant_id": {
      +            "description": "Opaque variant id, e.g. v_1a2b3c4d. Pass it to get_specs / get_images / compare_variants.",
      +            "type": "string"
      +          },
      +          "years": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Production years, e.g. '2019–2024'; an open range '2021–' is still in production"
      +          }
      +        },
      +        "required": [
      +          "variant_id",
      +          "generation_id",
      +          "model_id",
      +          "display_name",
      +          "brand",
      +          "model",
      +          "generation",
      +          "fuel_slug",
      +          "body_type_en",
      +          "years",
      +          "power_hp",
      +          "battery_kwh",
      +          "price_new_eur"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "data"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field 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"
      +]
  4. 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, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond that: the output is candidate variant_ids intended for get_specs/get_images/compare_variants, and each result carries generation_id plus production years. It also discloses the paid x402 pricing of the alternative, which is useful decision context.

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 capability and chaining purpose in the opening sentences. It is somewhat dense — the pricing detail for the sibling occupies the tail — but every sentence carries information and there is no filler.

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

Completeness4/5

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

For a read-only search tool with annotations covering safety and an output schema present, the description covers scope, downstream chaining, generation disambiguation, and the demo-vs-full-catalogue split. An agent has enough to call it correctly; only minor gaps remain.

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%, so all three parameters (query, limit, locale) are already fully documented in the schema, including the accent/punctuation-insensitive matching and the enum values. The description adds no syntax or format detail beyond what the schema provides, so the 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 (search) and resource (vehicle variants) with concrete scope: 103,372 variants, 120 brands, 20 languages. It explicitly distinguishes itself from the sibling search_catalogue, so an agent can tell them apart 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?

Gives explicit when-to-use guidance: it answers from a fixed 40-car demo set, and for the full catalogue the agent should call search_catalogue instead. The routing condition and the alternative are both named.

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.