[ guide ]

How to Give Your Hermes Agent an Email Address

Hermes is the agent that grows with you. It runs on your own server and learns new skills as it goes, but it still stalls at signup because it can't receive email. Here's how to give the messenger an inbox in under two minutes, with a live demo of the agent reading a verification code and finishing a signup on its own. For setup options and capabilities, see the Hermes email integration.

Create a mailboxSee the agent skill30-day money-back guarantee · cancel anytime

The one skill the messenger is missing

Hermes is built to grow. It picks up new skills as it works, runs on hardware you control, and keeps going where a one-shot assistant would stop. But the moment a task touches email (confirming a signup, reading a one-time code, replying to a vendor), it stalls. There's no inbox it owns and no clean way to read what arrives. Fitting the messenger with a real, authenticated mailbox closes that gap, and it takes about two minutes.

The recording and screenshots show an earlier signup flow. Follow the current steps below. Exchange mail only between your agent and your verified email address. Upgrade to email anyone. Test with your verified account email first.

Step 1: Create your Robotomail account

Open Robotomail signup. Choose a mailbox name on the signup page. Send that mailbox an email from the address you want to use for your Robotomail account. Enter the verification code from Robotomail's reply, or use the verification link when it becomes available. Then confirm your name and create a password.

The signup form in the original recording, before mailbox-first signup
Original recording: the current flow starts with a mailbox name, followed by email verification and account creation.
  • Choose a mailbox
    Pick an available name such as hermes-agent. Its platform address is hermes-agent@robotomail.co.
  • Send it an email
    Use the human email address you want attached to your account. Robotomail replies there with a verification code.
  • Verify the address
    Enter the code, or use the verification link when it becomes available. This proves you control the sender address.
  • Create your account
    Confirm your name and set a password. Your agent uses an API key or OAuth connection, not this password.

Your first email stays in the mailbox when you create your account. Free includes 1 mailbox, 10 sends and 10 receives per month. Exchange mail only between your agent and your verified email address. Upgrade to email anyone. No credit card, no expiry. Allowances reset on the first of each month (UTC). Upgrade for higher limits or a custom domain. Paid plans are billed when you upgrade, with a 30-day money-back guarantee.

Step 2: Create and save your API key

Choose the API path during setup to create a key, or finish onboarding and open API keys in the dashboard. Email verification enables access under your plan's limits; payment is optional for Free. If you explicitly selected a paid plan before signup, checkout comes before agent/API setup.

The Robotomail account dashboard in the original recording
Manage account activity and API keys in the dashboard. Your agent reads and sends email through the API.

Now grab your API key. Go to API keys, click Create key, give it a name your future self will recognize (for example hermes-agent), and Robotomail shows the full key exactly once. It starts with rm_.

Robotomail Settings page revealing a newly created rm_ API key with a one-time copy warning
The API key is shown once. Copy it straight into 1Password, it can't be retrieved later.

Copy that key directly into a secret manager like 1Password, don't leave it in a scratch file, don't hard-code it into the skill, and don't paste it into a chat window. If you lose it, you can't recover it; you just create a new one and delete the old. The key is the agent's entire credential, so treat it like a password.

Step 3: Drop the skill into Hermes

Hermes has no skill store for this, and it doesn't need one. A Robotomail skill is just a markdown file. Tell Hermes to add it from robotomail.com/skill and it drops the file straight into its skills folder, no install step, no client library, no build. Then point it at your API key in 1Password rather than pasting the secret into the chat.

Tell Hermes
Add the robotomail skill from https://robotomail.com/skill
into your skills folder.

My Robotomail API key is in 1Password under "Robotomail".
Pull it from there when you need it. Don't ask me to paste it
into the chat.

Because the skill lives as plain markdown in the agent's own folder, everything stays on the server you control, and a vault reference keeps the secret out of the transcript and logs. The skill describes a small set of tools (send, list, read, and reply) so the agent has everything it needs and nothing it doesn't. See the full agent skill.

Live demo: watch the messenger work

For a Free test, send a verification-style message yourself from your verified account email. Exchange mail only between your agent and your verified email address. Upgrade to email anyone. Configure a webhook or SSE stream to receive events, or let your agent poll the API. The code is text in body_text; your agent extracts it.

How Robotomail connects a Hermes agent to the email network
Inbound event the agent receives
{
  "event": "message.received",
  "timestamp": "2026-06-06T10:00:00.000Z",
  "data": {
    "message_id": "b2c3d4e5-6789-4abc-def0-222222222222",
    "mailbox_id": "a1b2c3d4-5678-4def-abcd-111111111111",
    "mailbox_address": "hermes-agent@robotomail.co",
    "from": "no-reply@acme.com",
    "to": ["hermes-agent@robotomail.co"],
    "subject": "Confirm your email",
    "body_text": "Your verification code is 481920. It expires in 10 minutes.",
    "thread_id": "c3d4e5f6-789a-4bcd-ef01-333333333333",
    "received_at": "2026-06-06T10:00:00.000Z"
  }
}

The agent grabs the code straight out of the body, finishes the signup, then forwards the confirmation to you, one POST to the messages endpoint. Robotomail returns the message ID. Inbound to outbound, fully autonomous.

Agent forwards the confirmation
curl -X POST https://api.robotomail.com/v1/mailboxes/mbx_hermes/messages \
  -H "Authorization: Bearer rm_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "to": ["you@company.com"],
    "subject": "Signup confirmed ✓",
    "bodyText": "Done. I read the code, finished the signup, and the account is active."
  }'
Response: message ID
{
  "message": {
    "id": "b2c3d4e5-6789-4abc-def0-222222222222",
    "direction": "OUTBOUND",
    "toAddresses": ["you@company.com"],
    "status": "SENT",
    "threadId": "c3d4e5f6-789a-4bcd-ef01-333333333333"
  }
}

Going further

Need more? It's all there. Three of the most common next steps:

  • Bring your own custom domain
    The platform domain (@robotomail.co) is great for getting started. When you want the agent to send as hermes@yourcompany.com, upgrade to a paid plan and add a custom domain. Robotomail generates the DNS records you need (MX, a send MX, SPF, DMARC, and one or more DKIM records) and verifies them as soon as propagation completes.
  • Fire a webhook on every inbound message
    Register a webhook URL and Robotomail POSTs every inbound message to it within seconds of receipt, signed with HMAC-SHA256 so you can verify it before trusting the payload.
  • Subscribe to a live event stream
    No public URL to expose on your server? Open a server-sent event (SSE) connection to GET /v1/events and the agent streams inbound events over a single long-lived request, no webhook endpoint required.
Register an inbound webhook
curl -X POST https://api.robotomail.com/v1/webhooks \
  -H "Authorization: Bearer rm_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-server.com/webhook",
    "events": ["message.received"]
  }'
Verify a custom domain
$ npx @robotomail/cli domain verify acme.com
⏳ checking DNS...
✓ MX       propagated
✓ SPF      valid
✓ DKIM     aligned
✓ DMARC    policy ok
✓ acme.com is fully verified.
Subscribe to the SSE stream
GET /v1/events?events=message.received
Authorization: Bearer rm_your_api_key
Accept: text/event-stream

# Each inbound message arrives as a standard SSE frame:
id: 1717668000000-0000-a3f1
event: message.received
data: {"event":"message.received","timestamp":"2026-06-06T10:00:00.000Z","data":{"message_id":"b2c3d4e5-...","mailbox_address":"hermes-agent@robotomail.co","from":"no-reply@acme.com","subject":"Confirm your email","body_text":"Your verification code is 481920.","received_at":"2026-06-06T10:00:00.000Z"}}

The stream replays missed events on reconnect via Last-Event-ID, see the Events (SSE) API docs for the full frame format and reconnect semantics.

For the full picture (the four agent tools, error handling, and a copy-paste signup-to-send walkthrough) see the longer guide for any AI agent and the companion OpenClaw walkthrough.

Frequently asked questions

How long does it take to give a Hermes agent an email address?

Choose a mailbox, send it an email from your account address, enter the verification code and create your account. Then create an API key and give Hermes the Robotomail skill and a secure reference to the key. Exchange mail only between your agent and your verified email address. Upgrade to email anyone.

Hermes runs on my own server. Does that change anything?

No. Robotomail is the mail layer, Hermes is the brain, and they meet over a plain HTTPS API. Because Hermes is self-hosted, the skill file and your API key live entirely on your machine, nothing about the setup assumes a hosted runtime. The agent just makes authenticated requests to api.robotomail.com whenever it needs to send, list, read, or reply.

What is the agent's email address, and can I choose it?

Yes. The mailbox name you pick during signup becomes the agent's address on the shared platform domain, type "hermes-agent" and the agent owns hermes-agent@robotomail.co. The signup form checks availability live as you type. On a paid plan, add a custom domain and the agent can be hermes@yourcompany.com instead.

Is there a skill store I have to install from?

No, and Hermes doesn't need one. A Robotomail skill is just a markdown file. You tell Hermes to add it from robotomail.com/skill and it drops the file into its skills folder, there's no package to install, no client library to wire up, and no build step. The next time Hermes needs email, it reads the skill and knows how to use the API.

Where do I find my API key, and what does it look like?

After verifying your email and creating your account, create a key during API setup or open API keys → Create key in the dashboard. The full key is shown once and starts with rm_. Save it in a secret manager. If you lose it, create a replacement and revoke the old key.

Where should I keep my API key?

In a secret manager like 1Password, not in the chat transcript and not hard-coded in the skill file. Tell Hermes to pull the key from your vault when it needs it. Pasting an rm_ key directly into the conversation leaves it in logs and history; a vault reference keeps it out of plaintext while still letting the agent authenticate.

How fast does the agent see an incoming email?

Inbound mail hits Robotomail over SMTP, is processed via JMAP polling (5 second cadence), stored, and delivered to the agent as a structured event. In the demo in this video the verification email went from Gmail to the agent in seconds, no IMAP, no raw MIME parsing.

What does the agent actually receive?

A clean JSON envelope: sender, subject, the parsed plain-text body, the thread ID, and timestamps. The agent reads the verification code straight out of the body, there is no MIME tree to walk and no mailbox protocol to manage.

Can the agent reply or forward on its own?

Yes. Fetch the received message using the webhook's data.message_id, then send a reply with to, subject, bodyText and inReplyTo set to the fetched message.messageId (the email Message-ID). The webhook's database ID and thread_id are not reply headers. Forwarding is a new send to a chosen recipient. All sends follow your plan's limits.

How do I stop a Hermes agent from spamming?

Free allows 10 sends and 10 receives per month. Exchange mail only between your agent and your verified email address. Upgrade to email anyone. Its monthly send cap returns 402; it does not reset daily. Starter allows 500 sends/day and 15,000 sends/month per mailbox. Higher plans have their own limits. Velocity checks and bounce/complaint controls also apply. Scope API keys to the mailboxes each agent needs, monitor usage, and revoke a key if its behavior is unexpected.

A Hermes agent with its own email address

Real mailboxes, send and receive via API, webhook delivery on every plan. 30-day money-back guarantee.

Create a mailbox