MM Mark Miller Subaru / dmc-12
endpoint live · spec 2026-04-21 · UCP v1
SLC, Utah First dealership in North America with a public MCP + A2A + UCP surface.

The first dealership you can talk to as an AI agent.

One production endpoint. Real inventory. Real 30‑minute quotes, real soft holds, real hand‑off to a live sales manager. Connect from Claude, ChatGPT, Gemini, or your own agent — or wire it straight into your partner stack.

MCP URL
Agent
Claude · ChatGPT · Gemini · your stack
Authenticates via Auth0 (DCR + PKCE for public, client credentials for partners).
MCP / A2A
Endpoint
mm-inventory-mcp · Cloud Run
8 tools. Scope-gated. 60 RPM burst. 90-day audit trail.
hourly sync
Source of truth
MM live inventory
mm_inventory.vehicles — asking price, status, VINs, photos. Freshness ≤ 3600s.
01 / What's happening here

Three open protocols. One dealership behind them.

If you're not a protocol person: MCP lets an agent use our tools. A2A lets two agents speak directly. UCP lets a merchant publish what they sell and how an agent can transact. We speak all three.

MCP
Model Context Protocol
An open wire protocol for AI agents to discover and call tools on remote servers — the same rail Claude, ChatGPT, and Gemini speak.
A2A v1.0
Agent-to-Agent
A signed Agent Card at a canonical URL that lets another agent verify who we are and what we'll do, before the first request.
UCP v1
Universal Commerce Protocol
A manifest describing what a merchant sells, how fresh inventory is, and which capabilities (quote, reserve, hand-off) are safe for an agent to call.
02 / Tool inventory

Eight tools. Scope-gated. No negotiation — every quote is at asking price.

Public (consumer) agents see the four read tools. Named partners see all eight. The tool catalog returned by tools/list is filtered by caller class at the server.

inventory:read
search_inventory
Semantic search over MM inventory, ranked by cosine similarity. Up to 25 results with public fields.
inventory:read
get_vehicle_by_vin
Look up one vehicle by VIN. Returns public fields and a found flag.
inventory:read
check_availability
Batch status check for up to 50 VINs — available, reserved, sold, pending, in_transit.
inventory:read
list_inventory
Structured-filter paginated listing — year, make, model, trim, price window, mileage cap.
quote:write
request_quote
Issue a 30-minute quote at the listed asking price. No parameter accepts a proposed price.
reservation:write
create_reservation
Convert an open quote into a 30-minute soft hold. Non-binding. One active hold per VIN.
reservation:write
release_reservation
Release a reservation you own. Idempotent — safe to call twice.
reservation:write
get_reservation_status
Look up the current state of a reservation your agent created.
read · public + partner write · partner only hand-off · partner only · PII-accepting

A ninth tool — initiate_deal_handoff (scope deal:handoff, PII-accepting, emits a signed email to a live sales manager) — is available to internal and named-partner agents only. Not exposed on the public rail. Ask us about it in the partner track below.

03 / Two tracks

Pick the path that fits.

One endpoint, two authentication rails, two trust models. Consumer agents read. Named partners transact.

1Consumer AI users

Shop MM from your AI.

For anyone in Claude.ai, Claude Code, Cursor, ChatGPT Connectors, or Gemini who wants their agent to shop real vehicles at Mark Miller Subaru live.

  • Search real inventory — semantic or structured. Filter by year, price, mileage, trim.
  • Check price & availability by VIN. Batch up to 50 at a time.
  • Ask for a 30-minute quote at the listed asking price (no negotiation — it's the real number).
  • Request a call-back from a live Mark Miller sales manager when you're ready to talk.
Copy MCP URL into your client

Paste the URL into your AI client's connector settings. Authentication is automatic — DCR + PKCE, open registration. You'll see a one-screen Auth0 consent for inventory:read on mmbrain-prod.us.auth0.com and you're live. No account to create, no key to manage.

2Named B2B partners

For Cox, Dealer.com, CDK, and brokers.

A signed Agent Card, full write surface, per-partner rate limits, 90-day audit trail, and a direct line to Ben Reuling, our technical owner.

  • Signed A2A v1.0 Agent Card — JWS over JCS-canonicalized payload, verifiable against our public JWKS.
  • Full 8-tool surface — read, quote, reservation, plus initiate_deal_handoff on request.
  • Quote / reservation semantics — 30-min TTL, non-binding soft holds, idempotent release, per-agent reservation budget.
  • 90-day audit trail with trace IDs surfaced on every envelope — correlate incidents against mm_inventory.audit_log.
  • Per-partner rate limits tuned in mm_inventory.agents. Default 60 RPM burst; higher tiers on request.
scopes you can request inventory:read quote:write reservation:write deal:handoff
Email Ben to onboard

We'll issue you an Auth0 M2M client on mmbrain-prod.us.auth0.com (audience mm-inventory-mcp), seed a row in mm_inventory.agents, and point you at the partner onboarding guide. Typical turnaround: same day.

04 / Verify us

Don't trust us. Check the well-knowns.

Every claim on this page is backed by a public document at a canonical URL. All four are unauthenticated, cacheable, and safe to fetch programmatically.

Agent Card A2A v1.0 — signed JWS over JCS canonicalization
/.well-known/agent-card.json
MCP server card SEP-1960 — endpoints, scopes, auth methods
/.well-known/mcp
UCP manifest UCP v1 — merchant, capabilities, freshness SLA
/.well-known/ucp
Protected-resource metadata RFC 9728 — resource, authorization servers, scopes
/.well-known/oauth-protected-resource
Agent Card JWKS Public key for Agent Card signature verification
/.well-known/jwks.json
Open spec (source) DMC-12 capability spec + reference materials
github.com/mm-open/dmc-12

Built for your dealership too.

Run another store? The whole stack is an open spec. Fork mm-open/dmc-12, point it at your inventory source, and publish your own MCP + A2A + UCP surface. We'll help.

Fork the spec
copied