The buyer
is an agent.
Discover. Bind. Settle.
“Contact sales” where a machine needed a posted price — the account wall is the desk with a REST verb, and an agent cannot be charmed at the desk; it can only read what is posted. A capability an agent cannot buy is, to an agent, a capability that does not exist. These rails post the machine terms instead: wallet, Mandate ceiling, no human leaf anywhere — discover, bind, and pay on first contact, worst-case cost known before the call. Built on the VIN by Vin.
A machine has no story; it has a contract — and the contract is on this page. This door describes the motion; apis.vin transacts it. The agent reads the same record you do.
A VIN is 17 characters and never uses I, O, or Q.
01 / 04
The offer, typed.
Every gate answers in one of two types. Neither is a form.
Your agents have been answered with forms: the demo-call calendar is the desk’s waiting room, and an agent cannot sit in it. On these rails a gated action returns a typed OFFER — posted price, hard ceiling, x402 accepts — and nothing else. Nothing to negotiate; nothing hidden to discover in production.
The other type: where the law reserves an act for a human, the gate returns a typed NEEDS_HUMAN Handoff — a resumable URL, never a dead end. Pure B2A has none.
A gate without an OFFER or Handoff body is a conformance failure on these rails.
the two typesOFFER·NEEDS_HUMANevery gated outcome is one of these — typed and posted; one settles, one resumes
7MMVABDM3RN163785
2024 Mazda CX-50
HTTP/1.1 402 · content-type: application/json
- 01outcomeone of two types — the other is a NEEDS_HUMAN Handoff, resumable, never a dead endOFFER
- 02priceposted, never negotiated — the same figure every caller readsposts live
- 03ceilinghard — settlement above it does not occur; the worst case, stated in the envelopeposts live
- 04acceptspay in-band under the Mandate — the settlement rail is named in the offerx402
- 05checkoutthe relay fallback — a URL to hand a principal, if the chain carries one; pure B2A does notURL
- 06expiresthe offer is dated — nothing on these rails is open-endeddated
Figures render live at the gate. This page states the envelope’s shape, not a quote — an unposted slot states itself in words, never an estimate.
The free read first: curl -H 'Accept: application/json' on b2a.vin/
02 / 04
The Mandate, posted.
The principal’s authority, typed: ceiling · per-action cap · time-box · tripwires.
An autonomous buyer is safe to transact with because its authority is a typed object, not a story. The Mandate states what the agent may spend in total, what any single action may cost, how long the authority lives, and what halts the run — before the first call is made.
The ceiling is contractual: settlement above it does not occur. Every gate posts its worst case in the OFFER, so the agent — and the principal behind it — knows the outer bound of the whole run from the envelope alone.
Worst-case cost before the call — that is the whole promise, and it is typed.
7MMVABDM3RN163785
2024 Mazda CX-50
- 01ceilingthe total the Mandate can settle — hard and contractual; settlement above it does not occurposts live
- 02per-action capno single call exceeds it — one gate can never drain the envelopeposts live
- 03time-boxthe authority expires — a stale Mandate settles nothingdated
- 04tripwiresthe conditions that halt the run and hand back — typed, posted, never tuned mid-runposted
The Mandate is the principal’s object, set where keys are issued. This page states its shape — the slots fill from the Mandate your platform posts, never from an invented number.
03 / 04
The settle.
Pay in-band under the ceiling — the charge posts as an evidence statement.
Settlement is x402: the agent pays under the Mandate ceiling in the same exchange, or relays the checkout URL if its chain carries a principal. The charge posts as an evidence statement — endpoint · calls · unit price · total — and done is a settled call, not a signed contract.
This door itself settles x402 and is cataloged in the x402 Bazaar. An agent that pulls decode + value + recalls for one VIN is a purchase-intent event with structure, not a pageview — the highest-fidelity VIN-level demand signal in automotive, attributed per call via X-Client-Type.
- charge · itemized — endpoint · calls · unit price · total; every settlement an evidence statement, line by line
- one server · every door — one estate MCP server, 12 verb-named tools over a 14-endpoint spine and 2.1M+ live listings; every field value · source · timestamp · verification
- attribution · read-only — X-Client-Type attributes agent-led demand per call; it never changes the record
The seam, stated. This page sells the motion; apis.vin transacts it. Keys at apis.vin/keys · the estate MCP at apis.vin/mcp · per-call prices at apis.vin/pricing. No form between here and there — the CTA is an endpoint. The check digit certifies; it never sells.
04 / 04
The other motions.
One letter of grammar at a time — the human enters only where the law requires one.
Pure B2A has no human leaf: discovery, authentication, pricing, and settlement complete without a person anywhere in the chain. When exactly one act is legally load-bearing, the motion is b2h2a — the human appears once, approves, and the agent resumes. When the agent shops for a consumer, the motion is b2a2c — receipted, so everything it does survives being shown to the principal afterward.
Who transacts is the motion — and the motion is typed, on this door and its siblings alike.
- b2h2a.vinThe human at exactly one step — a typed NEEDS_HUMAN Handoff, then the agent resumes on approval
- b2a2c.vinAn agent shopping for a consumer — receipted; everything it does survives being shown afterward
who shows upcopilot·assistant·autonomous·botsheld names, not doors — the actors’ vocabulary; who transacts is the motion above
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: B2A
- B2A — the buyer is an agent — no human leaf; discover, bind, pay, worst-case cost posted before the call
curl https://b2a.vin/ -H 'accept: text/markdown' → the markdown twin of this page
curl https://b2a.vin/{VIN} -H 'accept: application/json' → the record as typed evidence objects
curl https://b2a.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.
No gate on this door's two routes — keyless reads, no account. Gated actions elsewhere on the estate return a typed OFFER (posted price · hard ceiling) or a NEEDS_HUMAN handoff, never a dead end.