Skip to main content
Glama

Briefe im Stapel versenden

order_send_batch
Destructive

Reicht mehrere Briefe als einen Stapel ein. Jeder Eintrag wird einzeln geprüft und bepreist. Der Stapel landet als eine Freigabe für alle Empfänger in der Warteschlange. Mit Autopilot geht ein Stapel, dessen Briefe alle die Autopilot-Regeln erfüllen, nach 10 Minuten raus; order_cancel stoppt ihn bis dahin. Gib dem Menschen immer den zurückgegebenen approvalUrl, damit er Empfängerliste, Anzahl und Gesamtkosten im angemeldeten Portal prüfen und dort entscheiden kann. Nur eine OAuth-Verbindung mit der ausdrücklich erteilten Berechtigung approval:self_approve darf selbst freigeben. Bei Ablehnung wird die gesamte Reservierung zurückgebucht. Mit dryRun bleibt es bei einer kostenfreien Probe. EN: Submits several letters as one batch. Each item is checked and priced separately. The batch enters the approval queue as one approval covering every recipient. With autopilot, a batch whose letters all meet the autopilot rules goes out after 10 minutes; order_cancel stops it until then. Always give the human the returned approvalUrl so they can review the recipient list, count and total cost in the signed-in portal and decide there. Only an OAuth connection explicitly granted approval:self_approve may approve on its own. Rejection refunds the entire reservation. With dryRun, it remains a free rehearsal.

Input Schema

NameRequiredDescriptionDefault
itemsYesListe der Briefe im Stapel. Jeder Eintrag trägt seinen eigenen clientOrderId und genau eine Quelle: eine letterId ODER einen inline Brief. EN: List of letters in the batch. Each entry carries its own clientOrderId and exactly one source: a letterId OR an inline letter.
dryRunNoSimuliert den ganzen Stapel: prüft jeden Eintrag, berechnet aber nichts und versendet nichts. EN: Simulates the whole batch: validates each entry but charges nothing and sends nothing.
presetNameNoOptionales Preset für den ganzen Stapel; pro Eintrag überschreibbar ist nicht vorgesehen. EN: Optional preset for the whole batch; per-entry override is not supported.
stopOnErrorNoBricht den Stapel beim ersten Fehler ab. Standard false. EN: Aborts the batch on the first error. Default false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / items / items / properties / coverTemplateId
      Added value: +{
      +  "description": "Anschreiben für eine eigenständige Formularvorlage. EN: Cover letter for a standalone form template.",
      +  "format": "uuid",
      +  "type": "string"
      +}
    • addedInput schema / properties / items / items / properties / coverTemplateVersionId
      Added value: +{
      +  "description": "Exakte freigegebene Version des Anschreibens. EN: Exact released version of the cover letter.",
      +  "format": "uuid",
      +  "type": "string"
      +}
    • addedInput schema / properties / items / items / properties / templateMergeValues
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Merge-Werte für die exakte Vorlagenversion. EN: Merge values for the exact template version.",
      +  "type": "object"
      +}
    • addedInput schema / properties / items / items / properties / templateVersionId
      Added value: +{
      +  "description": "Exakte freigegebene Vorlagenversion, zusammen mit templateId und den Empfängerfeldern. Der Server rendert sie mit templateMergeValues neu. Betreff und Text kommen allein aus der Vorlage. Der Autopilot prüft nur Einträge dieser Art. EN: Exact released template version, together with templateId and the recipient fields. The server renders it again with templateMergeValues. Subject and text come from the template alone. Autopilot considers only entries of this kind.",
      +  "format": "uuid",
      +  "type": "string"
      +}
  2. Changed9 schema fields changed
    • changedInput schema / properties / dryRun / description
      Previous value: -"Simuliert den ganzen Stapel: prueft jeden Eintrag, berechnet aber nichts und versendet nichts. EN: Simulates the whole batch: validates each entry but charges nothing and sends nothing."New value: +"Simuliert den ganzen Stapel: prüft jeden Eintrag, berechnet aber nichts und versendet nichts. EN: Simulates the whole batch: validates each entry but charges nothing and sends nothing."
    • changedInput schema / properties / items / description
      Previous value: -"Liste der Briefe im Stapel. Jeder Eintrag traegt seinen eigenen clientOrderId und genau eine Quelle: eine letterId ODER einen inline Brief. EN: List of letters in the batch. Each entry carries its own clientOrderId and exactly one source: a letterId OR an inline letter."New value: +"Liste der Briefe im Stapel. Jeder Eintrag trägt seinen eigenen clientOrderId und genau eine Quelle: eine letterId ODER einen inline Brief. EN: List of letters in the batch. Each entry carries its own clientOrderId and exactly one source: a letterId OR an inline letter."
    • changedInput schema / properties / items / items / properties / clientOrderId / description
      Previous value: -"Idempotenzschluessel pro Eintrag: eine beliebige Zeichenkette (1-200 Zeichen; kein UUID-Format noetig). Ein erneuter Aufruf mit demselben Wert liefert dieselbe Bestellung, statt ein zweites Mal zu versenden. Der Namensraum 'approval:' ist reserviert. EN: Idempotency key per entry: any string (1-200 characters; no UUID format required). A repeat call with the same value returns the same order instead of sending a second time. The 'approval:' namespace is reserved."New value: +"Idempotenzschlüssel pro Eintrag: eine beliebige Zeichenkette (1-200 Zeichen; kein UUID-Format nötig). Ein erneuter Aufruf mit demselben Wert liefert dieselbe Bestellung, statt ein zweites Mal zu versenden. Der Namensraum 'approval:' ist reserviert. EN: Idempotency key per entry: any string (1-200 characters; no UUID format required). A repeat call with the same value returns the same order instead of sending a second time. The 'approval:' namespace is reserved."
    • changedInput schema / properties / items / items / properties / designId / description
      Previous value: -"Ein gespeichertes Briefdesign fuer diesen Versand verwenden. Ohne Angabe gilt in dieser Reihenfolge: das am Entwurf gespeicherte Design (beim Versand ueber letterId), sonst das Standard-Design des Absenderprofils, sonst keins. EN: Use a saved letter design for this send. If omitted, in order: the design stored on the draft (when sending by letterId), else the sender profile default design, else none."New value: +"Ein gespeichertes Briefdesign für diesen Versand verwenden. Ohne Angabe gilt in dieser Reihenfolge: das am Entwurf gespeicherte Design (beim Versand über letterId), sonst das Standard-Design des Absenderprofils, sonst keins. EN: Use a saved letter design for this send. If omitted, in order: the design stored on the draft (when sending by letterId), else the sender profile default design, else none."
    • changedInput schema / properties / items / items / properties / priceVersion / description
      Previous value: -"Optional: die priceVersion aus einem vorherigen shipping_quote fuer diesen Eintrag. EN: Optional: the priceVersion from an earlier shipping_quote for this entry."New value: +"Optional: die priceVersion aus einem vorherigen shipping_quote für diesen Eintrag. EN: Optional: the priceVersion from an earlier shipping_quote for this entry."
    • changedInput schema / properties / items / items / properties / quotedUnitPriceCents / description
      Previous value: -"Optional: der Stueckpreis in Cent aus einem vorherigen shipping_quote (unitPriceCents) fuer diesen Eintrag. Entscheidet den PRICE_CHANGED-Abgleich. EN: Optional: the unit price in cents from an earlier shipping_quote (unitPriceCents) for this entry. It decides the PRICE_CHANGED comparison."New value: +"Optional: der Stückpreis in Cent aus einem vorherigen shipping_quote (unitPriceCents) für diesen Eintrag. Entscheidet den PRICE_CHANGED-Abgleich. EN: Optional: the unit price in cents from an earlier shipping_quote (unitPriceCents) for this entry. It decides the PRICE_CHANGED comparison."
    • changedInput schema / properties / items / items / properties / reference / description
      Previous value: -"Werte fuer diesen Brief (Vorgangsnummer, Ihr Zeichen, Kundennummer, QR-Parameter ...). Sie fuellen den Infoblock und den Barcode. EN: Per-letter values (Vorgangsnummer, your reference, customer number, QR parameters ...). They fill the info block and the barcode."New value: +"Werte für diesen Brief (Vorgangsnummer, Ihr Zeichen, Kundennummer, QR-Parameter ...). Sie füllen den Infoblock und den Barcode. EN: Per-letter values (Vorgangsnummer, your reference, customer number, QR parameters ...). They fill the info block and the barcode."
    • changedInput schema / properties / items / items / properties / templateMergeFields / description
      Previous value: -"Merge-Felder fuer ein Template. EN: Merge fields for a template."New value: +"Merge-Felder für ein Template. EN: Merge fields for a template."
    • changedInput schema / properties / presetName / description
      Previous value: -"Optionales Preset fuer den ganzen Stapel; pro Eintrag ueberschreibbar ist nicht vorgesehen. EN: Optional preset for the whole batch; per-entry override is not supported."New value: +"Optionales Preset für den ganzen Stapel; pro Eintrag überschreibbar ist nicht vorgesehen. EN: Optional preset for the whole batch; per-entry override is not supported."
  3. First observed

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is known; the description goes further by explaining that the batch enters an approval queue, that rejection refunds the entire reservation, that autopilot only fires after 10 minutes, and that only connections with approval:self_approve may self-approve. It stops short of describing the return payload's structure beyond approvalUrl, but the behavioral picture is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then behavior, then the human-handoff rule — a sensible order. The main cost is the full English mirror doubling length; each German sentence still carries distinct information (timing, permissions, refunds, dryRun), so little is wasted beyond the duplication convention.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description still volunteers the key return artifact (approvalUrl) and what the human should do with it, plus the reconciliation hook to order_cancel. For a destructive batch-submission tool with a fully described schema, nothing essential to a correct call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description nevertheless adds semantics the schema lacks — dryRun is described as a "kostenfreie Probe" (no charge), and autopilot evaluation is tied to batch composition (all letters must meet the autopilot rules). It does not drill into the per-item fields (clientOrderId idempotency, priceVersion), but those are well documented in the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Reicht mehrere Briefe als einen Stapel ein") and immediately clarifies the per-item vs. whole-batch split (each item checked and priced separately, one approval for all recipients). That scope statement cleanly separates it from the single-send sibling order_send without needing to name it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit about timing (autopilot batches go out after 10 minutes), the escape hatch ("order_cancel stoppt ihn bis dahin" — a named sibling with its condition), the required permission (approval:self_approve), and the recommended human workflow (always hand over approvalUrl). Guidance on what to do before and after the call is fully present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.