skills/agentmail/SKILL.md
API-first email platform designed for AI agents. Create and manage dedicated email inboxes, send and receive emails programmatically, and handle email-based workflows with webhooks and real-time events. Use when you need to set up agent email identity, send emails from agents, handle incoming email workflows, or replace traditional email providers like Gmail with agent-friendly infrastructure.
npx skillsauth add leoyeai/openclaw-master-skills agentmailInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
AgentMail is an API-first email platform designed specifically for AI agents. Unlike traditional email providers (Gmail, Outlook), AgentMail provides programmatic inboxes, usage-based pricing, high-volume sending, and real-time webhooks.
pip install agentmail python-dotenvAGENTMAIL_API_KEY=your_key_herefrom agentmail import AgentMail
client = AgentMail(api_key=os.getenv("AGENTMAIL_API_KEY"))
# Create inbox with custom username
inbox = client.inboxes.create(
username="spike-assistant", # Creates [email protected]
client_id="unique-identifier" # Ensures idempotency
)
print(f"Created: {inbox.inbox_id}")
client.inboxes.messages.send(
inbox_id="[email protected]",
to="[email protected]",
subject="Task completed",
text="The PDF rotation is finished. See attachment.",
html="<p>The PDF rotation is finished. <strong>See attachment.</strong></p>",
attachments=[{
"filename": "rotated.pdf",
"content": base64.b64encode(file_data).decode()
}]
)
inboxes = client.inboxes.list(limit=10)
for inbox in inboxes.inboxes:
print(f"{inbox.inbox_id} - {inbox.display_name}")
Set up webhooks to respond to incoming emails immediately:
# Register webhook endpoint
webhook = client.webhooks.create(
url="https://your-domain.com/webhook",
client_id="email-processor"
)
See WEBHOOKS.md for complete webhook setup guide including ngrok for local development.
For branded email addresses (e.g., [email protected]), upgrade to a paid plan and configure custom domains in the console.
⚠️ Risk: Incoming email webhooks expose a prompt injection vector. Anyone can email your agent inbox with instructions like:
Solution: Use a Clawdbot webhook transform to allowlist trusted senders.
~/.clawdbot/hooks/email-allowlist.ts:const ALLOWLIST = [
'[email protected]', // Your personal email
'[email protected]', // Any trusted services
];
export default function(payload: any) {
const from = payload.message?.from?.[0]?.email;
// Block if no sender or not in allowlist
if (!from || !ALLOWLIST.includes(from.toLowerCase())) {
console.log(`[email-filter] ❌ Blocked email from: ${from || 'unknown'}`);
return null; // Drop the webhook
}
console.log(`[email-filter] ✅ Allowed email from: ${from}`);
// Pass through to configured action
return {
action: 'wake',
text: `📬 Email from ${from}:\n\n${payload.message.subject}\n\n${payload.message.text}`,
deliver: true,
channel: 'slack', // or 'telegram', 'discord', etc.
to: 'channel:YOUR_CHANNEL_ID'
};
}
~/.clawdbot/clawdbot.json):{
"hooks": {
"transformsDir": "~/.clawdbot/hooks",
"mappings": [
{
"id": "agentmail",
"match": { "path": "/agentmail" },
"transform": { "module": "email-allowlist.ts" }
}
]
}
}
clawdbot gateway restartIf you want to review untrusted emails before acting:
{
"hooks": {
"mappings": [{
"id": "agentmail",
"sessionKey": "hook:email-review",
"deliver": false // Don't auto-deliver to main chat
}]
}
}
Then manually review via /sessions or a dedicated command.
scripts/send_email.py - Send emails with rich content and attachmentsscripts/check_inbox.py - Poll inbox for new messagesscripts/setup_webhook.py - Configure webhook endpoints for real-time processingtesting
AI-powered diary generation for agents - creates rich, reflective journal entries (400-600 words) with Quote Hall of Fame, Curiosity Backlog, Decision Archaeology, Relationship Evolution, mood analytics, weekly digests, "On This Day" resurfacing, and cron auto-generation. Works best with Claude models (Haiku, Sonnet, Opus).
development
Multi-agent UX for OpenClaw Control UI — agent selector, per-agent sessions, session history viewer with search, agent-filtered Sessions tab with friendly names, Create Agent wizard, emoji picker, and backend agent CRUD.
tools
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.
tools
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.