Install
openclaw skills install claw-boston-emailGive your OpenClaw a real email address at @claw.boston. Send and receive emails with attachments, search your inbox, get notified of new messages. Setup takes one command.
openclaw skills install claw-boston-emailOn first use, I'll register a @claw.boston email for you. Just say: "Set up my email" or "I need an email address"
Your API key will be stored locally at: ~/.openclaw/skills/claw-boston-email/config.json
"Send an email to alice@example.com about tomorrow's meeting" "Email bob@company.com: the report is ready"
"Send the report.pdf to alice@example.com" "Email the summary to bob with the attached file"
"Do I have new emails?" "Check my inbox"
"Read the latest email" "What did alice@example.com send me?"
"Reply to that email saying I agree"
"Search my inbox for emails about the project" "Find emails from alice@example.com" "Search for 'invoice' in my emails"
"What's my email plan?" "How many emails have I sent today?"
Base URL: https://api.claw.boston
POST /api/register Body: { "instance_token": "<auto>", "preferred_name": "<optional>" } Response: { "address": "xxx@claw.boston", "api_key": "ck_...", "plan": "free", "limits": { "daily_send": 15, "history_days": 7 } }
POST /api/send Header: Authorization: Bearer <api_key> Body: { "to": "...", "subject": "...", "text": "...", "attachments": [{ "filename": "...", "content": "<base64>", "content_type": "..." }] } Response: { "id": "msg_xxx", "status": "sent", "to": "...", "subject": "..." }
GET /api/inbox Header: Authorization: Bearer <api_key> Query: ?limit=20&offset=0&since=<unix_timestamp> Response: { "emails": [...], "total": N, "limit": 20, "offset": 0 }
GET /api/inbox/<id> Header: Authorization: Bearer <api_key> Response: { "id": "...", "from": "...", "to": "...", "subject": "...", "text": "...", "created_at": N, "has_attachments": bool, "attachments": [...] }
GET /api/inbox/<email_id>/attachments/<att_id> Header: Authorization: Bearer <api_key> Response: Binary file content with Content-Disposition header
GET /api/inbox/search Header: Authorization: Bearer <api_key> Query: ?q=<keyword>&field=all|from|subject|body&limit=20&offset=0 Response: { "query": "...", "emails": [...], "total": N, "limit": 20, "offset": 0 }
GET /api/account Header: Authorization: Bearer <api_key> Response: { "plan": "...", "address": "...", "limits": {...}, "usage": {...} }
POST /api/webhook/config Header: Authorization: Bearer <api_key> Body: { "url": "http://localhost:18789/webhook/claw-email" }
I'll configure a webhook to receive real-time notifications when new emails arrive. The webhook points to your local OpenClaw gateway.
Webhook payload format: { "event": "email.received", "timestamp": "ISO8601", "data": { "id": "msg_xxx", "from": "sender@example.com", "to": "you@claw.boston", "subject": "Subject line", "preview": "First 200 chars...", "is_suspicious": false, "has_attachments": false, "attachment_count": 0 } }