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.

2025 Mazda CX-5 · check digit 1 · verified

Read the bookAgentic Car Business: agent-led sales motions, free PDF
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.

The store as addresses.

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

The dealership’s actual system of record (inventory, deals, customers, F&I, accounting) lives behind the screens of the DMS you already run, and every integration is a fight with them. Spoken as addresses, the same record needs no screen at all: each module is a door, and the door answers whoever asks it.

No module mints a new number. Each door reads the record the store runs on.

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. 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 read answers typed

OKEMPTYBLOCKEDOFFER

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

The bridge, gated: the write path

The 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 orderPosts live

Every line at its own member address.

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

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.

Two architectural linesHow permissioned data is handled
  • Never ingestedPermissioned data is never ingested into the platform’s data lake: it lives and dies inside the user’s session.Session-scoped
  • Never resoldVin never purchases or resells third-party reports: unified views render from the customer’s own credentialed accounts.Your accounts

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

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.

Your agentThe posted recordThe buying agent

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

The same record, machine-readapis.vin/mcp
1# one MCP server for the whole platform
2POST https://apis.vin/mcp
3{"method": "tools/call",
4 "params": {"name": "decode_vin",
5 "arguments": {"vin": "JM3KFBXY1S0597748"}}}
6
7# the one DMS write on the wire today, sandbox
8ledger.dmsPost · POST /ledgers/dms-post
9emits Ledger.dmsPosted@1 // status: sandbox · gate: offer
On the wire

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.

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.

  1. 01Address

    Open now

    Every noun of the store, at its URL.

  2. 02Read

    Open now

    Free, keyless, typed.

  3. 03Write

    Gated

    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 and embed integration enter at apis.vin; connect the systems you already run at 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.

Three representationsdms.vin
1curl https://dms.vin/ -H 'accept: text/markdown'
2 # the markdown twin of this page
3curl https://dms.vin/{VIN} -H 'accept: application/json'
4 # the record as typed evidence objects
5curl https://dms.vin/{VIN} -H 'accept: text/markdown'
6 # the record's markdown twin
On this host
  • Motionsb2aThe buyer is an agent: no human leaf; discover, bind, pay, worst-case cost posted before the callb2a2dThe capability embeds downstream: reserved acts route back to a credentialed human leaf
  • One MCP serverapis.vin/mcp serves the whole platform: every door’s tools in one server, each result carrying its door’s URL.
  • AttributionX-Client-Type: html | md | json | mcp names which reader arrived; it never changes the record.