Paste the VIN.
Read the record.
Paste. Read. Decide.
Title history, odometer readings, open recalls with remedy status, the original window sticker, five market values — one report from one VIN. Full report $19.99 · cached $9.99, both posted below.
An agent reading for you is offered this same report at these same posted prices — you appear once, to approve the pull, and what it brings back survives being shown to you.
A VIN is 17 characters and never uses I, O, or Q.
Free rung, every VIN: recall-watch, the record’s structural count — how many records across how many categories, never values — garage save, and both posted prices with the last pull’s timestamp.
7MMVABDM3RN163785
2024 Mazda CX-50
- Title history— · $19.99 unlocks
- Odometer readings— · $19.99 unlocks
- Open recalls · remedy statusfree · every VIN
- Original window sticker— · $19.99 unlocks
- Five market values— · $19.99 unlocks
every fact posts as value · source · timestamp · verification state — a dash is a withheld value, never a missing one
Figures render live at the address. This page states structure, not prices.
The report, in five rows.
Every fact in it is posted as value · source · timestamp · verification state. Facts we can’t verify say “Reported, not yet verified.” We never blend the two.
- Title historyEvery title event on the record, in order, each with its source and timestamp.
- Odometer readingsEach reading as reported, dated and sourced, so the sequence reads at a glance.
- Open recallsChecked against the federal recall register (NHTSA) at load time, with remedy status. Zero is stated, not celebrated.
- Original window stickerThe car as built — factory spec on the record, so changes surface as deltas.
- Five market valuesRetail, private party, trade-in, wholesale, auction — the sources under each number, no adjective before it.
The seller sees this exact page. Flaws are data — stated, never hidden.
Posted.
Every price on this page is a number at the address, the same for every reader.
- Full reportTitle history, odometer readings, open recalls with remedy status, the original window sticker, five market values. One payment step, no subscription.$19.99
- Cached reportThe same report when this VIN was pulled recently. The pull’s timestamp is posted beside both prices, on the record, before you pay.$9.99last pull — posted on the record
- Free rungRecall-watch on the VIN, the structural count — anatomy, never values — garage save, and cache-price visibility. Every VIN, no account to start.Free
An agent reading this door is offered the same report at the same posted prices. One price surface, either reader. Nothing else is for sale on this page.
The plan.
Paste
The VIN goes in above. Every report lives at vhr.vin/{VIN} — the address is the record.
Read
The free rung first — recall-watch, structural count, both prices. The full report is one payment step behind it.
Decide
You decide on a record both sides can read. Ready to buy? The report is step zero at buy.vin.
For the desk.
This door serves desks: the record a consumer reads is the record a dealer prices from. Same page, same numbers, pulled at speed.
- The address is the formvhr.vin/{VIN} in the browser bar opens the record directly — from any system that stores VINs, no landing page in between.
- The second pull is cheaperA VIN pulled recently posts at $9.99, its pull timestamp beside the price. Desks that pull often pay the cached price often.
- The garage holds your workSaves and entitlements persist on the VIN, on the one estate account — issued at auth.vin. A report you bought stays open; the second visit starts where the first one ended.
- Keyboard first/ focuses the input, paste fills and checksum-verifies it, Enter opens the record. No step on this page needs a mouse.
Reading by machine.
The same record returns as typed JSON via Accept negotiation, and the paid report is a typed offer at the posted price. One MCP server for the platform: apis.vin/mcp
// the wire's shape (src/offer.ts) — prices from the one gate config { "outcome": "OFFER", "action": "vehicle_history_report", "price": { "amount": "19.99", "currency": "USD" }, // 1999 US cents — the rate card's number "ceiling": { "amount": "19.99", "currency": "USD" }, // the ceiling IS the price "cached": { "amount": "9.99", "currency": "USD" }, // 999 US cents · last pull timestamp posted "settle": { "checkoutUrl": <relay checkout link> }, "description": <the report, named> } // no third figure exists — one price surface, either reader
For the agent you send
The agent reads the same record you do. Same two routes, three representations — the numbers never differ between them.
motions: B2H2A
- B2H2A — the human appears once, where the act is legally load-bearing — then the agent resumes
curl https://vhr.vin/ -H 'accept: text/markdown' → the markdown twin of this page
curl https://vhr.vin/{VIN} -H 'accept: application/json' → the record as typed evidence objects
curl https://vhr.vin/{VIN} -H 'accept: text/markdown' → the record's markdown twinMachine surfaces on this host: /llms.txt · /icp.json · /.well-known/agents.json · one estate MCP server — apis.vin/mcp (every door a lens; tool results carry the door URL).
Attribution: X-Client-Type: html | md | json | mcp — read for agent-led demand attribution; it never changes the record.