FrankKi
by frankki.app · remote · no sign-in to list tools · v1.0.0 · published by app.frankki
The agentic layer of letters. Agents send real printed mail worldwide, German compliance built in.
4 tools: 3 change things and 1 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things3Claude Code: ask: see these tools
- Only reads1Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http letters https://mcp.frankki.appFindings
Matches of fixed checks, with the text they matched.
- Infoshipping_quote
The description is 2,644 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...one applies (field tierId). For the volume tiers themselves, call pricing_tiers."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
4 tools
Changes things 3Claude Code: ask
mcp_healthHealth-/Echo-Probe - prüft das Partner-Token und die Verarbeitungskette von Anfang bis Ende und sagt dir unter setup, welche Voraussetzungen für einen echten Versand schon erfüllt …No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Health-/Echo-Probe - prüft das Partner-Token und die Verarbeitungskette von Anfang bis Ende und sagt dir unter setup, welche Voraussetzungen für einen echten Versand schon erfüllt sind (Absender-Profil, AVV, Guthaben, Sandbox, Freigabe, Briefpapier) und was der nächste Schritt ist. Jeder Schritt trägt humanSummary (de, en): ein Satz in Alltagssprache für den Menschen. Sprich mit dem Menschen in diesen Worten; Tool-Namen, nextTool, fixUrl und messageDe/messageEn sind für dich. Mit checkRender: true wird zusätzlich geprüft, ob gerade überhaupt gerendert werden kann (Vorschau, Thumbnail). Rufe das auf, bevor du eine Vorlage baust, die du danach ansehen musst. EN: Health/echo probe - verifies the partner token and the chain end to end, and reports under setup which prerequisites for a real send are already met (sender profile, data processing agreement, balance, sandbox, approval, letterhead) and what the next step is. Every step carries humanSummary (de, en): one sentence in everyday language for the person. Talk to the person in those words; tool names, nextTool, fixUrl and messageDe/messageEn are for you. With checkRender: true it additionally checks whether rendering currently works at all (preview, thumbnail). Call it before building a template you will need to look at.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
pricing_tiersLiefert die Staffelpreise (Mengenrabatte) von FrankKi: ab welcher Monatsmenge welcher Beispielpreis pro Brief gilt.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Liefert die Staffelpreise (Mengenrabatte) von FrankKi: ab welcher Monatsmenge welcher Beispielpreis pro Brief gilt. Nutze das, wenn jemand nach Mengenrabatt, Volumenpreis, Staffelpreis oder Großkundenpreis fragt. Die Beispielpreise gelten für einen einseitigen Standardbrief in Schwarzweiß innerhalb Deutschlands, der echte Preis pro Brief hängt zusätzlich von Seitenzahl, Farbe, Versandart und Zielland ab (dafür shipping_quote). EN: Returns FrankKi's volume tiers (bulk discounts): from which monthly quantity which example price per letter applies. Use this when someone asks about bulk discounts, volume pricing or enterprise pricing. The example prices are for a one-page black and white standard letter within Germany; the real per-letter price also depends on page count, color, delivery type and destination country (use shipping_quote for that).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
shipping_quoteRegistered-mail availability follows the destination's current catalog.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description is 2,644 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...one applies (field tierId). For the volume tiers themselves, call pricing_tiers."
Description, as the server wrote it Registered-mail availability follows the destination's current catalog. The codes einschreiben_einwurf and einschreiben_uebergabe are German products; Switzerland uses ch_einschreiben. For other destinations, use methods returned in availableDeliveryTypes by a standard shipping_quote for that country, then quote the chosen code. A rejected country/method pair gives a verdict for that pair alone. A catalog snapshot gives a verdict for that snapshot alone. Tracked mail and registered mail are distinct products. Get the user's agreement before switching a requested registered method to standard or tracked delivery. Promise a carrier-issued proof-of-posting PDF only after confirming one is available. Reply in the user's conversation language, regardless of recipient country, letter language, German tool titles or bilingual tool results. Translate shipping methods, letter formats, delivery estimates and explanations for the user. In English: Standardbrief = standard letter; Kompaktbrief = compact letter; Großbrief = large letter; Maxibrief = maxi letter; Einschreiben = registered mail; Einwurf-Einschreiben = registered mail with recorded mailbox delivery; Übergabe-Einschreiben = registered mail with signature on delivery; Einlieferungsbeleg = proof of posting. Use localized money and number formatting. Keep tool names, parameter names, deliveryType values and error codes unchanged in tool calls; show codes to users only when needed for troubleshooting. Preserve the letter's contents in its original language. Ermittelt den Preis, das Briefformat, die Versandart und die voraussichtliche Laufzeit für einen geplanten Brief, bevor er versendet wird. Das ist die Schätzung für den Fall, dass der Brief erst geplant ist: du gibst nur Seitenzahl, Land und Versandart an. Steht der Brief schon fest, versendest du ihn mit order_send (order_send mit dryRun:true liefert dann den genaueren Preis für genau diesen Brief). Der Preis gilt pro Brief und enthält bereits die Mengenstaffel des Partners, falls eine greift (Feld tierId). Für die Staffelpreise selbst nutze pricing_tiers. EN: Determines the price, letter format, shipping method and estimated delivery time for a planned letter, before it is sent. This is the estimate for when the letter is still only planned: you only supply page count, country and delivery type. Once the letter exists, order_send performs the actual send (and order_send with dryRun:true gives the more precise price for that specific letter). The price is per letter and already includes the partner's volume tier where one applies (field tierId). For the volume tiers themselves, call pricing_tiers.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
Only reads 1Claude Code: allow
address_validatePrüft eine Adresse anhand landesspezifischer Regeln und meldet harte Fehler als ADDRESS_INVALID.No findings
Why it is in this group
- The name "address_validate" says "validate": a word for reading.
Description, as the server wrote it Prüft eine Adresse anhand landesspezifischer Regeln und meldet harte Fehler als ADDRESS_INVALID. Nur eine Prüfung, das Adressbuch bleibt unverändert; zum Anlegen oder Ändern einer Adresse nimm address_upsert. EN: Validates an address using country-specific rules and reports hard failures as ADDRESS_INVALID. A check only, the address book is left untouched; to create or change an address use address_upsert.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http letters https://mcp.frankki.appRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__letters__address_validate"
],
"ask": [
"mcp__letters__mcp_health",
"mcp__letters__shipping_quote",
"mcp__letters__pricing_tiers"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as letters. Review it before you use it.