Construct a GET request to the vPIC decode endpoint: https://vpic.nhtsa.dot.gov/api/vehicles/decodevin/{VIN}?format=json
Send the request without any API key — the vPIC API is public and requires no authentication
Parse the Results array in the JSON response; each element has a Variable and Value field representing one decoded attribute (make, model, model year, body class, etc.)
Filter for the variables most relevant to your use case (e.g., Make, Model, ModelYear, BodyClass, EngineHP, FuelTypePrimary) by matching on the Variable field
Handle partial VINs by using the decodevinvalues endpoint and supplying modelyear as an optional query parameter to improve accuracy when the VIN's 10th character is ambiguous
Known gotchas
A 17-character VIN with invalid check digit (9th position) still returns results — vPIC does not reject malformed VINs; validate the check digit yourself if data integrity matters
The API returns all variables for every decode even if the value is null or empty string; filter out empty Value fields before storing to avoid inflating your data
VINs for vehicles manufactured before standardized 17-character VINs (pre-1981 US vehicles) will return limited or incorrect data since the schema assumes the modern format
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp