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. It waits for a person's decision, also with autopilot. The embedded card is the preview and approval. The PDF link and letter text are also in the result, for 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, and the answer contains the checks list (each gate with passed, failed or skipped).
Input contract
| Field | Type | Requirement | Meaning |
|---|---|---|---|
letterId | string | optional | Existing draft. The letter can come inline instead. |
subject | string | optional | |
content | string | optional | |
recipientAddressId | string | optional | A saved address from the address book (address_list) as the recipient, in place of the fields recipientName to recipientCountry. |
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' requires that this OAuth connection carries the separately granted 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.