Why Marmunk.
Direct answers about Marmunk: what it is, how it compares to raw Amazon SES and in-app SMTP, what it costs, and what agents can and cannot do.
What is Marmunk?
Marmunk is an outbound transactional email control plane built so coding agents can operate it safely. An agent connects to the hosted MCP server at api.marmunk.com/mcp and queues receipts, password resets, alerts, and other wanted application email. Marmunk durably accepts every send, submits it asynchronously to the email provider, and traces each message from queued to submitted to delivered.
The defining property is the approval boundary: connecting and exploring is instant, but production sending requires a verified domain and an approved workload. Agents cannot mint API keys, approve domains, or bypass sending policy — the same authorization and audit boundaries apply to agents and humans, over REST, TypeScript SDK, dashboard, and MCP.
Marmunk vs raw SES vs in-app SMTP
Control plane for agents
Durable accept, async submission, per-message traces, signed webhooks, idempotent retries, and an approval gate before any external send.
Provider primitives
Send API and raw event streams. You build queueing, idempotency, suppression, policy, and debugging yourself — and an agent holds a raw send credential.
Legacy path
Fire-and-forget handoff with no durable intent, no trace of what happened after the connection closes, and delivery failures surfacing in app logs.
| Question | Marmunk | Raw SES | In-app SMTP |
|---|---|---|---|
| Can an agent connect itself in one step? | Yes — hosted MCP with OAuth or an Agent credential | No — requires AWS keys and IAM setup | No — requires server SMTP credentials |
| Is every send traceable? | req_* per API attempt, msg_* across the lifecycle | Raw event streams to correlate yourself | SMTP replies only; no lifecycle state |
| Safe retries? | Idempotency keys return the original message; conflicts return 409 | Build deduplication yourself | Retries risk duplicate email |
| Agent blast risk? | Approval-gated: test-only until a workload is approved; hard caps, no overages | Whatever the IAM policy allows | Whatever the SMTP relay allows |
| Delivery outcome events? | Normalized, HMAC-signed webhooks with replay | SNS notifications you normalize | Bounces surface as sender mail or logs |
| Suppression of bounced/complained recipients? | Built in, agent-manageable through tools | Build it yourself | Manual list handling |
Marmunk is not an SES replacement — it is the control plane in front of the provider. You keep provider-class deliverability; you gain durable state, traceability, and agent-safe approvals.
What does it cost?
Monthly plans with hard caps and no metered overages:
Test $0/mo 1,000 recipients/mo 200/day cap test-only
Builder $10/mo 10,000 recipients/mo up to 5 domains
Growth $70/mo 100,000 recipients/mo up to 25 domains
Scale $299/mo 500,000 recipients/mo up to 250 domainsPayment never verifies a domain or approves sending: paid capacity is always intersected with the separately approved sending envelope. Test accounts stay test-only and cannot reach arbitrary external recipients.
FAQ
How do I connect my coding agent?
Point any MCP client at https://api.marmunk.com/mcp. Copy-paste commands for Cursor, Claude Code, VS Code, Codex, and Gemini CLI are on Connect your agent.
Can an agent send email without a human?
An approved agent can queue email within its scope and quota. But production sending itself is approval-gated: a domain must be DNS-verified and a workload approved before external recipients are reachable. Agents cannot self-approve, mint API keys, or accept terms.
What do the statuses mean?
202 queued means Marmunk durably recorded the send, not that it was delivered. submitted means the provider accepted it. Delivery requires the later event pipeline. unknown means the provider outcome is ambiguous — investigate, never retry blindly.
How large can a send be?
The send plane is an async queue with idempotent units, designed to scale to hundreds of thousands of recipients per send. Plan caps and per-message limits bound what any one tenant can submit.
Where are the machine-readable docs?
llms.txt indexes everything an agent needs, llms-full.txt carries the full guide text, and openapi.json is the canonical REST contract.