Newsletter infrastructure
for humans and machines

Self-hosted newsletter ops in one Go binary. Humans use the web UI. Agents use the same system through REST, CLI, or MCP, from Cursor, Claude Code, OpenClaw, or any harness that can call an API.

40+
API Endpoints
30
MCP Tools
~25 MB
Single Binary
0
Runtime Dependencies

Same surface for people and agents

Most newsletter tools are dashboards with an API bolted on. Dispatch is the other way around: an operable service that happens to have a UI.

  1. 01
    You keep the data and the mail path.

    Subscribers, editions, and delivery live on your server, behind your SMTP, SES, or Mailgun account. No vendor list lock-in.

  2. 02
    Agents get the full job, not a toy endpoint.

    Lists, imports, templates, test sends, scheduled blasts, bounce handling, and stats are available through REST, CLI, and MCP. The web UI uses the same operations.

  3. 03
    Guardrails are part of the workflow.

    Validate templates, send a test, then confirm before a list send. That matters when an agent is holding the API key.

Four ways in

Pick the door that matches your harness. Every operation is available through every interface.

MCP

Native tool calling

30 tools and 4 resources over the Model Context Protocol. Stdio mode plugs into MCP-capable environments without a custom integration layer.

dispatch mcp
REST

Remote operator

Point any agent or script at your base URL with an API key. Cursor, Claude Code, OpenClaw, CI, or a one-off curl: same contract.

X-API-Key + /api/v1/…
CLI

Scripts and shells

Cobra commands for lists, subscribers, editions, send, import/export, and stats. JSON output when you need to pipe results into something else.

dispatch send | lists | stats
Web UI

Humans welcome

Embedded htmx UI for day-to-day list and edition work, previews, and send monitoring. No separate frontend stack to deploy.

/ui on your instance

Bring the agent you already use

Dispatch does not require a particular IDE or runtime. If the harness can speak MCP or HTTP, it can run a newsletter.

Cursor

IDE + MCP

Run dispatch mcp as an MCP server, or operate a remote instance over REST. Copy docs/cursor-rules/ into .cursor/rules/ for project conventions.

dispatch mcp
Claude Code

CLI agent

Same options: MCP stdio locally, or API key + base URL against a deployed Dispatch. The agent reads ops docs and drives the full lifecycle.

MCP or REST
OpenClaw

Always-on agent

Optional skill under docs/skills/dispatch-newsletter/ for install-and-operate workflows. Peer to the other harnesses, not a special tier.

openclaw skill install ...
Any harness

HTTP is enough

Codex, custom agents, automation bots, shell loops. If it can POST JSON with a header, it can subscribe, compose, test, and send.

curl + X-API-Key

Agent session with guardrails

A typical send is validate, test, confirm, then blast. The harness is yours; the discipline is built into how Dispatch is meant to be used.

From prompt to delivery

Give the agent the base URL and API key (or MCP). It discovers lists and tags, builds an edition from a template, and refuses to skip the test send when you follow the ops guide.

  1. Connect : MCP stdio, or REST with X-API-Key
  2. Compose : create or update an edition, run validate
  3. Test : send to a real inbox you control
  4. Confirm : human says yes before the list send
  5. Monitor : poll send status, opens, and bounces
agent session
# Any harness with MCP or HTTP
user: Send a newsletter to our VIP subscribers

agent: Checking Dispatch...
        ✓ Service at localhost:8025
        ✓ List "updates": 847 active
        ✓ 23 tagged "vip"

        Creating edition from template...
        ✓ Edition "march-vip-update" created
        ✓ Template validated

        Sending test to you@example.com...
        ✓ Test delivered

agent: Test looks good. Send to all 23 VIPs?

user: Yes

agent: ✓ Sent 23/23
        Open rate: 74% (after 24h)

What you actually run

The newsletter primitives operators need, without a SaaS bill or a container farm.

✉

HTML editions

Go templates with personalization. Validated before send so bad syntax never hits the list.

⏲

Scheduled sends

Queue a time; recipients are rebuilt at dispatch. Cancel with one API call.

⚒

Tags and segments

Free-form tags on subscribers. Filter sends without splitting into endless lists.

✔

Double opt-in

Pending until confirm. Built-in confirmation mail. Sensible default for GDPR-minded ops.

🚧

Bounce handling

SMTP 5xx, IMAP DSN monitor, SES/SNS and generic webhooks. Bounced addresses drop out automatically.

📨

Transactional mail

Raw single sends for auth codes and notices via POST /api/v1/send/raw, same deliverability stack.

Also: open tracking, image hosting, CSV import/export, rate-limited delivery, List-Unsubscribe / DKIM / multipart. Full list in the README.

Deploy in minutes, run for years

No containers required. No managed newsletter SaaS. One binary on any Linux server.

Ready to dispatch?

Clone the repo, build the binary, point your harness at MCP or REST. First test send in minutes.