Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Mit Google anmelden, um Bewertungen zu schreiben.Prototyp · alle 30 Min. aktualisiert
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

SendLetter

von gertsnijderVersion 1.0.0i★ 0iLäuft in der Cloud
Name in der Registryeu.sendletter/sendletter

So installierst du es

What it does

Send real, printed letters by post across Europe. Requires a free account; quote before sending.

  • Connects Läuft in der Cloud
  • Account or key Sign in to the service when you connect (OAuth)
  • Category Sonstiges

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

4/4 Prüfungen bestanden · Was du fragst, läuft über den Server des Anbieters (sendletter.eu) · ✓ Befehle geprüft am 13. Nov. 2026

Zuerst: Welche KI nutzt du?

Wähle deine App, dann erscheinen die Schritte unten.

Klappt mit Claude · etwa 2 Min.

Kein Schlüssel, nichts zu installieren · Einmal auf claude.ai oder in der Desktop-App einrichten, dann im Chat nutzen · kostenlose Konten können 1 hinzufügen · bei Team/Enterprise fügt ein Owner ihn hinzu

  1. Öffne die Connectors-Seite von Claude

    CustomizeConnectors

    CustomizeConnectors1Add2https://…3Add4
  2. Klicke „Add“ → „Custom“ → „Web“ und fülle diese 2 Felder aus

    Kopiere jeden Wert in das gleichnamige Feld in Claude und klicke Continue

    Name · NameSendLetter
    Remote MCP server URL · Adressehttps://sendletter.eu/api/mcp

    Klicke auf der von Claude erkannten Anmelde-Seite auf Continue · wähle bei Authentication, was der Anbieter angibt (Sign in now, Sign in when needed oder No sign in), dann Add

  3. Im Chat einschalten

    +ConnectorsSendLetter

  4. Ausprobieren

    Nutze SendLetter und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Claude sagt, dass es SendLetter nutzt, oder ein Werkzeug von SendLetter in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit ChatGPT je nach Tarif

Volles MCP: ChatGPT Business, Enterprise oder Edu im Web · Pro: verbindet mit Lese-/Abrufrechten, Werkzeuge, die Daten ändern, gehen evtl. nicht · Plus: in der Doku nicht bestätigt; siehst du auf der Plugins-Seite eine Option für eigene MCP-Server, kannst du es versuchen · nur Web

  1. In ChatGPT im Web die Seite zum Hinzufügen von MCP öffnen

    Plugins+Add custom MCP server

    ChatGPTPlugins1+2https://…3Create4
  2. Name und Adresse eintragen

    Namen eingeben, Adresse unter Connection einfügen, Risikohinweis abhaken und Create as a plugin klicken

    Name · NameSendLetter
    Connection · Adressehttps://sendletter.eu/api/mcp
  3. SendLetter im Chat auswählen

    Neuen Chat öffnen und vor dem Tippen SendLetter aus deinen Plugins wählen

  4. Ausprobieren

    Nutze SendLetter und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn ChatGPT sagt, dass es SendLetter nutzt, oder ein Werkzeug von SendLetter in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von OpenAI abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit Claude Code · etwa 2 Min.

Kein Schlüssel, nichts zu installieren

  1. Terminal öffnen

    Mac: Command+Leertaste drücken und Terminal tippen · Windows: PowerShell öffnen

  2. Diesen Befehl einfügen und Enter drücken

    claude mcp add --transport http --scope user sendletter https://sendletter.eu/api/mcp
  3. /mcp in Claude Code eingeben

    SendLetter sollte in der Liste als verbunden erscheinen

  4. Ausprobieren

    Nutze SendLetter und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Claude Code sagt, dass es SendLetter nutzt, oder ein Werkzeug von SendLetter in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit Cursor · etwa 2 Min.

Kein Schlüssel, nichts zu installieren

  1. Mit diesem Button Cursor öffnen

    In Cursor öffnen

    Cursor fragt nach einer Bestätigung; klicke Install

  2. KI-Chat in Cursor im Agent-Modus öffnen

  3. Ausprobieren

    Nutze SendLetter und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Cursor sagt, dass es SendLetter nutzt, oder ein Werkzeug von SendLetter in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Cursor abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit VS Code · etwa 2 Min.

Kein Schlüssel, nichts zu installieren

  1. Mit diesem Button VS Code öffnen

    In VS Code öffnen

    VS Code fragt nach einer Bestätigung; klicke Install

  2. KI-Chat in VS Code im Agent-Modus öffnen

  3. Ausprobieren

    Nutze SendLetter und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn VS Code sagt, dass es SendLetter nutzt, oder ein Werkzeug von SendLetter in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von VS Code abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Andere Apps mit MCP, etwa Windsurf, Zed oder Gemini CLI, fügen Server unterschiedlich hinzu. Sieh in der App-Liste nach

Alle Apps mit MCP ansehen →

Adresse für Apps, die über das Web verbinden

Adressehttps://sendletter.eu/api/mcp

JSON-Einstellungen stehen unten unter „Für Entwickler“

Hängst du fest? Frag Leute, die SendLetter nutzen💬 Diskussion →
Für Entwickler: Terminal-Befehle und JSON-Einstellungen

Über das Web

Claude Code

claude mcp add --transport http --scope user sendletter https://sendletter.eu/api/mcp

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "sendletter": {
      "url": "https://sendletter.eu/api/mcp"
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "sendletter": {
      "type": "http",
      "url": "https://sendletter.eu/api/mcp"
    }
  }
}

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Auf einen Blick

Downloads pro Wochei
Nicht auf npm/PyPI
Bestätigte Domain
✓ sendletter.eu
Verbindung
Läuft in der Cloud
Transport
streamable-http
Neueste Versioni
1.0.0
Kategoriei
Sonstiges
In der Registry veröffentlichti
8. Aug. 2026
Code zuletzt geänderti
6. Sept. 2026
Entwickler
gertsnijder
Registry-Status
Aktiv

Welche Apps ihn nutzen können

Basierend darauf, wie sich dieser Server verbindet, und auf der eigenen Doku jeder App, geprüft am 10. Nov. 2026.

Verbinden sich über das Internet in

ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast

Alle Apps, mit Vor- und Nachteilen →

Was er kann

Der Server verlangt eine Anmeldung, bevor er seine Tools auflistet.

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 16. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde über die Domain sendletter.eu bestätigt (die Registry prüft, wem die Domain gehört)

  • ✓ Bestanden

    Wird noch gepflegt

    Code zuletzt geändert: vor 2 Monaten

  • – Nicht zutreffend

    Hat eine Lizenz

    Nicht relevant: Cloud-Server des Inhabers von sendletter.eu; du führst keinen Code aus dem Repo aus

  • ✓ Bestanden

    Endpunkt antwortet

    Antwort in 507 ms (HTTP 401)

  • ✓ Bestanden

    Anmeldung mit OAuth

    Gibt OAuth-Anmeldung an, damit deine KI-App dich zum Einloggen weiterleiten kann

  • … Noch nicht geprüft

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Noch nicht geprüft; wir lesen die Tool-Liste, wenn wir den Endpunkt prüfen

Was wir prüfen → · JSON

Entwickler: neue Prüfung anfordern oder falsche Angaben melden

Diskussion

Fragen, Tipps teilen oder melden, dass etwas nicht geht. Sortiert nach „hilfreich“.

Noch keine Beiträge. Stell die erste Frage oder teile einen Tipp.

Beiträge hier stammen von Nutzern, nicht vom PopNx-Team.

Anmelden, um zu posten

Nutzerbewertungen

Noch keine Bewertungen

Anmelden, um eine Bewertung zu schreiben

Im Vergleich mit anderen in Sonstigesi

  • Mehr Sterne als 0 % der anderen 19954 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 17 % der anderen 19954 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 19954 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist SendLetter sicher?

Er hat 4 von 4 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.

Läuft er auf meinem Computer oder in der Cloud?

Er läuft in der Cloud des Entwicklers. Du verbindest dich übers Internet, ohne etwas zu installieren, aber was du sendest, läuft über die Server des Entwicklers.

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt vor 2 Monaten geändert, und die neueste Version (1.0.0) kam vor 3 Monaten in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Er verbindet sich per URL und funktioniert daher auch in Apps mit Remote-MCP, etwa ChatGPT im Web (volles MCP ab Business; Pro nur lesend).

Was kann ich stattdessen nutzen?

In derselben Kategorie: World Monitor, openstatus, Oh My Posh Validator, Strata, Jitsu

Ähnliche Alternativen

Gleiche Kategorie, andere Entwickler, Befehle bereits geprüft. Offizielle zuerst, dann nach Sternen.

So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 97 tools.

von koala73Weit verbreitet★ 90.661Aktualisiert vorgestern

Läuft in der Cloud✓ vom Dienst · worldmonitor.app

openstatus

Manage monitors, status pages, incidents and maintenances in your openstatus workspace.

von openstatusHQWeit verbreitet★ 9269Aktualisiert vor 2 Monaten

Läuft in der Cloud✓ vom Dienst · openstatus.dev

Oh My Posh Validator

Validate oh-my-posh configurations and segment snippets against the official schema.

von JanDeDobbeleerWeit verbreitet★ 23.758 Sterne des ganzen ReposAktualisiert vor 27 Tagen

Läuft in der Cloud✓ vom Dienst · ohmyposh.dev

Strata

MCP server for progressive tool usage at any scale (see https://klavis.ai)

von Klavis-AIWachsend★ 5827Aktualisiert vor 14 Monaten

Läuft in der CloudRepo archiviert✓ klavis.ai

Jitsu

Manage Jitsu data pipelines: destinations, streams, connections, functions, live events.

von jitsucomWeit verbreitet★ 5135Aktualisiert vor 4 Monaten

Läuft in der Cloud✓ vom Dienst · jitsu.com
  • World Monitor — Läuft in der Cloud, keine Installation · Kein Schlüssel nötig
  • openstatus — Läuft in der Cloud, keine Installation · Kein Schlüssel nötig
  • Oh My Posh Validator — Läuft in der Cloud, keine Installation · Kein Schlüssel nötig
  • Strata — Läuft in der Cloud, keine Installation · Kein Schlüssel nötig
  • Jitsu — Läuft in der Cloud, keine Installation · Kein Schlüssel nötig

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

sendletter

Send a real letter — printed, folded, franked and handed to the post — from Node.

npm install sendletter
import { SendLetter } from 'sendletter'

const sendletter = new SendLetter(process.env.SENDLETTER_API_KEY!)

const input = { idempotencyKey: 'invoice-2026-0042-reminder-1', sender: { company: 'Twilper', name: 'Gert Snijder', street: 'Merelstraat', number: '64', postalCode: '8916 AX', city: 'Leeuwarden', country: 'NL', }, recipient: { name: 'Jan de Vries', street: 'Keizersgracht', number: '123', postalCode: '1015 CJ', city: 'Amsterdam', country: 'NL', }, text: 'Beste heer De Vries,\n\nBijgaand de herinnering voor factuur 2026-0042.', }

const prepared = await sendletter.prepare(input) console.log(prepared.id, prepared.pages, prepared.totalCents) const pdf = await sendletter.download(prepared.id)

Show the PDF and exact total to the user. After approval, use the same input and key:

const letter = await sendletter.send({ ...input, expectedTotalCents: prepared.totalCents })

console.log(letter.id, letter.status, letter.totalCents)

Get a key at sendletter.eu. Keys starting sk_test_ post nothing, charge nothing, and still run the whole status chain, so you can build against the real thing.

Sending

Give the content exactly one way: text, document (rich text), file (base64) or fileUrl. Two is refused rather than guessed at, because the wrong document in a postbox cannot be recalled.

// An invoice you already have as a PDF.

await sendletter.send({ sender, recipient, file: { name: 'invoice.pdf', contentBase64: pdf.toString('base64') }, product: 'registered', // 'standard' | 'priority' | 'registered' colour: true, idempotencyKey: invoice-${invoice.id}, })

Send an `idempotencyKey` on anything that can be retried. A repeat with the same key returns the original letter instead of a second envelope. That single field is what makes a retry after a network timeout safe, and a timeout says nothing about whether the letter was accepted.

Reading

await sendletter.get(id)                       // one letter

await sendletter.list({ status: 'posted' }) // one page await sendletter.cancel(id, 'order withdrawn') // while it is still cancellable await sendletter.download(id) // the PDF as printed await sendletter.download(id, { proof: true }) // proof of posting

for await (const letter of sendletter.all({ mode: 'live' })) { // walks every page; you never hold the cursor }

Invoices and credit notes

Every paid live letter receives its invoice number at payment time. Test letters never consume the statutory series. A full refund keeps that invoice and adds a separately numbered negative credit note.

const page = await sendletter.listInvoices()

await writeFile('invoice.pdf', await sendletter.downloadInvoice(page.data[0].id))

if (page.data[0].creditNote) { await writeFile( 'credit-note.pdf', await sendletter.downloadCreditNote(page.data[0].creditNote.id), ) }

Checking before you spend

const check = await sendletter.validateAddress(recipient)

if (!check.valid) console.log(check.problems) // answers, does not throw

const quote = await sendletter.quote({ destination: 'DE', pages: 3 })

validateAddress returns a bad address rather than throwing: a wrong postcode is the successful outcome of asking. supported: false is the one that cannot be fixed by editing the address — we do not carry to that country.

Errors

Everything the API refuses becomes a SendLetterError with a code to branch on.

import { SendLetterError } from 'sendletter'

try { await sendletter.send({ sender, recipient, text }) } catch (error) { if (!(error instanceof SendLetterError)) throw error

if (error.code === 'insufficient_balance') { // Put this in front of the customer; the wallet is short, nothing else. return redirect(error.topUpUrl!) } if (error.isRetryable) { await sleep((error.retryAfter ?? 5) * 1000) } }

isRetryable covers 429 and 5xx. Nothing else should be retried: a 400 means the letter will be refused just as firmly the second time.

Webhooks

Status changes arrive as a POST to the URL you registered. Verify them. Without that, anyone who learns your endpoint can tell your system a letter was delivered.

import { verifyWebhook, SendLetterError } from 'sendletter'

export async function POST(request: Request) { const rawBody = await request.text() // the raw text, not the parsed object

let event try { event = verifyWebhook({ rawBody, signature: request.headers.get('x-sendletter-signature'), secret: process.env.SENDLETTER_WEBHOOK_SECRET!, }) } catch (error) { if (error instanceof SendLetterError) return new Response('nope', { status: 400 }) throw error }

if (await alreadyHandled(event.id)) return new Response('ok') // see below await handle(event) // letter.posted, ... return new Response('ok') }

Two things this shape gets right and hand-rolled verification usually does not:

  • The raw body, not a re-serialised one. The signature covers the exact bytes we sent, and JSON.stringify does not promise to reproduce them. Read the body as text, verify, then parse.
  • Deduplicate on `event.id`. Delivery is at-least-once with retries, so a timeout on your side means the same event arrives again. letter.posted handled twice should not bill a customer twice.

Events: letter.submitted, letter.printed, letter.posted, letter.delivered, letter.failed, letter.refunded.

Test mode

A sk_test_ key runs the full chain — submitted → printed → posted → delivered — with webhooks firing exactly as they will in production, while touching no wallet and no printer. client.isTestMode tells you which kind of key you are holding, which is worth asserting in a deploy check: the two look alike in a log and only one of them costs money.

Reference

sendletter.eu/en/developers · OpenAPI at /api/v1/openapi.json · MIT