Steuerberater-Transkript
Dieses Transkript ist in sich geschlossen: mit jedem frischen Test-Token aus /dashboard/tokens Ende-zu-Ende reproduzierbar. Es wird kein Preset, kein Adressbuch-Eintrag und keine vorherige Konfiguration vorausgesetzt, jede Voraussetzung wird inline oder als früherer Schritt in genau diesem Transkript angelegt.
- Setup: Steuerkanzlei Müller holt sich einen frischen Test-Token aus dem Test-Token-Tab in /dashboard/tokens und trägt ihn als Authorization-Header ein. Jeder Aufruf unten läuft mit isTest:true, ist vollständig reproduzierbar und kostet nichts.
- Tool-Aufruf
mcp_health
- Ergebnis
{ "status": "ok", "code": "OK", "message": "Verbindung geprüft.", "data": { "healthy": true, "isTest": true }, "requestId": "req_1a0f5c22" } - Dieses Transkript zeigt das Preset, das die Kanzlei täglich benutzt. Es wird hier als expliziter erster Schritt angelegt, damit das Transkript keine versteckte Voraussetzung hat (Finding 12): preset_save, danach order_send mit Verweis auf den Namen.
- Tool-Aufruf
preset_save { "name": "kanzlei-einspruch", "preset": { "deliveryType": "einschreiben_uebergabe", "approvalMode": "review", "cooldownMinutes": 15, "kiKennzeichnung": true } } - Ergebnis
{ "status": "ok", "code": "OK", "message": "Voreinstellung gespeichert.", "data": { "name": "kanzlei-einspruch", "createdAt": "2026-07-05T08:12:03Z" }, "requestId": "req_3f8a2c91" } - Tool-Aufruf
address_search_company { "query": "Finanzamt München-Land" } - Ergebnis
{ "status": "ok", "code": "OK", "message": "Treffer gefunden.", "data": { "matches": [ { "recipientCompany": "Finanzamt München-Land", "recipientStreet": "Postfach 12 52", "recipientZip": "80292", "recipientCity": "München", "recipientCountry": "DE" } ] }, "requestId": "req_9b21d0f4" } - Der Empfänger unten kommt direkt aus dem Ergebnis von address_search_company, inline im order_send-Aufruf, sodass auch dieses Transkript keine Adressbuch-Voraussetzung hat.
- Briefdesign: die Kanzlei speichert ihren wiederverwendbaren Briefkopf einmalig mit letter_design_save. Der Infoblock trägt "Unser Zeichen" als festen Wert und "Vorgang" wird pro Brief aus reference befüllt; die QR-Payload-Vorlage löst {{vorgangsnummer}} genauso auf. Ein ungültiges Design (z. B. eine Box, die ins Adressfenster ragt) würde hier sofort mit DESIGN_ZONE_VIOLATION abgelehnt, noch bevor es in einem Versand verwendet wird.
- Tool-Aufruf
letter_design_save { "name": "Kanzlei-Standard", "design": { "schemaVersion": 1, "infoblock": { "enabled": true, "rows": [ { "key": "unser_zeichen", "label": "Unser Zeichen", "staticValue": "AB-2026" }, { "key": "vorgangsnummer", "label": "Vorgang", "staticValue": null } ] }, "barcode": { "enabled": true, "type": "qr", "placement": "infoblock", "payloadTemplate": "https://portal.kanzlei.de/v/{{vorgangsnummer}}" } } } - Ergebnis
{ "status": "ok", "code": "OK", "message": "Briefdesign gespeichert.", "data": { "designId": "a4f0e1c2-9d3b-4a55-8e21-6c9f0a2b7d40", "name": "Kanzlei-Standard", "created": true, "updated": false, "designHash": "9f2a7c1e5b3d8046a1c9e7f2b4d6081a3e5c7b9d1f2a4c6e8b0d2f4a6c8e0b21" }, "requestId": "req_5a92cf17" } - Bevor das Design in einem echten Versand verwendet wird, prüft die Kanzlei es in der Vorschau mit der Vorgangsnummer, die dieser Fall tragen wird. Es wird nichts berechnet und nichts versendet; previewUrl zeigt Briefkopf, Infoblock und QR genau so, wie ein echter Brief sie tragen würde.
- Tool-Aufruf
letter_design_preview { "designId": "a4f0e1c2-9d3b-4a55-8e21-6c9f0a2b7d40", "reference": { "vorgangsnummer": "2026-0042" } } - Ergebnis
{ "status": "ok", "code": "OK", "message": "Vorschau erstellt.", "data": { "previewUrl": "https://storage.frankki.app/test/previews/0c9a7f3e-9d1e4a2b.pdf?X-Amz-Expires=900", "expiresInSeconds": 900, "pageCount": 1, "designHash": "9f2a7c1e5b3d8046a1c9e7f2b4d6081a3e5c7b9d1f2a4c6e8b0d2f4a6c8e0b21" }, "requestId": "req_b1e04d63" } - Tool-Aufruf
order_send { "clientOrderId": "einspruch-schmidt-2026-07-05", "subject": "Einspruch gegen Steuerbescheid vom 15.05.2026", "content": "Sehr geehrte Damen und Herren,\n\nhiermit lege ich im Auftrag meines Mandanten, Herrn Schmidt, Einspruch gegen den Steuerbescheid vom 15.05.2026 ein. Die als Betriebsausgabe geltend gemachten Homeoffice-Kosten in Höhe von 8.400 Euro wurden nicht anerkannt...\n\nMit freundlichen Grüßen", "recipientCompany": "Finanzamt München-Land", "recipientStreet": "Postfach 12 52", "recipientZip": "80292", "recipientCity": "München", "recipientCountry": "DE", "presetName": "kanzlei-einspruch", "designId": "a4f0e1c2-9d3b-4a55-8e21-6c9f0a2b7d40", "reference": { "vorgangsnummer": "2026-0042" } } - designId und reference laufen bei order_send mit: Infoblock und QR lösen vorgangsnummer:"2026-0042" für genau diesen Brief auf, und der Auftrag speichert designId + einen design_hash für die Nachvollziehbarkeit, auch wenn dieser Aufruf das nicht in den Ergebnisdaten unten zeigt (das erscheint stattdessen bei einer dryRun-Vorschau).
- Umfang der Probe (§1.1 im Sandbox-Design, Rubrik-Punkt 3): das Preset kanzlei-einspruch verlangt eigentlich den Freigabe-Modus review. Für einen Test-Token erzwingt die Sandbox stattdessen effectiveMode:auto: dein LIVE-Versand mit diesem Preset würde in der Freigabe-Queue landen, aber die Sandbox probt nur den Auto-Versand-Pfad. Das ist eine bewusste, eng gefasste Vereinfachung, keine stille Abweichung.
- Ergebnis
{ "status": "ok", "code": "OK", "message": "Auftrag angelegt.", "data": { "orderId": "5b6e9b8a-2b2b-4e7b-9b1a-8f0a6a3d9d21", "letterId": "0c9a7f3e-51df-4d0a-9c11-2a7de6f6a611", "costCents": 759, "costEuros": 7.59, "costCentsBreakdown": { "base": 649, "einschreiben": 110 }, "estimatedDeliveryDate": "2026-07-08", "trackingHandle": "5b6e9b8a-2b2b-4e7b-9b1a-8f0a6a3d9d21", "status": "paid", "isReplay": false, "fulfillmentProvider": "letterxpress", "einlieferungsbelegPending": true }, "requestId": "req_7c40e912" } - costCents:759 ist der echte Marktpreis, den ein Live-Versand kosten würde, aus Kostentransparenz auch in der Probe gezeigt (keine versteckten Kosten). Abgebucht wird trotzdem nichts: die Sandbox bucht eine 0-Cent-Wallet-Zeile mit is_test:true (balance_after gleich balance_before). Die PDF trägt das Wasserzeichen "TESTVERSAND / SANDBOX" und liegt unter dem test/-Präfix.
- Tool-Aufruf
order_status { "orderId": "5b6e9b8a-2b2b-4e7b-9b1a-8f0a6a3d9d21" } - Ergebnis
{ "status": "ok", "code": "OK", "message": "Status geladen.", "data": { "status": "created", "timeline": [ { "source": "sandbox", "title": "Testauftrag angelegt (Sandbox)", "occurredAt": "2026-07-05T08:12:07Z" } ], "cancellable": false }, "requestId": "req_0a4b7e33" } - Wird derselbe Aufruf nach der simulierten Zeit aus generated/sandbox.json erneut gepollt (20s bis "accepted", 60s bis "delivered"), wandert der Status weiter. Es wird nichts geschrieben, jeder Lesevorgang berechnet ihn frisch aus created_at.
- Ergebnis
{ "status": "ok", "code": "OK", "message": "Status geladen.", "data": { "status": "delivered", "timeline": [ { "source": "sandbox", "title": "Testauftrag angelegt (Sandbox)", "occurredAt": "2026-07-05T08:12:07Z" }, { "source": "sandbox", "title": "An den Versandpartner übergeben (simuliert)", "occurredAt": "2026-07-05T08:12:27Z" }, { "source": "sandbox", "title": "Zugestellt (simuliert)", "occurredAt": "2026-07-05T08:13:07Z" } ], "cancellable": false }, "requestId": "req_5f9c1a02" } - Tool-Aufruf
order_einlieferungsbeleg { "orderId": "5b6e9b8a-2b2b-4e7b-9b1a-8f0a6a3d9d21" } - Ergebnis
{ "status": "ok", "code": "OK", "message": "Beleg geladen.", "data": { "orderId": "5b6e9b8a-2b2b-4e7b-9b1a-8f0a6a3d9d21", "belegPdfUrl": "https://storage.frankki.app/test/belege/5b6e9b8a-2b2b-4e7b-9b1a-8f0a6a3d9d21.pdf?X-Amz-Expires=86400", "belegPdfUrlValidityDays": 1, "poststempelAt": "2026-07-05T08:13:07Z", "provider": "letterxpress", "deliveryType": "non-binding", "legalProof": "non-binding" }, "requestId": "req_8e21bb50" } - legalProof:"non-binding" markiert diesen Beleg als Proben-Artefakt, nie als gerichtsfesten Einlieferungsnachweis, in der Form wie ein echter Einlieferungsbeleg, im Inhalt aber klar nicht bindend.
- Zwei Wochen später fragt der Steuerberater seinen Agenten: "Wann kam mein Einspruch im Fall Schmidt beim Finanzamt München an?"
- Tool-Aufruf
letter_search { "query": "Einspruch Schmidt Finanzamt München" } - Ergebnis
{ "status": "ok", "code": "OK", "message": "1 Treffer.", "data": { "items": [ { "letterId": "0c9a7f3e-51df-4d0a-9c11-2a7de6f6a611", "subject": "Einspruch gegen Steuerbescheid vom 15.05.2026", "orderId": "5b6e9b8a-2b2b-4e7b-9b1a-8f0a6a3d9d21" } ], "limit": 20, "offset": 0 }, "requestId": "req_2b7f6cd1" } - Tool-Aufruf
letter_get { "letterId": "0c9a7f3e-51df-4d0a-9c11-2a7de6f6a611" } - Ergebnis
{ "status": "ok", "code": "OK", "message": "Brief geladen.", "data": { "letterId": "0c9a7f3e-51df-4d0a-9c11-2a7de6f6a611", "orderId": "5b6e9b8a-2b2b-4e7b-9b1a-8f0a6a3d9d21", "subject": "Einspruch gegen Steuerbescheid vom 15.05.2026", "status": "delivered", "pdfUrl": "https://storage.frankki.app/test/letters/0c9a7f3e-51df-4d0a-9c11-2a7de6f6a611.pdf?X-Amz-Expires=86400" }, "requestId": "req_44d9a781" } - Das ist der komplette, in sich geschlossene Sandbox-Ablauf: 10 Tool-Aufrufe, 0 Cent Belastung, kein echter Brief. Mit jedem frischen Test-Token reproduzierbar.
Verwendete Tools
Jedes Tool hier ist in der Tool-Referenz vollständig dokumentiert (Felder, Scope, dryRun).
Vertrauen und Live-Status
Maschinenlesbare Servicefakten und der aktuelle Betriebsstatus der Partner-Schnittstelle stehen jederzeit offen zur Verfügung, ohne Login.