action.reject

Coming July 20, 2026

Reject a pending decision and discard it from the queue.

CategoryAction
JSON-RPCtools/call
EndpointPOST /mcp

Description

Resolves a single `pending_approval` decision by id without executing the underlying side effect. The rejection is recorded in the ledger and demotes trust for the (action class × counterparty) pair if applicable.

Input schema

FieldTypeRequiredDescription
decision_idstringyesThe id returned by the original action call.
reasonstringnoOptional rejection 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.reject",
  "arguments": {
    "decision_id": "dec_01HXP9COMM",
    "reason": "Wrong recipient"
  }
}

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_01HXP9REJ"
}

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