dms.vin

The DMS built for agents.
Not humans.

No screens. Addresses.

Every DMS ever sold was built for humans — screens, logins, modules, licenses, training. dms.vin is the dealer management system whose primary user is an agent. No screens to learn, because the surface is addresses: every noun of the store answers at its own URL, typed, and every write runs under a Mandate with a receipt. Built on the VIN by Vin.

The GM’s assistant, the group’s analyst bot, the buying agent on the other side of a deal — they all read the same record the store runs on.

Read the bookAgentic Car Business — agent-led sales motions, free PDF

01 / 05

The store as addresses.

Every module you bought screens for is a door that answers.

One unit, every moduledms.vin/JM3KFBXY1S0597748

JM3KFBXY1S0597748

2025 Mazda CX-5

Four modules, one VIN, zero screens: each read is an address, and the answer is the same for every agent that asks. This card states structure, not prices.

02 / 05

Reads and writes.

Reads are free and keyless. Writes run under a Mandate.

A read answers anyone who holds the address — your agent, your group’s analyst, the buying agent across the deal — and it answers typed: OK · EMPTY · BLOCKED · OFFER. A write carries its authority with it: who acted, on what Mandate, when — posted to the store’s ledger as an event with a receipt.

Every money line is a posted slot until the record fills it. No figure is invented on this page.

The bridge, gated — the write pathThe sync path into the DMS you already run — inventory, deal push, RO data — is not yet on the wire. Until it lands, this door attests structure and posted slots and transacts nothing. The one DMS write on the wire today is ledger.dmsPost, in sandbox. The read path is different: the permissioned bridge below carries it, because the dealer authorizes their own connection. Reading the record stays free everywhere.

The deal jacketOne order · commerce.vin
The orderevery line at its own member addressposts live

Every figure posts at its line’s own address, on one order at commerce.vin, before anything signs. This page states structure, not prices.

Reading the record: $0 · no account · no per-user licenses · no screens

03 / 05

The permissioned bridge.

Your agents read the DMS you already run — because you authorized it.

dms.vin is not only the store spoken as addresses. It is also how any dealer gives their agents access to the DMS they already run. The dealer grants explicit legal authorization; from then on, a dedicated, isolated browser session per user runs the dealer’s own credentials with geographically local egress — the user’s session, acting as the user, at the user’s direction.

No DMS-vendor certification stands between a store and its own record: the dealer authorizes their own connection.

The connectionintegrates.vinThe dealer authorizes and manages their own DMS connection at the integration door. The picker of named systems lives there, never on this page.

The consumer twinconnects.vinThe same permissioned pattern for a consumer’s own factory and insurance accounts — that door’s story, not this one.

Two architectural linesHow permissioned data is handled
  • 01Never ingestedpermissioned data is never ingested into the platform’s data lake — it lives and dies inside the user’s sessionsession-scoped
  • 02Never resoldVin never purchases or resells third-party reports — unified views render from the customer’s own credentialed accountsyour accounts

Both lines are architecture, not policy copy: the user’s session is the boundary. When the session ends, Vin holds none of it.

04 / 05

The two counters.

Your agents and the buying agents read the same record.

A DMS built for humans shows the store one thing and the market another. A record spoken as addresses cannot: the number your desk reads is the number the buying agent reads, and neither waits on a login to get it.

The store that posts clean numbers is the store agents can transact with.

Your agentThe posted recordThe buying agent

The motionb2a.vinThe buying agent arrives on its own account — discovery, typed answers, worst-case cost posted before the call

The same record, machine-readno key
# one MCP server for the whole platform
POST https://apis.vin/mcp
{"method": "tools/call",
 "params": {"name": "decode_vin",
   "arguments": {"vin": "JM3KFBXY1S0597748"}}}

# the one DMS write on the wire today — sandbox
ledger.dmsPost · POST /ledgers/dms-post
emits Ledger.dmsPosted@1 // status: sandbox · gate: offer
  • One MCP server for the whole platform: apis.vin/mcp
  • Every read answers typed; the record reads need no key
  • Every write posts to the ledger with the Mandate it acted on
  • Agent payments settle programmatically: x402

Where an agent works the store’s record for a principal, every read and every write it makes here — survives being shown to them afterward.

05 / 05

Start.

One developer door. The systems you already run connect at their own address.

There is no install and no migration weekend. The record is already addressable: reads answer today, free and keyless, and developer or embed integration intent enters at the developer door — not here.

Address. Read. Write — in that order, and the first two are open now.

The store plandms.vin
Address — every noun of the store, at its URL
Read — free, keyless, typed
Write — Mandate-scoped, receipted; the bridge is gated

The first two steps are open on every live door. The third posts here as it lands, capability by capability — sandbox first, attested on this page, never announced ahead of the wire.

The deal still settles at commerce.vin.

This page describes the store’s record; the money posts at member addresses, on one order at commerce.vin. The door never re-mints a number — it reads the record the store already runs on. The dealer of record is cloud.motors.vin; the dealers’ entrance to the same rails is dealers.vin.

Reading the record: $0 · no account · no per-user licenses · no screens

Reads at another layerDeveloper & embed integration → apis.vin · connect the systems you already run → integrates.vin

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 · B2A2D

curl https://dms.vin/ -H 'accept: text/markdown'        → the markdown twin of this page
curl https://dms.vin/{VIN} -H 'accept: application/json' → the record as typed evidence objects
curl https://dms.vin/{VIN} -H 'accept: text/markdown'    → the record's markdown twin

Machine surfaces on this host: /llms.txt · /icp.json · /.well-known/agents.json · one MCP server for the whole platform — 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.