create_confirmation
Creates a human-in-the-loop confirmation request, sending an approval prompt to configured channels and accepting the first response as the decision.
Instructions
Create a HITL confirmation request. Sends an approval request to the channels configured on the referenced HITL config. First response wins.
Agent usage: The HITL config referenced by hitl_id must be authorized before you can create confirmations. If this returns a 403 or "not authorized" error, call request_hitl_authorization on the HITL config first, then wait for the user to approve via the messaging channel. After creating a confirmation, poll get_confirmation to check for approval/denial, or use get_confirmation_approval_link to generate a fresh link for the user.
Encryption (v1 vs v2): when the HITL config has E2E encryption enabled, message must be a JSON ciphertext envelope, not plaintext. Choose the version by who must be able to decrypt:
v1 (single-recipient): wraps the content key for the config owner only. Use when there are no enrolled non-owner approvers.
v2 (multi-recipient): additionally wraps the content key for each enrolled approver via an
approver_ekmap, so every approver can decrypt. Use when the config has enrolled approvers — otherwise approvers get "wrong password" on the approval page. Build it with the SDKencryptMessageV2(plaintext, ownerPublicKey, hitlId, approverKeys)after fetching the approvers via the SDKgetApproverKeys(hitlId)(GET /api/v1/hitl/:id/approver-keys). AAD is thehitlId.
ACCESS: needs a Proof account. Set PROOF_API_KEY and restart this server, then call this tool again. start_login does NOT open this tool.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| hitl_id | Yes | HITL config ID whose channels will receive the approval request | |
| message | Yes | Human-readable description of what needs approval | |
| proof_expiry_days | No | Per-request proof expiry override in days (7, 30, 90, or 365) |