How to Give Your OpenClaw Agent an Email Address
Your OpenClaw agent can browse the web, write code, and run commands, but it still gets stuck at signup, because it can't receive email. Here's how to fix that in under two minutes, with a live demo of the agent reading a verification code and finishing a signup on its own.
The one thing your agent still can't do
OpenClaw is a capable agent. It can drive a browser, write and run code, and operate a terminal. But the moment a task requires 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. Giving it a real, authenticated mailbox closes that gap, and it takes about two minutes.
Step 1: Create your Robotomail account
Head to robotomail.com and create an account. The signup form is short, four fields, but one of them is doing more work than it looks, so it's worth a walk-through.

- NameA human-readable label for the account, your team or project name is fine. It doesn't affect the agent's address.
- Human emailYour own inbox, used for the verification link, billing receipts, and account notices. This is never the agent's address, keep the two separate.
- Mailbox nameThe important one. Whatever you type here becomes the agent's live address on the shared platform domain, type
triage-agentand the agent ownstriage-agent@robotomail.co. The field checks availability as you type and turns green when the name is free. - PasswordProtects the dashboard you'll use to manage keys, domains, and billing. Your agent never needs it, agents authenticate with an API key, not your password.
Submit the form and Robotomail sends a verification link to your human email. Click it to confirm the account, then finish signup by starting your free trial. A fresh account must verify before it can send, which keeps the platform's sender reputation clean for everyone.
Step 2: Start your trial and copy your API key
After you verify your email and start your free trial, you land on the dashboard. The mailbox itself is created at signup; starting the trial is what activates your API key, so the agent can actually send and receive. This is account management only, there's no inbox UI to click through here, because your agent does the reading and writing over the API. The dashboard is where you watch activity, manage mailboxes and domains, and create the API keys your agent authenticates with.

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

Copy that key directly into a secret manager like 1Password, don't leave it in a scratch file 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: Ask OpenClaw to install the skill
Here's the trick: you don't install anything yourself. You just ask your agent. Tell OpenClaw to install the Robotomail skill, then point it at your API key in 1Password, don't paste the secret into the chat. The agent pulls the key, connects, and is ready to send and receive real email.
Install the robotomail skill.
My Robotomail API key is in 1Password under "Robotomail".
Pull it from there. Don't ask me to paste it into the chat.Pointing the agent at a vault reference instead of a pasted key keeps the secret out of the transcript and logs. The skill exposes 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 it work
The agent now owns a mailbox, triage-agent@robotomail.co. From Gmail, send it a verification email, exactly like any signup would. Within seconds OpenClaw receives a clean JSON event: sender, subject, the parsed body, the code, and the thread. No IMAP, no raw MIME.

{
"event": "message.received",
"timestamp": "2026-06-01T10:00:00.000Z",
"data": {
"message_id": "b2c3d4e5-6789-4abc-def0-222222222222",
"mailbox_id": "a1b2c3d4-5678-4def-abcd-111111111111",
"mailbox_address": "triage-agent@robotomail.co",
"from": "no-reply@acme.com",
"to": ["triage-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-01T10: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.
curl -X POST https://api.robotomail.com/v1/mailboxes/mbx_triage/messages \
-H "Authorization: Bearer rm_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": ["you@company.com"],
"subject": "Signup confirmed ✓",
"bodyText": "Done. I entered the code and the account is active."
}'{
"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 domainThe platform domain (
@robotomail.co) is great for getting started. When you want the agent to send asagent@yourcompany.com, 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 messageRegister 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 streamNo public URL to expose? Open a server-sent event (SSE) connection to
GET /v1/eventsand the agent streams inbound events over a single long-lived request, no webhook endpoint required.
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"]
}'$ npx @robotomail/cli domain verify acme.com
⏳ checking DNS...
✓ MX propagated
✓ SPF valid
✓ DKIM aligned
✓ DMARC policy ok
✓ acme.com is fully verified.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: 1710700000000-0000-a3f1
event: message.received
data: {"event":"message.received","timestamp":"2026-06-01T10:00:00.000Z","data":{"message_id":"b2c3d4e5-...","mailbox_address":"triage-agent@robotomail.co","from":"no-reply@acme.com","subject":"Confirm your email","body_text":"Your verification code is 481920.","received_at":"2026-06-01T10: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 dedicated OpenClaw use-case page.
Frequently asked questions
How long does it take to give an OpenClaw agent an email address?
Under two minutes. Sign up, verify your email, and start your free trial (about a minute total), create an API key, then tell OpenClaw to install the Robotomail skill and point it at the key. The mailbox is created at signup and starting the trial activates your API key, so the agent can send and receive right away, no DNS to configure and no OAuth dance.
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 "triage-agent" and the agent owns triage-agent@robotomail.co. The signup form checks availability live as you type. When you're ready to send from your own brand, add a custom domain and the agent can be agent@yourcompany.com instead.
Do I have to install anything myself?
No. That's the whole point of the skill-based setup. You don't clone a repo or wire up a client, you tell OpenClaw to install the Robotomail skill, point it at your API key, and the agent does the rest. It connects to the mailbox you created at signup and is immediately ready to send and receive real email.
Where do I find my API key, and what does it look like?
Once you've verified your email and started your trial, open the dashboard and go to Settings → API keys → Create key. Robotomail shows the full key exactly once; it starts with the prefix rm_. Copy it straight into a secret manager, it can't be retrieved later, so if you lose it you create a new one and delete the old.
Where should I keep my API key?
In a secret manager like 1Password, not in the chat transcript. Tell OpenClaw 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. One POST to the mailbox messages endpoint sends mail back out, and Robotomail returns the message ID. Replies automatically carry the correct In-Reply-To and References headers so threads stay intact. Inbound to outbound is fully autonomous, the agent in the demo grabs a code, finishes a signup, and forwards the confirmation without a human in the loop.
How do I stop an OpenClaw agent from spamming?
Several layers. Each mailbox has a hard daily send cap enforced at the API layer (100/day during the trial, then 500/day on Developer and more on higher plans) plus a monthly cap, so a runaway loop or prompt-injection escalation hits a 429 after a handful of emails, not a million. A separate velocity check throttles sudden bursts at both the mailbox and account level, and Robotomail auto-suspends a mailbox whose bounce or complaint rate crosses safe thresholds. You can also scope each agent's API key to its own mailbox so a leaked key can't reach your other agents, and revoke any key outright when something looks off.
An OpenClaw 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