Zum Inhalt springen
FrankKi
AnmeldenKostenlos starteniOS Download
Menü

Kompletter Briefauftrag-Transkript

Ein ganzer Briefauftrag von der Preisfrage bis zum Rückweg, ohne dass der Mensch das Gespräch verlässt. Das Transkript zeigt einen Versand mit Freigabe, denn die Freigabe-Warteschlange ist bei einem echten Versand der wichtigste Schritt. Es läuft mit einem Produktions-Token mit dem Bundle full_mcp. Voraussetzung sind ein vollständiges Absenderprofil, der unterschriebene AVV und Guthaben im Wallet. Aufgezeichnet haben wir am 1. November 2026 gegen die Produktion, mit einem Stage-Konto, das nichts druckt und mit Testguthaben arbeitet. Echte Antworten sind nur mcp_health, wallet_balance und shipping_quote, du erkennst sie an der requestId. Alle drei sind gekürzt. Ab letter_create_draft legt der Auftrag Daten an oder versendet echt, deshalb endet die Aufzeichnung dort. Die Schritte danach haben keine requestId und zeigen die Form der Antwort mit dem Preis aus dem aufgezeichneten Angebot.

  1. Setup: eine Mieterberatung arbeitet mit einem Produktions-Token mit dem Bundle full_mcp. Ab Schritt 3 legt der Auftrag Daten an und versendet echt: echte Cent, ein echter Brief, eine echte menschliche Entscheidung. Aufgezeichnet sind nur die lesenden Aufrufe bis zum Preis, mit einem Stage-Konto, deshalb meldet mcp_health tokenMode "stage". Proben ohne Versand machst du mit dryRun, wie in der Quickstart gezeigt.
  2. Tool-Aufruf
    mcp_health
  3. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "OK",
      "data": {
        "ok": true,
        "tokenMode": "stage",
        "stageMode": true,
        "setup": {
          "ready": true
        }
      },
      "requestId": "req_G84A1HF31DQ4WAJP"
    }
  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": "OK",
      "data": {
        "balanceEuros": "44,03",
        "reservedEuros": "0,00",
        "availableEuros": "44,03",
        "dailyCapLetters": 20,
        "dailyUsedLetters": 0,
        "dailyCapEuros": null,
        "dailyUsedEuros": "0,00",
        "nextResetAt": "2026-11-01T23:00:00.000Z",
        "standardLetter": {
          "unitPriceCents": 199,
          "unitPriceEuros": "1,99",
          "colorPricedAsGrayscale": true
        }
      },
      "requestId": "req_95PZBIW7AX085508"
    }
  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": "OK",
      "data": {
        "userCents": 509,
        "userPriceCents": 509,
        "userEuros": "5,09 EUR",
        "letterFormat": "standardbrief",
        "estimatedDeliveryRange": "ungefähr 1 bis 3 Werktage EN: approximately 1 to 3 working days",
        "deliveryProduct": {
          "code": "einschreiben_einwurf",
          "labelDe": "Einschreiben Einwurf",
          "labelEn": "Registered (drop-in)"
        },
        "source": "auto",
        "catalogCents": 659,
        "unitPriceCents": 509,
        "minMonthlyVolume": 0,
        "priceNote": "Endpreis. FrankKi ist Kleinunternehmer nach § 19 UStG und weist keine Umsatzsteuer aus. EN: Final price. FrankKi is a small business under § 19 UStG (German VAT Act) and charges no VAT."
      },
      "requestId": "req_YKSHKU8E2LQJE2RM"
    }
  10. Ein Stage-Konto druckt nicht und rechnet Einschreiben über einen anderen Versandweg ab als ein Live-Konto, deshalb hier 5,09 Euro für zwei Seiten. Ein Live-Konto zahlt in der ersten Staffel 5,99 Euro für ein einseitiges Einwurf-Einschreiben, so steht es auf /preise/b2b. Jede weitere Seite kostet etwas mehr. Die Schritte unten rechnen mit den 5,09 Euro aus diesem Angebot. priceNote gilt für alle: Endpreis, keine Umsatzsteuer nach § 19 UStG.
  11. 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.
  12. 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"
    }
  13. 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": 199,
        "totalEuros": 1.99,
        "totalFormatted": "1,99 €"
      }
    }
  14. 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.
  15. Tool-Aufruf
    attachment_upload_pdf
    {
      "letterId": "7d2a1c50-4b8e-4c31-9f0a-3e6b5d1c8a90",
      "title": "Belege Gartenpflege 2025",
      "pdfUrl": "https://files.example.de/belege-gartenpflege-2025.pdf"
    }
  16. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Anhang gespeichert.",
      "data": {
        "attachmentId": "c48f0a97-2d15-4e6b-9a83-70cb1e5d4f28",
        "pageCount": 1,
        "fileSize": 184320
      }
    }
  17. 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.
  18. Tool-Aufruf
    order_send
    {
      "clientOrderId": "widerspruch-bk-2025-berger",
      "letterId": "7d2a1c50-4b8e-4c31-9f0a-3e6b5d1c8a90",
      "deliveryType": "einschreiben_einwurf"
    }
  19. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Freigabe angefordert.",
      "data": {
        "approvalId": "2f6c8b13-05a4-4d9e-8c17-b40e9a3f5d62",
        "orderId": null,
        "letterId": "7d2a1c50-4b8e-4c31-9f0a-3e6b5d1c8a90",
        "costCents": 509,
        "costEuros": 5.09,
        "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": "frankki",
        "einlieferungsbelegPending": true
      }
    }
  20. Schritt 6: die Entscheidung. Vor dem Aufruf mit approve zeigt der Agent dem Menschen die Vorschau-PDF, die genauen 5,09 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.
  21. Tool-Aufruf
    approval_decide
    {
      "approvalId": "2f6c8b13-05a4-4d9e-8c17-b40e9a3f5d62",
      "decision": "approve",
      "user_saw_preview": true,
      "comment": "Anna hat Vorschau, Preis 5,09 Euro und Einschreiben Einwurf bestätigt."
    }
  22. 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": 509,
        "totalEuros": 5.09,
        "totalFormatted": "5,09 €",
        "deliveryType": "einschreiben_einwurf",
        "deliveryTypeLabel": "Einschreiben Einwurf",
        "isReplay": false
      }
    }
  23. 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.
  24. Tool-Aufruf
    order_status
    {
      "orderId": "e91b4d07-6c22-4a8f-b3d5-19f7c0a2e441"
    }
  25. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Status geladen.",
      "data": {
        "status": "processing",
        "timeline": [
          {
            "source": "frankki",
            "title": "Auftrag angelegt",
            "occurredAt": "2026-07-25T09:24:02Z"
          },
          {
            "source": "frankki",
            "title": "An den Versandpartner übergeben",
            "occurredAt": "2026-07-25T09:26:11Z"
          }
        ],
        "trackingCode": null,
        "cancellable": true
      }
    }
  26. 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.
  27. Tool-Aufruf
    order_cancel
    {
      "orderId": "8a3e7f26-91d0-4b5c-a2e8-6d4f0b7c9153"
    }
  28. Ergebnis
    {
      "status": "ok",
      "code": "OK",
      "message": "Auftrag storniert.",
      "data": {
        "orderId": "8a3e7f26-91d0-4b5c-a2e8-6d4f0b7c9153",
        "status": "cancelled",
        "cancelled": true,
        "idempotent": false,
        "refundedEuros": 0,
        "walletCreditedEuros": 1.99,
        "costCents": 199
      }
    }
  29. 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.
  30. Tool-Aufruf
    order_status
    {
      "orderId": "46b0d9e5-73a2-4f18-8c6d-05e2a7b1f394"
    }
  31. 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": "frankki",
            "title": "Adresse vom Versandpartner abgelehnt: Hausnummer fehlt",
            "occurredAt": "2026-07-25T09:41:55Z"
          }
        ],
        "cancellable": false
      }
    }
  32. 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.
  33. 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"
      }
    }
  34. 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": "frankki",
        "isReplay": false
      }
    }
  35. 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.