MOTORAdvisorShop intelligence powered by motor.comDevelopersOpen the app →

capture_consent

Notifications · Write · account-scoped

Record a customer's notification consent at the counter — the record every send tool requires.

Usage

The intake step for a pure-MCP relationship: without a consent record, every send tool on this server correctly refuses with no-consent. This tool creates that record — and it writes a legal consent record, so the capture is two steps by construction:

  1. Call without attested — nothing is written. The response is the exact disclosure text to read to the customer verbatim (no paraphrase, summary, or translation), plus its version.
  2. After the customer clearly agrees, re-call with attested: true and the disclosureVersion from step 1. A version the server doesn't know — or one that's no longer current — refuses, because a consent pointing at text that was never shown is worse than no record at all.

The record stores the normalized destination, the exact disclosure version, and method verbal_attested — the audit trail never dresses an agent-mediated verbal capture up as a signed form. The response includes the customerId the quote and invoice send paths match on (generated when the shop has no reference of its own).

There is no revoke through this surface: customers opt out themselves via the link in any email or STOP by SMS, and a destination on the suppression list stays unreachable even with a fresh consent — the capture succeeds but says so.

Parameters

ParameterTypeRequiredDescription
channel"email" | "sms"YesWhich channel the customer is opting into. Example: "email"
scope"quote" | "invoice" | "both"YesWhat the shop may send: quote approvals, invoice pay links, or both. Example: "both"
destinationstringYesThe customer's email or phone, exactly as they gave it — it is normalized before storage. Example: "casey@example.com"
customerIdstringNoThe shop's reference for this customer, when one exists (e.g. from the work order). Omit and a stable reference is generated. Example: "cust_casey"
attestedbooleanNoPass true ONLY after the disclosure text (from calling this tool without attested) was read to the customer verbatim and they agreed. Example: true
disclosureVersionstringNoRequired with attested: the version from the disclosure prompt, pinning exactly which text the customer heard. Example: "2026-08-19.v1"

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:

Record a customer's notification consent at the counter — the record every send tool on this server requires before it will message anyone. THIS TOOL WRITES A LEGAL CONSENT RECORD for the authenticated account's shop; it writes NOTHING to MOTOR — DaaS stays read-only. CAPTURE IS TWO STEPS AND THE FIRST WRITES NOTHING: call without attested to receive the exact disclosure text — READ IT TO THE CUSTOMER VERBATIM (do not paraphrase, summarize, or translate it) — then, only after they clearly agree, re-call with attested: true and the disclosureVersion from the prompt. Calling attested without the customer having heard the disclosure creates a false legal record — never do it. The record stores the normalized destination, the exact disclosure version, and method "verbal_attested"; the response includes the customerId that quote and invoice sends will match on. There is NO revoke through this surface: the customer opts out themselves via the link in any message (email) or STOP (SMS), and a destination that opted out stays unreachable even with a fresh consent. The shop is NEVER a parameter: it resolves from the authenticated account.

Example — Two-step capture at the counter

Illustrative payload shapes; the disclosure text is the live current version, verbatim.

Request

{
  "channel": "email",
  "scope": "both",
  "destination": "casey@example.com",
  "attested": true,
  "disclosureVersion": "2026-08-19.v1"
}

Response

{
  "captured": true,
  "consentId": "cons_…",
  "customerId": "cust_mcp_…",
  "channel": "email",
  "scope": "both",
  "destination": "casey@example.com",
  "disclosureVersion": "2026-08-19.v1",
  "method": "verbal_attested",
  "capturedAt": "2026-08-21T15:10:00.000Z"
}

The same call without attested returns {captured: false, disclosureText, disclosureVersion, instruction} and writes nothing — that's the step where the customer actually hears the disclosure.