Assistant Mail — agent email with allowlist & consent
Managed agent email for personal and small-team OpenClaw and Hermes: allowlist, consent, retention, and send caps. Mailbox access uses mailboxId (UUID) plus API key auth.
Listed on ClawHub — not an official OpenClaw endorsement.
- Install:
openclaw skills install @assistantmail/assistant-mail, then MCP withASSISTANT_MAIL_API_KEY - Free: 1 mailbox, 25 emails/day — create a Free account
- Outbound: gated by allowlist; paid plans send consent invites before send
- Paid: Upgrade in-app only · Docs
Skill page: https://clawhub.ai/assistantmail/skills/assistant-mail
Capability
This skill gives AI agents a consistent way to discover Assistant Mail endpoint details and directly fetch mailbox/message data through MCP.
Critical Access Model
- Knowing an email address like
agent-b1e4643c@assistant-mail.aidoes not grant mailbox access. - Backend mail APIs are keyed by
mailboxId(UUID path parameter), not by mailbox email address. - Mailbox operations are authorized by account ownership (
mailbox.accountId === auth.accountId).
What this means for agents:
- The mailbox email address is a routing address, not an authentication secret.
- Your client must call mailbox routes with the correct
mailboxId. - A valid API key or Cognito JWT is still required.
Agent Bootstrap (Required)
- Human owner registers or signs in on assistant-mail.ai (Free: 1 mailbox, 25 emails/day). Docs
- Human owner creates an API key with
POST /v1/api-keys. - Human owner shares the returned
amk_...key securely with the agent runtime. - Agent lists mailboxes via
GET /v1/mailboxesand stores the targetmailboxId. - Agent uses that
mailboxIdfor send/list/get/usage routes.
Notes:
- API keys are only shown once at creation.
- API key management endpoints are only available from the human-facing app
- API key auth can be supplied as
x-api-key: amk_...orAuthorization: Bearer amk_.... - Outbound send is gated by the recipient allowlist. On paid plans, recipients must confirm a consent invite before the agent can send.
- Paid plans: Upgrade in-app only (not Payment Links).
MCP Connection
- Command:
assistantmail-mcp - Environment:
ASSISTANT_MAIL_API_BASE_URL(optional, defaults tohttps://api.assistant-mail.ai)ASSISTANT_MAIL_API_KEY(optional,amk_...; used by direct tools whenapiKeyinput is omitted)
- Available tools:
assistantmail_healthassistantmail_get_meassistantmail_get_inbound_policyassistantmail_update_inbound_policyassistantmail_list_mailboxesassistantmail_create_mailboxassistantmail_get_mailboxassistantmail_update_mailboxassistantmail_delete_mailboxassistantmail_list_messagesassistantmail_get_messageassistantmail_send_emailassistantmail_reply_message– Reply to an email the agent has received. Handles threading (In-Reply-To, References) automatically.assistantmail_delete_messagesassistantmail_get_usageassistantmail_list_recipientsassistantmail_add_recipientassistantmail_remove_recipientassistantmail_send_email_referenceassistantmail_list_messages_referenceassistantmail_get_message_referenceassistantmail_get_usage_reference
These direct tools cover the API-key operational endpoints agents are expected to call.
OpenClaw
Install from ClawHub, then register the MCP command assistantmail-mcp and set ASSISTANT_MAIL_API_KEY:
openclaw skills install @assistantmail/assistant-mail
Listed on ClawHub — not an official OpenClaw endorsement. Skill: https://clawhub.ai/assistantmail/skills/assistant-mail
Claude
Use this skill by adding an MCP server entry that launches assistantmail-mcp.
OpenAI
Use this skill by configuring an MCP connector that starts assistantmail-mcp and exposes the tools above.
Direct MCP Calls (No Manual URL Building)
{
"tool": "assistantmail_list_mailboxes",
"input": {
"apiKey": "amk_..."
}
}
{
"tool": "assistantmail_get_mailbox",
"input": {
"mailboxId": "<mailbox-uuid>",
"apiKey": "amk_..."
}
}
{
"tool": "assistantmail_list_messages",
"input": {
"mailboxId": "<mailbox-uuid>",
"limit": 50,
"since": "2026-01-01T00:00:00.000Z",
"apiKey": "amk_..."
}
}
{
"tool": "assistantmail_get_message",
"input": {
"mailboxId": "<mailbox-uuid>",
"messageId": "<message-uuid>",
"apiKey": "amk_..."
}
}
{
"tool": "assistantmail_send_email",
"input": {
"mailboxId": "<mailbox-uuid>",
"to": "recipient@example.com",
"subject": "Hello",
"text": "Hi there",
"apiKey": "amk_..."
}
}
{
"tool": "assistantmail_reply_message",
"input": {
"mailboxId": "<mailbox-uuid>",
"messageId": "<message-uuid>",
"text": "Thanks for your email!",
"apiKey": "amk_..."
}
}
{
"tool": "assistantmail_get_usage",
"input": {
"mailboxId": "<mailbox-uuid>",
"apiKey": "amk_..."
}
}
{
"tool": "assistantmail_list_recipients",
"input": {
"apiKey": "amk_..."
}
}
If ASSISTANT_MAIL_API_KEY is set in the MCP server environment, you can omit apiKey in tool input.
