digidai/mails-skills/openclaw

Claude Code and agent skill by digidai/mails-skills

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Complete service registrations autonomously by receiving verification codes. Also: send and receive emails, monitor inbox, search by keyword, download attachments, view threads, filter by label, extract structured data, manage mailbox and webhooks.

Install

npx vskill@latest install digidai/mails-skills/openclaw

SKILL.md

Email Skill — Agent Auth-Completion

You have the email address $MAILS_MAILBOX. Your primary superpower: complete service registrations autonomously by receiving verification codes via GET /api/code?timeout=60.

Make HTTP requests to $MAILS_API_URL with header Authorization: Bearer $MAILS_AUTH_TOKEN.

Sign up for a service: Fill form with $MAILS_MAILBOX → GET /api/code?timeout=60 → enter the code. Done.

API Endpoints

MethodEndpointDescription
GET/api/inboxList/search emails. Params: query, limit, offset, direction, label, mode (keyword/semantic/hybrid)
GET/api/email?id=IDFull email with body, attachments, labels
GET/api/code?timeout=60Wait for verification code (long-poll). Params: timeout, since
POST/api/sendSend email. Body: { from, to[], cc[], bcc[], subject, text, html, reply_to, in_reply_to, headers, attachments }
DELETE/api/email?id=IDDelete email and attachments
GET/api/attachment?id=IDDownload attachment
GET/api/threadsList conversation threads. Params: limit, offset
GET/api/thread?id=IDGet all emails in a thread
POST/api/extractExtract structured data. Body: { email_id, type } type: order/shipping/calendar/receipt/code
GET/api/statsMailbox statistics (total, inbound, outbound, this month)
GET/api/eventsSSE real-time event stream. Params: types, since
GET/api/mailboxMailbox info (status, webhook_url)
PATCH/api/mailboxUpdate mailbox settings. Body: { webhook_url }
PATCH/api/mailbox/pausePause mailbox (blocks all operations)
PATCH/api/mailbox/resumeResume paused mailbox
GET/api/mailbox/routesList per-label webhook routes
PUT/api/mailbox/routesUpsert webhook route. Body: { label, webhook_url }
DELETE/api/mailbox/routes?label=XDelete webhook route for label
GET/api/meMailbox info and capabilities
GET/healthHealth check (no auth)

Request Format

All requests (except /health) require Authorization: Bearer $MAILS_AUTH_TOKEN header.

POST/PUT/PATCH requests require Content-Type: application/json header.

The to param is optional — the API auto-scopes to the token's mailbox.

Response Shapes

Inbox: { "emails": [{ "id", "from_address", "from_name", "subject", "code", "direction", "status", "received_at", "has_attachments", "attachment_count" }], "search_mode": "keyword" }

Email detail: Full email object with body_text, body_html, headers, metadata, labels, thread_id, in_reply_to, references, attachments[]

Code: { "id": "...", "code": "483920", "from": "...", "subject": "...", "received_at": "..." } or { "code": null }

Send: { "id": "...", "provider_id": "...", "thread_id": "..." }

Threads: { "threads": [{ "thread_id", "latest_email_id", "subject", "from_address", "from_name", "received_at", "message_count", "has_attachments" }] }

Stats: { "mailbox", "total_emails", "inbound", "outbound", "emails_this_month", "ingest": { "pending", "parsed", "failed" } }

Extract: { "email_id": "...", "extraction": { "type": "order", "order_id": "...", ... } }

Events (SSE): event: message.received\ndata: { "email_id", "mailbox", "from", "subject", ... }

Send Fields

FieldRequiredDescription
fromYesMust be $MAILS_MAILBOX (enforced server-side)
toYesArray of recipients (max 50)
subjectYesMax 998 characters
texttext or htmlPlain text body
htmltext or htmlHTML body
ccNoArray of CC recipients
bccNoArray of BCC recipients
reply_toNoReply-to address
in_reply_toNoMessage-ID of parent email (enables threading)
headersNoCustom headers object
attachmentsNo[{ filename, content (base64), content_type?, content_id? }]

Labels

Emails are auto-labeled on receive: newsletter, notification, code, personal. Filter with ?label=notification.

Common Flows

Sign up for a service: Fill form with $MAILS_MAILBOX → GET /api/code?timeout=60 → enter the code

Process inbox: GET /api/inbox → GET /api/email?id=ID → DELETE /api/email?id=ID

Reply to an email: GET /api/email?id=ID → POST /api/send with in_reply_to set to the email's message_id

View threads: GET /api/threads → GET /api/thread?id=THREAD_ID

Monitor in real-time: GET /api/events (SSE stream, reconnects automatically)

Extract data: POST /api/extract with {"email_id":"ID","type":"order"}

Set up webhook routing: PUT /api/mailbox/routes with {"label":"code","webhook_url":"https://..."}

Constraints

  • from must match $MAILS_MAILBOX
  • Verification codes: 4-12 alphanumeric (EN/ZH/JA/KO)
  • Code wait timeout max 55 seconds
  • Send rate limit: 100 emails/day per mailbox
  • Search uses FTS5 full-text search (keyword mode) or Vectorize (semantic mode)

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/digidai/mails-skills/openclaw/badge)](https://verified-skill.com/skills/digidai/mails-skills/openclaw)

Something wrong with this skill or its page? Tell us.