Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.cyanheads/nhtsa-vehicle-safety-mcp-server

REMOTE · NHTSA.CASEYJHAND.COM · 2 COMPONENTS · SCANNED AUG 3

Decode VINs, search recalls, complaints, crash ratings, and investigations.

+1 this week 64 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security66
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation not fully verified: no authorisation is required to call this server, and 7 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
Schema Quality & AI Usability63
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 1541 tokens (~220/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability check failed: schema churn in the 8 days we've observed: 0 tool removals, 7 breaking changes, 0 auth/transport breaks, 0 additions. See how to fix → Fail
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · nhtsa.caseyjhand.com

# add to Claude Code
claude mcp add --transport http cyanheads-nhtsa-vehicle-safety-mcp-server https://nhtsa.caseyjhand.com/mcp
# ~/.codex/config.toml
[mcp_servers.cyanheads-nhtsa-vehicle-safety-mcp-server]
url = "https://nhtsa.caseyjhand.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-nhtsa-vehicle-safety-mcp-server": {
      "type": "remote",
      "url": "https://nhtsa.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add cyanheads-nhtsa-vehicle-safety-mcp-server --url https://nhtsa.caseyjhand.com/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  cyanheads-nhtsa-vehicle-safety-mcp-server:
    url: "https://nhtsa.caseyjhand.com/mcp"
// mcp.json
{
  "mcpServers": {
    "cyanheads-nhtsa-vehicle-safety-mcp-server": {
      "type": "http",
      "url": "https://nhtsa.caseyjhand.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 31 Jul 26 +2
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 −3
    • Stability: 0.10 → fail security
    • Tool “nhtsa_search_investigations” rewrote its description, which is the text the model reads security
    • Schema quality: 198 → 220 functional
    • “nhtsa_lookup_vehicles” changed the type of “modelYear”: number → integer functional
    • “nhtsa_get_vehicle_safety” changed the type of “modelYear”: number → integer functional
    • “nhtsa_decode_vin” changed the type of “modelYear”: number → integer functional
    • “nhtsa_get_safety_ratings” changed the type of “modelYear”: number → integer functional
    • “nhtsa_search_recalls” changed the type of “modelYear”: number → integer functional
    • “nhtsa_search_complaints” changed the type of “modelYear”: number → integer functional
    • “nhtsa_search_investigations” changed the type of “limit”: number → integer functional
    • “nhtsa_search_investigations” changed the type of “offset”: number → integer functional
    • MCP protocol: Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28. functional
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
    • Server version: 0.9.3 → 0.9.4 functional
    • Server version: 0.9.1 → 0.9.3 functional
    • Server version: 0.9.0 → 0.9.1 functional
    • Server version: 0.8.4 → 0.9.0 functional
    • “nhtsa_search_investigations” added an optional parameter “nhtsaId” cosmetic
    • “nhtsa_lookup_vehicles” reworded the description of “modelYear” cosmetic
    • “nhtsa_get_vehicle_safety” reworded the description of “modelYear” cosmetic
    • “nhtsa_decode_vin” reworded the description of “modelYear” cosmetic
    • “nhtsa_get_safety_ratings” reworded the description of “modelYear” cosmetic
    • “nhtsa_search_recalls” reworded the description of “modelYear” cosmetic
    • “nhtsa_search_recalls” reworded the description of “campaignNumber” cosmetic
    • “nhtsa_search_investigations” reworded the description of “query” cosmetic
    • “nhtsa_search_complaints” reworded the description of “offset” cosmetic
    • “nhtsa_search_complaints” reworded the description of “modelYear” cosmetic
    • “nhtsa_search_investigations” reworded the description of “status” cosmetic
    • “nhtsa_search_investigations” reworded the description of “offset” cosmetic
    • “nhtsa_search_investigations” reworded the description of “limit” cosmetic
  • 29 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 63

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://nhtsa.caseyjhand.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=caseyjhand.com CN=WE1,O=Google Trust Services,C=US 7 Jul 2026 5 Oct 2026 ECDSA 256 ECDSA-SHA256 5aad900eb2055a0b0ea55912ec19680c
SANs: caseyjhand.com, *.caseyjhand.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b
DNSSEC secure

Validation of nhtsa.caseyjhand.com. Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
caseyjhand.com. present 2371 13 Verified
nhtsa.caseyjhand.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
x-content-type-options nosniff
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://nhtsa.caseyjhand.com/mcp Verified 200
http (plaintext) http://nhtsa.caseyjhand.com/mcp HTTPS enforced 301 https://nhtsa.caseyjhand.com/mcp
MCP tools — 7 exposed · ~1,475 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
nhtsa_decode_vin ~147

Decode a Vehicle Identification Number to extract make, model, year, body type, engine, safety equipment, and manufacturing details. Pass a single 17-character VIN string, or an array of up to 50 VINs for batch decode. Partial VINs accepted — use * for unknown positions.

NameTypeReqDescription
modelYearintegerModel year, a whole number. Helps resolve ambiguity for pre-1980 or partial VINs.
vinyesA single 17-character VIN (e.g., "1HGCM82633A004352") or an array of up to 50 VINs for batch decode. Partial VINs accepted — use * for unknown positions.
NameTypeReqDescription
effectiveQuerystringyesNumber of VINs decoded and the path taken (single or batch).
noticestringPresent when one or more VINs decoded with VPIC warnings (errorCode != 0) — check errorCode/errorText per vehicle.
vehiclesarrayyesDecoded vehicle information per VIN

No examples provided.

nhtsa_get_safety_ratings ~172

Get NCAP crash test ratings and ADAS feature availability for a vehicle. Use when the user specifically wants crash test stars, rollover risk, or wants to compare safety features across vehicles. NCAP data available from 1990+, best coverage for 2011+.

NameTypeReqDescription
makestringVehicle manufacturer. Required with model and modelYear when vehicleId is omitted.
modelstringVehicle model. Required with make and modelYear when vehicleId is omitted.
modelYearintegerModel year, a whole number. Required with make and model when vehicleId is omitted. NCAP coverage increases significantly for 2011+.
vehicleIdnumberSpecific NCAP vehicle ID (from prior results). Skips the year/make/model lookup.
NameTypeReqDescription
noticestringGuidance when no NCAP ratings are found — e.g. coverage notes or adjacent year suggestion.
ratingsarrayyesSafety ratings per vehicle variant

No examples provided.

nhtsa_get_vehicle_safety ~124

Get a comprehensive safety profile for a vehicle. Combines NCAP crash test ratings, recalls, and complaint summary into a single response. Use as the default when asked about vehicle safety, reliability, or purchase decisions.

NameTypeReqDescription
makestringyesVehicle manufacturer (e.g., "Toyota", "Ford"). Case-insensitive.
modelstringyesVehicle model (e.g., "Camry", "F-150"). Case-insensitive.
modelYearintegeryesModel year, a whole number (e.g., 2020).
NameTypeReqDescription
complaintSummaryobjectSummary of consumer complaints
effectiveQuerystringyesThe vehicle queried, as "make model modelYear".
noticestringGuidance when no NHTSA records matched the vehicle — e.g. how to verify make/model/year spelling.
recallsarrayAll recalls for this vehicle when available
safetyRatingsarrayCrash test ratings per vehicle variant (e.g., FWD vs AWD)
sectionStatusobjectyesAvailability of each data section in this response
warningsarrayyesWarnings about sections that could not be loaded from NHTSA

No examples provided.

nhtsa_lookup_vehicles ~202

Look up valid makes, models, and vehicle types in NHTSA's database. Use to resolve ambiguous vehicle names, find correct make/model spelling, or discover what models a manufacturer produces.

NameTypeReqDescription
limitintegerMax results in the returned slice. Defaults to 100; max 200.
makestringMake name (required for "models" and "vehicle_types"). Partial match supported.
manufacturerstringManufacturer name or ID (for "manufacturer" operation). Partial match supported.
modelYearintegerFilter models to a specific year, a whole number. Only for "models" operation.
offsetintegerPagination offset into the full result list. Defaults to 0.
operationstringyes"makes" (all NHTSA makes), "models" (models for a make), "vehicle_types" (types for a make), "manufacturer" (manufacturer details).
NameTypeReqDescription
capnumberMaximum manufacturer records a single lookup retrieves.
effectiveQuerystringyesThe operation with key args, e.g. "models make=Toyota year=2020".
limitnumberyesPagination limit used for this response
makesarrayResults for "makes" operation
manufacturersarrayResults for "manufacturer" operation
modelsarrayResults for "models" operation
noticestringGuidance when the result set is empty or the page is out of bounds.
offsetnumberyesPagination offset used for this response
operationstringyesThe operation that was performed
returnednumberyesNumber of results in the returned slice
shownnumberManufacturer records retrieved before pagination, when the cap was reached.
totalCountnumberyesResults retrieved before pagination. For "manufacturer" this is capped — check the truncated field, since VPIC reports no match total.
truncatedbooleanTrue when the "manufacturer" lookup stopped at its retrieval cap and further matches may exist upstream.
vehicleTypesarrayResults for "vehicle_types" operation

No examples provided.

nhtsa_search_complaints ~197

Search consumer safety complaints filed with NHTSA for a specific vehicle. Returns a component breakdown over all matching complaints plus a paginated slice of the most recent complaints. Use for common problems, failure patterns, or owner-reported issues.

NameTypeReqDescription
componentstringFilter to a specific component (uppercase, e.g., "ENGINE", "AIR BAGS", "ELECTRICAL SYSTEM"). Matches within comma-separated component lists. Omit to see all.
limitintegerMax complaint narratives to return. Defaults to 20; max 50. componentBreakdown always reflects all matching complaints.
makestringyesVehicle manufacturer.
modelstringyesVehicle model.
modelYearintegeryesModel year, a whole number.
offsetintegerPagination offset into the filing-date-descending complaint list. Defaults to 0. componentBreakdown is unaffected by pagination.
NameTypeReqDescription
complaintsarrayyesPaginated slice of the most recent complaints, date-descending
componentBreakdownarrayyesComplaints grouped by component, sorted by frequency
effectiveQuerystringyes"make model modelYear" with optional component filter applied, as the server used it.
limitnumberyesPagination limit used for this page
noticestringGuidance when no complaints match the vehicle, or when the requested page overshoots the result set.
offsetnumberyesPagination offset used for this page
returnednumberyesNumber of complaints in this page
totalCountnumberyesTotal complaints matching criteria

No examples provided.

nhtsa_search_investigations ~467

Search NHTSA defect investigations from the ODI flat file — covering Preliminary Evaluations (PE), Engineering Analyses (EA), Defect Petitions (DP), Recall Queries (RQ), Audit Queries (AQ), and additional ODI types. make, model, and component are structured filters against the investigation record's vehicle associations. All filters are ANDed. Use nhtsaId to fetch one investigation by its exact ID — including the investigationId nhtsa_search_recalls returns for a campaign. Investigations may link to a resulting recall campaign via recallCampaign.

NameTypeReqDescription
componentstringStructured filter — matches against the investigation's affected components (e.g., "STEERING"). ANDed with other filters.
investigationTypestringFilter by ODI investigation type code (the leading letters of the NHTSA ID). Named types: "PE" (Preliminary Evaluation), "EA" (Engineering Analysis), "DP" (Defect Petition), "RQ" (Recall Query), "AQ"…
limitintegerMax investigations to return. Defaults to 20; max 25. The cap is lower than the other paginated tools because a single investigation summary can run several thousand characters and is rendered in ful…
makestringStructured filter — matches against the investigation's associated vehicle makes (e.g., "TOYOTA"). ANDed with other filters.
modelstringStructured filter — matches against the investigation's associated vehicle models. ANDed with other filters.
nhtsaIdstringExact NHTSA investigation ID (e.g. "EA23003"), case-insensitive. Fetches that one record — mutually exclusive with every other filter.
offsetintegerPagination offset into the matching investigations. Defaults to 0.
querystringFree-text search across investigation ID, subject, and summary.
statusstringFilter by status: "O" (Open) or "C" (Closed). Omit to include both.
NameTypeReqDescription
effectiveQuerystringyesApplied filters as a readable string, e.g. make="Ford" status="O".
investigationsarrayyesMatching investigations
limitnumberyesPagination limit used for this page
noticestringGuidance when no investigations match the filters, or when the requested page overshoots the result set.
offsetnumberyesPagination offset used for this page
returnednumberyesNumber of investigations in this page
totalCountnumberyesTotal matching investigations

No examples provided.

nhtsa_search_recalls ~166

Search recall campaigns by vehicle or campaign number. Use for specific recall lookups, recall history for a vehicle, or looking up a known campaign number.

NameTypeReqDescription
campaignNumberstringNHTSA campaign number (e.g., "20V682000"). When provided, returns the campaign detail plus every vehicle it covers. Mutually exclusive with make/model/modelYear.
dateRangeobjectFilter recalls by received date. Applied locally since the API lacks native date filtering.
makestringVehicle manufacturer. Required with model and modelYear when not using campaignNumber.
modelstringVehicle model. Required with make and modelYear.
modelYearintegerModel year, a whole number. Required with make and model.
NameTypeReqDescription
effectiveQuerystringyesThe search key used: campaign number, or "make model modelYear" for vehicle queries.
noticestringGuidance when no recalls are found — e.g. how to verify make/model/year spelling.
recallsarrayyesMatching recall campaigns
totalCountnumberyesTotal recalls matching criteria

No examples provided.