Hermes Agent is the first AI agent that feels less like a copilot and more like a coworker. Released by Nous Research on February 25, 2026 and already past 110,000 GitHub stars, it lives on your server, remembers what it learns, and quietly writes reusable skills between jobs. One thing it doesn't ship with out of the box is an email account. This guide shows you how to fix that in about three minutes by wiring Hermes to Dead Simple Email's MCP server — and why that combination is a genuinely useful upgrade for anyone building a long-running, autonomous agent.
Total setup: a pip install, six lines added to config.yaml, a /reload-mcp, and Hermes has eleven email tools. No forked code, no custom skill, no OAuth dance with Gmail. Here's the full walkthrough, followed by the why.
What Hermes Agent Is and Why It's Different
Hermes Agent is an open-source (MIT-licensed) autonomous agent from Nous Research — the team behind the Hermes 4 open-weight model family. The v0.1.0 release landed on February 25, 2026; v0.10.0 shipped April 16, 2026. It's model-agnostic — Hermes 4 is the default, but it also speaks to OpenRouter's 200+ models, OpenAI, Anthropic, Nous Portal, NVIDIA NIM, and any OpenAI-compatible endpoint.
The shape of it is what matters. Most current AI agents are tethered to an IDE (Claude Code, Cursor, Windsurf) or to a chat interface (ChatGPT, Claude Desktop). Hermes isn't. It's a long-running process that lives on your server and you interact with through a CLI or a messaging platform. It has persistent memory (powered by Honcho user modeling), learned skills (it writes Python modules for recurring tasks and reuses them), and a platform layer that already lists Email as a first-party transport alongside Telegram, Discord, Slack, WhatsApp, Signal, and CLI.
That last point is why email matters so much for Hermes specifically. A coworker with no inbox is a coworker you can't leave a message for. With email wired in, Hermes picks up tasks you send it overnight, replies to customers on its own thread, and sends you a summary in the morning — all without you sitting in front of a client.
Why Dead Simple Fits Hermes Better Than Gmail
You could point Hermes at a human's Gmail account. People do. It's a bad idea for three reasons. First, Google has been actively terminating Gmail accounts it flags as agent-controlled — we've written about the pattern and how to avoid it. Second, Gmail's API wasn't designed for autonomous workloads: quotas, OAuth scope changes, and anti-automation heuristics land on the agent at exactly the wrong moments. Third, if Hermes is running continuously, you don't want its noise in your own inbox.
Dead Simple was built for this workload. Every inbox is a first-class resource owned by the agent, not a wrapper around a human's account. SPF, DKIM, and DMARC are configured on the shared or custom domain before you send your first message. Sending infrastructure runs through dedicated IP reputation and KumoMTA, not a throttled consumer MTA. Webhooks land in real time so Hermes's memory gets updated the moment a reply arrives. The MCP server wraps all of that in eleven tools the model can call by name.
Three-Minute Setup
Here's the end-to-end. It assumes Hermes Agent is already installed — if not, the one-liner is on the official site.
Step 1: Install the Dead Simple MCP package
In the same Python environment that runs Hermes (or any environment on the same host — MCP launches the server as a subprocess):
pip install "deadsimple[mcp]" # Grab your API key from the dashboard # Settings → API Keys → Create Key export DSE_API_KEY="dse_your_api_key_here"
Step 2: Register the MCP server in config.yaml
Hermes reads its config from ~/.hermes/config.yaml (or wherever you installed it). Find the mcp_servers section and add:
mcp_servers: deadsimple: command: python args: ["-m", "deadsimple.mcp"] env: DSE_API_KEY: "dse_your_api_key_here" # Optional: restrict to a subset of tools # tools: # include: [send_email, read_messages, reply_to_message]
The tools.include allow-list is optional — useful if you want Hermes to only send and read, never delete inboxes. By default all eleven tools are exposed.
Step 3: Reload MCP and prompt Hermes
# In the running Hermes session: /reload-mcp # Confirm the tools registered: hermes tools | grep deadsimple # Now give the agent a job: Create an inbox called "Hermes Support", then email hello@example.com a short message asking them to reply with their availability next week. When the reply lands, summarize it to me here.
That's the whole setup. Hermes will call create_inbox, then send_email, remember the inbox ID in its persistent memory, and wait. When the reply comes in through the webhook pipeline, Hermes's memory picks it up on the next tick, calls read_message, and surfaces a summary. From your end, you gave it one prompt.
The Eleven Email Tools Hermes Gets
Once the MCP server registers, these tools appear in Hermes's tool list alongside terminal, read_file, and web_search. Each one returns JSON so the agent can parse and act without additional scaffolding.
| Tool | What it does | When Hermes uses it |
|---|---|---|
create_inbox |
Spin up a new inbox, return email address | First-run setup, per-project inboxes |
list_inboxes |
Enumerate inboxes with message counts | Route tasks to the right inbox |
send_email |
Send a new message from any inbox | Outreach, notifications, replies |
read_messages |
List recent messages with snippets | Morning triage, periodic polling |
read_message |
Fetch full body and attachments | Deep-reads before drafting a reply |
reply_to_message |
Reply with threading headers set | Ongoing customer conversations |
forward_message |
Forward to new recipients | Handoffs to humans or other agents |
list_threads |
List conversation threads | "What's still open?" queries |
read_thread |
Read all messages in a thread | Context recovery across sessions |
delete_inbox |
Destroy an inbox and its messages | Cleanup of throwaway inboxes |
get_usage |
Plan limits and current consumption | Self-throttling, budget checks |
This is a tight, deliberately narrow surface. Eleven tools is enough for Hermes to run a support inbox, manage sales threads, triage incoming mail, or spin up a throwaway inbox for a verification flow — and few enough that the model's tool-selection stays reliable even on long-running sessions.
Five Things Hermes Can Do With Email It Couldn't Before
The interesting question isn't "can Hermes send mail?" — it's what becomes possible once the agent has its own persistent inbox. A few patterns that only work with the combination:
- Autonomous daily standups. Hermes reads your overnight commits via its
terminaltool, drafts a summary, and emails it to the team at 8am. If someone replies with a question, Hermes reads the reply on its next tick and answers from the same thread. - Customer support inbox on autopilot. Give Hermes an inbox like
support@yourco.deadsimple.email. Every inbound message triggers a webhook that lands in its memory. Hermes reads, classifies, looks up the right answer from its learned skills, and replies — escalating to a human only for edge cases. - Long-horizon research with email check-ins. Kick off a research task that takes a week. Hermes runs quietly, and every day emails you a status update with what it found and what it's stuck on. You reply with guidance. No UI required.
- Multi-agent coordination. Two Hermes instances on two servers can coordinate via email to each other's inboxes — a pattern that falls out naturally because both have addresses, both have reply threading, and both have webhook-triggered memory updates.
- Reliable delivery for notifications Hermes sends. Because Dead Simple handles SPF, DKIM, DMARC, bounce processing, and IP reputation on the back end, Hermes's outbound mail actually arrives in the inbox — not spam. For a deeper dive on the plumbing, see Email Infrastructure for AI Agents, Explained.
An End-to-End Example: Support Triage
Here's what a minimally useful, production-shaped Hermes + Dead Simple loop looks like. The prompt below is all you write; everything else happens inside Hermes.
# Skill: Support Triage You run the inbox "Hermes Support". Every 10 minutes, check for new messages. For each new message: 1. Classify as: bug, billing, feature-request, other. 2. If billing, forward to finance@company.com and reply acknowledging the handoff. 3. If bug, check the FAQ skill. If there's a known answer, reply with it. Otherwise label as needs-engineer. 4. If feature-request, reply thanking them and log it to the roadmap skill. 5. If other, escalate by emailing me a summary. Remember which messages you've already processed. Do not reply to the same message twice.
You give Hermes that skill once. It learns it, stores it in its skill library, and from then on runs support triage on its own — reading new messages via read_messages, pulling full content via read_message, routing via forward_message, and replying via reply_to_message. The same pattern works with OpenClaw and any other MCP-native agent, but Hermes's persistent memory means the "which messages have I processed" bookkeeping survives restarts for free.
Hermes + Dead Simple vs. The Alternatives
For agent developers picking an email backend, here's the honest comparison:
| Option | Send | Receive | Threading | Starting price | Risk |
|---|---|---|---|---|---|
| Dead Simple + MCP | Yes | Yes | Yes | $0 (5 inboxes free) | Low |
| Gmail via community MCP | Yes | Yes | Yes | Free (your Gmail) | Account suspension |
| Raw IMAP/SMTP skill | Yes | Yes | You build it | Hosting cost | Deliverability |
| Resend MCP | Yes | Inbound only | No | $0 / $20 | No threads |
| AgentMail MCP | Yes | Yes | Yes | $0 (3 inboxes free) | Pricing cliff |
For the full cost and feature breakdown beyond MCP, see the 2026 email API cost comparison.
Troubleshooting the Hermes Integration
If the tools don't appear after /reload-mcp, work through these in order:
- Check the MCP server is runnable on its own:
DSE_API_KEY=dse_... python -m deadsimple.mcpshould start and wait on stdio. If it errors, your API key is the issue. - Confirm
config.yamlsyntax: YAML is whitespace-sensitive. Thedeadsimple:key must be nested undermcp_servers:, andargsmust be a list. - Check which Python Hermes launches: if Hermes runs inside a virtualenv different from the one where you ran
pip install, pointcommandat the full path to that Python binary. - Watch the Hermes log for MCP handshake errors: stdio transports emit JSON-RPC; parse errors usually mean a stray
print()statement in a custom wrapper, or mixed Python versions. - Run
hermes tools: if you seedeadsimple.send_emaillisted, the integration is working — the issue is in the prompt, not the plumbing.
Frequently Asked Questions
Does Dead Simple's MCP server work with Hermes 4 the model, or just Hermes Agent?
The MCP server is model-agnostic — it's a tool surface that speaks JSON-RPC to any MCP client. Hermes 4 (the LLM) is what Hermes Agent calls by default, so if you're running Hermes Agent on Hermes 4, both sides of the stack are Nous-native and the email tools work. If you swap Hermes Agent's model to Claude, GPT-4, or a local Llama, email still works — the MCP layer doesn't care.
Can I share an inbox between Hermes Agent and my own code?
Yes. A Dead Simple inbox is just a resource with an ID. Hermes can operate on it via MCP, and your server-side code can operate on it via the REST API or the Python SDK in parallel. Use webhooks to keep state in sync if you're writing from both sides.
Will Hermes Agent's persistent memory remember old email threads?
Hermes remembers summaries and skill state across restarts, but it doesn't cache full email bodies locally — those stay in Dead Simple. When Hermes needs the content of an old thread, it calls read_thread on demand and pulls it back in. This keeps the memory footprint sane even for long-running inboxes with thousands of messages.
Is there a way to run Dead Simple's MCP server remotely instead of as a local subprocess?
A hosted Streamable HTTP endpoint is on the roadmap. Today the server runs locally via stdio. Hermes's mcp_servers block already supports remote HTTP entries, so when the hosted endpoint ships the config change is just swapping command/args for url/headers.
Can I use Hermes Agent with Dead Simple's custom domains?
Yes. Custom domains are configured at the account level on the dashboard. Once verified, any inbox Hermes creates via create_inbox can be addressed on the custom domain (for example, hermes@yourco.com). Hermes doesn't need to know — the send_email and reply_to_message tools use whichever address the inbox is configured for.
The Bottom Line
Hermes Agent is one of the most interesting things to ship in AI tooling this year: an agent that isn't tied to a client, doesn't forget between sessions, and actually writes new skills on its own. Giving it an inbox is the difference between a helpful shell and a coworker who can be reached. Dead Simple's MCP server is the shortest path there — one pip install, one config block, eleven tools, three minutes. Hermes is a first-class client on Dead Simple, right alongside Claude Desktop, Cursor, Windsurf, OpenClaw, and the broader MCP ecosystem.
Ready to try it? Sign up for free — five inboxes on the free plan is more than enough to wire up the MCP server, send a test email from Hermes, and see a real reply come back through the webhook pipeline. The Hermes integration page has the quick-start config; the MCP integration page has the full tool reference.