DMC-12 Mark Miller Subaru / dmc-12 guide
endpoint live · DMC-12 v0.6 · 11 tools

Quotes

One tool: request_quote, scope quote:write. It issues a 30-minute price quote for a VIN at the listed asking price and returns a quote_id you feed into create_reservation. Field conventions (VIN, Money, timestamps, enums) are in Data formats.

Asking price only — there is no proposed-price parameter quoted_price is always exactly the vehicle's asking_price. No input field accepts a counter or proposed price; this is enforced server-side and is the headline policy of MM's deployment (negotiation is off). If you need a discount conversation, that happens with the human after hand-off.

request_quote

FieldTypeConstraints
vinstringrequired^[A-HJ-NPR-Z0-9]{17}$
buyer_refstringoptional≤ 200 chars — opaque; your own correlation handle, not PII

Request

{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "request_quote",
    "arguments": { "vin": "4S4BTGUD8R3201234", "buyer_ref": "caredge-sess-91f3" }
  }
}

Response

{ "data": {
    "quote_id": "qte_8f1c…",
    "vin": "4S4BTGUD8R3201234",
    "quoted_price": 34187.0,
    "currency": "USD",
    "created_at": "2026-05-27T18:04:11+00:00",
    "expires_at": "2026-05-27T18:34:11+00:00",
    "terms": "Quote valid for 30 minutes at the listed asking price. No negotiation. …",

    "out_the_door": {
      "amount": 34632.0,
      "currency": "USD",
      "price_lines": [
        { "label": "Vehicle price", "kind": "vehicle_price", "payee": "dealer",
          "amount": { "amount": 34187.0, "currency": "USD" }, "negotiable": false },
        { "label": "Documentation fee", "kind": "doc", "payee": "dealer",
          "amount": { "amount": 445.0, "currency": "USD" }, "negotiable": false },
        { "label": "Title fee", "kind": "title", "payee": "government",
          "amount": { "amount": 0.0, "currency": "USD" } },
        { "label": "Registration fee", "kind": "registration", "payee": "government",
          "amount": { "amount": 0.0, "currency": "USD" } },
        { "label": "Utah sales tax", "kind": "tax", "payee": "government",
          "amount": { "amount": 0.0, "currency": "USD" },
          "statutory_basis": "Utah motor-vehicle sales tax" }
      ],
      "fees_total":  { "amount": 445.0, "currency": "USD" },
      "taxes_total": { "amount": 0.0,   "currency": "USD" },
      "estimate": true,
      "jurisdiction": "US-UT",
      "as_of": "2026-05-27T18:04:11+00:00",
      "disclosure_form_url": "https://dmv.utah.gov/…/mved-tx-disclosure-form.pdf"
    },
    "out_the_door_estimate": true
} }

Response fields

FieldTypeDescription
quote_idstringalwaysOpaque quote handle. Feed it to create_reservation. Treat as a black box — do not parse.
vinstringalwaysThe quoted VIN, echoed back. 17 chars, ^[A-HJ-NPR-Z0-9]{17}$.
quoted_pricenumberalwaysThe firm headline price — always exactly the listed asking_price. The only committed figure.
currencystringalwaysISO-4217, ^[A-Z]{3}$USD at MM.
created_atstringalwaysISO-8601 UTC timestamp the quote was issued.
expires_atstringalwaysISO-8601 UTC — 30 minutes after created_at. After this the quote is expired and cannot be reserved.
termsstringoptionalHuman-readable terms string. Not in the schema's output.required set (always sent by MM, but treat as optional).
out_the_doorobjectoptionalItemized, non-binding OTD estimate. Present only when pricing disclosure is on with a live fee schedule. See the table below.
out_the_door_estimatetrueoptionalPresent (and always true) iff out_the_door is present. The pair travels together.

The out-the-door estimate

Pricing disclosure is live on MM's deployment (the pricing:read scope is advertised). When the dealer has a published fee schedule for the store + jurisdiction, the quote response carries an additional out_the_door object and an out_the_door_estimate: true flag. It is the same breakdown the standalone get_pricing_disclosure tool returns, flattened so the OTD total sits at the top of the object.

The out_the_door object

FieldTypeDescription
amountnumberrequiredThe OTD total = sum of every price_lines amount (vehicle price + fees + taxes). Sits where the old bare total used to.
currencystringrequiredISO-4217, ^[A-Z]{3}$.
price_linesPriceLine[]requiredThe itemized lines bridging quoted_priceamount. See the PriceLine table below.
fees_totalMoneyrequiredSum of dealer-payee, non-vehicle fee lines (the doc fee at MM).
taxes_totalMoneyrequiredSum of all tax-kind lines ($0 at MM today).
estimatetruerequiredAlways true — the OTD is non-binding.
jurisdictionstringrequiredTax jurisdiction, ^[A-Z]{2}-[A-Z0-9]+$US-UT at MM.
as_ofstringrequiredISO-8601 UTC — when the estimate was composed (fee schedule + tax rate in effect at this instant).
disclosure_form_urlstring (URI)optionalLink to the jurisdiction's official OTD disclosure form, when published.

PriceLine

One per item in price_lines. Shared with get_pricing_disclosure and the negotiation schemas (common.json#/$defs/PriceLine).

FieldTypeDescription
labelstring (≤80)requiredHuman-readable line label, e.g. "Documentation fee".
kindFeeKindrequiredOne of vehicle_price, tax, title, registration, doc, addon, transport, rebate, discount, trade_credit, down_payment, lien_payoff, interest. Never the free-form string "fee".
payeeFeePayeerequiredOne of government, dealer, manufacturer, third_party.
amountMoneyrequired{ amount, currency } for this single line.
statutory_basisstringoptionalLegal basis for a tax/government line, e.g. "Utah motor-vehicle sales tax".
negotiablebooleanoptionalDefaults false. The vehicle line tracks the deployment's negotiation toggle (off at MM, so false).
Want OTD without a quote? Call get_pricing_disclosure(vin) (scope pricing:read, public-rail callable, no PII, no DB write) at the search / triage step — useful before the buyer commits to a quote. It returns the same line items (`price_lines`) and totals, but in the full disclosure shape, not this flattened out_the_door object: there, price_lines, subtotal, fees_total, taxes_total, and the OTD total (out_the_door, a bare Money) all sit at the top level. The quote's inline out_the_door is the flattened OutTheDoorEstimate above (total promoted, no subtotal).

Lifecycle

A quote is open for 30 minutes. Convert it to a hold with create_reservation (which flips the quote to converted); let it lapse and it moves to expired. A quote can only be converted by the agent that created it. Common errors: VEHICLE_NOT_FOUND, VEHICLE_UNAVAILABLE (status isn't available) — see the error taxonomy.

copied