cars-data.com — Car Specs API
Server Details
Search, compare & filter 103,372 car variants — 224 specs, 20 languages. Free demo, no key; x402.
- Status
- Healthy
- Uptime
- 95.1% over 60 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- mariusmmmmm/car-specs-api
- GitHub Stars
- 0
- Server Listing
- car-specs-api
TDQS
Scored across 6 tools
search_cars (free-text) and filter_cars (structured) both return candidate vehicles, which could cause initial selection confusion, but their descriptions clearly delineate the retrieval style. get_specs vs compare_variants is cleanly split by single vs multi-variant, and get_images/list_generations are unambiguous.
All six tools follow a strict verb_noun snake_case pattern (compare_variants, filter_cars, get_images, get_specs, list_generations, search_cars). No casing or verb-style deviations.
Six tools is well-scoped for a car-specs API, with each tool covering a distinct access path (search, filter, detail, compare, images, generations). Nothing feels redundant or padded.
The surface covers discovery, filtering, detailed specs, imagery, generational history, and comparison — a strong core lifecycle. Minor gaps like a brand/model enumeration endpoint or bulk variant lookup are absent but workable via search/filter.
Available Tools
10 toolscompare_fullCompare any variants (paid)ARead-onlyInspect
Side-by-side localized specs for 2-4 variants from ANYWHERE in the 103,372-variant catalogue, in 20 languages. Paid per call with x402 (USDC) — $0.1 flat for the call. Not charged when an id is unknown.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 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. | |
| variant_ids | Yes | 2 to 4 opaque variant ids from search_catalogue or filter_catalogue, e.g. ['v_1a2b3c4d', 'v_5e6f7a8b'] |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | One entry per requested variant, in the order asked |
| locale | Yes | Language the response is in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=true, openWorldHint=false), and the description adds genuinely useful non-schema context: this is a paid x402/USDC call at a flat $0.1, and unknown ids incur no charge. Coverage breadth ('ANYWHERE in the 103,372-variant catalogue') is also disclosed. It does not mention rate limits or cost scaling beyond the flat fee.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences: capability and scope first, cost model second. Every clause carries information (breadth, count range, language count, price, refund-on-unknown-id) and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary. Between the description (scope, batch size, languages, cost) and the schema (id format, bounds, locale enum), an agent has everything needed to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (variant_ids and the 20-value locale enum) are already fully documented, including the 2-4 bounds and the description of locale behavior. The description only echoes the 2-4 range and '20 languages', adding no syntax or semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — side-by-side localized specs for 2-4 variants — plus scope (anywhere in the 103,372-variant catalogue) and language coverage. However it never names or contrasts with the sibling compare_variants, so an agent must infer the difference from the 'full'/'anywhere' framing alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The pricing clause ('paid per call... not charged when an id is unknown') implicitly frames when this is worth calling, and the 2-4 variant limit signals batch use. But there is no explicit when-to-use versus compare_variants or when-not-to-use guidance, leaving the sibling choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_variantsCompare variantsRead-onlyIdempotentInspect
Side-by-side localized specs for 2-4 vehicle variants. This answers from a fixed 40-car demo set. For the full 103,372-variant catalogue call compare_full — paid per call with x402 (USDC on Base), $0.1, no key, no account.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 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. | |
| variant_ids | Yes | 2 to 4 opaque variant ids from search_cars or filter_cars, e.g. ['v_1a2b3c4d', 'v_5e6f7a8b'] |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | One entry per requested variant, in the order asked |
| locale | Yes | Language the response is in |
| full_catalogue | No | Present on demo answers: the paid tool that answers the same question over the full catalogue, with its price |
filter_carsFilter carsRead-onlyIdempotentInspect
Structured catalog filter: fuel type, body type, drive layout, power/price range, model year, EV-only. This answers from a fixed 40-car demo set. For the full 103,372-variant catalogue call filter_catalogue — paid per call with x402 (USDC on Base), $0.005, no key, no account.
| Name | Required | Description | Default |
|---|---|---|---|
| ev | No | true = only variants with a traction battery (battery_kwh set: electric and plug-in). Default: false | |
| body | No | Body type, case-insensitive substring of the English label — e.g. suv, sedan, hatchback | |
| fuel | No | Fuel type, case-insensitive substring of the English label — e.g. petrol, diesel, electric, hybrid | |
| year | No | Production year the generation covers, e.g. 2022. Not applied by the demo set — reported back in ignored_filters. | |
| drive | No | Drive layout, substring match — e.g. 'front', 'rear', 'all'. Not applied by the demo set — reported back in ignored_filters. | |
| limit | No | Maximum number of results, 1–50. Default: 10. | |
| locale | No | 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. | |
| power_max | No | Maximum power, hp | |
| power_min | No | Minimum power, hp | |
| price_max | No | Maximum new list price, EUR |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Matches; empty when nothing matches |
| demo | No | true when answered from the demo set |
| full_catalogue | No | Present on demo answers: the paid tool that answers the same question over the full catalogue, with its price |
| ignored_filters | No | Filters you passed that the demo set cannot apply — results are NOT narrowed by them |
filter_catalogueFilter the full catalogue (paid)ARead-onlyInspect
Structured filter over all 103,372 variants (not only the 40-car demo): fuel, body, drive layout, power/price range, model year, EV-only. Keyset-paginated; returns opaque variant_ids for get_specs_full / compare_full. Paid per call with x402 (USDC) — $0.005.
| Name | Required | Description | Default |
|---|---|---|---|
| ev | No | true = battery-electric variants only. Default: false | |
| body | No | Body type slug, e.g. suv, hatchback, sedan | |
| fuel | No | Fuel slug, e.g. electric, petrol, diesel, hybrid | |
| year | No | Production year the generation covers, e.g. 2022 | |
| drive | No | Drive layout, substring match — front, rear, all | |
| limit | No | Page size, 1–50. Default: 24. | |
| cursor | No | next_cursor of the previous page, to continue it | |
| locale | No | 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. | |
| power_max | No | Maximum power, hp | |
| power_min | No | Minimum power, hp | |
| price_max | No | Maximum new list price, EUR |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Matches in catalogue order; empty when nothing matches |
| next_cursor | Yes | Opaque cursor for the next page, or null on the last one. Pass it as `cursor`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover only readOnly/openWorld, but the description adds several behaviors they don't: a per-call cost of $0.005 billed via x402 in USDC, keyset pagination semantics, and the fact that returned variant_ids are opaque and require a follow-up call. The payment and opaque-id details are exactly the context an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with scope and facet list, then pagination/return, then cost. Every clause carries information; nothing is restated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-param, fully documented, output-schema-backed tool, the description supplies the missing pieces: scope (full catalogue vs demo), cost model, pagination behavior, and how the return value is consumed. Nothing needed to call it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 11 parameters, so the baseline is 3. The description enumerates the filter facets (fuel, body, drive, power/price range, year, EV-only) and mentions keyset pagination, which lightly echoes cursor/limit but adds no syntax or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Structured filter over all 103,372 variants') and immediately scopes it against siblings by contrasting with the '40-car demo' (i.e. filter_cars). An agent can tell this apart from search_cars/search_catalogue/filter_cars without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the correct follow-up tools (get_specs_full / compare_full) and the output it must feed them, which is real routing guidance. It implies but does not explicitly state the when-not condition versus filter_cars or search_catalogue, so the alternative-selection rule is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_imagesGet variant imagesRead-onlyIdempotentInspect
Image URLs (own CDN, no attribution burden) for a vehicle variant. This answers from a fixed 40-car demo set. Full catalogue: pay per request with x402, no key (GET /v1/variants/{id}/specs $0.05, /v1/search $0.005, /v1/variants $0.005, /v1/compare $0.1, USDC on Base); the Apify Actor, billed per event by Apify (https://apify.com/carsdatacom/car-specs-api); or the whole database as a licensed export (https://cars-data.com/en/api).
| Name | Required | Description | Default |
|---|---|---|---|
| variant_id | Yes | Opaque variant id from search_cars or filter_cars, e.g. v_1a2b3c4d |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Images of the variant; empty when it has none |
get_specsGet variant specsRead-onlyIdempotentInspect
Full localized specs for one vehicle variant, in any of 20 languages — 224 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.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 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. | |
| variant_id | Yes | Opaque variant id from search_cars or filter_cars, e.g. v_1a2b3c4d |
Output Schema
| Name | Required | Description |
|---|---|---|
| specs | Yes | Every spec the variant carries, keyed by spec key (e.g. range_wltp_km) |
| locale | Yes | Language the response is in |
| variant_id | Yes | Opaque variant id, e.g. v_1a2b3c4d. Pass it to get_specs / get_images / compare_variants. |
| full_catalogue | No | Present on demo answers: the paid tool that answers the same question over the full catalogue, with its price |
| last_synced_at | Yes | ISO-8601 time the data was last synced — surface it with the specs |
get_specs_fullGet full specs, any variant (paid)ARead-onlyInspect
Full localized specs for ANY variant in the catalogue, in 20 languages. Paid per call with x402 (USDC) — $0.05. Not charged when the id is unknown.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 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. | |
| variant_id | Yes | Opaque variant id from search_catalogue, e.g. v_1a2b3c4d |
Output Schema
| Name | Required | Description |
|---|---|---|
| specs | Yes | Every spec the variant carries, keyed by spec key (e.g. range_wltp_km) |
| locale | Yes | Language the response is in |
| year_to | Yes | Last production year; 0 or null while still in production |
| power_hp | Yes | Power, hp |
| torque_nm | Yes | Torque, Nm |
| year_from | Yes | First production year |
| brand_slug | Yes | |
| model_slug | Yes | |
| variant_id | Yes | Opaque variant id, e.g. v_1a2b3c4d. Pass it to get_specs / get_images / compare_variants. |
| battery_kwh | Yes | Traction battery capacity, kWh |
| display_name | Yes | Full variant name |
| accel_0_100_s | Yes | 0–100 km/h, seconds |
| price_new_eur | Yes | New list price, EUR |
| top_speed_kmh | Yes | Top speed, km/h |
| last_synced_at | Yes | ISO-8601 time the data was last synced — surface it with the specs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, so the description earns credit by adding real behavioral context: paid per call via x402 in USDC at $0.05, and crucially that unknown variant ids are not charged. The auth/payment mechanism and failure-cost behavior are genuinely beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with zero filler; the coverage scope, language count, cost, and billing exception are all front-loaded in order of importance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and annotations cover the safety profile. The description supplies pricing and the no-charge-on-unknown-id rule, leaving only the comparison with the sibling get_specs unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (variant_id origin, locale enum) are already fully documented in the schema, including the 20-language list. The description's '20 languages' restates schema content rather than adding format or defaulting detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get full localized specs for any catalogue variant) plus scope (20 languages), which an agent can act on directly. It does not explicitly distinguish itself from the sibling get_specs, so the 'full' vs. 'non-full' boundary is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The paid-per-call disclosure implies a cost tradeoff an agent should weigh, and 'ANY variant' hints at broader coverage than get_specs, but the description never states when to pick this over the free/cheaper sibling. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_generationsList generations of a modelRead-onlyIdempotentInspect
Generations/facelifts of a model, with production years. This answers from a fixed 40-car demo set. Full catalogue: pay per request with x402, no key (GET /v1/variants/{id}/specs $0.05, /v1/search $0.005, /v1/variants $0.005, /v1/compare $0.1, USDC on Base); the Apify Actor, billed per event by Apify (https://apify.com/carsdatacom/car-specs-api); or the whole database as a licensed export (https://cars-data.com/en/api).
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 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. | |
| model_id | Yes | Opaque model id from a search_cars or filter_cars result, e.g. m_1a2b3c4d |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Generations of the model |
search_carsSearch carsRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results, 1–50. Default: 10. | |
| query | Yes | Free text matched against brand, model and variant names, accent- and punctuation-insensitive — e.g. 'bmw 3 series' or 'tesla model s'. | |
| locale | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Matches, best first; empty when nothing matches |
| full_catalogue | No | Present on demo answers: the paid tool that answers the same question over the full catalogue, with its price |
search_catalogueSearch the full catalogue (paid)ARead-onlyInspect
Search all 103,372 variants (not only the 40-car demo). Returns opaque variant_ids for get_specs_full. Paid per call with x402 (USDC) — $0.005.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results, 1–50. Default: 10. | |
| query | Yes | Free text matched against brand, model and variant names, accent- and punctuation-insensitive — e.g. 'bmw 3 series' or 'tesla model s'. | |
| locale | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Matches, most powerful first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnlyHint, openWorldHint=false), but the description adds important context annotations cannot carry: the per-call cost, the x402/USDC payment mechanism, and the fact that returned variant_ids are opaque and must be resolved via get_specs_full. That cost disclosure is material for an agent deciding whether to call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, and the differentiating scope plus the payment caveat are front-loaded. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description correctly supplies cost, scale, and the follow-up tool. It is nearly complete; the only gap is explicit routing guidance among the sibling search/filter tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so query, limit, and locale are fully documented in the schema itself, including examples and the locale enum. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search the catalogue) with a precise scope: all 103,372 variants rather than the 40-car demo. The scope distinction is useful, but no sibling is named, so the agent must infer that the 'demo' refers to search_cars and cannot tell how this differs from filter_cars.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies when to prefer this tool (full coverage vs. the demo) and points forward to get_specs_full for resolving the returned IDs, which is genuinely helpful routing. However, it gives no explicit when-not guidance against search_cars or filter_cars, and no note that this call is paid while others may be free.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- Added
compare_full - Changed
compare_variants1 field changed- added
Output schema / properties / full_catalogueAdded value: +{ + "description": "Present on demo answers: the paid tool that answers the same question over the full catalogue, with its price", + "type": "string" +}
- Changed
filter_cars1 field changed- added
Output schema / properties / full_catalogueAdded value: +{ + "description": "Present on demo answers: the paid tool that answers the same question over the full catalogue, with its price", + "type": "string" +}
- Added
filter_catalogue - Changed
get_specs1 field changed- added
Output schema / properties / full_catalogueAdded value: +{ + "description": "Present on demo answers: the paid tool that answers the same question over the full catalogue, with its price", + "type": "string" +}
- Changed
search_cars1 field changed- added
Output schema / properties / full_catalogueAdded value: +{ + "description": "Present on demo answers: the paid tool that answers the same question over the full catalogue, with its price", + "type": "string" +}
8 tool updates
- Changed
compare_variants3 fields changed- added
Input schema / properties / locale / descriptionAdded 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." - changed
Input schema / properties / variant_ids / descriptionPrevious value: -"opaque variant ids from search_cars"New value: +"2 to 4 opaque variant ids from search_cars or filter_cars, e.g. ['v_1a2b3c4d', 'v_5e6f7a8b']" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "data": { + "description": "One entry per requested variant, in the order asked", + "items": { + "additionalProperties": {}, + "properties": { + "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", + "specs" + ], + "type": "object" + }, + "type": "array" + }, + "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" + } + }, + "required": [ + "locale", + "data" + ], + "type": "object" +}
- Changed
filter_cars11 fields changed- changed
Input schema / properties / body / descriptionPrevious value: -"body_slug, e.g. suv, sedan, hatchback"New value: +"Body type, case-insensitive substring of the English label — e.g. suv, sedan, hatchback" - changed
Input schema / properties / drive / descriptionPrevious value: -"substring match, e.g. 'front', 'rear', 'all'"New value: +"Drive layout, substring match — e.g. 'front', 'rear', 'all'. Not applied by the demo set — reported back in ignored_filters." - added
Input schema / properties / ev / descriptionAdded value: +"true = only variants with a traction battery (battery_kwh set: electric and plug-in). Default: false" - changed
Input schema / properties / fuel / descriptionPrevious value: -"e.g. petrol, diesel, electric, hybrid"New value: +"Fuel type, case-insensitive substring of the English label — e.g. petrol, diesel, electric, hybrid" - added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of results, 1–50. Default: 10." - added
Input schema / properties / locale / descriptionAdded 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." - added
Input schema / properties / power_max / descriptionAdded value: +"Maximum power, hp" - added
Input schema / properties / power_min / descriptionAdded value: +"Minimum power, hp" - added
Input schema / properties / price_max / descriptionAdded value: +"Maximum new list price, EUR" - added
Input schema / properties / year / descriptionAdded value: +"Production year the generation covers, e.g. 2022. Not applied by the demo set — reported back in ignored_filters." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "data": { + "description": "Matches; 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" + }, + "demo": { + "description": "true when answered from the demo set", + "type": "boolean" + }, + "ignored_filters": { + "description": "Filters you passed that the demo set cannot apply — results are NOT narrowed by them", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" +}
- Changed
get_images2 fields changed- changed
Input schema / properties / variant_id / descriptionPrevious value: -"opaque variant id from search_cars"New value: +"Opaque variant id from search_cars or filter_cars, e.g. v_1a2b3c4d" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "data": { + "description": "Images of the variant; empty when it has none", + "items": { + "additionalProperties": {}, + "properties": { + "url": { + "description": "Image URL on the cars-data.com CDN", + "type": "string" + }, + "variant": { + "description": "hero = large lead image, card = thumbnail-size", + "enum": [ + "hero", + "card" + ], + "type": "string" + } + }, + "required": [ + "url", + "variant" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" +}
- Changed
get_specs3 fields changed- added
Input schema / properties / locale / descriptionAdded 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." - changed
Input schema / properties / variant_id / descriptionPrevious 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" - changed
Output 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" +}
- Changed
get_specs_full3 fields changed- added
Input schema / properties / locale / descriptionAdded 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." - changed
Input schema / properties / variant_id / descriptionPrevious value: -"opaque variant id from search_catalogue, e.g. v_1a2b3c4d"New value: +"Opaque variant id from search_catalogue, e.g. v_1a2b3c4d" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "accel_0_100_s": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "0–100 km/h, seconds" + }, + "battery_kwh": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Traction battery capacity, kWh" + }, + "brand_slug": { + "type": "string" + }, + "display_name": { + "description": "Full variant name", + "type": "string" + }, + "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" + }, + "model_slug": { + "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" + }, + "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" + }, + "top_speed_kmh": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Top speed, km/h" + }, + "torque_nm": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Torque, Nm" + }, + "variant_id": { + "description": "Opaque variant id, e.g. v_1a2b3c4d. Pass it to get_specs / get_images / compare_variants.", + "type": "string" + }, + "year_from": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "First production year" + }, + "year_to": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Last production year; 0 or null while still in production" + } + }, + "required": [ + "variant_id", + "locale", + "display_name", + "brand_slug", + "model_slug", + "year_from", + "year_to", + "power_hp", + "battery_kwh", + "top_speed_kmh", + "torque_nm", + "accel_0_100_s", + "price_new_eur", + "last_synced_at", + "specs" + ], + "type": "object" +}
- Changed
list_generations3 fields changed- added
Input schema / properties / locale / descriptionAdded 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." - changed
Input schema / properties / model_id / descriptionPrevious value: -"opaque model id, e.g. m_1a2b3c4d"New value: +"Opaque model id from a search_cars or filter_cars result, e.g. m_1a2b3c4d" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "data": { + "description": "Generations of the model", + "items": { + "additionalProperties": {}, + "properties": { + "display_name": { + "description": "Generation / facelift name", + "type": "string" + }, + "generation_id": { + "description": "Opaque generation id", + "type": "string" + }, + "model_id": { + "description": "Opaque model id", + "type": "string" + }, + "years": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Production years, e.g. '2019–2024'; '2021–' is still in production" + } + }, + "required": [ + "generation_id", + "model_id", + "display_name", + "years" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" +}
- Changed
search_cars4 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of results, 1–50. Default: 10." - added
Input schema / properties / locale / descriptionAdded 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." - changed
Input schema / properties / query / descriptionPrevious 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'." - changed
Output 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" +}
- Changed
search_catalogue4 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of results, 1–50. Default: 10." - added
Input schema / properties / locale / descriptionAdded 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." - changed
Input schema / properties / query / descriptionPrevious 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'." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "data": { + "description": "Matches, most powerful first", + "items": { + "additionalProperties": {}, + "properties": { + "brand_slug": { + "type": "string" + }, + "display_name": { + "description": "Full variant name, localized when a translation exists", + "type": "string" + }, + "generation_id": { + "description": "Opaque generation id", + "type": "string" + }, + "model_slug": { + "type": "string" + }, + "variant_id": { + "description": "Opaque variant id, e.g. v_1a2b3c4d. Pass it to get_specs_full.", + "type": "string" + }, + "year_from": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "First production year of the generation" + }, + "year_to": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Last production year; 0 or null while still in production" + } + }, + "required": [ + "variant_id", + "display_name", + "brand_slug", + "model_slug", + "generation_id", + "year_from", + "year_to" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" +}
2 tool updates
- Added
get_specs_full - Added
search_catalogue
6 tool updates
- Changed
compare_variants5 fields changed- changed
Input schema / properties / locale / enumPrevious 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" +] - added
Input schema / properties / variant_ids / descriptionAdded value: +"opaque variant ids from search_cars" - removed
Input schema / properties / variant_ids / items / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / variant_ids / items / minimumRemoved value: --9007199254740991 - changed
Input schema / properties / variant_ids / items / typePrevious value: -"integer"New value: +"string"
- Changed
filter_cars1 field changed- changed
Input schema / properties / locale / enumPrevious 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" +]
- Changed
get_images4 fields changed- added
Input schema / properties / variant_id / descriptionAdded value: +"opaque variant id from search_cars" - removed
Input schema / properties / variant_id / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / variant_id / minimumRemoved value: --9007199254740991 - changed
Input schema / properties / variant_id / typePrevious value: -"integer"New value: +"string"
- Changed
get_specs5 fields changed- changed
Input schema / properties / locale / enumPrevious 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" +] - changed
Input schema / properties / variant_id / descriptionPrevious value: -"from search_cars or filter_cars"New value: +"opaque variant id from search_cars or filter_cars, e.g. v_1a2b3c4d" - removed
Input schema / properties / variant_id / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / variant_id / minimumRemoved value: --9007199254740991 - changed
Input schema / properties / variant_id / typePrevious value: -"integer"New value: +"string"
- Changed
list_generations5 fields changed- changed
Input schema / properties / locale / enumPrevious 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" +] - added
Input schema / properties / model_id / descriptionAdded value: +"opaque model id, e.g. m_1a2b3c4d" - removed
Input schema / properties / model_id / maximumRemoved value: -9007199254740991 - removed
Input schema / properties / model_id / minimumRemoved value: --9007199254740991 - changed
Input schema / properties / model_id / typePrevious value: -"integer"New value: +"string"
- Changed
search_cars1 field changed- changed
Input schema / properties / locale / enumPrevious 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" +]
6 tool updates
- First observed
compare_variants - First observed
filter_cars - First observed
get_images - First observed
get_specs - First observed
list_generations - First observed
search_cars
Related MCP Connectors
Automotive design reference search with filters, natural language, image retrieval, and comparison.
VIN decoding and European vehicle data for automotive workflows.
Vehicle data for AI: VIN decoder, automotive specs, stolen checks, valuation and way more.
Search live US dealership inventory, get market prices, and send buyer inquiries. Free, no API key.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides vehicle wheel and tyre fitment data for 10,000+ makes, models, and trim levels through 32 read-only tools, enabling searches by vehicle, rim, or tire specifications.3248 npmMIT
- AlicenseAqualityAmaintenanceDecode VINs, look up specs, history, recalls, market value, and OBD codes. Recognize license plates and VINs from images. Access comprehensive vehicle data by year, make, and model to power automotive workflows.121MIT
- AlicenseAqualityCmaintenanceEnables searching over 1.8 million live Brazilian used-car and motorcycle listings with FIPE reference prices and market analytics, and provides per-listing tools for valuation, market position, and price distribution.17MIT
- AlicenseCqualityDmaintenanceEnables access to comprehensive vehicle information including VIN decoding, license plate OCR, vehicle history checks (theft, title, salvage records), market valuations, specifications, and warranty data for vehicles across North America and Europe.611MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.