Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
AI assistants send real USPS letters ($1 flat) and faxes ($0.50 flat) via MCP.
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Funktioniert in Claude im Web, auf dem Desktop und auf dem Handy:
https://3lgrouptechnology.com/mcpFühre das in deinem Terminal aus
claude mcp add --transport http 3lt-letter-mail https://3lgrouptechnology.com/mcpIn .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"3lt-letter-mail": {
"url": "https://3lgrouptechnology.com/mcp"
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"3lt-letter-mail": {
"type": "http",
"url": "https://3lgrouptechnology.com/mcp"
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
ChatGPT verbindet sich nur mit Servern im Internet:
https://3lgrouptechnology.com/mcpMenünamen können sich je nach Tarif und mit der Zeit leicht unterscheiden.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Tool-Namen und -Beschreibungen genau so, wie der Server sie am 6. Nov. 2026 gemeldet hat. Geschrieben hat sie der Entwickler, nicht wir; wir zeigen sie als reinen Text.
draft_letterCreate a letter DRAFT: verifies the recipient address with PostGrid, screens content, and returns a price quote. This NEVER mails anything. Pass EITHER html (letter body as an HTML string) OR pdf_path (path to a PDF file on the server). PDF text is extracted for screening; if ext
request_sendRequest that a draft be mailed. approval-tier keys: creates a PENDING request and returns a one-tap Allow/Deny approval_url for the human. Nothing is mailed until Allow. on_command keys: may auto-send inside guardrails (spend caps, content screening, anomaly detection); anything
send_statusCheck a send request: status (PENDING/SENT/REJECTED/FAILED), the key's trust tier and tier decision, approval state (+approval_url while pending), and billing state (Stripe charge id when billed).
create_fax_draftCreate a fax DRAFT: validates the recipient number, counts the PDF's pages, screens its text, and returns a price quote (Phaxio per-page cost x pages + the flat $1.00 service fee). This NEVER transmits anything — call approve_fax, then send_fax.
approve_faxApprove a fax DRAFT so it can be transmitted. The content is re-screened at approval time. Only the key that created the fax can approve it. Nothing is transmitted by this call — send_fax does that.
send_faxTransmit an APPROVED fax via Phaxio. Refuses drafts that were never approved and faxes that were already sent — a fax can be transmitted exactly once.
get_fax_statusCheck a fax: lifecycle status (DRAFT/APPROVED/SENT/FAILED), page count, quote, and — once sent — the live delivery status from Phaxio.
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 8. Nov. 2026
Der Registry-Name wurde über die Domain 3lgrouptechnology.com bestätigt (die Registry prüft, wem die Domain gehört)
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Antwort in 816 ms (HTTP 200)
Keine Anmeldung nötig
Wir haben 7 Tool-Beschreibungen gelesen und keine versteckten Anweisungen an die KI gefunden
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 3 von 3 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.
Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.
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.
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (1.0.1) kam vor 4 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Er verbindet sich per URL, also funktionieren auch Apps, die Remote-MCP-Server akzeptieren, zum Beispiel ChatGPT im Entwicklermodus.
In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, DECIDE: Migration Discovery Risk Review
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Run after each discovery iteration to see what's still uncertain, who to ask next, and what changed.
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.
Give your AI assistant hands. 3L-Group Technology is a print-and-mail rail: an AI agent calls our MCP tools, and a real physical letter goes out through the U.S. Postal Service — or a real fax lands on a real fax machine. Draft in chat, approve it, and it's sent — no printing, no envelopes, no post office run, no fax machine of your own.
🌐 https://3lgrouptechnology.com 📇 Official MCP Registry: com.3lgrouptechnology/3lt-letter-mail (see server.json)
The public MCP endpoint is live:
https://3lgrouptechnology.com/mcp
Transport: streamable HTTP. Authentication: pass your API key as the api_key argument on every tool call. Get an API key at 3lgrouptechnology.com.
Claude (claude.ai) supports custom MCP connectors: add a new connector with the server URL above. When the assistant calls a tool, it supplies your lms_... API key as the api_key parameter. (The service never sees your Claude account — the key is the only credential.)
Settings → MCP → Add custom MCP server:
{
"mcpServers": { "3lt-letter-mail": { "url": "https://3lgrouptechnology.com/mcp" } } }
Any client that speaks streamable HTTP works: point it at https://3lgrouptechnology.com/mcp and provide your API key per tool call.
Keys (lms_...) are issued by the service — the key is shown exactly once, so store it when it appears. Two paths:
POST /v1/connect). You save a payment method on the Stripe-hosted element (the /billing page machinery), confirm a monthly cap, and finalize: the service issues an on_command key bound to that cap. That one authorization is the standing approval — sends inside the caps need no per-send prompt.POST /v1/keys (X-Admin-Token). These start on the approval tier: every send needs a human Allow tap until the operator changes the tier.Either way the key starts at risk level L0 ($50/mo cap); clean history raises limits automatically, and hitting the monthly cap is a hard stop, never a silent overage.
| Tool | What it does |
|---|---|
draft_letter | Create a letter draft: verifies the recipient address, screens content, returns a price quote. Never mails anything. Accepts html (letter body) or pdf_path (server-local PDF). Options: color, quantity (bulk), certified (opt-in USPS Certified Mail + Electronic Return Receipt — standard First-Class is the default). |
request_send | Request that a draft be mailed. Approval-tier keys get a PENDING request plus a one-tap Allow/Deny link — nothing is mailed until a human taps Allow. Trusted on_command keys may auto-send inside guardrails (spend caps, screening, anomaly detection). |
send_status | Check a send request: status (PENDING / SENT / REJECTED / FAILED), approval state, trust-tier decision, and billing state. |
create_fax_draft | Create a fax draft from a server-local PDF: validates the recipient fax number, counts pages, screens content, returns a price quote. Never transmits anything. |
approve_fax | Approve a fax draft so it can be transmitted. Content is re-screened at approval time. Transmits nothing by itself. |
send_fax | Transmit an approved fax via Phaxio. Refuses unapproved drafts and already-sent faxes — a fax transmits exactly once. |
get_fax_status | Check a fax: lifecycle status (DRAFT / APPROVED / SENT / FAILED), page count, quote, billing state, and live Phaxio delivery status once sent. |
There is no tool that mails a letter or sends a fax directly. Every send passes through an approval record: a human tap or a standing Connect authorization. Fax is stricter still: approve_fax is always required — there is no zero-prompt fax path, even for on_command keys.
Flat $1.00 service fee per letter, plus postage (USPS First-Class via our print-and-mail provider). One price, no tiers, no volume games. Certified Mail with Electronic Return Receipt is opt-in and costs more — it's never the default.
Fax: the same flat shape — Phaxio's per-page cost (~$0.07/page) times the page count, plus a $0.50 service fee per fax (charged once per fax, not per page). A one-page fax quotes $0.57 before processing gross-up; the customer's card is charged the grossed-up total on send, exactly like a letter.
Example: *"Send my 2026 1099s to these 40 people"* → your assistant loops draft_letter → request_send → send_status for each recipient. Bulk runs auto-send inside your monthly cap; anything flagged falls back to a one-tap Allow/Deny link. One itemized receipt per send.
Prefer to run your own rail? The full stack is in this repo.
./quickstart.sh
Creates .venv, installs deps, runs the test suites, and starts the REST API on http://127.0.0.1:8000 (dashboard at /).
With no POSTGRID_API_KEY set, drafts fail cleanly at address verification — nothing can be mailed. Set a test key to exercise the full flow with simulated sends:
POSTGRID_API_KEY=test_... LMS_ADMIN_TOKEN=pick-a-secret ./quickstart.sh
MCP server (separate terminal):
POSTGRID_API_KEY=test_... .venv/bin/python mcp_server.py
mcp_server.py) — the 7 tools above over streamable HTTP.api.py, FastAPI) — agent endpoints (X-API-Key) for drafts, send requests, and the fax lifecycle (POST /v1/faxes → /{id}/approve → /{id}/send, GET /v1/faxes/{id}); admin endpoints (X-Admin-Token) to issue keys, approve/reject sends, manage trust tiers + spend caps; customer dashboard (/customer), approval dashboard (/), audit history, Stripe webhooks. Static discovery documents are served at /.well-known/oauth-authorization-server, /.well-known/oauth-protected-resource (truthful API-key metadata — there is no OAuth deployment), and /.well-known/mcp/server-card.json (Smithery static server card).phaxio_client.py, Phaxio API v2.1) — fax drafts are validated, page-counted, screened, and quoted like letters; sending runs the same billing engine as letters (tlt_billing.settle_fax): risk caps are checked against spend pooled across letters and faxes, the card is authorized → the fax transmits → the charge captures (voided if transmission fails), and an itemized receipt is issued.approval (default for admin-issued keys: human tap every send) or on_command (trusted: auto-sends inside guardrails — content screening on every send, per-send + daily spend caps, hard monthly cap, >3× 7-day anomaly rule, needs_review fallback). All decisions audited.POST /v1/connect creates a Stripe customer + returns a /connect/ page (card/Apple Pay/Google Pay via Payment Element, monthly cap confirmed). Finalizing issues an on_command API key with per-send approval OFF — the single Connect authorization is the standing approval, so sends flow with zero prompts inside the caps. Hitting the monthly cap is a hard 402 "raise your cap" — never a silent overage.settle / settle_fax in the shared tlt_billing module). ⚠️ This build's billing module refuses non-test Stripe keys — real customer charges need the test-mode guard lifted first (see DEPLOY.md, open questions).risk.py.db.py): api_keys, drafts, send_requests, faxes, billing_receipts, approval_tokens, connect_sessions, audit_log.| Var | Required | Default | Purpose |
|---|---|---|---|
POSTGRID_API_KEY | yes, to mail | — | PostGrid Print & Mail API key. test_... = simulated sends, nothing mailed. Live key = real mail (refused unless ALLOW_LIVE_MAIL=1). Never commit this. |
LMS_ADMIN_TOKEN | recommended | random, printed once at startup | Admin token for approvals + key issuance (X-Admin-Token). |
LMS_DB_PATH | no | ./lms.db | SQLite file location. |
POSTGRID_BASE_COST_USD | no | 0.97 | Estimated PostGrid per-letter base used in quotes. |
POSTGRID_AV_API_KEY | no | — | PostGrid Address Verification key; falls back to POSTGRID_API_KEY. |
MAIL_PROVIDER | no | postgrid | postgrid or lob (legacy fallback). |
PHAXIO_API_KEY / PHAXIO_API_SECRET | for fax | — | Phaxio API credentials. test_... = simulated sends. Live credentials are refused unless ALLOW_LIVE_FAX=1. Leave blank to run letter-mail only. Never commit these. |
ALLOW_LIVE_FAX | no | unset | Set to 1 to allow live Phaxio credentials (real faxes, real per-page charges). |
PHAXIO_PER_PAGE_USD | no | 0.07 | Estimated Phaxio per-page cost used in fax quotes. |
LMS_MCP_HOST / LMS_MCP_PORT | no | 127.0.0.1 / 8001 | MCP server bind. |
STRIPE_SECRET_KEY | for billing | — | Test secret key (sk_test_...). Non-test keys are refused. |
STRIPE_PUBLISHABLE_KEY | for /billing | — | Publishable key for the Payment Element page. |
STRIPE_WEBHOOK_SECRET | for webhooks | — | Signing secret for POST /v1/webhooks/stripe. |
APPROVAL_TOKEN_SECRET | recommended | ephemeral (restart-volatile) | HMAC secret for one-tap Allow/Deny links. |
PUBLIC_BASE_URL | for approval links | request URL | Public base URL embedded in approval links. |
TLT_MAILER_BACKEND | no | log | log writes receipts to TLT_RECEIPTS_DIR (no email sent). |
TLT_RECEIPTS_DIR | no | ./receipts | Where itemized receipt files are written. |
LMS_UPLOADS_DIR | no | ./uploads | Where uploaded PDFs are stored (per-draft dirs). |
LMS_MAX_PDF_BYTES | no | 10485760 | Max PDF upload size in bytes. |
Copy .env.example to .env and fill in real values. Never commit `.env`.
.venv/bin/python test_pricing.py
.venv/bin/python test_api_flow.py # PostGrid calls stubbed, no network .venv/bin/python test_billing_tiers.py # Stripe mocked, no network .venv/bin/python test_pdf.py # PDF upload + flow, no network .venv/bin/python test_risk.py .venv/bin/python test_customer_dashboard.py .venv/bin/python test_certified.py # certified-mail pricing + flow .venv/bin/python test_grossup.py # billing gross-up math .venv/bin/python test_rail.py # Connect rail authorization flow .venv/bin/python test_fax.py # Phaxio stubbed, no network .venv/bin/python test_fax_billing.py # fax settle/caps/pooling, Stripe mocked .venv/bin/python test_server_card.py # /.well-known/mcp/server-card.json
See `DEPLOY.md` — the step-by-step deploy-night runbook (Docker Compose via ./deploy.sh, the env checklist, the shared-library shipping step, and the post-deploy verification probes).
mail_provider.create_letter except core.approve_send, which requires a PENDING request and a human admin action. The MNur der Anfang wird gezeigt; den Rest findest du im Repo