# Zetteldesk – Send letters by post from your AI assistant

> Zetteldesk posts real letters from Claude, ChatGPT and other AI assistants: DIN 5008 check, printing and dispatch in Germany, no subscription.

Your agent writes the letter right in the chat and checks the PDF against DIN 5008. We post it: we print it, put it in an envelope and take it to the post office, with registered mail and proof of delivery if you like. Prepaid, from €1.12 per letter.

- Website: https://zetteldesk.com/en
- MCP server (remote MCP over HTTP, sign-in via OAuth): `https://mcp.zetteldesk.com/mail`
- Hosted in Germany · No subscription · Money back if rejected

## How it works

From chat to letter in three steps.

1. **Connect once:** Enter one URL in Claude.ai, ChatGPT or Claude Code and sign in. Standard OAuth, no API keys in the chat history.
2. **Your agent checks:** Before anything costs money, the agent checks the A4 format, address field and page count and gets an exact price quote, which it shows you.
3. **We print & post:** You confirm, the amount is reserved from your balance, and the letter is printed and posted in Germany. You can see the status on the web or simply ask your agent.

## The tools

Nine tools, made for agents. Every tool at a glance: what it does and whether it costs money. Read-only tools are marked as such, so that your client only asks when it matters.

### `validate_letter(pdf, options)`

- Label: read-only
- MCP annotations: readOnlyHint: true, destructiveHint: false, openWorldHint: false

Checks A4 format, address field according to DIN 5008, clear zones and page count. Returns the detected recipient and a price quote. Never costs anything.

### `get_quote(pages, color, duplex, registered, international)`

- Label: read-only
- MCP annotations: readOnlyHint: true, destructiveHint: false, openWorldHint: false

The exact gross price before anything is sent, so your agent can tell you what the letter costs.

### `send_letter(pdf, options, idempotency_key?)`

- Label: uses balance
- MCP annotations: readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true

Checks again, reserves the amount from your balance and releases the job to print. Marked as destructive so that your client asks first.

### `get_letter(letter_id)`

- Label: read-only
- MCP annotations: readOnlyHint: true, destructiveHint: false, openWorldHint: false

Status history, detected address, price and a preview of the processed PDF.

### `list_letters(status?, limit?)`

- Label: read-only
- MCP annotations: readOnlyHint: true, destructiveHint: false, openWorldHint: false

All your letters, whether sent through the website or by an agent.

### `cancel_letter(letter_id)`

- Label: asks first
- MCP annotations: readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true

Withdraws a letter and refunds the full amount. Only possible right after sending, before the letter is handed over to printing.

### `get_balance()`

- Label: read-only
- MCP annotations: readOnlyHint: true, destructiveHint: false, openWorldHint: false

Your current balance and a link to top up when it runs low.

### `create_upload_url()`

- Label: creates files, free
- MCP annotations: readOnlyHint: false, destructiveHint: false, openWorldHint: false

Pre-signed upload for PDFs up to 20 MB, for agents that can run curl.

### `compose_letter(sender, recipient, subject, body)`

- Label: creates files, free
- MCP annotations: readOnlyHint: false, destructiveHint: false, openWorldHint: false

Typesets a DIN 5008 letter from plain text, so your agent does not have to generate its own PDF.

## Use cases

Recurring postal mail, sent automatically. Zetteldesk does not only work in chat: an automation platform such as Soforce can trigger letters for you, for example invoices and payment reminders. [How to connect Soforce to Zetteldesk.](https://zetteldesk.com/en#faq-automatisierung-verbinden)

### Invoices by post

The invoice from your accounting software goes out by post automatically, without anyone having to print, stuff envelopes or stamp. Details: [Can I automate sending invoices by post?](https://zetteldesk.com/en#faq-rechnungsversand)

### Payment reminders and dunning letters

As soon as an invoice is overdue, the letter is created from your template and sent, at the stage you define. Details: [How can I send payment reminders and dunning letters by post automatically?](https://zetteldesk.com/en#faq-mahnungen)

### Other office mail

Cancellations, confirmations, invitations and mail to authorities: everything that regularly goes out as a letter. Details: [Which recurring office tasks involving paper mail can be automated?](https://zetteldesk.com/en#faq-bueroaufgaben)

## Pricing

You pay per letter. Postage included. The format depends on the number of sheets, just like at the post office. Double-sided printing halves the sheet count, so the letter often falls into a cheaper format.

| Format | Sheets | Suitable for | From |
|---|---|---|---:|
| Standard | 1–3 | Notices, cancellations, short letters | €1.12 |
| Compact | 4–9 | Letters with one or two enclosures | €1.54 |
| Large | 10–96 | Contracts, applications, objections with supporting documents | €2.65 |
| Maxi | 97–179 | Extensive documents and submissions | €9.12 |

Price per letter by format, gross incl. VAT

### Options

- Colour printing: approx. +€0.04 per page
- Duplex (double-sided): Halves the sheet count and is cheaper than single-sided printing from two pages.
- Registered mail: approx. +€3.76
- International: from €1.53, the same price for every country

Prices in euros, incl. 19% VAT, printing, envelope and postage. Your agent always gets the exact price in advance via `get_quote`, before anything is sent.

### Balance

Balance from €10:

- No subscription, no base fee
- Card, SEPA direct debit or PayPal through Stripe
- Rejected or cancelled letters are fully refunded

Create account: https://zetteldesk.com/signup (Minimum top-up €10)

## Connect

One URL. For every agent that speaks MCP. Zetteldesk Mail is a remote MCP server with OAuth sign-in. Choose your client and follow the steps. You can disconnect connected clients at any time in the dashboard.

Server URL: `https://mcp.zetteldesk.com/mail`

### Claude.ai

1. Open **Settings → Connectors** and choose **Add custom connector**.
2. Name it **Zetteldesk Mail** and paste the server URL:

   ```
   https://mcp.zetteldesk.com/mail
   ```

3. Sign in with your Zetteldesk account when Claude opens the sign-in window. Done.

### Claude Code

1. Add the server in the terminal:

   ```
   claude mcp add --transport http zetteldesk-mail https://mcp.zetteldesk.com/mail
   ```

2. Run `/mcp` in Claude Code and select **zetteldesk-mail** to sign in in the browser.
3. Ask Claude to check a PDF before you send your first letter.

### ChatGPT

1. Under **Settings → Apps & Connectors → Advanced**, enable **Developer mode**.
2. Create a connector, choose **OAuth** and use this MCP server URL:

   ```
   https://mcp.zetteldesk.com/mail
   ```

3. Sign in to Zetteldesk and then enable the connector in the chat.

### Gemini

1. Add the server in the terminal:

   ```
   gemini mcp add --transport http zetteldesk-mail https://mcp.zetteldesk.com/mail
   ```

2. Then start the Gemini CLI and enter:

   ```
   /mcp auth zetteldesk-mail
   ```

3. A browser window opens: sign in to Zetteldesk and confirm with **Allow**.

### Soforce

1. Open `app.soforce.ai/apps` and click **"Add connection"** in the **"MCP connections"** section.
2. Enter **Zetteldesk** as the name and the server URL as the **"Server address"**:

   ```
   https://mcp.zetteldesk.com/mail
   ```

3. Under **"How it signs in"**, choose **"Sign in with Zetteldesk"**.
4. Click **"Connect to Zetteldesk"**, sign in in the new window and confirm with **Allow**.

## Connects with

Works with AI assistants and automation platforms such as Claude, ChatGPT, Gemini and Soforce, and with any other client that supports remote MCP servers with OAuth sign-in.

- [Soforce – Platform for AI automations](https://soforce.ai)

The brands mentioned belong to their respective owners.

## FAQ: What you should know before sending.

### Is there a subscription?

No. Zetteldesk works with a prepaid balance: you top up from €10 by card, SEPA direct debit or PayPal through Stripe, and each letter is deducted when it is sent. No base fee, no minimum volume.

### Which apps can connect to Zetteldesk?

Any AI assistant or application that supports remote MCP servers with OAuth sign-in, for example Claude, Claude Code, ChatGPT, the Gemini CLI and Codex, as well as automation platforms such as [Soforce](https://soforce.ai). The steps for each client are in the “Connect” section.

### Can I automate sending invoices by post?

Yes. An automation, for example in [Soforce](https://soforce.ai), generates the invoice PDF, checks it with `validate_letter` and sends it with `send_letter`. A fixed `idempotency_key` per invoice ensures that a repeated call does not send the letter twice. The automation queries the status with `get_letter` or `list_letters`. Payment comes from your balance, which you can have topped up automatically if you wish. Note: for invoices between businesses in Germany, the e-invoicing rules apply. Check whether a paper invoice is still permitted in your case; this is not legal advice.

### How can I send payment reminders and dunning letters by post automatically?

You set this up once and it then runs on its own. In an automation platform such as [Soforce](https://soforce.ai) you create a workflow that regularly looks at your list of open items, for example from your accounting or a spreadsheet. For each overdue invoice it creates a letter from your template and has it sent as a letter through Zetteldesk. It then writes the dispatch date back into your list.

You decide yourself after how many days of delay which stage goes out, from the friendly reminder to the formal dunning letter. The same reminder is never sent twice.

How to connect Zetteldesk to the platform is explained [here](https://zetteldesk.com/en#faq-automatisierung-verbinden).

### Which recurring office tasks involving paper mail can be automated?

Anything that regularly goes out as a letter can be set up as a workflow, for example in an automation platform such as [Soforce](https://soforce.ai). Typical examples:

- **Invoices and credit notes** to customers who do not receive e-invoices: the invoice from your accounting software goes out by post automatically.
- **Payment reminders and dunning letters:** as soon as an invoice is overdue, the matching letter is created from your template.
- **Cancellation and contract letters:** the letter is created from the contract data and sent.
- **Confirmations and notices:** a new order or a new registration triggers the letter automatically.
- **Invitations and mandatory notices**, for example for meetings: each recipient gets their own letter.
- **Mail to authorities:** applications and notifications that must be received in writing are created and sent.

You set up the workflow once in Soforce and connect it to Zetteldesk ([instructions](https://zetteldesk.com/en#faq-automatisierung-verbinden)). Every letter is checked before it is sent, and your balance is only charged when it is sent.

### How do I connect Zetteldesk to an automation platform such as Soforce?

Zetteldesk works with automation platforms such as [Soforce](https://soforce.ai) that support remote MCP servers with OAuth sign-in. In Soforce:

- Open `app.soforce.ai/apps` and click "Add connection" under "MCP connections".
- Enter Zetteldesk as the name and the server URL from the [Connect](https://zetteldesk.com/en#connect) section as the "Server address".
- Choose "Sign in with Zetteldesk", sign in and confirm with Allow.

After that, your automations can call all Zetteldesk tools.

### Can my agent send letters without asking me?

The sending tools are marked as destructive. Claude and ChatGPT therefore ask for your confirmation before every call. In addition, your agent can never spend more than your balance: the balance is a hard upper limit.

### What happens if a letter is rejected?

Every PDF is checked before we charge anything. If the print service provider later cannot read the address after all or reports a problem, the letter is marked as rejected and the full amount is automatically credited back to your balance.

### Can I withdraw a letter?

Yes, as long as it has not gone to print yet: cancel it in the dashboard or have your agent call cancel_letter, and you get the full amount back. Once the letter has been handed over to printing and dispatch, it cannot be retrieved, just like a letter you have already dropped in the mailbox.

### Where is my data stored?

Zetteldesk is hosted in Germany. Uploaded PDFs are stored encrypted and deleted automatically after 90 days. The letters are printed and sent by our print and dispatch partner in Germany. We comply with the GDPR and, on request, conclude a data processing agreement (DPA) with you.

### What does the PDF need to look like?

A4 portrait, with the recipient in the address field according to DIN 5008 on the first page, exactly as every German letter template provides anyway. If something does not fit, validate_letter tells your agent exactly what to correct.

### Can I send letters abroad?

The letters are printed and posted in Germany. Letters abroad are possible at the respective international postage rate. You will see the exact price before sending.

### Do I get receipts?

All prices include 19% VAT. For every top-up you receive a receipt from Stripe, and on the billing page every letter is listed with its price.

## Legal

- [Imprint](https://zetteldesk.com/en/imprint)
- [Privacy Policy](https://zetteldesk.com/en/privacy)
- [Terms and Conditions](https://zetteldesk.com/en/terms)

## Contact

Provider and contact details are in the [Imprint](https://zetteldesk.com/en/imprint).

Agent plugins for real paperwork. Developed and hosted in Germany.
