Endpoint
The server is stateless: there is no SSE subscription. Clients that expect long-lived SSE should use a Streamable HTTP–capable MCP host instead.
Authentication
OAuth (browser-parity)
MCP clients that support OAuth discover Mermail via Protected Resource Metadata, open the console authorize page, and receive a Bearer access token after the user signs in with Enoki (same as the web app) and picks a workspace. The consent UI shows a friendly client name (for example ChatGPT or Cursor), not the opaquemcp_client_… id.
Unauthenticated calls return
401 with a WWW-Authenticate challenge pointing at the PRM document.
API key (automation / CLI)
- Create a workspace API key in Settings → API Keys. See Authentication.
- Send it on every MCP
POSTasx-api-key. - Cookie / console sessions alone are rejected for MCP.
Discover the server
serverInfo.description, icons at https://console.mermail.app/brand/icon-primary.png, and the full tool list.
Official MCP Registry
Mermail is published asapp.mermail/mcp on the Official MCP Registry. Clients and aggregators (PulseMCP, Smithery, Glama, and others) discover remote Streamable HTTP servers from that feed.
The card includes OAuth and API-key authentication options, Streamable HTTP transport, icons/description metadata, and the full tool list.
Connect an assistant
Use the interactive guide at mermail.app/agents for host-specific steps.
API-key example:
/mcp URL and Streamable HTTP (not SSE).
For packaged workflows, install Mermail Skills (npx skills add Nudgen-Marketing/mermail-skills) or connect via the registry id app.mermail/mcp when your host supports Official Registry install.
How tools map to the API
Each tool (exceptprepare_destructive_action) maps to one sold API operation:
Nest Sold API fields under the MCP
body argument. If agents pass Sold fields flat at the top level (to, subject, text, …), Mermail folds them into body.
Email write payloads
Validation failures return
code: "validation_failed" with a details array of field paths (for example body: Either 'html' or 'text' must be provided) so agents can self-correct. Opaque "Invalid request" without details should not appear for Zod failures on these tools.
Server instructions: prefer read-only tools before writes. Responses are JSON text plus object-shaped structuredContent. JSON arrays are exposed as { "items": [...] } so the result conforms to the MCP schema. Binary payloads (for example attachments) are capped at 1 MiB; larger downloads should use the REST attachment endpoint.
Destructive actions
Destructive tools (delete workspace/member/domain/email/folder/label/conversation/triager, bulk delete, empty trash, …) require a short-lived confirmation token:- Call
prepare_destructive_actionwith:action— the destructive tool namearguments— the same arguments you will pass to that tool (withoutconfirmationToken)
- Receive
{ confirmationToken, expiresInSeconds }(token prefixmcp_confirm_, TTL 5 minutes, single-use, Redis-backed). - Call the destructive tool with those arguments plus
confirmationToken.
confirmation_required) and does not hit the API.
Tool catalog
The live server exposes 63 tools:prepare_destructive_action + 62 API wrappers. Grouped by area:
Usage
Usage
get_api_credit_usage, get_email_usageWorkspaces & members
Workspaces & members
list_workspaces, get_workspace, update_workspace, delete_workspace, get_workspace_storage, list_workspace_members, update_member_role, remove_workspace_member, invite_workspace_member, resend_workspace_inviteCustom domains (Developer+)
Custom domains (Developer+)
list_email_domains, add_email_domain, delete_email_domain, verify_email_domainThese hit Developer-gated REST paths. Free workspaces receive 403 when the tool runs.Mailboxes
Mailboxes
list_workspace_mailboxes, list_mailboxes, create_mailbox, get_mailbox, update_mailbox_settings, get_mailbox_storageEmails, drafts, threads, folders, labels
Emails, drafts, threads, folders, labels
list_emails, send_email, get_email, update_email, delete_email, bulk_delete_emails, bulk_mark_emails_read, bulk_move_emails, move_email, reply_to_email, forward_email, download_attachment, save_draft, regenerate_draft, schedule_email_send, empty_trash, get_thread, mark_thread_read, list_folders, create_folder, update_folder, delete_folder, search_emails, list_custom_labels, create_custom_label, update_custom_label, delete_custom_labelAI agent & task triage
AI agent & task triage
list_agent_conversations, create_agent_conversation, rename_agent_conversation, delete_agent_conversation, list_agent_messages, chat_with_mailbox_agent, list_task_triagers, create_task_triager, list_recent_triager_runs, update_task_triager, delete_task_triager, set_default_task_triager, get_or_create_triager_conversationSafety
Safety
prepare_destructive_action — issues confirmation tokens for destructive toolsopenWorldHint for MCP clients that surface that signal.
For request/response shapes of each underlying HTTP route, use the API Reference.
Related
Skills
Install Mermail workflows in Codex, Claude Code, and Cursor.
Authentication
Create and use
sk-proj- API keys.Discovery
Public discovery URLs including the MCP server card.