The Used Car Index
Server Details
Free NHTSA recalls, complaints and investigations per vehicle, recall alerts, dealer listing events.
- Status
- Healthy
- Uptime
- 100.0% over 26 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool has a distinct focus: side-by-side comparison, dealer listing changes, NHTSA recall changes, and single-vehicle risk lookup. The only mild overlap is between compare_vehicles and vehicle_risk, since comparing a single vehicle's facts resembles a risk lookup, but the descriptions make the boundary reasonably clear.
All names use snake_case, but conventions are mixed: compare_vehicles is verb_noun while listing_changes, recall_changes and vehicle_risk are noun-first resource names. The two *_changes tools form a clear parallel pair, but there is no single predictable pattern across the set.
Four tools is on the lean side but each is broad and covers a distinct slice of the data surface (comparison, two change feeds, risk lookup). Nothing feels redundant, though there is little room for narrower lookups.
The surface covers the core read-only domain: per-vehicle facts, multi-vehicle comparison, dealer listing change history and NHTSA recall/complaint change feeds, with lookup/alias resolution handled. There are no obvious dead ends, though no explicit search-by-attribute tool exists apart from the comparison and risk lookups.
Available Tools
4 toolscompare_vehiclesCompare vehiclesARead-onlyIdempotentInspect
Compare recorded facts for several vehicles side by side, with factual orderings by complaints, recalls and available verified complaints-per-100k-sold rates. Unknown vehicles come back with database suggestions and unrated vehicles stay explicitly unrated. Counts reflect source coverage; no recommendation, verdict or safety ranking. The free tier compares up to 2 vehicles per call, paid plans up to 5.
| Name | Required | Description | Default |
|---|---|---|---|
| vehicles | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds genuinely useful behavioral context: unknown vehicles return database suggestions, unrated vehicles stay explicitly unrated, and counts reflect source coverage rather than ground truth. The tier-based per-call limit is a valuable operational constraint not present in the schema.
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 sentences, front-loaded with the core action and followed by return-behavior caveats and limits. Dense but each sentence carries information; no filler or restatement of the title.
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?
With no output schema, the description does the work of describing return semantics (factual orderings, suggestions for unknown vehicles, explicit unrated status) and the tier limits. It stops short of describing result shape or ordering details, but it is sufficient for an agent to call the tool 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 0%, so structured fields carry no per-parameter meaning. The description clarifies that the input is a set of vehicles and that per-call counts are capped (2 free / 5 paid), but it never explains the required make/model/year triple or the 2000–2027 year window, leaving the schema to define the shape on its own.
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?
The description names a specific verb and resource ('Compare recorded facts for several vehicles side by side') and delineates scope with concrete dimensions (complaints, recalls, verified complaints-per-100k-sold rates). It also explicitly excludes framing ('no recommendation, verdict or safety ranking'), which separates it from the risk-oriented sibling vehicle_risk.
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?
Usage context is clear — comparing several vehicles in one call — and hard constraints are stated (free tier up to 2, paid up to 5). It does not explicitly say when to reach for vehicle_risk or recall_changes instead, so the routing guidance against siblings is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listing_changesListing changesARead-onlyIdempotentInspect
List observed dealer listing changes (new, price drop, relisted, delisted) with VIN, price, mileage, dates, source and link, filtered by vehicle, event type or date. Collector status separates an inactive feed from observed events. No photos or dealer-written text; delisted only means the listing was no longer observed, not that a sale completed. The free tier returns at most 10 events per call with no paging, paid plans up to 200 with cursors.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | No | ||
| make | No | ||
| year | No | ||
| limit | No | ||
| model | No | ||
| since | No | ||
| until | No | ||
| cursor | No | ||
| event_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, and the description adds genuinely new behavior: collector status distinguishes an inactive feed from observed events, no photos or dealer text are included, 'delisted' means only that the listing was no longer observed rather than a completed sale, and the tier-based result caps (10 events, no paging on free vs. 200 with cursors on paid). These are exactly the caveats an agent needs before interpreting results.
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?
Four dense sentences, each carrying distinct information: scope and filters, the collector-status caveat, the delisted semantic caveat, and the pagination limits. The most important scoping information is front-loaded and no sentence is filler.
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?
There is no output schema, so the description compensates by enumerating the returned fields (VIN, price, mileage, dates, source, link) and by stating the paging limits. Combined with annotations covering the safety profile, an agent has everything needed to call and interpret this read-only list tool.
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?
With 0% schema description coverage across 9 params, the description has to carry the load, and it largely does: it names the filter axes (vehicle, event type, date) and explains cursor/limit behavior through the paging and per-call caps. It does not spell out the make/model/year breakdown, the default limit of 50, or date format, so a small gap remains.
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 (List) and resource (observed dealer listing changes), enumerates the event types (new, price drop, relisted, delisted), and lists the returned fields. Nothing in the sibling set (compare_vehicles, recall_changes, vehicle_risk) covers listing events, so the tool is trivially distinguishable.
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 description implies usage through the filter axes ('filtered by vehicle, event type or date') and the free-tier/paid-tier call limits, which tell the agent when it can and cannot page. However, it never names an alternative tool or states an explicit when-not-to-use condition, leaving the agent to infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recall_changesRecall and investigation changesARead-onlyIdempotentInspect
List new and updated NHTSA recalls, investigations and complaint-count changes that this service recorded from the daily NHTSA bulk-file comparison, newest first, filtered by make, model, model year, type (recall, investigation, complaint_count) or observed date. Each change has the NHTSA campaign or action number, the record date, a short summary and a source link. These are published records, not a prediction, safety rating or advice. The free tier returns at most 10 changes per call with no paging, paid plans up to 200 with cursors and a vehicle watchlist.
| Name | Required | Description | Default |
|---|---|---|---|
| make | No | ||
| type | No | ||
| year | No | ||
| limit | No | ||
| model | No | ||
| since | No | ||
| until | No | ||
| cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered; the description adds real behavioral context beyond that: daily-refresh cadence, free-tier cap of 10 with no paging versus paid 200 with cursors, the presence of a vehicle watchlist, the fields returned per change, and an explicit 'published records, not prediction or advice' disclaimer. It stops short of covering auth requirements or error behavior.
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 dense sentences, front-loaded with what the tool returns before moving to filters, record contents and tier limits. Each sentence carries distinct information, though the middle block is information-heavy enough that a bulleted filter list would scan faster.
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 8-parameter, zero-coverage, no-output-schema tool this is close to complete: filters, ordering, returned fields, freshness and paging limits are all present. Minor gaps remain around default values and date-format conventions that an agent must otherwise read out of the raw schema.
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 0%, so the description carries the burden and largely does: it names make, model, model year, type (with all three enum values) and observed date as filters, and the paging caps implicitly explain 'limit' and 'cursor'. It never explicitly documents the default limit of 50, the YYYY-MM-DD format of since/until, or that cursor is an opaque token, so it does not fully compensate for the coverage gap.
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?
The description gives a specific verb ('List') and a well-scoped resource ('new and updated NHTSA recalls, investigations and complaint-count changes'), including ordering ('newest first') and origin (daily NHTSA bulk-file comparison). It does not, however, explicitly distinguish itself from the similarly named sibling 'listing_changes', leaving the agent to infer the boundary.
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?
Usage is implied rather than stated: the filter list (make, model, model year, type, observed date) tells the agent what kinds of queries this tool answers, and the tier note warns about result caps. There is no explicit when-to-use/when-not guidance and no routing to or away from 'compare_vehicles', 'listing_changes' or 'vehicle_risk'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vehicle_riskVehicle risk recordARead-onlyIdempotentInspect
Look up the recorded risk facts for one make, model and model year: NHTSA complaint counts by system and subsystem, recalls, investigations, manufacturer communications, an optional verified complaints-per-100k-sold rate and source coverage. Separately labeled Jev model tags (model years 2012 and newer; about 43 percent of all complaints are tagged) carry per-label counts, shares and model confidence, which is not accuracy. Spellings and aliases resolve to the stored vehicle. A zero is confirmed only when coverage_complete is true. These are observed records, not a prediction, safety rating, verdict, repair advice or an individual vehicle history.
| Name | Required | Description | Default |
|---|---|---|---|
| make | Yes | ||
| year | Yes | ||
| model | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, openWorld=false), the description discloses substantive behavior: spellings and aliases resolve to the stored vehicle, a zero is confirmed only when coverage_complete is true, Jev tags cover only MY2012+ and ~43% of complaints, and per-label confidence is not accuracy. It also explicitly disclaims what the data is not (prediction, safety rating, verdict, repair advice, individual vehicle history), which prevents misuse.
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?
The core purpose and returned record families are front-loaded in the first sentence, and the caveats follow in a logical order. It is dense and somewhat long, with a couple of run-on sentences, but 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?
With no output schema, the description must describe the return payload, and it does: it lists the record types, the optional verified rate, source coverage, and the coverage_complete flag that governs whether a zero is meaningful. Combined with the Jev-tag caveats, an agent has enough to call the tool and interpret the result without surprises.
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 0%, so the description must carry the parameter burden. It names the three inputs and adds genuine meaning for make/model ('spellings and aliases resolve to the stored vehicle'), but says nothing about the year parameter's bounds or format, leaving one of three parameters semantically unexplained.
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?
The description opens with a specific verb and resource: 'Look up the recorded risk facts for one make, model and model year,' then enumerates the exact record families returned (complaint counts by system/subsystem, recalls, investigations, manufacturer communications, rate, coverage). It is clearly a single-vehicle record lookup, which separates it from compare_vehicles, listing_changes and recall_changes.
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?
Usage is implied rather than stated: the 'one make, model and model year' framing tells the agent this is a single-vehicle lookup, but there is no explicit when-to-use this vs. compare_vehicles or the change-tracking siblings. No prerequisites or exclusion conditions are given.
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.
1 tool update
- Added
recall_changes
3 tool updates
- First observed
compare_vehicles - First observed
listing_changes - First observed
vehicle_risk
Related MCP Connectors
Decode VINs, search recalls, complaints, crash ratings, and investigations.
Vehicle safety recalls, complaints, and crash data from NHTSA
Decode any VIN and see NHTSA safety recalls and owner complaints.
Check U.S. NHTSA vehicle safety recall campaigns by make, model, and year. Live official data.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables instant U.S. vehicle recall lookup by make, model, and year using official NHTSA data.MIT
- AlicenseNot gradedqualityBmaintenanceEnables querying U.S. vehicle safety and specification data, including VIN decoding, recalls, complaints, investigations, and crash test ratings.388 npmMIT
- AlicenseNot gradedqualityBmaintenanceProvides comprehensive vehicle reports by aggregating data from multiple public sources to decode VINs, check recalls, and view safety ratings. It enables users to validate VINs locally and retrieve technical specifications, fuel economy, and vehicle photos without requiring API keys.7 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables natural-language queries over U.S. vehicle records, including recalls, service bulletins, diagnostic trouble codes, VIN decoding, fuel economy, and crash ratings.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.