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 2. Examples use placeholders and do not call production.
approval_submit
actionscope: order:sendSubmits a letter for human approval: checks mandatory details, recipient, data processing agreement and limits, creates the final PDF, calculates the price, reserves the cost and adds an approval to the queue. The embedded card is the preview and approval. Once it appears, a short chat confirmation is enough; PDF links and letter text belong in text-only views. With approval:self_approve, the card shows Approve and Reject. In every other case it opens the signed-in portal. With dryRun, the balance and queue remain 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 | ch_b_post | ch_a_post | ch_einschreiben | at_eco | at_prio | intl_standard | intl_priority | intl_express | intl_tracked | intl_registered | 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. 'approve' is allowed only when this OAuth connection was explicitly granted the additional approval:self_approve scope. When that scope is absent, the human opens the returned approvalUrl and decides in the signed-in portal. approval:decide is also required. An agent approval dispatches after 10 minutes and can be stopped with order_cancel until then.
Input contract
| Field | Type | Requirement | Meaning |
|---|---|---|---|
approvalId | string | required | |
decision | approve | reject | required | |
comment | string | optional | |
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.