MOTORAdvisorShop intelligence powered by motor.comDevelopersOpen the app →

void_quote

Notifications · Write · account-scoped

Retire one of the shop's own quotes — a stale approval can never be billed once it is voided.

Usage

The terminal transition the quote lifecycle was missing (PDW-33): when the scope of work grows and a replacement quote takes over, the old quote — even an approved one — can be taken out of play instead of sitting invoiceable forever. Voiding writes only to MotorAdvisor's own store; MOTOR and the payment provider are untouched.

Voiding kills the public approval link immediately: the customer's page shows the generic "link isn't available" dead end, and a decision POST returns 410. The void is idempotent — voiding an already-voided quote is a no-op, not an error.

The one refusal that matters is by name: QuoteInvoiced. A quote that issue_invoice billed (linked via its quoteId parameter) will not void, because its approval is the shop's evidence the billed work was authorized. Never retry around it — handle any correction on the invoice side.

Prefer supersedes on create_quote_snapshot when a replacement quote exists: approval of the replacement retires the original automatically and links the chain with supersededBy. void_quote is for retiring a quote outright.

The shop resolves from the authenticated account; another shop's quoteId reads as not found.

Parameters

ParameterTypeRequiredDescription
quoteIdstringYesThe quote snapshot id to void. Example: "q_1facac2305cc6b3901077d3b"
reasonstringNoWhy the shop is retiring it, for the record. Example: "replaced by the full brake quote after inspection"

Description advertised to clients

The exact description a fully entitled MCP client discovers — the workflow contracts travel with the tool, so a client with no system prompt still uses it correctly. An account missing a licence for content this tool reaches sees the same text behind a [Licensed content — not enabled on this account] or [Partially available] notice:

Void one of the shop's own quotes — open, sent, or even approved — so a stale approval can never be billed. THIS TOOL RETIRES A COMMERCIAL RECORD owned by the authenticated account's shop: the quote moves to a terminal voided status and its public approval link goes dead immediately. It writes NOTHING to MOTOR (DaaS stays read-only) and nothing to Stripe. An INVOICED quote refuses by name (QuoteInvoiced): its approval is the evidence the billed work was authorized, and that chain is never cut — never retry around this refusal. A declined or superseded quote is already closed and refuses too; voiding an already-voided quote is a no-op, not an error. Prefer supersedes on create_quote_snapshot when a REPLACEMENT quote exists — it retires the old quote automatically on approval and links the chain; void_quote is for retiring a quote outright. The shop is NEVER a parameter: it resolves from the authenticated account, so this tool can only void the caller's own quotes — another shop's quoteId reads as not found.

Example — Retire the diagnose-stage quote a full quote replaced

Illustrative payload shapes (ids elided); the statuses are the live machine's own words.

Request

{
  "quoteId": "q_9c41f0b2ae77d31c55e00e12",
  "reason": "replaced by the full brake quote after inspection"
}

Response

{
  "quoteId": "q_9c41f0b2ae77d31c55e00e12",
  "status": "voided",
  "previousStatus": "approved",
  "voidedAt": "2026-08-24T21:30:00.000Z",
  "voidReason": "replaced by the full brake quote after inspection",
  "linkNote": "The public approval link for this quote is now dead."
}

An invoiced quote refuses with QuoteInvoiced — the approval that authorized billed work is never cut out of the record.