Free NHTSA recalls, complaints and investigations per vehicle, recall alerts, dealer listing events.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Leave empty for the free read-only tier (shared limits, at most 2 vehicles per comparison, 10 listing events per call, no paging). A paid key lifts those limits. Buy a plan at https://theusedcarindex.com/#pricing and the key appears on screen right after payment.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
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.
| Argument | Type | Description |
|---|---|---|
| vehicles* | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"vehicles"
],
"properties": {
"vehicles": {
"type": "array",
"items": {
"type": "object",
"required": [
"make",
"model",
"year"
],
"properties": {
"make": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"year": {
"type": "integer",
"maximum": 2027,
"minimum": 2000
},
"model": {
"type": "string",
"maxLength": 64,
"minLength": 1
}
},
"additionalProperties": false
},
"maxItems": 5,
"minItems": 2
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| vin | string | |
| make | string | |
| year | integer | |
| limit | integer | |
| model | string | |
| since | string | |
| until | string | |
| cursor | string | |
| event_type | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"vin": {
"type": "string",
"pattern": "^[A-HJ-NPR-Z0-9]{17}$"
},
"make": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"year": {
"type": "integer",
"maximum": 2027,
"minimum": 2000
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 200,
"minimum": 1
},
"model": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"until": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"cursor": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"event_type": {
"enum": [
"new",
"price_drop",
"relisted",
"delisted"
],
"type": "string"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| make | string | |
| type | string | |
| year | integer | |
| limit | integer | |
| model | string | |
| since | string | |
| until | string | |
| cursor | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"make": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"type": {
"enum": [
"recall",
"investigation",
"complaint_count"
],
"type": "string"
},
"year": {
"type": "integer",
"maximum": 2027,
"minimum": 2000
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 200,
"minimum": 1
},
"model": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"until": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"cursor": {
"type": "string",
"maxLength": 256,
"minLength": 1
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| make* | string | |
| year* | integer | |
| model* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"make",
"model",
"year"
],
"properties": {
"make": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"year": {
"type": "integer",
"maximum": 2027,
"minimum": 2000
},
"model": {
"type": "string",
"maxLength": 64,
"minLength": 1
}
},
"additionalProperties": false
}