Zum Inhalt springen
FrankKi
iOS Download

Kompletter Briefauftrag-Transkript

Ein ganzer Briefauftrag von der Preisfrage bis zum Rückweg, ohne dass der Mensch das Gespräch verlässt. Dieses Transkript läuft bewusst auf einem LIVE-Token mit dem Bundle full_mcp: ein Test-Token nimmt immer den Auto-Versand-Pfad und kann die Freigabe-Warteschlange deshalb nicht zeigen, und genau die ist bei einem echten Versand der wichtigste Schritt. Voraussetzung ist nur ein vollständiges Absenderprofil und Guthaben im Wallet.

  1. Setup: eine Mieterberatung arbeitet mit einem LIVE-Token mit dem Bundle full_mcp. Anders als die beiden anderen Transkripte ist das hier kein Sandbox-Lauf, denn ein Test-Token nimmt immer den Auto-Versand-Pfad und kann die Freigabe-Warteschlange deshalb gar nicht zeigen. Alles unten ist ein echter Versand: echte Cent, ein echter Brief, eine echte menschliche Entscheidung.
  2. Tool-Aufruf
    mcp_health
  3. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Verbindung geprüft.",
      "data": {
        "healthy": true,
        "isTest": false
      },
      "requestId": "req_4b7e91a0"
    }
  4. Schritt 1: ist überhaupt Guthaben für diesen Auftrag da? wallet_balance beantwortet das, bevor irgendetwas gesetzt wird. Wäre das Guthaben zu knapp, wäre der nächste Aufruf wallet_topup_link, dessen Link der Mensch einmal öffnet.
  5. Tool-Aufruf
    wallet_balance
    {}
  6. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Wallet geladen.",
      "data": {
        "balanceEuros": "42.10",
        "dailyCapLetters": 50,
        "dailyUsedLetters": 3,
        "dailyCapEuros": "250.00",
        "dailyUsedEuros": "10.47",
        "nextResetAt": "2026-07-26T00:00:00Z"
      },
      "requestId": "req_c10a4f82"
    }
  7. Schritt 2: was würde das kosten? An dieser Stelle gibt es noch keinen Brief, nur eine Absicht: zwei Seiten, schwarzweiß, Einschreiben Einwurf innerhalb Deutschlands. Genau diese Frage beantwortet shipping_quote.
  8. Tool-Aufruf
    shipping_quote
    {
      "pageCount": 2,
      "color": false,
      "deliveryType": "einschreiben_einwurf",
      "country": "DE"
    }
  9. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Preis ermittelt.",
      "data": {
        "userCents": 719,
        "userEuros": "7.19",
        "letterFormat": "standard",
        "estimatedDeliveryRange": "ungefähr 1 bis 3 Werktage",
        "fulfillmentProvider": "letterxpress",
        "legalWeight": "einschreiben_einwurf",
        "source": "catalog"
      },
      "requestId": "req_2d81b0e5"
    }
  10. Schritt 3: der Brief selbst. letter_create_draft setzt den Text in eine DIN-5008-PDF und liefert eine letterId plus einen Vorschau-Link. Es wird nichts berechnet und nichts versendet. totalCents bepreist hier den Standardbrief als Voreinstellung, nicht das oben gewählte Einschreiben; der verbindliche Betrag kommt mit dem Versand.
  11. Tool-Aufruf
    letter_create_draft
    {
      "subject": "Widerspruch gegen die Betriebskostenabrechnung 2025",
      "content": "Sehr geehrte Damen und Herren,\n\nhiermit widerspreche ich der Betriebskostenabrechnung für das Jahr 2025 vom 02.06.2026. Die abgerechneten Kosten für die Gartenpflege sind gegenüber dem Vorjahr um 240 Prozent gestiegen, ohne dass ein Grund erkennbar wäre. Die Belege sind der Anlage zu entnehmen.\n\nMit freundlichen Grüßen\nAnna Berger",
      "recipientName": "Hausverwaltung Lindner GmbH",
      "recipientStreet": "Gartenstraße",
      "recipientHouseNumber": "18",
      "recipientZip": "04103",
      "recipientCity": "Leipzig",
      "recipientCountry": "DE"
    }
  12. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Entwurf angelegt.",
      "data": {
        "letterId": "7d2a1c50-4b8e-4c31-9f0a-3e6b5d1c8a90",
        "wordCount": 84,
        "pageCount": 1,
        "previewUrl": "https://storage.frankki.app/previews/7d2a1c50-4b8e-4c31-9f0a-3e6b5d1c8a90.pdf?X-Amz-Expires=86400",
        "deliveryType": "standard",
        "deliveryTypeLabel": "Standardbrief",
        "totalCents": 349,
        "totalEuros": 3.49,
        "totalFormatted": "3,49 €"
      },
      "requestId": "req_6f30ca19"
    }
  13. Schritt 4: die Belege. attachment_upload_pdf hängt sie an dieselbe letterId an. Die zusammengeführte Seitenzahl wird geprüft, bevor die Datei gespeichert wird, ein zu großer Anhang scheitert also hier und nicht mitten im Versand.
  14. Tool-Aufruf
    attachment_upload_pdf
    {
      "letterId": "7d2a1c50-4b8e-4c31-9f0a-3e6b5d1c8a90",
      "title": "Belege Gartenpflege 2025",
      "pdfUrl": "https://files.example.de/belege-gartenpflege-2025.pdf"
    }
  15. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Anhang gespeichert.",
      "data": {
        "attachmentId": "c48f0a97-2d15-4e6b-9a83-70cb1e5d4f28",
        "pageCount": 1,
        "fileSize": 184320
      },
      "requestId": "req_af52d704"
    }
  16. Schritt 5: der Versand. Achte darauf, was zurückkommt: orderId ist null und status ist "pending_approval". Ein Live-Versand über MCP geht nicht sofort raus, er landet in der Warteschlange. Der Mensch wird benachrichtigt, und die zurückgegebene previewUrl plus costEuros sind genau das, was ihm vor der Entscheidung gezeigt wird.
  17. Tool-Aufruf
    order_send
    {
      "clientOrderId": "widerspruch-bk-2025-berger",
      "letterId": "7d2a1c50-4b8e-4c31-9f0a-3e6b5d1c8a90",
      "deliveryType": "einschreiben_einwurf"
    }
  18. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Freigabe angefordert.",
      "data": {
        "approvalId": "2f6c8b13-05a4-4d9e-8c17-b40e9a3f5d62",
        "orderId": null,
        "letterId": "7d2a1c50-4b8e-4c31-9f0a-3e6b5d1c8a90",
        "costCents": 719,
        "costEuros": 7.19,
        "deliveryType": "einschreiben_einwurf",
        "deliveryTypeLabel": "Einschreiben Einwurf",
        "previewUrl": "https://storage.frankki.app/previews/7d2a1c50-4b8e-4c31-9f0a-3e6b5d1c8a90-final.pdf?X-Amz-Expires=86400",
        "mode": "review",
        "expiresAt": "2026-07-25T09:22:41Z",
        "status": "pending_approval",
        "isReplay": false,
        "fulfillmentProvider": "letterxpress",
        "einlieferungsbelegPending": true
      },
      "requestId": "req_88e1c063"
    }
  19. Schritt 6: die Entscheidung. Vor dem Aufruf mit approve zeigt der Agent dem Menschen die Vorschau-PDF, die genauen 7,19 Euro und die Versandart und setzt erst dann user_saw_preview:true. Eine Freigabe per Chat versendet nicht sofort: dispatchAt liegt zehn Minuten später und cancellable bleibt bis dahin true, ein "stopp" wirkt also noch.
  20. Tool-Aufruf
    approval_decide
    {
      "approvalId": "2f6c8b13-05a4-4d9e-8c17-b40e9a3f5d62",
      "decision": "approve",
      "user_saw_preview": true,
      "comment": "Anna hat Vorschau, Preis 7,19 Euro und Einschreiben Einwurf bestätigt."
    }
  21. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Freigabe erteilt.",
      "data": {
        "approvalId": "2f6c8b13-05a4-4d9e-8c17-b40e9a3f5d62",
        "orderId": "e91b4d07-6c22-4a8f-b3d5-19f7c0a2e441",
        "status": "approved",
        "decidedBy": "mcp:token_4f1a",
        "decidedAt": "2026-07-25T09:14:02Z",
        "approvedVia": "chat",
        "dispatchAt": "2026-07-25T09:24:02Z",
        "cancellable": true,
        "itemCount": 1,
        "totalCents": 719,
        "totalEuros": 7.19,
        "totalFormatted": "7,19 €",
        "deliveryType": "einschreiben_einwurf",
        "deliveryTypeLabel": "Einschreiben Einwurf",
        "isReplay": false
      },
      "requestId": "req_31bd7e40"
    }
  22. Schritt 7: die Verfolgung. Aus der Freigabe kam die orderId; order_status verfolgt sie von hier an. Später erneut abfragen liefert die Zustellereignisse, und beim Einschreiben erscheint die Sendungsnummer, sobald der Dienstleister sie vergeben hat.
  23. Tool-Aufruf
    order_status
    {
      "orderId": "e91b4d07-6c22-4a8f-b3d5-19f7c0a2e441"
    }
  24. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Status geladen.",
      "data": {
        "status": "processing",
        "timeline": [
          {
            "source": "frankki",
            "title": "Auftrag angelegt",
            "occurredAt": "2026-07-25T09:24:02Z"
          },
          {
            "source": "letterxpress",
            "title": "An den Versandpartner übergeben",
            "occurredAt": "2026-07-25T09:26:11Z"
          }
        ],
        "trackingCode": null,
        "cancellable": true
      },
      "requestId": "req_7ac09e12"
    }
  25. Erster Rückweg, stornieren. Ein zweiter Brief desselben Tages wird gestoppt, bevor er gedruckt ist. Das Geld geht als Gutschrift zurück auf das Wallet, nie auf eine Karte: FrankKi arbeitet im geschlossenen Kreislauf. Ist der Brief schon im Druck, lehnt order_cancel sauber ab, statt etwas vorzutäuschen.
  26. Tool-Aufruf
    order_cancel
    {
      "orderId": "8a3e7f26-91d0-4b5c-a2e8-6d4f0b7c9153"
    }
  27. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Auftrag storniert.",
      "data": {
        "orderId": "8a3e7f26-91d0-4b5c-a2e8-6d4f0b7c9153",
        "status": "cancelled",
        "cancelled": true,
        "idempotent": false,
        "refundedEuros": 0,
        "walletCreditedEuros": 3.49,
        "costCents": 349
      },
      "requestId": "req_5e4b02af"
    }
  28. Zweiter Rückweg, korrigieren und erneut einreichen. Ein dritter Brief kam vom Dienstleister mit einer abgelehnten Adresse zurück. order_status benennt das: awaiting_partner_fix.
  29. Tool-Aufruf
    order_status
    {
      "orderId": "46b0d9e5-73a2-4f18-8c6d-05e2a7b1f394"
    }
  30. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Status geladen.",
      "data": {
        "status": "awaiting_partner_fix",
        "timeline": [
          {
            "source": "frankki",
            "title": "Auftrag angelegt",
            "occurredAt": "2026-07-25T09:40:18Z"
          },
          {
            "source": "letterxpress",
            "title": "Adresse vom Versandpartner abgelehnt: Hausnummer fehlt",
            "occurredAt": "2026-07-25T09:41:55Z"
          }
        ],
        "cancellable": false
      },
      "requestId": "req_0d97fc35"
    }
  31. Der Agent liefert die korrigierte Empfängeradresse, der Auftrag wird neu gesetzt und erneut eingereiht. Es wird nichts ein zweites Mal berechnet: das für diesen Auftrag bereits gebuchte Geld bleibt, wo es ist.
  32. Tool-Aufruf
    order_fix_resubmit
    {
      "orderId": "46b0d9e5-73a2-4f18-8c6d-05e2a7b1f394",
      "recipient": {
        "name": "Stadtwerke Leipzig GmbH",
        "street": "Arno-Nitzsche-Straße",
        "houseNumber": "35",
        "zip": "04277",
        "city": "Leipzig",
        "country": "DE"
      }
    }
  33. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Auftrag erneut eingereicht.",
      "data": {
        "orderId": "46b0d9e5-73a2-4f18-8c6d-05e2a7b1f394",
        "status": "processing",
        "resubmittedAt": "2026-07-25T09:47:30Z",
        "fulfillmentProvider": "letterxpress",
        "isReplay": false
      },
      "requestId": "req_b6210d8e"
    }
  34. Das ist der komplette Auftrag in einem einzigen Gespräch: Guthaben prüfen, Preis holen, Entwurf setzen, Anhang ergänzen, versenden, menschliche Freigabe einholen, verfolgen und beide Rückwege. Kein Schritt wirft den Menschen ins Dashboard, außer dem einen, bei dem das richtig ist: die Freigabe selbst, die er dort ebenfalls entscheiden kann.

Verwendete Tools

Jedes Tool hier ist in der Tool-Referenz vollständig dokumentiert (Felder, Scope, dryRun).

Anderes Transkript ansehen: Steuerberater

Vertrauen und Live-Status

Maschinenlesbare Servicefakten und der aktuelle Betriebsstatus der Partner-Schnittstelle stehen jederzeit offen zur Verfügung, ohne Login.