action.approve

Coming July 20, 2026

Approve a pending decision and let the action engine execute it.

CategoryAction
JSON-RPCtools/call
EndpointPOST /mcp

Description

Resolves a single `pending_approval` decision by id. The action engine commits the underlying side effect and appends a ledger entry with the approval provenance.

Input schema

FieldTypeRequiredDescription
decision_idstringyesThe id returned by the original action call.
reasonstringnoOptional approval rationale (recorded in ledger).

Output shape

typescript
{
  ok: boolean;
  ledger_entry_id?: string;
  error?: string;
}

Example call

JSON-RPC tools/call request body (omit the JSON-RPC envelope when using an SDK; the SDK adds it for you):

jsontools/call params
{
  "name": "action.approve",
  "arguments": {
    "decision_id": "dec_01HXP9COMM",
    "reason": "Confirmed via 1:1"
  }
}

Example response

Tool results are always wrapped as content[0].text with a stringified JSON body. The shape below is what you get back from JSON.parse(result.content[0].text):

jsonparsed result body
{
  "ok": true,
  "ledger_entry_id": "led_01HXP9APPR"
}

Errors this tool can return

CodeMeaning
invalid_argumentsTool input failed Zod validation.
unauthorizedMissing or invalid bearer token.
invalid_decision_idNo pending decision matches the supplied id.
decision_expiredThe approval window for a pending decision has elapsed.
already_decidedThe decision was already approved or rejected.
action_engine_errorThe action engine refused to enqueue the decision (downstream failure, transient).

See the full error catalog for resolution steps on each code, plus the standard transport-layer responses (401, 429).

Notes