{
  "data": {
    "tool": {
      "category": "",
      "endpoint": "https://mcp.frankki.app",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/frankki-letters.json",
      "kind": "mcp",
      "listed": "indexed",
      "liveUrl": "https://www.anchorterminal.com/api/v1/live/frankki-letters.json",
      "markdownUrl": "https://www.anchorterminal.com/tools/frankki-letters.md",
      "mcpTools": {
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 2204,
          "counts": {
            "error": 0,
            "note": 1,
            "warn": 5
          },
          "findings": [
            {
              "rule": "TC07",
              "severity": "warn",
              "tool": "shipping_quote",
              "message": "the description is about 663 tokens",
              "fix": "Keep the description to what a model needs to choose and call the tool; move the manual to a resource or the docs."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "address_validate",
              "message": "11 parameters without a description: addressType, city, company, houseNumber, isDefault, mandantennummer and 5 more",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "mcp_health",
              "message": "1 parameter without a description: reasoning",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "pricing_tiers",
              "message": "its one parameter, reasoning, has no description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "shipping_quote",
              "message": "2 parameters without a description: express, reasoning",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC24",
              "severity": "note",
              "message": "4 of 4 tools have no outputSchema",
              "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
            }
          ]
        },
        "checkedAt": "2026-10-04T22:21:06Z",
        "count": 4,
        "schemaTokens": 2204,
        "status": "ok",
        "tools": [
          {
            "name": "mcp_health",
            "title": "Verbindung prüfen",
            "description": "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) und was der nächste Schritt ist. 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) and what the next step is. 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.",
            "inputSchema": {
              "additionalProperties": false,
              "properties": {
                "checkRender": {
                  "description": "Prüft zusätzlich den Render-Pfad (Composer + Rasterizer). Default false. EN: Additionally probes the render path (composer + rasterizer). Defaults to false.",
                  "type": "boolean"
                },
                "reasoning": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "address_validate",
            "title": "Adresse prüfen",
            "description": "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.",
            "inputSchema": {
              "additionalProperties": false,
              "properties": {
                "addressType": {
                  "enum": [
                    "recipient",
                    "sender",
                    "billing"
                  ],
                  "type": "string"
                },
                "city": {
                  "type": "string"
                },
                "company": {
                  "type": "string"
                },
                "country": {
                  "description": "ISO-3166-alpha-2, default DE. EN: ISO 3166-1 alpha-2, defaults to DE.",
                  "type": "string"
                },
                "houseNumber": {
                  "type": "string"
                },
                "isDefault": {
                  "type": "boolean"
                },
                "mandantennummer": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "pobox": {
                  "type": "string"
                },
                "reasoning": {
                  "type": "string"
                },
                "street": {
                  "type": "string"
                },
                "zip": {
                  "type": "string"
                }
              },
              "required": [
                "name",
                "street",
                "city"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "shipping_quote",
            "title": "Versandpreis ermitteln",
            "description": "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.",
            "inputSchema": {
              "additionalProperties": false,
              "properties": {
                "color": {
                  "description": "Farbannahme fuer eine allgemeine Schaetzung. Mit letterId erkennt FrankKi die Farbe aus der gespeicherten Vorschau und ignoriert diesen Wert. EN: Colour assumption for a general estimate. With letterId, FrankKi detects colour from the stored preview and ignores this value.",
                  "type": "boolean"
                },
                "country": {
                  "description": "ISO 3166-1 alpha-2, Standard DE. EN: ISO 3166-1 alpha-2, defaults to DE.",
                  "maxLength": 2,
                  "minLength": 2,
                  "pattern": "^[A-Za-z]{2}$",
                  "type": "string"
                },
                "deliveryType": {
                  "description": "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.",
                  "enum": [
                    "standard",
                    "einschreiben_einwurf",
                    "einschreiben_uebergabe",
                    "ch_b_post",
                    "ch_a_post",
                    "ch_einschreiben",
                    "at_eco",
                    "at_prio",
                    "intl_standard",
                    "intl_priority",
                    "intl_express",
                    "intl_tracked",
                    "intl_registered"
                  ],
                  "type": "string"
                },
                "express": {
                  "type": "boolean"
                },
                "letterId": {
                  "description": "Optional: die letterId eines bestehenden Entwurfs. Dann kommen Seitenzahl und Farbe aus der gespeicherten Vorschau; fuer den endgueltigen Preis inklusive Anhaengen nutze order_send mit dryRun:true. EN: Optional: the letterId of an existing draft. Page count and colour then come from the stored preview; for the final price including attachments, use order_send with dryRun:true.",
                  "format": "uuid",
                  "type": "string"
                },
                "pageCount": {
                  "description": "Seitenzahl fuer eine allgemeine Schaetzung. Mit letterId verwendet FrankKi die gespeicherte Seitenzahl und ignoriert diesen Wert. EN: Page count for a general estimate. With letterId, FrankKi uses the stored page count and ignores this value.",
                  "maximum": 95,
                  "minimum": 1,
                  "type": "integer"
                },
                "reasoning": {
                  "type": "string"
                }
              },
              "required": [
                "pageCount",
                "color",
                "deliveryType"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "pricing_tiers",
            "title": "Staffelpreise abrufen",
            "description": "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).",
            "inputSchema": {
              "additionalProperties": false,
              "properties": {
                "reasoning": {
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          }
        ]
      },
      "name": "FrankKi",
      "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
      "packages": null,
      "pageJsonUrl": "https://www.anchorterminal.com/tools/frankki-letters.json",
      "popularity": {
        "githubStars": 1
      },
      "registryName": "app.frankki/letters",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://mcp.frankki.app"
        }
      ],
      "repository": "https://github.com/datPascal/frankki-mcp",
      "reviewed": false,
      "slug": "frankki-letters",
      "source": "the official MCP registry",
      "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=app.frankki/letters",
      "summary": "The agentic layer of letters. Agents send real printed mail worldwide, German compliance built in.",
      "updatedAt": "2026-08-07T04:17:30Z",
      "url": "https://www.anchorterminal.com/tools/frankki-letters",
      "vendor": "frankki.app",
      "vendorUrl": "https://frankki.app/en/mcp",
      "version": "1.0.0",
      "websiteUrl": "https://frankki.app/en/mcp",
      "where": "hosted",
      "why": [
        "vendor"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/frankki-letters",
    "json": "https://www.anchorterminal.com/tools/frankki-letters.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/frankki-letters.md",
    "slim": "https://www.anchorterminal.com/tools/frankki-letters.min.md"
  },
  "markdown": "# FrankKi\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by frankki.app (https://frankki.app/en/mcp)\n- Listed because: It's published in the registry under frankki.app, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: The agentic layer of letters. Agents send real printed mail worldwide, German compliance built in.\n\n## Facts\n\n- MCP registry: `app.frankki/letters` 1.0.0\n- Endpoint: https://mcp.frankki.app (streamable HTTP)\n- Source: https://github.com/datPascal/frankki-mcp\n- Website: https://frankki.app/en/mcp\n- GitHub stars: 1\n- Registry entry updated: 2026-08-07\n\n## Tools\n\n- Tools it lists (4, about 2,204 tokens of context, `tools/list` without credentials over MCP 2025-11-25, checked 2026-10-04 22:21 UTC):\n  - `mcp_health` (read-only): 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…\n  - `address_validate` (read-only): Prüft eine Adresse anhand landesspezifischer Regeln und meldet harte Fehler als ADDRESS_INVALID. Nur eine Prüfung, das Adressbuch bleibt unverändert; zum…\n  - `shipping_quote` (read-only): Registered-mail availability follows the destination's current catalog. The codes einschreiben_einwurf and einschreiben_uebergabe are German products;…\n  - `pricing_tiers` (read-only): Liefert die Staffelpreise (Mengenrabatte) von FrankKi: ab welcher Monatsmenge welcher Beispielpreis pro Brief gilt. Nutze das, wenn jemand nach Mengenrabatt,…\n- How its tools read to an agent (0 errors, 5 warnings, 1 note, about 2,204 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC07 shipping_quote: the description is about 663 tokens\n  - warn TC11 address_validate: 11 parameters without a description: addressType, city, company, houseNumber, isDefault, mandantennummer and 5 more\n  - warn TC11 mcp_health: 1 parameter without a description: reasoning\n  - warn TC11 pricing_tiers: its one parameter, reasoning, has no description\n  - warn TC11 shipping_quote: 2 parameters without a description: express, reasoning\n  - note TC24 server: 4 of 4 tools have no outputSchema\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/frankki-letters.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "FrankKi",
        "url": ""
      }
    ],
    "description": "FrankKi, an MCP server by frankki.app, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. The agentic layer of letters. Agents send real printed mail worldwide, German compliance built in.",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "FrankKi",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/frankki-letters",
    "published": "",
    "section": "indexed",
    "title": "FrankKi: MCP server, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/tools/frankki-letters"
  },
  "tokens": {
    "markdown": 850,
    "slim": 780
  },
  "version": 1
}
