FrankKiFrankKiMCP
Sign inGet started
Hosted · streamable HTTP · worldwide

Physical Mail
for Developers

One endpoint gives your agent a printer, an envelope, and a postbox. It drafts the letter, gets an exact destination quote, submits it for explicit human approval, and tracks the dispatch. After approval, real paper is delivered worldwide where the destination policy and postal partner allow it.

$https://mcp.frankki.app

Scoped Bearer API key  ·  OAuth 2.1 + DCR source contract  ·  Test-Token sandbox by account grant

Quick setup

Connected in one line

Point any MCP client at the hosted endpoint and authenticate with a scoped Bearer API key. OAuth 2.1 with DCR is the source contract, but current OAuth/DCR production availability is not independently confirmed. Every physical dispatch requires explicit human approval.

claude mcp add --transport http frankki https://mcp.frankki.app

# headless, with an API key
claude mcp add --transport http frankki https://mcp.frankki.app \
  --header "Authorization: Bearer ${FRANKKI_API_KEY}"
Then ask: "Quote a registered letter to Berlin, then draft it."
Server nameapp.frankki/lettersOur canonical MCP server identifier. Listed in the Official MCP Registry.
Discovery/.well-known/oauth-authorization-serverOAuth 2.1 with dynamic client registration. Production availability unconfirmed.
For agentsfrankki.app/llms.txtMachine-readable overview of the whole platform.
The whole loop

From draft to post, with a human check

Draft, quote, submit for approval. A human reviews the rendered letter, exact price and service before dispatch. The agent never touches a printer, never guesses a price, and cannot spend past the cap you set on the call.

Prices come from the server, never hardcoded
Destructive tools are annotated for the model
Every physical send requires explicit human approval
Test-Token sandbox sends are simulated and never print paper
agent · frankki mcp
How a send works

Draft, quote, approve, track

Composition is text-first. You hand over content and a recipient; FrankKi renders a correctly laid-out DIN 5008 document. After explicit human approval, it prints, franks it, and hands it to the postal network.

01letter_create_draft

Compose

Plain text plus a recipient. Back comes a rendered preview, letterhead and signature applied.

02shipping_quote

Price

The exact, live cost for that destination and service level, before anything is committed.

03approval_submit

Approve

Creates the final preview, reserves the quoted cost and queues the letter for explicit human approval. Nothing is printed yet.

04order_status

Track

After approval: printed, posted, delivered where supported. A verified posting record is available where the selected service provides one.

Tool catalog

A scoped, honest tool set

Read tools return state and never cost money. Action tools are explicit about what they change. Your agent can gate on the annotation.

Full reference
ToolWhat it doesSide effect
address_validateCheck a recipient against destination-country postal rulesread
address_search_companyLook up a company's postal address by nameread
template_listBrowse reusable letter templatesread
letter_create_draftDraft a formatted letter from plain text, returns a previewdraft
shipping_quoteExact price for a destination before committingread
wallet_balanceRead the prepaid wallet balanceread
order_sendSubmit one physical send to the approval-controlled pipeline, honours maxCostEurosdestructive
order_send_batchSubmit a batch to the approval-controlled pipeline with merge fieldsdestructive
approval_submitQueue a rendered letter for explicit human approval; no paper is printed yetqueue
order_statusTrack a letter through printed, posted, deliveredread
wallet_topup_linkCreate a secure Stripe top-up linkpayment

Beyond the core flow: attachments, letterheads and signatures, sender profiles, send presets, scheduled sends, cancellation, posting receipts, client lookups, and GoBD or DATEV archive exports. The authoritative list is always what the server returns from tools/list.

Delivery tracking

You can see where the paper is

Every submitted send has a status your agent can poll. After approval it is printed, franked, posted, and delivered where the destination supports it. A verified order_einlieferungsbeleg can provide an archived proof-of-posting record. That records postal acceptance, not the legal effectiveness of the letter.

1–3working days inside Germany
DIN 5008layout by default
Worldwidewhere destination and carrier allow
order_statusord_2c7ad9f1Acme GmbH  ·  Berlin, DE  ·  standard b/w
delivered
Draft rendered1 page, DIN 5008, letterhead applied
09:14
Wallet reservedEUR 2.49 · under the EUR 5.00 cap
09:14
Human approvedPreview, exact price and service reviewed
09:16
Printed and frankedFulfillment centre, envelope sealed
11:02
Handed to the postal networkPosting receipt available
17:40
DeliveredTwo working days after the tool call
+2d
Guardrails

A rogue agent cannot mail the world

Sending paper is irreversible and it costs money, so the platform is cautious by default. Four independent limits, each of which alone stops a runaway loop.

Prepaid wallet

An empty wallet cannot spend

There are no post-paid invoices. Every paid send draws from a balance you topped up, so the absolute worst case is bounded by what is in the account.

Per-call cap

maxCostEuros aborts the send

Pass a ceiling with order_send. If the live server price exceeds it, nothing is printed and nothing is charged.

Human approval

Every physical dispatch needs approval

Every physical letter enters the approval queue. A human reviews the preview, exact price and service, then explicitly approves it through approval_decide before dispatch. Rejection leaves the letter unprinted, and every decision is logged.

Key scopes

A pricing key need not be a spending key

Each API key carries an allowed-tools scope and its own spending limit, so the reach of a leaked key is decided in advance.

Sandbox

When sandbox access is granted to your account, create a Test-Token in the dashboard's Probe-Zugang tab and connect it to the same endpoint. The raw token is shown once. Sandbox sends use zero cents, test storage and simulated status updates. No physical letter is printed, and the AVV and human-approval rules still apply.

Create an account
Wallet and pricing

From EUR 1.49 a letter

Pay per letter, no subscription. Under 20 letters a month, a German standard letter is EUR 2.49. From 20 letters a month every letter that month is EUR 2.19, from 100 it is EUR 1.99, from 500 EUR 1.79, and from 1,000 letters EUR 1.49. The rung your volume reaches applies to every letter that month, including the first. Everything else is priced per destination and quoted live before the send.

Never hardcode

Prices are authoritative from the server. Call shipping_quote for the live figure, always, before order_send.

ProductCheapest rungDetail
Standard letterfrom EUR 1.49Germany, black and white. EUR 2.49 under 20 letters a month.
Standard letterfrom EUR 1.59Germany, colour. EUR 2.59 under 20 letters a month.
Registered, Einwurf (DE)from EUR 5.59Germany, proof of posting, no signature. EUR 6.59 under 20 letters a month.
Registered, Übergabe (DE)from EUR 5.99Germany, handed over against signature. EUR 6.99 under 20 letters a month.
How the standard letter, black and white, gets to EUR 1.49
Under 20 letters a monthEUR 2.49
20 or moreEUR 2.19
100 or moreEUR 1.99
500 or moreEUR 1.79
1,000 or moreEUR 1.49

Measured on a trailing 30 days. The rung your volume reaches applies to every letter that month, including the first. Colour and registered products step down at the same five thresholds: EUR 2.59, EUR 6.59 and EUR 6.99 under 20 letters a month, EUR 1.59, EUR 5.59 and EUR 5.99 from 1,000.

Fixed prices for German products. Worldwide via local partners, quoted per destination. Top up the wallet through Stripe with wallet_topup_link.
Use cases

Workflows that dead-end at paper

Most automations stop at "now a human prints this and walks to a postbox". These are the ones that no longer have to.

Dunning

Queue a printed reminder from an email event, with the amount and due date merged per debtor.

Formal notices

Cancellations, terminations and objections where physical mail is appropriate, sent as registered mail where the destination supports it.

Onboarding

Welcome letters, contract confirmations and account notifications, triggered by your own backend events.

Compliance mail

Authority correspondence and regulated notices, archived with retrievable posting records where the selected service provides them.

Compliance

Built for regulated mail

Letter data is processed in the EU. FrankKi helps you draft, format and send physical letters, but it does not determine whether a letter is legally sufficient or effective. DIN 5008 describes layout, not legal effect. Posting records and delivery evidence are separate, and you remain responsible for content, recipient, authority, form, signature and deadlines. FrankKi provides no legal advice or individual legal assessment.

GoBDArchiving of sends and retrievable posting records where supported.
DATEV & DMSExports for accounting and document management systems.
GDPRLetter data processed in the EU, DSGVO by construction.
MandantenSeparated client matters, with approval flows before a letter leaves.
Hosted

Give your agent a postbox

Create an account, then create a Test-Token in the dashboard's Probe-Zugang tab when sandbox access is granted. Nothing to self-host, no physical paper in the sandbox, and every real dispatch requires explicit human approval.

Get startedRead the docs
claude mcp add --transport http frankki https://mcp.frankki.app