FounderMail runs a hosted Model
Context Protocol server at https://mcp.foundermail.mx. Connect an assistant to it
and it can list your mailboxes, read mail, write drafts and manage templates, using the same
API key as the REST API. The server uses the streamable HTTP transport. API keys, and with them
the MCP server, are on every plan, the Free one included.
It can draft, and it can send. draft_reply leaves the message in
the mailbox's Drafts folder, where it shows in the dashboard and in any IMAP client and a
person sends it; send_email sends it there and then. An assistant that can send
from your domain is a real risk, so give it a key scoped to mail:draft alone if
you want the loop to stop one step short — and note that most domains may only reply to people
who have written in, which limits what a sending assistant can do to strangers.
Create a key under Settings → API keys, then add the server to your client with the key as a bearer token.
Claude Code
claude mcp add --transport http foundermail https://mcp.foundermail.mx \
--header "Authorization: Bearer YOUR_API_KEY" Any client that takes a JSON configuration (Cursor, VS Code, Windsurf and others)
{
"mcpServers": {
"foundermail": {
"url": "https://mcp.foundermail.mx",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Clients that only speak the local stdio transport can reach the server through a bridge such as
mcp-remote, passing the same header.
| Tool | Parameters | |
|---|---|---|
list_inboxes | — | The mailboxes the key can reach, with their addresses. |
get_inbox | inbox_key | One mailbox: address, message count, size, enabled. |
list_emails | inbox_key, skip, take, since | Messages in a mailbox, newest first. take defaults to 10, capped at 25. since (ISO 8601) lists only what arrived at or after that time. |
get_email | inbox_key, message_id | One full message, body included. |
get_last_email | inbox_key, optional template | The most recent message, optionally parsed with a template. |
draft_reply | inbox_key, to, subject, body, is_html, optional draft_id | Writes a draft from the mailbox. With draft_id it overwrites an existing draft instead of creating a second one. Never sends. |
list_drafts | inbox_key | Drafts already written, so the assistant does not duplicate one. |
send_email | inbox_key, to, subject, body, is_html, in_reply_to_message_id, optional cc, bcc | Sends now, from the mailbox's own address. Needs a key with mail:send. Counts against the plan's allowance. |
list_templates, create_template, test_template, delete_template | see Templates | Extraction templates with {{var}} placeholders. |
The inbox key is the local part of the address (support for
support@yourdomain.com); use the full address when the same key exists on two of
your domains.