Labsco
MCP SERVER

Lettr MCP

by lettr-com

Send and schedule transactional email, manage templates and sending domains, and run the whole audience — lists, topics, properties, segments — from one server.

Marketing Automation & AdvertisingVerified
Summary
The irreversible tools say so in their own descriptions, and mean it.

Deleting a template, a domain, a contact or a segment, and sending or scheduling a campaign, each instruct the assistant to confirm first and to spell out the consequence — deleting a template makes every email referencing that slug fail, deleting a domain stops sending on it entirely. That matters more here than on most servers because the audience side has operations that multiply: attaching contacts to lists is a cartesian product of both. A sensible order of work: get-merge-tags before sending to a template so substitution_data matches what it actually expects, and verify-domain before anything reaches a real recipient.

What it is

Lettr's MCP server over its email API: sending and inspecting transmissions, templates with merge tags, sending-domain DNS, webhooks, campaigns, and a complete audience model of contacts, lists, subscription topics, custom properties and segments. The irreversible tools carry an explicit instruction to confirm with the user before running.

What you get
  • send-email covers HTML, plain text, AMP HTML, templates with merge tags, attachments, custom headers, tracking and personalization, and returns a request id with accepted and rejected counts
  • schedule-email takes the same fields plus a scheduled_at at least 5 minutes ahead and no more than 3 days out; get-scheduled-email reads it back and cancel-scheduled-email stops it
  • get-email-detail returns the full delivery timeline for one transmission with a derived state — scheduled, delivered, bounced or failed — while list-email-events filters delivery, bounce, click and open events by type, recipient, transmission, date range or bounce class
  • Templates: list, get, create from HTML or Topol editor JSON (one or the other, never both), update — which creates a new version automatically — and delete, plus get-merge-tags to discover which substitution_data keys a template expects before you send to it
  • Domains: create-domain returns the DKIM selector and public key to publish, get-domain reports CNAME, DKIM, DMARC and SPF status along with the detected DNS provider, and verify-domain runs the check and returns the full validation report
  • Webhooks with basic or OAuth2 authentication, subscribed to every event or a selected list, with the last delivery result visible on the listing
  • The audience model is complete: contacts with optional double opt-in, lists, subscription topics carrying a default_subscription and visibility, custom properties whose type is fixed at creation, and segments whose conditions OR within a group and AND across groups
  • Bulk operations where they earn their keep: bulk-create-audience-contacts skipping addresses that already exist, bulk attach and detach across contacts × lists, and bulk-delete-audience-lists for 1 to 50 at a time
  • Campaigns: list with embedded engagement stats, get with a rendered HTML preview, list-campaign-events with cursor pagination, and send, schedule or unschedule — the sending ones instructed to confirm first because they dispatch real mail
  • health-check needs no authentication at all, and auth-check validates the configured key and returns the team it belongs to
Requirements

Runs over stdio as npx -y lettr-mcp with LETTR_API_KEY, an lttr_ key created in the dashboard. SENDER_EMAIL_ADDRESS and REPLY_TO_EMAIL_ADDRESS set defaults, and --key, --sender and --reply-to do the same on the command line; with no default sender the server asks for one on every send. Sending to arbitrary recipients needs a verified sending domain.

Setup effort

One command plus a key — claude mcp add lettr -e LETTR_API_KEY=lttr_xxxxxxxxx -- npx -y lettr-mcp, then supply credentials