The default is deliberately cautious — every send and publish returns a token and waits for `confirm_action`, which is the right posture for a tool that can email real people. Turning the guards off is a supported choice for scheduled runs, but it removes the last checkpoint, so make it consciously. The consent queue is the other thing that sets this apart from a transactional API: an agent cannot mail someone who has not agreed to hear from you, which is a policy enforced in the tool rather than in the prompt.
A local email server for agents. Templates, recipient groups, sender identities and message content stay on your machine. When an agent adds a recipient, that person gets a consent request and the email queues locally until they grant it — transactional messages such as one-time codes go out without waiting.
- Plain text, HTML or Markdown to one recipient or many
- Consent handled automatically: new recipients get the request, the message queues, and it sends the moment consent arrives
- Built-in templates for consentless transactional mail, such as one-time codes and order completion
- Custom templates with dynamic variables, an interactive preview while you iterate, and a test send to check the rendering before it goes anywhere
- Recipient groups and named sender identities, both referenced by name rather than by address
- Email health metrics
- A blog you can run from the same place: settings, custom domain, drafts, publish, preview and a broadcast to a group
- A confirmation gate on mutating tools — create, publish and send return a token first and only run after `confirm_action`
A GoodSender API key in `GOODSENDER_API_KEY`. Three ways to install: an MCPB bundle you open in a supporting client, a Docker image that serves Streamable HTTP on port 9889, or a downloaded binary for your platform referenced directly in the client config. `GOODSENDER_DISABLE_ACTION_GUARDS=true` removes the confirmation step for unattended runs, and `GOODSENDER_TELEMETRY=false` opts out of the usage metrics that are on by default.
One command plus a key — docker run -d -e GOODSENDER_API_KEY=<Your API Key> -v goodsender-mcp-data:/data ghcr.io/good-sender/mcp:latest, then supply credentials
