Integration
Hermes Agent Integration
Give Hermes Agent email via Dead Simple's MCP server. Send, receive, reply, and manage threads from Nous Research's self-improving agent — one config.yaml change.
Quick Start (MCP)
Hermes Agent has first-class MCP support. Add a deadsimple entry to the mcp_servers block in your Hermes config.yaml (default location: ~/.hermes/config.yaml):
mcp_servers: deadsimple: command: python args: ["-m", "deadsimple.mcp"] env: DSE_API_KEY: "dse_your_api_key"
Reload MCP servers in your running Hermes session, confirm the tools appear, and prompt the agent — no code or custom skill required:
# Install the package first pip install "deadsimple[mcp]" # In the running Hermes session /reload-mcp hermes tools | grep deadsimple # Then prompt naturally: "Create an inbox called 'Hermes Support', then send a welcome email to user@example.com and tell me when a reply arrives."
Hermes will call create_inbox, send_email, and on the next tick read_messages — remembering the inbox ID in its persistent memory across restarts.
Available MCP Tools
Once connected, Hermes Agent has access to these eleven tools alongside its built-ins (terminal, read_file, web_search, etc.):
| Tool | Description |
|---|---|
create_inbox |
Create a new email inbox |
list_inboxes |
List all inboxes on the account |
delete_inbox |
Delete an inbox |
send_email |
Send an email from any inbox |
read_messages |
List recent messages in an inbox |
read_message |
Read a single message with full body |
reply_to_message |
Reply to an existing message with threading |
forward_message |
Forward a message to new recipients |
list_threads |
List conversation threads in an inbox |
read_thread |
Read all messages in a thread |
get_usage |
Check account usage and plan limits |
Want Hermes to only send and read (not delete inboxes)? Use the MCP allow-list:
mcp_servers: deadsimple: command: python args: ["-m", "deadsimple.mcp"] env: DSE_API_KEY: "dse_your_api_key" tools: include: [send_email, read_messages, read_message, reply_to_message]
Custom Skill (Alternative)
If you prefer a tighter, code-first integration, register a custom Hermes skill that uses the Python SDK directly:
from deadsimple import DeadSimple client = DeadSimple() # reads DSE_API_KEY from env def send_email(to: str, subject: str, body: str, inbox_id: str = None): """Send an email. Creates a Hermes inbox if none is provided.""" if not inbox_id: inbox = client.inboxes.create(display_name="Hermes Agent") inbox_id = inbox.inbox_id result = client.messages.send( inbox_id=inbox_id, to=[to], subject=subject, text_body=body, ) return f"Sent {result.message_id} from {inbox_id}" def check_inbox(inbox_id: str): """Summarize recent messages in an inbox.""" result = client.messages.list(inbox_id, limit=5) return [ {"from": m.from_email, "subject": m.subject, "snippet": m.snippet} for m in result.messages ]
Drop the file into Hermes's skills/ directory and Hermes's skill-learner will register the functions automatically. From that point forward, send_email and check_inbox show up in the tools list alongside everything else.
Example Prompts
Once connected, try these with your Hermes Agent:
- "Create an inbox called 'Hermes Support' and email hello@example.com a welcome message." — Hermes calls
create_inbox, thensend_email, and stores the inbox ID in its memory. - "Every 10 minutes, check the Hermes Support inbox and reply to any new customer message asking for their account ID." — Hermes writes this as a recurring skill and runs it without further prompting.
- "Summarize unread messages across all my inboxes and email the summary to me at me@example.com." — Hermes uses
list_inboxes,read_messagesacross each, thensend_email. - "Forward the most recent billing inquiry to finance@company.com and reply to the sender acknowledging the handoff." —
list_threads+forward_message+reply_to_message. - "How close am I to my plan's email limit this month?" — Hermes calls
get_usageand reports back.
Why Dead Simple Is a Good Fit for Hermes
- First-class MCP, not a wrapper. Hermes's
mcp_serversblock and Dead Simple's MCP server speak the same protocol natively — no shim, no REST-to-MCP bridge. - Agent-owned inboxes. Every inbox Hermes creates is a real address on a domain DSE manages — no shared Gmail account that Google can suspend.
- Webhooks that feed Hermes's memory. Inbound messages trigger webhooks in real time, so Hermes's persistent memory is fresh without polling.
- Deliverability is handled. SPF, DKIM, DMARC, and bounce monitoring run on the Dead Simple side. Hermes never learns what a DKIM selector is — and shouldn't.
- Free plan is enough to build. Five inboxes and 5,000 emails/month on the free tier, enough to wire Hermes up and run it in production on low-volume workloads.
Full Walkthrough
For a step-by-step guide — including a production-shaped support-triage skill and troubleshooting tips — read the full blog post:
Related Integrations
- MCP Server — the underlying MCP server used by this integration
- OpenClaw — same MCP server, different AI agent host
- Python SDK — for building custom Hermes skills programmatically
- CLI — manage inboxes and email from the terminal