{"id":"3a621fc5-98bc-4444-af13-ac99c3ad4600","entityType":"agent","slug":"clawhub-encryptshawn-email-mcp-helper","name":"Email MCP Helper","canonicalUrl":"https://www.xpersona.co/agent/clawhub-encryptshawn-email-mcp-helper","canonicalPath":"/agent/clawhub-encryptshawn-email-mcp-helper","generatedAt":"2026-10-09T21:16:24.379Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T16:42:08.847Z","emptyReason":null},"description":"Access and manage multiple IMAP/SMTP email accounts with full lifecycle tools for reading, searching, sending, replying, forwarding, folder and label managem... Skill: Email MCP Helper Owner: encryptshawn Summary: Access and manage multiple IMAP/SMTP email accounts with full lifecycle tools for reading, searching, sending, replying, forwarding, folder and label managem... Tags: latest:1.0.2 Version history: v1.0.2 | 2026-05-04T22:32:52.616Z | user - Updated the Overview section to clarify risk assessments by Clawhub, add more explicit advice on skill usage, and emphasize use","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.3K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17acjjwshpqj4xkbngejj57nx83zbcy:email-mcp-helper","sourceUrl":"https://clawhub.ai/encryptshawn/email-mcp-helper","homepage":"https://clawhub.ai/encryptshawn/skills/email-mcp-helper","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/encryptshawn/email-mcp-helper","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/encryptshawn/skills/email-mcp-helper","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":67,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Access and manage multiple IMAP/SMTP email accounts with full lifecycle tools for reading, searching, sending, replying, forwarding, folder and label managem..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T16:42:08.847Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T16:42:08.847Z","emptyReason":null},"stars":null,"forks":null,"downloads":2285,"packageName":null,"latestVersion":"1.0.2","tractionLabel":"2.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T16:42:08.846Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T16:42:08.847Z","lastCrawledAt":"2026-10-09T16:42:08.846Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T16:42:08.846Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.2","createdAt":"2026-05-04T22:32:52.616Z","changelog":"- Updated the Overview section to clarify risk assessments by Clawhub, add more explicit advice on skill usage, and emphasize user responsibility for security checks. - Reworded and expanded warnings about Clawhub risk ratings; urges users to do their own research instead of relying solely on platform labels. - No changes to tooling, features, or infrastructure documentation. - No functional or interface changes in this release.","fileCount":3,"zipByteSize":6367},{"version":"1.0.1","createdAt":"2026-05-04T22:29:42.577Z","changelog":"- Added commentary on Clawhub's security warnings and the rationale behind skill separation. - Updated the MCP server URL in the connection info section. - Minor edits for clarity in skill usage, but core content and tool references remain unchanged.","fileCount":2,"zipByteSize":4993},{"version":"1.0.0","createdAt":"2026-05-04T22:20:49.131Z","changelog":"Email MCP Helper v1.0.0 – Initial Release - Enable your agent to manage all of your email accounts from one mcp server. - You must setup the MCP server, this only helps you interface with the MCP server. Git link and details are provided so your agent can help you set it up but this skill is how to use it, not how to set it up. - Provides access to a self-hosted email MCP server supporting 47 tools for comprehensive email management (read, send, reply, forward, organize, bulk, analytics, health checks, and more). - Supports multiple IMAP/SMTP accounts, mailbox/folder management, threading, attachments, and label handling. - Strict tool reference only — does not handle how agents triage/respond to emails; meant as a prerequisite for a separate email management skill. - Requires separate infrastructure deployment of the MCP server and proxy (not bundled). - All account and folder paths must be dynamically discovered through provided tools, never hardcoded.","fileCount":2,"zipByteSize":4492}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17acjjwshpqj4xkbngejj57nx83zbcy:email-mcp-helper","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-encryptshawn-email-mcp-helper/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-encryptshawn-email-mcp-helper/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-encryptshawn-email-mcp-helper/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-encryptshawn-email-mcp-helper/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-encryptshawn-email-mcp-helper/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-encryptshawn-email-mcp-helper/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T21:16:24.378Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-encryptshawn-email-mcp-helper/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-encryptshawn-email-mcp-helper/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-encryptshawn-email-mcp-helper/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-encryptshawn-email-mcp-helper/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T16:42:08.847Z","emptyReason":null},"readme":"Skill: Email MCP Helper\n\nOwner: encryptshawn\n\nSummary: Access and manage multiple IMAP/SMTP email accounts with full lifecycle tools for reading, searching, sending, replying, forwarding, folder and label managem...\n\nTags: latest:1.0.2\n\nVersion history:\n\nv1.0.2 | 2026-05-04T22:32:52.616Z | user\n\n- Updated the Overview section to clarify risk assessments by Clawhub, add more explicit advice on skill usage, and emphasize user responsibility for security checks.\n- Reworded and expanded warnings about Clawhub risk ratings; urges users to do their own research instead of relying solely on platform labels.\n- No changes to tooling, features, or infrastructure documentation.\n- No functional or interface changes in this release.\n\nv1.0.1 | 2026-05-04T22:29:42.577Z | user\n\n- Added commentary on Clawhub's security warnings and the rationale behind skill separation.\n- Updated the MCP server URL in the connection info section.\n- Minor edits for clarity in skill usage, but core content and tool references remain unchanged.\n\nv1.0.0 | 2026-05-04T22:20:49.131Z | user\n\nEmail MCP Helper v1.0.0 – Initial Release\n- Enable your agent to manage all of your email accounts from one mcp server.\n- You must setup the MCP server, this only helps you interface with the MCP server.  Git link and details are provided so your agent can help you set it up but this skill is how to use it, not how to set it up.\n- Provides access to a self-hosted email MCP server supporting 47 tools for comprehensive email management (read, send, reply, forward, organize, bulk, analytics, health checks, and more).\n- Supports multiple IMAP/SMTP accounts, mailbox/folder management, threading, attachments, and label handling.\n- Strict tool reference only — does not handle how agents triage/respond to emails; meant as a prerequisite for a separate email management skill.\n- Requires separate infrastructure deployment of the MCP server and proxy (not bundled).\n- All account and folder paths must be dynamically discovered through provided tools, never hardcoded.\n\nArchive index:\n\nArchive v1.0.2: 3 files, 6367 bytes\n\nFiles: skill-card.md (2484b), skills.md (14614b), _meta.json (135b)\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn77nfg6wv2expv6qs7k17dfqs83zp59\",\n  \"slug\": \"email-mcp-helper\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1777933972616\n}\n\nFile v1.0.2:skill-card.md\n\n## Description:\n\nEmail MCP Helper gives agents a reference for using a self-hosted email MCP server to read, search, send, organize, and manage email across configured IMAP/SMTP accounts.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[encryptshawn](https://clawhub.ai/user/encryptshawn)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and advanced users use this skill as a tool reference for connecting agents to an already deployed email MCP endpoint and safely selecting account, mailbox, message, and mutation parameters.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Mailbox credentials and message contents can be exposed if the configured MCP endpoint is not controlled or independently verified.\n\nMitigation: Use only an MCP endpoint you control or have independently verified, and rotate and scope API keys.\n\nRisk: The available tools can perform mutating email actions, including sending, forwarding, bulk moving, deleting, and permanent deletion.\n\nMitigation: Require explicit user confirmation before any mutating email action, especially bulk operations and permanent deletion.\n\nRisk: The email MCP image or proxy deployment can change behavior if mutable or unaudited versions are used.\n\nMitigation: Pin the email MCP image and proxy to audited immutable versions before use.\n\nRisk: Incorrect account names, mailbox paths, or email IDs can cause actions to target the wrong mailbox or message.\n\nMitigation: Call list_accounts and list_mailboxes before mailbox operations, and use email IDs returned by list_emails or search_emails.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/encryptshawn/skills/email-mcp-helper)\n- [email-mcp source code](https://github.com/codefuturist/email-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown tool reference with example call sequences]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [References an externally deployed email MCP server and does not bundle credentials or infrastructure.]\n\n## Skill Version(s):\n\n1.0.2 (source: server release evidence, created 2026-05-04)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.2:skills.md\n\n# Skill: Email MCP (email-mcp-helper)\n\n## Overview\nThis skill provides access to a self-hosted email MCP server built on `@codefuturist/email-mcp`. It exposes 47 tools covering full email lifecycle management — reading, searching, sending, replying, forwarding, scheduling, folder management, labels, bulk operations, threading, attachments, analytics, and health checks — across multiple IMAP/SMTP accounts simultaneously.\n\nThis skill is a **tool reference only**. It does not define how the agent should handle, triage, or respond to emails — that is defined in a separate email management skill that depends on this one as a prerequisite.\n\nClawhub will mark this as a risk because its tools for email that doesnt tell the agent how to use them and because it provides a link to the actual email mcp server this skill was made to help your agent understand how to use.  It makes no sense to lock the actual email handling skill down to a single mcp email tool - the skills dont belong together so Clawhub wil always mark this package dangerous.  All Clawhub really does is get users used to acccepting security risks without looking because they label everything a security risk, many times without even citing why. Use at your own risk, or dont use it, I dont care, its for me and I share - and I am tired of fighting clawhub who clearly doesnt care about the actual security risk they create by desensitizing people to security ratings that make no sense, lack evidence, misfire fire over ridiculous things, say there isa virus finding while total virus says there is none, and in general overall, cause most users to ignore them.  You should be having your agent always check any skill before installing & using it to make sure it isnt siphoning data, running actual real commands that could compromise your system and or otherwise maintain skills aligned with the overarching skill set. Dont rely on Clawhub, DYOR always!\n---\n\n## Infrastructure Notes\n\nThis MCP server runs as a standalone docker or Kubernetes deployment **separate from the OpenClaw container**. It is NOT bundled with or managed by OpenClaw. You must setup this MCP server yourself, have your agent help you.\n\n**Source code:** https://github.com/codefuturist/email-mcp\n\n**Key infrastructure requirements (outside this skill's scope):**\n- The `email-mcp` image (`ghcr.io/codefuturist/email-mcp:latest`) is stdio-only — it has no built-in HTTP server\n- A **MCP proxy** (e.g. `sparfenyuk/mcp-proxy`) must be installed alongside it to expose the server over HTTP/SSE — without the proxy the server cannot be reached over a network\n- Accounts are configured via a `config.toml` file mounted into the container — credentials are managed outside this skill\n- The proxy and server are deployed together in a single custom Docker image\n\n**This skill assumes the server is already running and reachable. If the server is unreachable, this skill cannot function.**\n\n---\n\n## Connection\n\n| Property | Value |\n|----------|-------|\n| URL | `https://mcp-server-addres.com/mcp` |\n| Transport | SSE |\n| Auth | API key via `X-API-Key` header (managed by infrastructure) |\n\n---\n\n## Configured Accounts\n\nAccounts are configured server-side. Always call `list_accounts` to get the current account names — never hardcode them. The `account` parameter in every tool must match the exact name returned by `list_accounts`.\n\n---\n\n## Prerequisites Before Using Any Tool\n\n1. Call `list_accounts` to get valid account names\n2. Call `list_mailboxes(account)` before any operation involving folder paths — paths are provider-specific and must be exact\n\n---\n\n## Rules\n\n- The `account` parameter is always the account **name** (e.g. `shawnroy`), never the email address\n- `emailId` is the IMAP UID string — always obtained from `list_emails` or `search_emails`, never guessed\n- `mailbox` must be an exact path from `list_mailboxes` — never guess folder names\n- `get_email` and `get_emails` are **non-destructive by default** — they use IMAP PEEK and do NOT mark emails as read unless `markRead: true` is explicitly set\n- `delete_email` moves to Trash by default — only set `permanent: true` when explicitly instructed\n- `find_email_folder` must be used before `move_email` or `delete_email` when the email was discovered via a virtual folder (e.g. Gmail \"All Mail\")\n- Never call `delete_mailbox` without explicit user instruction — it is irreversible and destroys all contents\n\n---\n\n## Tools Reference\n\n### Account & Health\n\n#### `list_accounts`\nList all configured email accounts and their names.\n- No parameters required\n- Returns: account names, email addresses, provider info\n\n#### `list_mailboxes`\nList all folders for an account with unread counts and special-use flags.\n- `account` (string, required) — account name from `list_accounts`\n- Returns: folder paths, total messages, unread counts, special-use flags (Inbox, Sent, Trash, etc.)\n\n#### `check_health`\nCheck IMAP/SMTP connection health, latency, quota, and server capabilities.\n- `account` (string, required)\n\n---\n\n### Reading Email\n\n#### `list_emails`\nPaginated email list with metadata. Returns read/unread 🔵, flagged ⭐, replied ↩️, attachment 📎, and label 🏷️ indicators.\n- `account` (string, required)\n- `mailbox` (string, default: `INBOX`)\n- `page` (int, default: 1)\n- `pageSize` (int, default: 20, max: 100)\n- `since` (ISO 8601 string, optional) — emails after this date\n- `before` (ISO 8601 string, optional) — emails before this date\n- `from` (string, optional) — filter by sender\n- `subject` (string, optional) — filter by subject keyword\n- `seen` (boolean, optional) — `true` = read only, `false` = unread only\n- `flagged` (boolean, optional) — `true` = flagged only\n- `has_attachment` (boolean, optional)\n- `answered` (boolean, optional) — `true` = replied, `false` = not yet replied\n\n#### `get_email`\nFull content of a single email. Non-destructive by default (IMAP PEEK).\n- `account` (string, required)\n- `emailId` (string, required) — UID from `list_emails`\n- `mailbox` (string, default: `INBOX`)\n- `format` (enum, default: `full`) — `full` = raw, `text` = plain text (strips HTML), `stripped` = plain text without quoted replies or signatures\n- `maxLength` (int, optional) — truncate body at this many characters\n- `markRead` (boolean, default: `false`) — set `true` to explicitly mark as read\n\n#### `get_emails`\nFetch full content of up to 20 emails in a single call. More efficient than looping `get_email`. Non-destructive.\n- `account` (string, required)\n- `ids` (array of strings, required, max 20) — UIDs from `list_emails`\n- `mailbox` (string, default: `INBOX`)\n- `format` (enum, default: `text`) — same options as `get_email`\n- `maxLength` (int, optional)\n\n#### `get_email_status`\nRead/flag/label state only — no body fetched. Very cheap, use when you only need to check state.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, default: `INBOX`)\n\n#### `search_emails`\nSearch by keyword across subject, sender, and body with optional filters. Omit `query` to use as a pure filter.\n- `account` (string, required)\n- `query` (string, optional) — keyword search\n- `mailbox` (string, default: `INBOX`)\n- `page` (int, default: 1)\n- `pageSize` (int, default: 20, max: 100)\n- `to` (string, optional) — filter by recipient\n- `has_attachment` (boolean, optional)\n- `larger_than` (number, optional) — minimum size in KB\n- `smaller_than` (number, optional) — maximum size in KB\n- `answered` (boolean, optional)\n\n#### `get_thread`\nReconstruct a full conversation thread via References/In-Reply-To headers.\n- `account` (string, required)\n- `emailId` (string, required) — any email in the thread\n\n#### `find_email_folder`\nDiscover which real folder(s) an email actually lives in. Required before `move_email` or `delete_email` when email was found via a virtual folder.\n- `account` (string, required)\n- `emailId` (string, required)\n\n#### `extract_contacts`\nExtract unique contacts from recent email headers.\n- `account` (string, required)\n- `mailbox` (string, optional)\n- `limit` (int, optional)\n\n#### `get_email_stats`\nEmail analytics — volume, top senders, daily trends.\n- `account` (string, required)\n\n#### `download_attachment`\nDownload a specific email attachment.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, default: `INBOX`)\n- `filename` (string, required) — exact filename from `get_email` attachment metadata\n\n---\n\n### Sending Email\n\n#### `send_email`\nSend a new email. Plain text or HTML.\n- `account` (string, required)\n- `to` (array of email strings, required, min 1)\n- `subject` (string, required)\n- `body` (string, required)\n- `cc` (array of email strings, optional)\n- `bcc` (array of email strings, optional)\n- `html` (boolean, default: `false`) — set `true` to send as HTML\n\n#### `reply_email`\nReply with proper threading (In-Reply-To & References headers). Call `get_email` first to read the original.\n- `account` (string, required)\n- `emailId` (string, required) — email to reply to\n- `mailbox` (string, default: `INBOX`)\n- `body` (string, required)\n- `replyAll` (boolean, default: `false`)\n- `html` (boolean, default: `false`)\n\n#### `forward_email`\nForward with original content quoted below.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, default: `INBOX`)\n- `to` (array of email strings, required)\n- `body` (string, optional) — additional message above forwarded content\n- `cc` (array of email strings, optional)\n\n#### `save_draft`\nSave email to Drafts without sending.\n- `account` (string, required)\n- `to` (array of email strings, optional)\n- `subject` (string, optional)\n- `body` (string, optional)\n- `html` (boolean, default: `false`)\n\n#### `send_draft`\nSend an existing draft and remove it from Drafts.\n- `account` (string, required)\n- `emailId` (string, required) — draft email ID\n\n#### `schedule_email`\nSchedule an email for future delivery.\n- `account` (string, required)\n- `to` (array of email strings, required)\n- `subject` (string, required)\n- `body` (string, required)\n- `sendAt` (ISO 8601 string, required) — scheduled send time\n\n#### `list_scheduled`\nList scheduled emails by status.\n- `account` (string, required)\n- `status` (enum, optional) — `pending`, `sent`, `failed`\n\n#### `cancel_scheduled`\nCancel a pending scheduled email.\n- `account` (string, required)\n- `emailId` (string, required)\n\n---\n\n### Managing Email\n\n#### `move_email`\nMove email to a different folder. Source must be a real folder — use `find_email_folder` first if discovered via a virtual folder.\n- `account` (string, required)\n- `emailId` (string, required)\n- `sourceMailbox` (string, required) — current folder\n- `destinationMailbox` (string, required) — target folder (verify with `list_mailboxes`)\n\n#### `delete_email`\nDelete an email. Moves to Trash by default.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, default: `INBOX`)\n- `permanent` (boolean, default: `false`) — ⚠️ set `true` only when explicitly instructed — irreversible\n\n#### `mark_email`\nChange email flags.\n- `account` (string, required)\n- `id` (string, required) — email UID\n- `mailbox` (string, default: `INBOX`)\n- `action` (enum, required) — `read`, `unread`, `flag`, `unflag`\n\n#### `bulk_action`\nBatch operation on up to 100 emails.\n- `account` (string, required)\n- `ids` (array of strings, required, max 100)\n- `action` (enum, required) — `move`, `delete`, `read`, `unread`, `flag`, `unflag`\n- `destinationMailbox` (string) — required when action is `move`\n\n---\n\n### Folders\n\n#### `create_mailbox`\nCreate a new folder. Use `/` for nested folders.\n- `account` (string, required)\n- `path` (string, required) — e.g. `Archive/2026` or `Projects`\n\n#### `rename_mailbox`\nRename an existing folder.\n- `account` (string, required)\n- `path` (string, required) — current path\n- `new_path` (string, required) — new path\n\n#### `delete_mailbox`\n⚠️ Permanently delete a folder and ALL its contents. Irreversible.\n- `account` (string, required)\n- `path` (string, required)\n\n---\n\n### Labels\n\n#### `list_labels`\nDiscover available labels. Provider-aware — handles Gmail, ProtonMail, and standard IMAP keywords differently.\n- `account` (string, required)\n\n#### `add_label`\nAdd a label to an email.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, required)\n- `label` (string, required)\n\n#### `remove_label`\nRemove a label from an email.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, required)\n- `label` (string, required)\n\n#### `create_label`\nCreate a new label.\n- `account` (string, required)\n- `name` (string, required)\n\n#### `delete_label`\nDelete a label.\n- `account` (string, required)\n- `name` (string, required)\n\n---\n\n### Templates\n\n#### `list_templates`\nList available email templates.\n- `account` (string, required)\n\n#### `apply_template`\nApply a template with variable substitution and send or save as draft.\n- `account` (string, required)\n- `templateName` (string, required)\n- `variables` (object, optional) — key/value pairs for substitution\n- `to` (array of email strings, optional) — required to send, optional for draft\n- `action` (enum, default: `draft`) — `send` or `draft`\n\n---\n\n### Analytics & Contacts\n\n#### `get_email_stats`\nEmail analytics — volume, top senders, daily trends.\n- `account` (string, required)\n\n#### `extract_contacts`\nExtract unique contacts from recent email headers.\n- `account` (string, required)\n- `mailbox` (string, optional)\n- `limit` (int, optional)\n\n---\n\n## Common Call Sequences\n\n### List unread inbox emails\n```\nlist_accounts()\n→ list_emails(account, mailbox=\"INBOX\", seen=false, pageSize=20)\n```\n\n### Read a specific email\n```\nlist_emails(account, mailbox=\"INBOX\")\n→ get_email(account, emailId, format=\"stripped\")\n```\n\n### Reply to an email\n```\nlist_emails(account) → get emailId\n→ get_email(account, emailId) → read content\n→ reply_email(account, emailId, body=\"...\", replyAll=false)\n```\n\n### Send a new email\n```\nsend_email(account, to=[\"someone@example.com\"], subject=\"...\", body=\"...\")\n```\n\n### Move email to folder\n```\nlist_mailboxes(account) → verify destination path\n→ move_email(account, emailId, sourceMailbox=\"INBOX\", destinationMailbox=\"Archive\")\n```\n\n### Search with filters\n```\nsearch_emails(account, query=\"invoice\", has_attachment=true, mailbox=\"INBOX\")\n```\n\n### Batch read for triage\n```\nlist_emails(account, seen=false, pageSize=20) → collect ids\n→ get_emails(account, ids=[...], format=\"stripped\")\n```\n\nArchive v1.0.1: 2 files, 4993 bytes\n\nFiles: skills.md (14478b), _meta.json (135b)\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn77nfg6wv2expv6qs7k17dfqs83zp59\",\n  \"slug\": \"email-mcp-helper\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1777933782577\n}\n\nFile v1.0.1:skills.md\n\n# Skill: Email MCP (email-mcp-helper)\n\n## Overview\nThis skill provides access to a self-hosted email MCP server built on `@codefuturist/email-mcp`. It exposes 47 tools covering full email lifecycle management — reading, searching, sending, replying, forwarding, scheduling, folder management, labels, bulk operations, threading, attachments, analytics, and health checks — across multiple IMAP/SMTP accounts simultaneously.\n\nThis skill is a **tool reference only**. It does not define how the agent should handle, triage, or respond to emails — that is defined in a separate email management skill that depends on this one as a prerequisite.\n\nClawhub will mark this as a risk because its tools for email that doesnt tell the agent how to use them and because it provides a link to the actual email mcp server this skill was made to help your agent understand how to use.  It makes no sense to lock the acutal email handling skill down to a single mcp email tool the skills dont belong together so Clawhub wil alwasy mark this package dangerous.  All Clawhub really does is get users used to acccepting security risks withotu looking because they label everythign a security risk, many times without even citing why. Use at your own risk, or dont use it I dont care, its for me and I share, and I am tired of fighting clawhub who clearly doesnt care about the actual security risk they create by desensitizing people to security ratings that make no sense, lacek evidence, fire over ridiculous things and overall cause most users to ignore them.  You should be having your agent alwasy check any skill before installing to make sure it isnt siphoning data, runnign actual real commands that could compromise your system and or otherwise maintain skills aligned with the overarching skill set.\n---\n\n## Infrastructure Notes\n\nThis MCP server runs as a standalone docker or Kubernetes deployment **separate from the OpenClaw container**. It is NOT bundled with or managed by OpenClaw. You must setup this MCP server yourself, have your agent help you.\n\n**Source code:** https://github.com/codefuturist/email-mcp\n\n**Key infrastructure requirements (outside this skill's scope):**\n- The `email-mcp` image (`ghcr.io/codefuturist/email-mcp:latest`) is stdio-only — it has no built-in HTTP server\n- A **MCP proxy** (e.g. `sparfenyuk/mcp-proxy`) must be installed alongside it to expose the server over HTTP/SSE — without the proxy the server cannot be reached over a network\n- Accounts are configured via a `config.toml` file mounted into the container — credentials are managed outside this skill\n- The proxy and server are deployed together in a single custom Docker image\n\n**This skill assumes the server is already running and reachable. If the server is unreachable, this skill cannot function.**\n\n---\n\n## Connection\n\n| Property | Value |\n|----------|-------|\n| URL | `https://mcp-server-addres.com/mcp` |\n| Transport | SSE |\n| Auth | API key via `X-API-Key` header (managed by infrastructure) |\n\n---\n\n## Configured Accounts\n\nAccounts are configured server-side. Always call `list_accounts` to get the current account names — never hardcode them. The `account` parameter in every tool must match the exact name returned by `list_accounts`.\n\n---\n\n## Prerequisites Before Using Any Tool\n\n1. Call `list_accounts` to get valid account names\n2. Call `list_mailboxes(account)` before any operation involving folder paths — paths are provider-specific and must be exact\n\n---\n\n## Rules\n\n- The `account` parameter is always the account **name** (e.g. `shawnroy`), never the email address\n- `emailId` is the IMAP UID string — always obtained from `list_emails` or `search_emails`, never guessed\n- `mailbox` must be an exact path from `list_mailboxes` — never guess folder names\n- `get_email` and `get_emails` are **non-destructive by default** — they use IMAP PEEK and do NOT mark emails as read unless `markRead: true` is explicitly set\n- `delete_email` moves to Trash by default — only set `permanent: true` when explicitly instructed\n- `find_email_folder` must be used before `move_email` or `delete_email` when the email was discovered via a virtual folder (e.g. Gmail \"All Mail\")\n- Never call `delete_mailbox` without explicit user instruction — it is irreversible and destroys all contents\n\n---\n\n## Tools Reference\n\n### Account & Health\n\n#### `list_accounts`\nList all configured email accounts and their names.\n- No parameters required\n- Returns: account names, email addresses, provider info\n\n#### `list_mailboxes`\nList all folders for an account with unread counts and special-use flags.\n- `account` (string, required) — account name from `list_accounts`\n- Returns: folder paths, total messages, unread counts, special-use flags (Inbox, Sent, Trash, etc.)\n\n#### `check_health`\nCheck IMAP/SMTP connection health, latency, quota, and server capabilities.\n- `account` (string, required)\n\n---\n\n### Reading Email\n\n#### `list_emails`\nPaginated email list with metadata. Returns read/unread 🔵, flagged ⭐, replied ↩️, attachment 📎, and label 🏷️ indicators.\n- `account` (string, required)\n- `mailbox` (string, default: `INBOX`)\n- `page` (int, default: 1)\n- `pageSize` (int, default: 20, max: 100)\n- `since` (ISO 8601 string, optional) — emails after this date\n- `before` (ISO 8601 string, optional) — emails before this date\n- `from` (string, optional) — filter by sender\n- `subject` (string, optional) — filter by subject keyword\n- `seen` (boolean, optional) — `true` = read only, `false` = unread only\n- `flagged` (boolean, optional) — `true` = flagged only\n- `has_attachment` (boolean, optional)\n- `answered` (boolean, optional) — `true` = replied, `false` = not yet replied\n\n#### `get_email`\nFull content of a single email. Non-destructive by default (IMAP PEEK).\n- `account` (string, required)\n- `emailId` (string, required) — UID from `list_emails`\n- `mailbox` (string, default: `INBOX`)\n- `format` (enum, default: `full`) — `full` = raw, `text` = plain text (strips HTML), `stripped` = plain text without quoted replies or signatures\n- `maxLength` (int, optional) — truncate body at this many characters\n- `markRead` (boolean, default: `false`) — set `true` to explicitly mark as read\n\n#### `get_emails`\nFetch full content of up to 20 emails in a single call. More efficient than looping `get_email`. Non-destructive.\n- `account` (string, required)\n- `ids` (array of strings, required, max 20) — UIDs from `list_emails`\n- `mailbox` (string, default: `INBOX`)\n- `format` (enum, default: `text`) — same options as `get_email`\n- `maxLength` (int, optional)\n\n#### `get_email_status`\nRead/flag/label state only — no body fetched. Very cheap, use when you only need to check state.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, default: `INBOX`)\n\n#### `search_emails`\nSearch by keyword across subject, sender, and body with optional filters. Omit `query` to use as a pure filter.\n- `account` (string, required)\n- `query` (string, optional) — keyword search\n- `mailbox` (string, default: `INBOX`)\n- `page` (int, default: 1)\n- `pageSize` (int, default: 20, max: 100)\n- `to` (string, optional) — filter by recipient\n- `has_attachment` (boolean, optional)\n- `larger_than` (number, optional) — minimum size in KB\n- `smaller_than` (number, optional) — maximum size in KB\n- `answered` (boolean, optional)\n\n#### `get_thread`\nReconstruct a full conversation thread via References/In-Reply-To headers.\n- `account` (string, required)\n- `emailId` (string, required) — any email in the thread\n\n#### `find_email_folder`\nDiscover which real folder(s) an email actually lives in. Required before `move_email` or `delete_email` when email was found via a virtual folder.\n- `account` (string, required)\n- `emailId` (string, required)\n\n#### `extract_contacts`\nExtract unique contacts from recent email headers.\n- `account` (string, required)\n- `mailbox` (string, optional)\n- `limit` (int, optional)\n\n#### `get_email_stats`\nEmail analytics — volume, top senders, daily trends.\n- `account` (string, required)\n\n#### `download_attachment`\nDownload a specific email attachment.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, default: `INBOX`)\n- `filename` (string, required) — exact filename from `get_email` attachment metadata\n\n---\n\n### Sending Email\n\n#### `send_email`\nSend a new email. Plain text or HTML.\n- `account` (string, required)\n- `to` (array of email strings, required, min 1)\n- `subject` (string, required)\n- `body` (string, required)\n- `cc` (array of email strings, optional)\n- `bcc` (array of email strings, optional)\n- `html` (boolean, default: `false`) — set `true` to send as HTML\n\n#### `reply_email`\nReply with proper threading (In-Reply-To & References headers). Call `get_email` first to read the original.\n- `account` (string, required)\n- `emailId` (string, required) — email to reply to\n- `mailbox` (string, default: `INBOX`)\n- `body` (string, required)\n- `replyAll` (boolean, default: `false`)\n- `html` (boolean, default: `false`)\n\n#### `forward_email`\nForward with original content quoted below.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, default: `INBOX`)\n- `to` (array of email strings, required)\n- `body` (string, optional) — additional message above forwarded content\n- `cc` (array of email strings, optional)\n\n#### `save_draft`\nSave email to Drafts without sending.\n- `account` (string, required)\n- `to` (array of email strings, optional)\n- `subject` (string, optional)\n- `body` (string, optional)\n- `html` (boolean, default: `false`)\n\n#### `send_draft`\nSend an existing draft and remove it from Drafts.\n- `account` (string, required)\n- `emailId` (string, required) — draft email ID\n\n#### `schedule_email`\nSchedule an email for future delivery.\n- `account` (string, required)\n- `to` (array of email strings, required)\n- `subject` (string, required)\n- `body` (string, required)\n- `sendAt` (ISO 8601 string, required) — scheduled send time\n\n#### `list_scheduled`\nList scheduled emails by status.\n- `account` (string, required)\n- `status` (enum, optional) — `pending`, `sent`, `failed`\n\n#### `cancel_scheduled`\nCancel a pending scheduled email.\n- `account` (string, required)\n- `emailId` (string, required)\n\n---\n\n### Managing Email\n\n#### `move_email`\nMove email to a different folder. Source must be a real folder — use `find_email_folder` first if discovered via a virtual folder.\n- `account` (string, required)\n- `emailId` (string, required)\n- `sourceMailbox` (string, required) — current folder\n- `destinationMailbox` (string, required) — target folder (verify with `list_mailboxes`)\n\n#### `delete_email`\nDelete an email. Moves to Trash by default.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, default: `INBOX`)\n- `permanent` (boolean, default: `false`) — ⚠️ set `true` only when explicitly instructed — irreversible\n\n#### `mark_email`\nChange email flags.\n- `account` (string, required)\n- `id` (string, required) — email UID\n- `mailbox` (string, default: `INBOX`)\n- `action` (enum, required) — `read`, `unread`, `flag`, `unflag`\n\n#### `bulk_action`\nBatch operation on up to 100 emails.\n- `account` (string, required)\n- `ids` (array of strings, required, max 100)\n- `action` (enum, required) — `move`, `delete`, `read`, `unread`, `flag`, `unflag`\n- `destinationMailbox` (string) — required when action is `move`\n\n---\n\n### Folders\n\n#### `create_mailbox`\nCreate a new folder. Use `/` for nested folders.\n- `account` (string, required)\n- `path` (string, required) — e.g. `Archive/2026` or `Projects`\n\n#### `rename_mailbox`\nRename an existing folder.\n- `account` (string, required)\n- `path` (string, required) — current path\n- `new_path` (string, required) — new path\n\n#### `delete_mailbox`\n⚠️ Permanently delete a folder and ALL its contents. Irreversible.\n- `account` (string, required)\n- `path` (string, required)\n\n---\n\n### Labels\n\n#### `list_labels`\nDiscover available labels. Provider-aware — handles Gmail, ProtonMail, and standard IMAP keywords differently.\n- `account` (string, required)\n\n#### `add_label`\nAdd a label to an email.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, required)\n- `label` (string, required)\n\n#### `remove_label`\nRemove a label from an email.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, required)\n- `label` (string, required)\n\n#### `create_label`\nCreate a new label.\n- `account` (string, required)\n- `name` (string, required)\n\n#### `delete_label`\nDelete a label.\n- `account` (string, required)\n- `name` (string, required)\n\n---\n\n### Templates\n\n#### `list_templates`\nList available email templates.\n- `account` (string, required)\n\n#### `apply_template`\nApply a template with variable substitution and send or save as draft.\n- `account` (string, required)\n- `templateName` (string, required)\n- `variables` (object, optional) — key/value pairs for substitution\n- `to` (array of email strings, optional) — required to send, optional for draft\n- `action` (enum, default: `draft`) — `send` or `draft`\n\n---\n\n### Analytics & Contacts\n\n#### `get_email_stats`\nEmail analytics — volume, top senders, daily trends.\n- `account` (string, required)\n\n#### `extract_contacts`\nExtract unique contacts from recent email headers.\n- `account` (string, required)\n- `mailbox` (string, optional)\n- `limit` (int, optional)\n\n---\n\n## Common Call Sequences\n\n### List unread inbox emails\n```\nlist_accounts()\n→ list_emails(account, mailbox=\"INBOX\", seen=false, pageSize=20)\n```\n\n### Read a specific email\n```\nlist_emails(account, mailbox=\"INBOX\")\n→ get_email(account, emailId, format=\"stripped\")\n```\n\n### Reply to an email\n```\nlist_emails(account) → get emailId\n→ get_email(account, emailId) → read content\n→ reply_email(account, emailId, body=\"...\", replyAll=false)\n```\n\n### Send a new email\n```\nsend_email(account, to=[\"someone@example.com\"], subject=\"...\", body=\"...\")\n```\n\n### Move email to folder\n```\nlist_mailboxes(account) → verify destination path\n→ move_email(account, emailId, sourceMailbox=\"INBOX\", destinationMailbox=\"Archive\")\n```\n\n### Search with filters\n```\nsearch_emails(account, query=\"invoice\", has_attachment=true, mailbox=\"INBOX\")\n```\n\n### Batch read for triage\n```\nlist_emails(account, seen=false, pageSize=20) → collect ids\n→ get_emails(account, ids=[...], format=\"stripped\")\n```\n\nArchive v1.0.0: 2 files, 4492 bytes\n\nFiles: skills.md (13329b), _meta.json (135b)\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn77nfg6wv2expv6qs7k17dfqs83zp59\",\n  \"slug\": \"email-mcp-helper\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1777933249131\n}\n\nFile v1.0.0:skills.md\n\n# Skill: Email MCP (email-mcp-helper)\n\n## Overview\nThis skill provides access to a self-hosted email MCP server built on `@codefuturist/email-mcp`. It exposes 47 tools covering full email lifecycle management — reading, searching, sending, replying, forwarding, scheduling, folder management, labels, bulk operations, threading, attachments, analytics, and health checks — across multiple IMAP/SMTP accounts simultaneously.\n\nThis skill is a **tool reference only**. It does not define how the agent should handle, triage, or respond to emails — that is defined in a separate email management skill that depends on this one as a prerequisite.\n\n---\n\n## Infrastructure Notes\n\nThis MCP server runs as a standalone docker or Kubernetes deployment **separate from the OpenClaw container**. It is NOT bundled with or managed by OpenClaw. You must setup this MCP server yourself, have your agent help you.\n\n**Source code:** https://github.com/codefuturist/email-mcp\n\n**Key infrastructure requirements (outside this skill's scope):**\n- The `email-mcp` image (`ghcr.io/codefuturist/email-mcp:latest`) is stdio-only — it has no built-in HTTP server\n- A **MCP proxy** (e.g. `sparfenyuk/mcp-proxy`) must be installed alongside it to expose the server over HTTP/SSE — without the proxy the server cannot be reached over a network\n- Accounts are configured via a `config.toml` file mounted into the container — credentials are managed outside this skill\n- The proxy and server are deployed together in a single custom Docker image\n\n**This skill assumes the server is already running and reachable. If the server is unreachable, this skill cannot function.**\n\n---\n\n## Connection\n\n| Property | Value |\n|----------|-------|\n| URL | `https://mcp-email-srg.ezbi.io/sse` |\n| Transport | SSE |\n| Auth | API key via `X-API-Key` header (managed by infrastructure) |\n\n---\n\n## Configured Accounts\n\nAccounts are configured server-side. Always call `list_accounts` to get the current account names — never hardcode them. The `account` parameter in every tool must match the exact name returned by `list_accounts`.\n\n---\n\n## Prerequisites Before Using Any Tool\n\n1. Call `list_accounts` to get valid account names\n2. Call `list_mailboxes(account)` before any operation involving folder paths — paths are provider-specific and must be exact\n\n---\n\n## Rules\n\n- The `account` parameter is always the account **name** (e.g. `shawnroy`), never the email address\n- `emailId` is the IMAP UID string — always obtained from `list_emails` or `search_emails`, never guessed\n- `mailbox` must be an exact path from `list_mailboxes` — never guess folder names\n- `get_email` and `get_emails` are **non-destructive by default** — they use IMAP PEEK and do NOT mark emails as read unless `markRead: true` is explicitly set\n- `delete_email` moves to Trash by default — only set `permanent: true` when explicitly instructed\n- `find_email_folder` must be used before `move_email` or `delete_email` when the email was discovered via a virtual folder (e.g. Gmail \"All Mail\")\n- Never call `delete_mailbox` without explicit user instruction — it is irreversible and destroys all contents\n\n---\n\n## Tools Reference\n\n### Account & Health\n\n#### `list_accounts`\nList all configured email accounts and their names.\n- No parameters required\n- Returns: account names, email addresses, provider info\n\n#### `list_mailboxes`\nList all folders for an account with unread counts and special-use flags.\n- `account` (string, required) — account name from `list_accounts`\n- Returns: folder paths, total messages, unread counts, special-use flags (Inbox, Sent, Trash, etc.)\n\n#### `check_health`\nCheck IMAP/SMTP connection health, latency, quota, and server capabilities.\n- `account` (string, required)\n\n---\n\n### Reading Email\n\n#### `list_emails`\nPaginated email list with metadata. Returns read/unread 🔵, flagged ⭐, replied ↩️, attachment 📎, and label 🏷️ indicators.\n- `account` (string, required)\n- `mailbox` (string, default: `INBOX`)\n- `page` (int, default: 1)\n- `pageSize` (int, default: 20, max: 100)\n- `since` (ISO 8601 string, optional) — emails after this date\n- `before` (ISO 8601 string, optional) — emails before this date\n- `from` (string, optional) — filter by sender\n- `subject` (string, optional) — filter by subject keyword\n- `seen` (boolean, optional) — `true` = read only, `false` = unread only\n- `flagged` (boolean, optional) — `true` = flagged only\n- `has_attachment` (boolean, optional)\n- `answered` (boolean, optional) — `true` = replied, `false` = not yet replied\n\n#### `get_email`\nFull content of a single email. Non-destructive by default (IMAP PEEK).\n- `account` (string, required)\n- `emailId` (string, required) — UID from `list_emails`\n- `mailbox` (string, default: `INBOX`)\n- `format` (enum, default: `full`) — `full` = raw, `text` = plain text (strips HTML), `stripped` = plain text without quoted replies or signatures\n- `maxLength` (int, optional) — truncate body at this many characters\n- `markRead` (boolean, default: `false`) — set `true` to explicitly mark as read\n\n#### `get_emails`\nFetch full content of up to 20 emails in a single call. More efficient than looping `get_email`. Non-destructive.\n- `account` (string, required)\n- `ids` (array of strings, required, max 20) — UIDs from `list_emails`\n- `mailbox` (string, default: `INBOX`)\n- `format` (enum, default: `text`) — same options as `get_email`\n- `maxLength` (int, optional)\n\n#### `get_email_status`\nRead/flag/label state only — no body fetched. Very cheap, use when you only need to check state.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, default: `INBOX`)\n\n#### `search_emails`\nSearch by keyword across subject, sender, and body with optional filters. Omit `query` to use as a pure filter.\n- `account` (string, required)\n- `query` (string, optional) — keyword search\n- `mailbox` (string, default: `INBOX`)\n- `page` (int, default: 1)\n- `pageSize` (int, default: 20, max: 100)\n- `to` (string, optional) — filter by recipient\n- `has_attachment` (boolean, optional)\n- `larger_than` (number, optional) — minimum size in KB\n- `smaller_than` (number, optional) — maximum size in KB\n- `answered` (boolean, optional)\n\n#### `get_thread`\nReconstruct a full conversation thread via References/In-Reply-To headers.\n- `account` (string, required)\n- `emailId` (string, required) — any email in the thread\n\n#### `find_email_folder`\nDiscover which real folder(s) an email actually lives in. Required before `move_email` or `delete_email` when email was found via a virtual folder.\n- `account` (string, required)\n- `emailId` (string, required)\n\n#### `extract_contacts`\nExtract unique contacts from recent email headers.\n- `account` (string, required)\n- `mailbox` (string, optional)\n- `limit` (int, optional)\n\n#### `get_email_stats`\nEmail analytics — volume, top senders, daily trends.\n- `account` (string, required)\n\n#### `download_attachment`\nDownload a specific email attachment.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, default: `INBOX`)\n- `filename` (string, required) — exact filename from `get_email` attachment metadata\n\n---\n\n### Sending Email\n\n#### `send_email`\nSend a new email. Plain text or HTML.\n- `account` (string, required)\n- `to` (array of email strings, required, min 1)\n- `subject` (string, required)\n- `body` (string, required)\n- `cc` (array of email strings, optional)\n- `bcc` (array of email strings, optional)\n- `html` (boolean, default: `false`) — set `true` to send as HTML\n\n#### `reply_email`\nReply with proper threading (In-Reply-To & References headers). Call `get_email` first to read the original.\n- `account` (string, required)\n- `emailId` (string, required) — email to reply to\n- `mailbox` (string, default: `INBOX`)\n- `body` (string, required)\n- `replyAll` (boolean, default: `false`)\n- `html` (boolean, default: `false`)\n\n#### `forward_email`\nForward with original content quoted below.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, default: `INBOX`)\n- `to` (array of email strings, required)\n- `body` (string, optional) — additional message above forwarded content\n- `cc` (array of email strings, optional)\n\n#### `save_draft`\nSave email to Drafts without sending.\n- `account` (string, required)\n- `to` (array of email strings, optional)\n- `subject` (string, optional)\n- `body` (string, optional)\n- `html` (boolean, default: `false`)\n\n#### `send_draft`\nSend an existing draft and remove it from Drafts.\n- `account` (string, required)\n- `emailId` (string, required) — draft email ID\n\n#### `schedule_email`\nSchedule an email for future delivery.\n- `account` (string, required)\n- `to` (array of email strings, required)\n- `subject` (string, required)\n- `body` (string, required)\n- `sendAt` (ISO 8601 string, required) — scheduled send time\n\n#### `list_scheduled`\nList scheduled emails by status.\n- `account` (string, required)\n- `status` (enum, optional) — `pending`, `sent`, `failed`\n\n#### `cancel_scheduled`\nCancel a pending scheduled email.\n- `account` (string, required)\n- `emailId` (string, required)\n\n---\n\n### Managing Email\n\n#### `move_email`\nMove email to a different folder. Source must be a real folder — use `find_email_folder` first if discovered via a virtual folder.\n- `account` (string, required)\n- `emailId` (string, required)\n- `sourceMailbox` (string, required) — current folder\n- `destinationMailbox` (string, required) — target folder (verify with `list_mailboxes`)\n\n#### `delete_email`\nDelete an email. Moves to Trash by default.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, default: `INBOX`)\n- `permanent` (boolean, default: `false`) — ⚠️ set `true` only when explicitly instructed — irreversible\n\n#### `mark_email`\nChange email flags.\n- `account` (string, required)\n- `id` (string, required) — email UID\n- `mailbox` (string, default: `INBOX`)\n- `action` (enum, required) — `read`, `unread`, `flag`, `unflag`\n\n#### `bulk_action`\nBatch operation on up to 100 emails.\n- `account` (string, required)\n- `ids` (array of strings, required, max 100)\n- `action` (enum, required) — `move`, `delete`, `read`, `unread`, `flag`, `unflag`\n- `destinationMailbox` (string) — required when action is `move`\n\n---\n\n### Folders\n\n#### `create_mailbox`\nCreate a new folder. Use `/` for nested folders.\n- `account` (string, required)\n- `path` (string, required) — e.g. `Archive/2026` or `Projects`\n\n#### `rename_mailbox`\nRename an existing folder.\n- `account` (string, required)\n- `path` (string, required) — current path\n- `new_path` (string, required) — new path\n\n#### `delete_mailbox`\n⚠️ Permanently delete a folder and ALL its contents. Irreversible.\n- `account` (string, required)\n- `path` (string, required)\n\n---\n\n### Labels\n\n#### `list_labels`\nDiscover available labels. Provider-aware — handles Gmail, ProtonMail, and standard IMAP keywords differently.\n- `account` (string, required)\n\n#### `add_label`\nAdd a label to an email.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, required)\n- `label` (string, required)\n\n#### `remove_label`\nRemove a label from an email.\n- `account` (string, required)\n- `emailId` (string, required)\n- `mailbox` (string, required)\n- `label` (string, required)\n\n#### `create_label`\nCreate a new label.\n- `account` (string, required)\n- `name` (string, required)\n\n#### `delete_label`\nDelete a label.\n- `account` (string, required)\n- `name` (string, required)\n\n---\n\n### Templates\n\n#### `list_templates`\nList available email templates.\n- `account` (string, required)\n\n#### `apply_template`\nApply a template with variable substitution and send or save as draft.\n- `account` (string, required)\n- `templateName` (string, required)\n- `variables` (object, optional) — key/value pairs for substitution\n- `to` (array of email strings, optional) — required to send, optional for draft\n- `action` (enum, default: `draft`) — `send` or `draft`\n\n---\n\n### Analytics & Contacts\n\n#### `get_email_stats`\nEmail analytics — volume, top senders, daily trends.\n- `account` (string, required)\n\n#### `extract_contacts`\nExtract unique contacts from recent email headers.\n- `account` (string, required)\n- `mailbox` (string, optional)\n- `limit` (int, optional)\n\n---\n\n## Common Call Sequences\n\n### List unread inbox emails\n```\nlist_accounts()\n→ list_emails(account, mailbox=\"INBOX\", seen=false, pageSize=20)\n```\n\n### Read a specific email\n```\nlist_emails(account, mailbox=\"INBOX\")\n→ get_email(account, emailId, format=\"stripped\")\n```\n\n### Reply to an email\n```\nlist_emails(account) → get emailId\n→ get_email(account, emailId) → read content\n→ reply_email(account, emailId, body=\"...\", replyAll=false)\n```\n\n### Send a new email\n```\nsend_email(account, to=[\"someone@example.com\"], subject=\"...\", body=\"...\")\n```\n\n### Move email to folder\n```\nlist_mailboxes(account) → verify destination path\n→ move_email(account, emailId, sourceMailbox=\"INBOX\", destinationMailbox=\"Archive\")\n```\n\n### Search with filters\n```\nsearch_emails(account, query=\"invoice\", has_attachment=true, mailbox=\"INBOX\")\n```\n\n### Batch read for triage\n```\nlist_emails(account, seen=false, pageSize=20) → collect ids\n→ get_emails(account, ids=[...], format=\"stripped\")\n```","readmeExcerpt":"Skill: Email MCP Helper Owner: encryptshawn Summary: Access and manage multiple IMAP/SMTP email accounts with full lifecycle tools for reading, searching, sending, replying, forwarding, folder and label managem... Tags: latest:1.0.2 Version history: v1.0.2 | 2026-05-04T22:32:52.616Z | user - Updated the Overview section to clarify risk assessments by Clawhub, add more explicit advice on skill usage, and emphasize use","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"list_accounts()\n→ list_emails(account, mailbox=\"INBOX\", seen=false, pageSize=20)"},{"language":"text","snippet":"list_emails(account, mailbox=\"INBOX\")\n→ get_email(account, emailId, format=\"stripped\")"},{"language":"text","snippet":"list_emails(account) → get emailId\n→ get_email(account, emailId) → read content\n→ reply_email(account, emailId, body=\"...\", replyAll=false)"},{"language":"text","snippet":"send_email(account, to=[\"someone@example.com\"], subject=\"...\", body=\"...\")"},{"language":"text","snippet":"list_mailboxes(account) → verify destination path\n→ move_email(account, emailId, sourceMailbox=\"INBOX\", destinationMailbox=\"Archive\")"},{"language":"text","snippet":"search_emails(account, query=\"invoice\", has_attachment=true, mailbox=\"INBOX\")"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn77nfg6wv2expv6qs7k17dfqs83zp59\",\n  \"slug\": \"email-mcp-helper\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1777933972616\n}"},{"path":"skill-card.md","content":"## Description:\n\nEmail MCP Helper gives agents a reference for using a self-hosted email MCP server to read, search, send, organize, and manage email across configured IMAP/SMTP accounts.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[encryptshawn](https://clawhub.ai/user/encryptshawn)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and advanced users use this skill as a tool reference for connecting agents to an already deployed email MCP endpoint and safely selecting account, mailbox, message, and mutation parameters.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Mailbox credentials and message contents can be exposed if the configured MCP endpoint is not controlled or independently verified.\n\nMitigation: Use only an MCP endpoint you control or have independently verified, and rotate and scope API keys.\n\nRisk: The available tools can perform mutating email actions, including sending, forwarding, bulk moving, deleting, and permanent deletion.\n\nMitigation: Require explicit user confirmation before any mutating email action, especially bulk operations and permanent deletion.\n\nRisk: The email MCP image or proxy deployment can change behavior if mutable or unaudited versions are used.\n\nMitigation: Pin the email MCP image and proxy to audited immutable versions before use.\n\nRisk: Incorrect account names, mailbox paths, or email IDs can cause actions to target the wrong mailbox or message.\n\nMitigation: Call list_accounts and list_mailboxes before mailbox operations, and use email IDs returned by list_emails or search_emails.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/encryptshawn/skills/email-mcp-helper)\n- [email-mcp source code](https://github.com/codefuturist/email-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown tool reference with example call sequences]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [References an externally deployed email MCP server and does not bundle credentials or infrastructure.]\n\n## Skill Version(s):\n\n1.0.2 (source: server release evidence, created 2026-05-04)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"skills.md","content":"# Skill: Email MCP (email-mcp-helper)\n\n## Overview\nThis skill provides access to a self-hosted email MCP server built on `@codefuturist/email-mcp`. It exposes 47 tools covering full email lifecycle management — reading, searching, sending, replying, forwarding, scheduling, folder management, labels, bulk operations, threading, attachments, analytics, and health checks — across multiple IMAP/SMTP accounts simultaneously.\n\nThis skill is a **tool reference only**. It does not define how the agent should handle, triage, or respond to emails — that is defined in a separate email management skill that depends on this one as a prerequisite.\n\nClawhub will mark this as a risk because its tools for email that doesnt tell the agent how to use them and because it provides a link to the actual email mcp server this skill was made to help your agent understand how to use.  It makes no sense to lock the actual email handling skill down to a single mcp email tool - the skills dont belong together so Clawhub wil always mark this package dangerous.  All Clawhub really does is get users used to acccepting security risks without looking because they label everything a security risk, many times without even citing why. Use at your own risk, or dont use it, I dont care, its for me and I share - and I am tired of fighting clawhub who clearly doesnt care about the actual security risk they create by desensitizing people to security ratings that make no sense, lack evidence, misfire fire over ridiculous things, say there isa virus finding while total virus says there is none, and in general overall, cause most users to ignore them.  You should be having your agent always check any skill before installing & using it to make sure it isnt siphoning data, running actual real commands that could compromise your system and or otherwise maintain skills aligned with the overarching skill set. Dont rely on Clawhub, DYOR always!\n---\n\n## Infrastructure Notes\n\nThis MCP server runs as a standalone docker or Kubernetes deployment **separate from the OpenClaw container**. It is NOT bundled with or managed by OpenClaw. You must setup this MCP server yourself, have your agent help you.\n\n**Source code:** https://github.com/codefuturist/email-mcp\n\n**Key infrastructure requirements (outside this skill's scope):**\n- The `email-mcp` image (`ghcr.io/codefuturist/email-mcp:latest`) is stdio-only — it has no built-in HTTP server\n- A **MCP proxy** (e.g. `sparfenyuk/mcp-proxy`) must be installed alongside it to expose the server over HTTP/SSE — without the proxy the server cannot be reached over a network\n- Accounts are configured via a `config.toml` file mounted into the container — credentials are managed outside this skill\n- The proxy and server are deployed together in a single custom Docker image\n\n**This skill assumes the server is already running and reachable. If the server is unreachable, this skill cannot function.**\n\n---\n\n## Connection\n\n| Property | Value |\n|----------|-------|\n| URL | `"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Access and manage multiple IMAP/SMTP email accounts with full lifecycle tools for reading, searching, sending, replying, forwarding, folder and label managem... Skill: Email MCP Helper Owner: encryptshawn Summary: Access and manage multiple IMAP/SMTP email accounts with full lifecycle tools for reading, searching, sending, replying, forwarding, folder and label managem... Tags: latest:1.0.2 Version history: v1.0.2 | 2026-05-04T22:32:52.616Z | user - Updated the Overview section to clarify risk assessments by Clawhub, add more explicit advice on skill usage, and emphasize use","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1435,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T16:42:08.847Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T16:42:08.847Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T21:16:24.379Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}