report_checkout_step

Call at each step of your own checkout (checkout_by agent): the user watches it live in the Envoy app.

MCP tool report_checkout_step, called with tools/call on https://api.envoy.money/mcp (Streamable HTTP).

Call at each step of your own checkout (checkout_by agent): the user watches it live in the Envoy app. Moves no money, returns no card. Repeats are harmless.

TitleServiceRead onlyDestructiveIdempotentExternal sites
Report a checkout steppurchasefalsefalsetruefalse

The text content is a plain-English briefing, then one line of JSON with the slim agent data. structuredContent holds that same slim data. isError is true when the call failed and changed nothing. Diagnostics for support are in _meta["money.envoy/support"]; they are not for the model. Tool annotations describe effects; they do not grant permission. The HTTP API returns the full envelope: see the API reference page.

Input

Prop

Type

Unknown fields are rejected. The exact input schema is on the schemas page.

Synthetic request

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "report_checkout_step",
    "arguments": {
      "purchase": "synthetic-intent-0001",
      "step": "payment_page_reached"
    }
  }
}

Success data

The text content opens with a briefing: one to three sentences for the user, then What to do: for the agent. Tell the user the first part in your own words and do what What to do says. One JSON line follows with these fields. Pass next.args unchanged to next.tool. Never show the JSON line, ids or codes to the user. Outputs may gain fields, so ignore ones you do not recognize.

FieldRequiredTypeDescription and rules
situationNo"needs_details" | "needs_answer" | "waiting_for_user" | "working" | "ready" | "confirming" | "done" | "stopped" | "needs_support"Where the purchase stands. The English briefing above says what it means.
purchase_idNostringPass as purchase in later calls. Never show it to the user.
nextNoobjectThe call to make next: tool, args (pass verbatim) and wait_seconds before calling.
retryNo"same_call" | "after_fix" | "check_status_first" | "new_purchase" | "no"Whether and how to retry.
fixNoarrayInput fields to fix before retrying.
support_refNostringGive this to the user only if they ask for help.

Synthetic result

Example synthetic-unauthenticated (synthetic data, the MCP text content; JSON is formatted here for reading but arrives on one line):

Envoy needs to be reconnected to this assistant.

What to do: Ask the user to reconnect Envoy, then try again. If the user asks for help, give them the reference EV-72Z0SF.

{
  "retry": "no",
  "support_ref": "EV-72Z0SF"
}

Errors

A failure sets isError to true and changes nothing. The briefing says what happened and what to do; retry and fix in the JSON line say whether and how to retry. Branch on those, not on a code: these common codes appear only in _meta["money.envoy/support"], for support. See all error codes for the complete contract list.

CodeHTTP statusMeaningWhat the agent does
INVALID_INPUT400Fix the supplied input.Fix the fields listed in the data below and make the same call again.
UNAUTHENTICATED401Reconnect through Central Auth.Ask the user to reconnect Envoy, then try again.
UNAVAILABLE503The service is unavailable; follow retryable and next.Wait, then make the same call again. Don't pay any other way meanwhile.

Downloads

OpenAPI · MCP catalog · Synthetic examples · Schemas

On this page