Dedicated tool guide
approval_submit and approval_decide
Submit an exact letter for review, then record an authorized human approve or reject decision.
Generated contract: apiVersion v1, schemaRevision 1. Examples use placeholders and do not call production.
approval_submit
actionscope: order:sendSubmits a letter for human approval instead of sending it right away: checks mandatory details, recipient, AVV and limits, creates the final PDF, calculates the price, reserves the cost and adds an approval to the queue. The send only happens once the returned approvalId is approved via approval_decide. With dryRun it stops at the check: balance and queue stay untouched.
Input contract
| Field | Type | Requirement | Meaning |
|---|---|---|---|
letterId | string | optional | Existing draft. Alternatively provide the letter inline. |
subject | string | optional | |
content | string | optional | |
recipientName | string | optional | |
recipientCompany | string | optional | |
recipientStreet | string | optional | |
recipientHouseNumber | string | optional | |
recipientZip | string | optional | |
recipientCity | string | optional | |
recipientCountry | string | optional | ISO 3166-1 alpha-2, defaults to DE. |
deliveryType | standard | einschreiben_einwurf | einschreiben_uebergabe | optional | Defaults to standard. |
express | boolean | optional | |
color | boolean | optional | If omitted, colour is detected automatically. |
includeSignature | boolean | optional | |
signatureId | string | optional | |
senderAddressId | string | optional | |
senderProfileId | string | optional | |
mandantennummer | string | optional | |
clientOrderId | string | optional | Idempotency key. A repeat call with the same value returns the same approval instead of submitting a second time. The 'approval:' prefix is reserved. |
scheduledAt | string | optional | |
approvalMode | auto | draft | review | optional | |
maxCostEuros | number | optional | Maximum amount in euros. If the price is above it, the call is aborted. |
presetName | string | optional | |
auditTag | string | optional | |
templateId | string | optional | |
reason | string | optional | Short reason for the approval, shown to the reviewer on the card. |
requesterContext | string | optional | Additional context about the submitter or the occasion. |
dryRun | boolean | optional |
approval_decide
actionscope: approval:decideApproves or rejects a pending approval on the human's behalf. IMPORTANT: before calling 'approve' here you MUST show the human (a) the preview link (previewUrl) of the letter, (b) the exact total price in euros and (c) the delivery type (e.g. registered mail hand delivery or standard) and obtain their explicit consent; then set user_saw_preview:true. A chat approval dispatches after a 10-minute grace window: the letter goes out then and can be stopped until it does (if the human says 'stop', call order_cancel). On rejection the letter stays a draft and the reservation is refunded.
Input contract
| Field | Type | Requirement | Meaning |
|---|---|---|---|
approvalId | string | required | |
decision | approve | reject | required | |
comment | string | optional | |
user_saw_preview | boolean | optional | Confirmation that you showed the human the preview PDF, the exact price and the delivery type and obtained consent. Required to approve. |
clientOrderId | string | optional |
Contract-shaped example
approval_submit({
"letterId": "REVIEWED_LETTER_ID",
"recipientName": "Max Mustermann",
"recipientStreet": "Musterstrasse",
"recipientHouseNumber": "1",
"recipientZip": "10115",
"recipientCity": "Berlin",
"clientOrderId": "contract-482-approval-v1",
"maxCostEuros": 10,
"reason": "Reviewed contract notice"
})
approval_decide({
"approvalId": "APPROVAL_ID",
"decision": "approve",
"user_saw_preview": true,
"clientOrderId": "contract-482-decision-v1"
})Only set user_saw_preview:true after the authorized human saw the preview, exact price, and delivery type. A model statement is not human approval.
For conditional fields and nested object limits, the generated complete tool reference remains authoritative. See errors and safe agent onboarding before implementing retries or a live send.
Trust and live status
Machine-readable service facts and the current operational status of the partner interface are publicly available at all times, no login needed.