Email (IMAP + SMTP) Runtime Skill

SkillSearch

Operate a generic IMAP+SMTP mailbox through the Email MCP. Use when the user asks to read, search, inspect attachments or threads, draft, send, reply, move, or delete email without provider OAuth.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Email (IMAP + SMTP) Runtime Skill skill

What this skill tells your AI

The instructions your AI receives, as published by manor-os/manor-ai in packages/core/ai/skills/mcp_email/SKILL.md and read by ahel’s review.

Use this skill for the user's generic IMAP/SMTP mailbox through the Email MCP (mcp__email__*). It authenticates with mailbox credentials or an app password and does not require Google/Microsoft OAuth. Provider-native Gmail and Outlook integrations may still offer more precise labels, server-side thread IDs, and search semantics. Do not read or send mail through a browser when this account is connected.

When To Use

Use Email when the user names a work mailbox, hosting/cPanel mail, custom domain, or any provider account configured through IMAP/SMTP and asks to triage, read, inspect attachments or threads, draft, send, reply, file, or delete messages.

Connection

This MCP authenticates with stored IMAP/SMTP credentials (no OAuth). If a tool returns an auth/connection error (login failed, host unreachable, TLS error), stop and tell the user to re-enter their mailbox credentials in Integrations. Do not fall back to other mail tools or a browser.

Core Tools

  • list_folders — enumerate mailbox folders (IMAP has folders, not Gmail-style labels). Run this first when the user names a folder.
  • list_messages — list messages (optionally scoped to a folder). Returns message UIDs, not bodies.
  • get_message — fetch one message by uid (headers + body).
  • list_attachments / download_attachment — inspect and fetch received MIME attachments.
  • list_threads / get_thread — reconstruct conversations from Message-ID, In-Reply-To, and References. Pass search_folders including Sent when both sides of a conversation are needed.
  • send_email — required: to, subject, body; supports HTML, Cc/Bcc, and base64 MIME attachments.
  • reply_to_message / reply_all — send an RFC-threaded response by message UID. reply_all excludes the connected account from recipients.
  • list_drafts / get_draft / create_draft / update_draft / send_draft / delete_draft — manage drafts in the server's IMAP Drafts folder.
  • mark_read / mark_unread — by uid.
  • move_message — required: uid, to_folder (e.g. move to "Archive").
  • delete_message — by uid.

Common Recipes

Triage a folder

  1. list_folders if the target folder name is uncertain.
  2. list_messages scoped to the folder → collect UIDs.
  3. get_message per UID to read; summarize. Only mark_read if the user asked.

Send a message

  1. Prefer create_draft when the user should review content or recipients.
  2. Show the draft and obtain confirmation.
  3. send_draft, or use send_email only when the user explicitly approved immediate sending.

Review and reply to a conversation

  1. Locate the anchor message with list_messages, then call get_thread.
  2. Include the Sent folder in search_folders when the conversation may span Inbox and Sent.
  3. Inspect relevant attachments with list_attachments / download_attachment.
  4. Show the proposed body and recipients; after confirmation use reply_to_message or reply_all.

File or clean up

  1. list_messages with a precise scope, get_message to verify.
  2. move_message to Archive/another folder (reversible), preferring it over delete_message.

Guardrails

  • Confirm recipient(s), body, and attachments before send_email, reply_to_message, reply_all, or send_draft. Once SMTP accepts a message there is no reliable undo.
  • Prefer draft creation for staged review. Draft UIDs may change after update_draft; use the replacement UID returned by the tool.
  • Attachments are base64-encoded and limited to 10 MiB each, 20 MiB total, and 10 files per outgoing message.
  • delete_message behavior is server-dependent: some IMAP servers move to a Trash folder, others expunge permanently. Treat it as possibly irreversible — prefer move_message to Archive, and confirm before deleting.
  • Operate UID-by-UID against the folder you listed; UIDs are folder-scoped, so re-list after a move_message.
  • Privacy: read only what the task needs; do not export mailbox contents to other tools/channels.

Edge Cases & Errors

  • list_messages returns UIDs only — you must get_message to read content.
  • UIDs are scoped to a folder and can change after moves/expunge; don't reuse a UID across folders.
  • Generic IMAP has no universal server-side thread ID. Thread tools reconstruct relationships from RFC headers and only scan requested folders; they deliberately do not merge messages by subject alone.
  • If Drafts cannot be auto-detected, list folders and pass the server's Drafts folder explicitly.
  • Auth/host errors → stop and ask the user to fix credentials; do not retry blindly or switch tools.

Signals

GitHub stars
171
Forks
52
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
mcp-email
Source
github.com/manor-os/manor-ai