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.
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
| Field | Type | Constraints | |
|---|---|---|---|
| vin | string | required | ^[A-HJ-NPR-Z0-9]{17}$ |
| buyer_ref | string | optional | ≤ 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
| Field | Type | Description | |
|---|---|---|---|
| quote_id | string | always | Opaque quote handle. Feed it to create_reservation. Treat as a black box — do not parse. |
| vin | string | always | The quoted VIN, echoed back. 17 chars, ^[A-HJ-NPR-Z0-9]{17}$. |
| quoted_price | number | always | The firm headline price — always exactly the listed asking_price. The only committed figure. |
| currency | string | always | ISO-4217, ^[A-Z]{3}$ — USD at MM. |
| created_at | string | always | ISO-8601 UTC timestamp the quote was issued. |
| expires_at | string | always | ISO-8601 UTC — 30 minutes after created_at. After this the quote is expired and cannot be reserved. |
| terms | string | optional | Human-readable terms string. Not in the schema's output.required set (always sent by MM, but treat as optional). |
| out_the_door | object | optional | Itemized, non-binding OTD estimate. Present only when pricing disclosure is on with a live fee schedule. See the table below. |
| out_the_door_estimate | true | optional | Present (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.
- Non-binding.
estimateis alwaystrue. The firm headline number remainsquoted_price; the OTD is an itemized projection. - Best-effort. If the fee schedule is missing or malformed, the quote still succeeds — the
out_the_doorblock is simply omitted. Never assume it is present; branch on its existence. - Itemized.
price_linestag each line with akind(vehicle_price|doc|title|registration|tax|addon| …) and apayee(dealer|government|manufacturer|third_party).taxes_totalsums thetaxlines;fees_totalsums dealer non-vehicle lines. - No
subtotal. The inline OTD omits it — derive it asamount − taxes_total.amountif you need it. (The standaloneget_pricing_disclosureresponse still carriessubtotal.) - Jurisdiction is
US-UT. The MM doc fee is$445; sales tax, title, and registration currently itemize at$0.00on this deployment.
The out_the_door object
| Field | Type | Description | |
|---|---|---|---|
| amount | number | required | The OTD total = sum of every price_lines amount (vehicle price + fees + taxes). Sits where the old bare total used to. |
| currency | string | required | ISO-4217, ^[A-Z]{3}$. |
| price_lines | PriceLine[] | required | The itemized lines bridging quoted_price → amount. See the PriceLine table below. |
| fees_total | Money | required | Sum of dealer-payee, non-vehicle fee lines (the doc fee at MM). |
| taxes_total | Money | required | Sum of all tax-kind lines ($0 at MM today). |
| estimate | true | required | Always true — the OTD is non-binding. |
| jurisdiction | string | required | Tax jurisdiction, ^[A-Z]{2}-[A-Z0-9]+$ — US-UT at MM. |
| as_of | string | required | ISO-8601 UTC — when the estimate was composed (fee schedule + tax rate in effect at this instant). |
| disclosure_form_url | string (URI) | optional | Link 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).
| Field | Type | Description | |
|---|---|---|---|
| label | string (≤80) | required | Human-readable line label, e.g. "Documentation fee". |
| kind | FeeKind | required | One of vehicle_price, tax, title, registration, doc, addon, transport, rebate, discount, trade_credit, down_payment, lien_payoff, interest. Never the free-form string "fee". |
| payee | FeePayee | required | One of government, dealer, manufacturer, third_party. |
| amount | Money | required | { amount, currency } for this single line. |
| statutory_basis | string | optional | Legal basis for a tax/government line, e.g. "Utah motor-vehicle sales tax". |
| negotiable | boolean | optional | Defaults false. The vehicle line tracks the deployment's negotiation toggle (off at MM, so false). |
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.