agenticonsult logoagent i /consultDocs
Agentic infrastructureMCP servers

email

Standard mailbox operations over IMAP and SMTP — reading, search, triage, a shared queue, and human-approved outbound.

This server gives agents standard mailbox operations over IMAP and SMTP — it works with any mail provider that speaks those protocols, against a mailbox you configure with your own credentials. The 19 tools cover the whole working surface: folders, unread counts, listing and reading messages, search, the outbound actions (send, reply, forward, and saving drafts for a human to finish), mailbox management (move, delete, mark read or unread), and a local queue that an always-on inbox monitor fills — so triage work survives between sessions instead of restarting from an inbox scan every time.

The queue is what turns raw mail into a workflow. The monitor polls the mailbox continuously without any model involvement and records new messages in a local queue; the support workflow — the support-email agent — then reads the queue, classifies each message, pulls context from your knowledge base, and drafts a reply.

Outbound is human-approved. The platform's standing rule — the same operator model gate as everywhere else — is that mail an agent writes is a draft until you approve it. The shipped support workflow enforces this unconditionally: it will classify, ground, and draft, and then it waits for your decision. No routine and no agent sends on its own authority, no matter how routine the reply looks.

How your agents use it

  • "Anything new in the support box?"email_count_unread, then email_list_messages and email_read_message for the ones that matter.
  • "Work the queue."email_queue_list for pending items, a drafted reply per message grounded in your knowledge base, your approval, then email_reply — and email_queue_update to mark the item handled.
  • "Find the thread where we discussed the license terms."email_search, then email_read_message on the hit.

Prerequisites

A mailbox of your own: server addresses, account name, and password, entered once in your settings (see the configuration reference). Credentials stay in the one settings file you own, on your machine. Reading and triage involve no model cost; drafting quality rides on your Claude subscription like any agent work.

Tool reference

ToolParametersWhat it does
email_list_accountsList configured email accounts (id, label, email, display_name, enabled, default flag). Passwords are never returned.
email_list_foldersaccount: objectList all email folders (INBOX, Sent, Drafts, Trash, etc.).
email_count_unreadfolder: string, account: objectCount unread and total messages in a folder.
email_list_messagesfolder: string, limit: integer, offset: integer, unread_only: boolean, account: objectList email messages in a folder with headers (from, subject, date, read status). Newest first. Use offset/limit for pagination.
email_read_messageuid*: string, folder: string, mark_read: boolean, account: objectRead the full content of an email by UID. Returns body text, headers, attachment list, and threading info (Message-ID, In-Reply-To, References).
email_searchfolder: string, from_addr: string, to_addr: string, subject: string, body_text: string, since: string, before: string, unread_only: boolean, limit: integer, account: objectSearch emails by criteria: sender, recipient, subject, body text, date range, read status. Dates use DD-Mon-YYYY format (e.g., 15-Mar-2026).
email_sendto*: string, subject*: string, body*: string, cc: string, bcc: string, html: boolean, reply_to: string, account: object, ai_label: objectSend a new email. Supports plain text and HTML. IMPORTANT: All outbound email should be reviewed before sending in production.
email_replyuid*: string, body*: string, folder: string, reply_all: boolean, html: boolean, account: object, ai_label: objectReply to an email. Automatically handles In-Reply-To and References headers for proper threading. Quotes the original message.
email_forwarduid*: string, to*: string, body: string, folder: string, account: object, ai_label: objectForward an email to another recipient with optional additional message.
email_save_draftto*: string, subject*: string, body*: string, cc: string, bcc: string, html: boolean, reply_to: string, account: object, ai_label: objectCompose a NEW email and SAVE IT AS A DRAFT (Drafts folder) — it is NOT sent. Use this to stage a message for the operator to review and send later. Same fields as email_send. Returns {status, folder, subject, uid?} — the uid (UIDPLUS) lets you open the draft directly.
email_save_draft_replyuid*: string, body*: string, folder: string, reply_all: boolean, html: boolean, account: object, ai_label: objectCompose a REPLY and SAVE IT AS A DRAFT (Drafts folder) — it is NOT sent. Handles In-Reply-To/References threading and quotes the original. Same fields as email_reply.
email_save_draft_forwarduid*: string, to*: string, body: string, folder: string, account: object, ai_label: objectCompose a FORWARD and SAVE IT AS A DRAFT (Drafts folder) — it is NOT sent. Same fields as email_forward.
email_moveuid*: string, source_folder: string, target_folder*: string, account: objectMove an email to another folder.
email_deleteuid*: string, folder: string, account: objectDelete an email (moves to Trash folder if available, otherwise permanently deletes).
email_mark_readuid*: string, folder: string, account: objectMark an email as read.
email_mark_unreaduid*: string, folder: string, account: objectMark an email as unread.
email_queue_statusaccount: objectGet overview of the email processing queue: counts by status (new, processing, processed, escalated) and by classification (support, sales, personal, spam, internal).
email_queue_liststatus: string, classification: string, limit: integer, account: objectList entries in the email processing queue with optional filters.
email_queue_updateentry_id*: integer, status: string, classification: string, processed_by: string, notes: string, account: stringUpdate a queue entry: set status, classification, processing notes, or who processed it.

Where to go next

  • Agents — the support workflow that drives this server day to day
  • The operator model — why outbound always waits for you

On this page