连接任意电子邮件账户,把一个 URL 粘贴到支持 OAuth 的 MCP 客户端中并授权。不支持 OAuth 的客户端则改用 API 密钥。下方提供完整的工具参考和连接指南。
无需 SDK。MCPEmails 通过 HTTP 讲标准 MCP,因此可接入任何兼容 MCP 的智能体。
在 mcpemails.com 注册,然后前往 仪表盘 → 收件箱 → 连接收件箱。选择 Gmail、iCloud、Fastmail 或任何 IMAP 收件箱,然后完成 OAuth 流程或粘贴一个应用密码。你的收件箱在一分钟内即可就绪。
连接你的收件箱 →在 仪表板 → API 密钥 中,点击「创建密钥」。为其命名,选择你的智能体所需的范围(read:email、search:email、send:email、manage:folders、delete:email、manage:drafts、manage:contacts、schedule:email 和 manage:automations),并复制该密钥。它只显示一次。
# Your key looks like this:
mcpe_live_AbCdEfGhIjKlMnOpQrStUvWxYz123456在下方选择你的客户端对应的标签页。支持 OAuth 2.0 的 MCP 客户端(claude.ai、Claude Desktop、Cursor 等)只需粘贴 URL 并授权,无需 API 密钥。不支持 OAuth 的客户端以及脚本化访问,则使用第 02 步中的 API 密钥。
# OAuth-capable clients (claude.ai, Claude Desktop, Cursor…)
# No API key required. Paste the URL, click Connect, authorize.
#
# Example: claude.ai
# 1. Go to claude.ai → Customize → Connectors
# 2. Click "Add connector" and paste this URL:
#
# https://mcpemails.com/api/mcp
#
# 3. Click Connect and sign in with your mcpemails account.
# 4. Every tool your approved scopes allow is live immediately.
#
# Claude Desktop and Cursor follow the same OAuth flow when
# the server URL is configured in their MCP settings.无需复制粘贴收件箱 UUID。你的智能体会先调用 inbox_list 来发现每一个已连接的收件箱及其 UUID,然后你只需说:“检查我的收件箱并总结最近 5 封未读邮件。”
# The agent calls inbox_list first, so no hardcoded UUIDs.
# System prompt (optional, for multi-inbox setups):
You have access to email via MCPEmails.
Start by calling inbox_list to discover available inboxes.所有流量都发往单个 Streamable HTTP 端点。使用来自仪表盘的 bearer 令牌进行身份验证。
https://mcpemails.com/api/mcp发送一个 JSON-RPC 2.0 请求体。支持的方法:initialize、tools/list、tools/call。
structuredContent 对象curl -X POST https://mcpemails.com/api/mcp \
-H "Authorization: Bearer mcpe_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"clientInfo": { "name": "my-agent", "version": "1.0" },
"capabilities": {}
}
}'MCPEmails 仅采用请求/响应模式:每个结果都来自你的智能体发起的工具调用。没有 webhook、推送通知或由服务器发起的事件,收到新邮件本身绝不会触发智能体调用。要对新邮件作出响应,请让你的智能体按计划轮询,例如按工作流所需的间隔调用 email_read 并设置 action: "list" 和 unread_only: true(注意上面的速率限制)。
这些都是同一套精简的、基于动作的 MCP 接口所具备的、能识别各家服务商差异的能力,而不是为每个边缘情况单列一份工具目录。
在仪表板中按收件箱开启审批,即可拦截发送、回复、转发、草稿发送和定时发送。智能体会收到一个待处理结果,需由工作区成员在仪表板中批准或拒绝,之后才会真正发出。
调用 inbox_list 即可查看每个收件箱的版本化档案。它会将标准化操作标记为一致、有差异或不可用,让智能体可以选择可移植的工作流,而不必假装各家服务商完全相同。
对于受支持的文本文件、CSV、HTML、JSON 以及带文本层的 PDF,可将选定附件读取为临时文本;也可以把服务商存储的原件下载为可移植的 .eml。提取过程不会运行内嵌代码,也不会对图片做 OCR。
重复使用同一个 idempotency_key,可在 24 小时内安全地重试同一个外发请求。批量整理任务会在仪表板中保留状态并接受取消请求;这些任务记录中不会保存任何邮件内容或搜索词。
支持 MCP prompts 的客户端可以提供内置流程,用于细致的收件箱分拣、未结事项复核、回复草稿准备、整理方案建议以及定时发送复核。Prompts 从不授予权限,也不会自动运行。
在原始会话中创建一封未发送的回复,供人工复核。Gmail 的发送、回复和转发只能选择由服务商验证、并由 inbox_list 返回的 Send As 身份;其他服务商则使用已连接的地址。
支持 OAuth 2.0 的 MCP 客户端(claude.ai、Claude Desktop、Cursor 等)会通过授权码 + PKCE 自动连接。无需 API 密钥,无需配置文件。粘贴 URL 并点击连接。
https://mcpemails.com/api/mcp 粘贴为服务器 URL底层工作原理
claude.ai 通过 RFC 7591 动态客户端注册自行注册,因此你永远不必预先注册客户端 ID。
授权使用 OAuth 2.0 授权码 + PKCE(RFC 7636),因此从不传输任何客户端密钥。
令牌的范围严格限定为你批准的权限:read:email、search:email、send:email、manage:folders、delete:email、manage:drafts、manage:contacts、schedule:email 和 manage:automations。
指定收件箱是可选的。当你的密钥只有一个收件箱时,每个按收件箱的工具都会自动解析它,无需 inbox_id。有多个收件箱时,传入 inbox_id(来自 inbox_list 的 UUID)或 inbox(收件箱的邮箱地址)。大多数工具接受一个 action 参数来选择操作;徽章显示每个工具所需的权限范围,而 tools/list 只返回你的密钥(或 OAuth 令牌)有权限的工具。点击“显示示例”查看完整的请求与响应。
inbox_listread:emailemail_readread:emailsearch:emailemail_organizemanage:foldersemail_deletedelete:emailemail_composesend:emailfolderread:emailmanage:foldersdraftmanage:draftsscheduleschedule:emailcontact_searchmanage:contactsautomationmanage:automationssignatureread:emailsend:emailinbox_listread:email返回当前 API 密钥或 OAuth 令牌可访问的所有收件箱。先调用它来发现 inbox_id 值,这样你就无需从仪表板复制粘贴 UUID。每个结果都包含邮箱地址、提供商、可选的服务品牌(icloud/yahoo/zoho/yandex/generic/fastmail),以及描述该收件箱支持哪些功能的 capabilities 对象。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
provider | enum | 可选 | 可选筛选,只返回由该提供商提供服务的收件箱。可选值之一:gmail、fastmail、imap。省略则列出密钥可访问的所有收件箱。 |
include_capabilities | boolean | 可选 | 每个收件箱是否包含其 capabilities 对象(支持哪些功能)。默认 true;设为 false 可得到仅含 inbox_id、邮箱地址、显示名称、提供商和服务品牌的精简列表。 |
email_readread:emailsearch:email在收件箱中读取、列出和搜索邮件。设置 action:'list' 获取最近邮件摘要(最新优先,可按文件夹/未读筛选并分页),'read' 获取单个 message_id 的完整内容(纯文本正文、可选的净化后 HTML 和附件),'read_batch' 在一次调用中获取最多 50 个 message_ids,'search' 进行结构化、与提供商无关的筛选(from、to、cc、subject、body、text、unread、has_attachment、flagged、since、before),或 'attachment' 将单个附件(按 attachment_index 或 filename)下载为 base64 数据,最大 25 MB。只读,从不更改任何内容。'search' 操作也可由更窄的 search:email 权限单独解锁。 较长的正文将分段返回:请检查 body_truncated,并将 body_next_offset 作为 body_offset 传回以继续读取。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
action | enum | 必需 | 要执行的操作:"list"(最近邮件摘要)、"read"(单个 message_id 的完整内容)、"read_batch"(多个 message_ids)、"search"(结构化筛选)或 "attachment"(将单个附件下载为 base64)。决定其他哪些参数适用。 |
inbox_id | string (uuid) | 可选 | 要读取的收件箱的 UUID。可选:当密钥仅有一个收件箱时自动解析;否则传入此项或 inbox。调用 inbox_list 以发现收件箱 ID。 |
inbox | string | 可选 | 要使用的收件箱的邮箱地址,作为 inbox_id 的便捷替代。可选;若已提供 inbox_id 则忽略。 |
message_id | string | 可选 | 要读取的提供商邮件 ID(action 'read' 或 'attachment'),来自先前的 list 或 search。 |
message_ids | array[string] | 可选 | 要读取的提供商邮件 ID(action 'read_batch'),来自先前的 list 或 search。每次调用最多 50 个。 |
folder | string | 可选 | 要列出的文件夹(action 'list')。默认 "INBOX"。其他值:"SENT"、"DRAFTS"、"TRASH"。 |
unread_only | boolean | 可选 | 仅返回未读邮件(action 'list')。默认 false。 |
limit | integer | 可选 | 要返回的最大结果数(action 'list' 或 'search')。默认 20,最大 100。 |
offset | integer | 可选 | 从零开始的分页偏移量(action 'list' 或 'search')。默认 0。 |
include_html | boolean | 可选 | 包含净化后的 HTML 正文(action 'read'/'read_batch')。默认 false。 |
include_attachments | boolean | 可选 | 包含 base64 附件数据(action 'read'/'read_batch')。在 'read_batch' 中,10 MB 总额度在调用内所有邮件间共享。默认 false。 |
mark_as_read | boolean | 可选 | 获取后将邮件标记为已读(action 'read'/'read_batch')。默认 false。 |
from | string | 可选 | 要匹配的发件人(action 'search'):邮箱地址、显示名称或片段(例如 "alice@example.com" 或 "Alice")。 |
to | string | 可选 | 要匹配的主收件人(To)(action 'search'):邮箱地址、显示名称或片段。 |
cc | string | 可选 | 要匹配的抄送人(Cc)(action 'search'):邮箱地址、显示名称或片段。 |
subject | string | 可选 | 要在主题行中匹配的文本(action 'search')。多词短语按原样匹配。 |
body | string | 可选 | 要在邮件正文中查找的自由文本(action 'search')。(在 Gmail 上,这会匹配整封邮件,而不仅是正文。) |
text | string | 可选 | 要在邮件任意位置匹配的自由文本,涵盖标头和正文(action 'search')。 |
unread | boolean | 可选 | action 'search':true = 仅未读邮件;false = 仅已读邮件;省略则两者皆可。 |
has_attachment | boolean | 可选 | action 'search':true = 仅含附件的邮件。通用 IMAP 不支持(在那里被忽略)。 |
flagged | boolean | 可选 | action 'search':true = 仅已标记/加星的邮件。Outlook/Graph 不支持(在那里被忽略)。 |
since | string (ISO date) | 可选 | ISO 8601 日期或日期时间(action 'search');返回在该时刻当时或之后(>=)收到的邮件。例如 "2026-06-01"。 |
before | string (ISO date) | 可选 | ISO 8601 日期或日期时间(action 'search');返回严格早于(<)该时刻收到的邮件。 |
query | string | 可选 | 提供商原生查询字符串(action 'search',应急手段)。优先使用上面的结构化字段。在受支持处与它们组合使用;在 Fastmail 上被忽略。 |
include_folders | array | 可选 | 将搜索限制在这些文件夹名称内(action 'search')。默认:搜索所有文件夹。 |
email_organizemanage:folders移动、复制、标记或归档邮件。设置 action:'move'/'move_batch'(移动到某个 destination_folder_id)、'copy'/'copy_batch'(复制到某个 destination_folder_id,同时保留原件;仅支持 IMAP、Outlook 和 Fastmail)、'flag'(通过 message_ids 上的 flag_action 设置已读/未读/标记)、'archive'(移出收件箱,非破坏性),或 'search_and_move'(应用于匹配某个结构化搜索的每封邮件,避免过期的邮件 ID)。每个操作都需要与之匹配的权限:移动和复制需要 manage:folders,flag/archive 需要 send:email。删除邮件由独立的 email_delete 工具负责。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
action | enum | 必需 | 要执行的操作:"move"、"move_batch"、"copy"、"copy_batch"、"flag"、"archive" 或 "search_and_move"。决定其他哪些参数适用以及需要哪种权限。 |
inbox_id | string (uuid) | 可选 | 拥有这些邮件的收件箱的 UUID。可选:当密钥仅有一个收件箱时自动解析;否则传入此项或 inbox。调用 inbox_list 以获取可用的收件箱 ID。 |
inbox | string | 可选 | 要使用的收件箱的邮箱地址,作为 inbox_id 的便捷替代。可选;若已提供 inbox_id 则忽略。 |
message_id | string | 可选 | 单封邮件操作(move、copy、archive)的提供商邮件 ID,来自先前的 list、read 或 search。 |
message_ids | array[string] | 可选 | 批量操作(move_batch、copy_batch、flag)的提供商邮件 ID。每次调用最多 500 个。 |
destination_folder_id | string | 可选 | 目标文件夹(move、move_batch、copy、copy_batch、search_and_move):规范别名(inbox、sent、drafts、trash、archive、spam)、文件夹/标签名称(例如 'Receipts'),或来自 folder 的 list 操作的提供商原生文件夹 ID。名称和别名会自动解析。 |
flag_action | enum | 可选 | 对于 action 'flag':要应用到每封邮件的更改:"read" 或 "unread" 设置已读状态,或 "flag"/"unflag" 添加或移除星标/跟进标记。 |
from | string | 可选 | 要匹配的发件人(search_and_move):邮箱地址、显示名称或片段。 |
to | string | 可选 | 要匹配的主收件人(To)(search_and_move):邮箱地址、显示名称或片段。 |
cc | string | 可选 | 要匹配的抄送人(Cc)(search_and_move):邮箱地址、显示名称或片段。 |
subject | string | 可选 | 要在主题行中匹配的文本(search_and_move)。 |
body | string | 可选 | 要在邮件正文中查找的自由文本(search_and_move)。(在 Gmail 上,这会匹配整封邮件。) |
text | string | 可选 | 要在邮件任意位置匹配的自由文本,涵盖标头和正文(search_and_move)。 |
unread | boolean | 可选 | 搜索操作:true = 仅未读;false = 仅已读;省略则两者皆可。 |
has_attachment | boolean | 可选 | 搜索操作:true = 仅含附件的邮件。通用 IMAP 不支持(在那里被忽略)。 |
flagged | boolean | 可选 | 搜索操作:true = 仅已标记/加星的邮件。Outlook/Graph 不支持(在那里被忽略)。 |
since | string (ISO date) | 可选 | ISO 8601 日期或日期时间(搜索操作);匹配在该时刻当时或之后(>=)收到的邮件。 |
before | string (ISO date) | 可选 | ISO 8601 日期或日期时间(搜索操作);匹配严格早于(<)该时刻收到的邮件。 |
query | string | 可选 | 提供商原生查询字符串(搜索操作,应急手段)。优先使用上面的结构化字段。在 Fastmail 上被忽略。 |
include_folders | array | 可选 | 将搜索限制在这些文件夹名称内(搜索操作)。默认:所有文件夹。 |
limit | integer | 可选 | 对于 search_and_move:要处理的最大匹配数。默认 500,最大 500。 |
email_deletedelete:email删除邮件。这是独立工具,与 email_organize 分开,因为删除是破坏性操作。设置 action:'delete'/'delete_batch'(默认进回收站,或永久删除),或 'search_and_delete'(删除匹配某个结构化搜索的每封邮件,避免过期的邮件 ID)。删除默认进回收站,除非你传入 permanent: true,那将不可逆。每个操作都需要 delete:email 权限,整个工具都会向你的 MCP 客户端标记为破坏性操作,在删除任何内容之前由客户端处理用户确认。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
action | enum | 必需 | 要执行的操作:"delete"、"delete_batch" 或 "search_and_delete"。决定其他哪些参数适用。 |
inbox_id | string (uuid) | 可选 | 拥有这些邮件的收件箱的 UUID。可选:当密钥仅有一个收件箱时自动解析;否则传入此项或 inbox。调用 inbox_list 以获取可用的收件箱 ID。 |
inbox | string | 可选 | 要使用的收件箱的邮箱地址,作为 inbox_id 的便捷替代。可选;若已提供 inbox_id 则忽略。 |
message_id | string | 可选 | 单封删除(action 'delete')的提供商邮件 ID,来自先前的 list、read 或 search。 |
message_ids | array[string] | 可选 | 批量删除(action 'delete_batch')的提供商邮件 ID。每次调用最多 500 个。 |
permanent | boolean | 可选 | 为 true 时永久删除(绕过回收站;可能不可逆);为 false 或省略时移至回收站。永久删除在 IMAP 和 Fastmail 上可用;Gmail 和 Outlook 仅支持回收站。默认 false。 |
from | string | 可选 | 要匹配的发件人(search_and_delete):邮箱地址、显示名称或片段。 |
to | string | 可选 | 要匹配的主收件人(To)(search_and_delete):邮箱地址、显示名称或片段。 |
cc | string | 可选 | 要匹配的抄送人(Cc)(search_and_delete):邮箱地址、显示名称或片段。 |
subject | string | 可选 | 要在主题行中匹配的文本(search_and_delete)。 |
body | string | 可选 | 要在邮件正文中查找的自由文本(search_and_delete)。(在 Gmail 上,这会匹配整封邮件。) |
text | string | 可选 | 要在邮件任意位置匹配的自由文本,涵盖标头和正文(search_and_delete)。 |
unread | boolean | 可选 | 搜索操作:true = 仅未读;false = 仅已读;省略则两者皆可。 |
has_attachment | boolean | 可选 | 搜索操作:true = 仅含附件的邮件。通用 IMAP 不支持(在那里被忽略)。 |
flagged | boolean | 可选 | 搜索操作:true = 仅已标记/加星的邮件。Outlook/Graph 不支持(在那里被忽略)。 |
since | string (ISO date) | 可选 | ISO 8601 日期或日期时间(搜索操作);匹配在该时刻当时或之后(>=)收到的邮件。 |
before | string (ISO date) | 可选 | ISO 8601 日期或日期时间(搜索操作);匹配严格早于(<)该时刻收到的邮件。 |
query | string | 可选 | 提供商原生查询字符串(搜索操作,应急手段)。优先使用上面的结构化字段。在 Fastmail 上被忽略。 |
include_folders | array | 可选 | 将搜索限制在这些文件夹名称内(搜索操作)。默认:所有文件夹。 |
limit | integer | 可选 | 对于 search_and_delete:要处理的最大匹配数。默认 500,最大 500。 |
email_composesend:email发送新邮件或回复现有邮件。设置 action:'send' 发送新邮件(to/subject/body,可选 cc/bcc/html_body/reply_to/attachments)、'reply' 回复某个 message_id(线程标头自动设置;可选 reply_all),或 'forward' 将某个 message_id 转发给新收件人(可选择重新附加原始文件)。收件箱的签名会自动追加:在回复和转发时,它位于你的文本之后、引用块之前,由签名的回复模式控制;传入 include_signature: false 可在单封简短邮件中抑制它。三者一经发送均不可撤销。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
action | enum | 必需 | 要执行的操作:"send"、"reply" 或 "forward"。决定其他哪些参数适用。 |
inbox_id | string (uuid) | 可选 | 要从中发送的收件箱的 UUID。可选:当密钥仅有一个收件箱时自动解析;否则传入此项或 inbox。调用 inbox_list 以获取可用的收件箱 ID。 |
inbox | string | 可选 | 要使用的收件箱的邮箱地址,作为 inbox_id 的便捷替代。可选;若已提供 inbox_id 则忽略。 |
message_id | string | 可选 | 原始邮件的提供商邮件 ID(action 'reply' 或 'forward'),来自先前的 list、read 或 search。 |
to | array[string] | 可选 | 收件人邮箱地址('send' 和 'forward' 必填)。最多 50 个。 |
subject | string | 可选 | 邮件主题行(action 'send')。最多 998 个字符。在 reply/forward 时由原邮件派生。 |
body | string | 可选 | 纯文本正文。对于 'reply' 是你的回复内容;对于 'forward' 是置于转发邮件上方的可选备注。 |
cc | array[string] | 可选 | 抄送收件人(send、forward)。默认 []。 |
bcc | array[string] | 可选 | 密送收件人(send、forward)。默认 []。 |
html_body | string | 可选 | 正文的 HTML 版本(multipart/alternative)。调用方负责确保 HTML 安全。 |
reply_to | string | 可选 | Reply-To 标头地址(action 'send')。 |
reply_all | boolean | 可选 | 回复所有原始收件人,即 To + Cc(action 'reply')。默认 false。 |
include_attachments | boolean | 可选 | 重新附加原始邮件的附件(action 'forward')。超出 10 MB 额度的文件将被省略。默认 false。 |
include_signature | boolean | 可选 | 是否将收件箱已配置的签名追加到这封邮件。默认 true;设为 false 可发送这一封不带签名的邮件。 |
attachments | array | 可选 | 文件附件。每项:{ filename、mime_type、data(base64)}。最多 20 项,共 10 MB。 |
idempotency_key | string | 可选 | 可选的不透明键(1–200 个字符),代表一次逻辑上的外发请求。仅在 24 小时内重试完全相同的动作和参数时才可重复使用;参数不同的重复使用会被拒绝。 |
folderread:emailmanage:folders管理邮箱文件夹(在 Gmail 上为标签)。设置 action:'list'(每个文件夹及其提供商原生 ID、显示名称、类型和邮件计数。列出邮件时将这些 ID 用作 folder 参数,并用作移动目标)、'create'(name)、'rename'(folder_id、new_name),或 'delete'(folder_id,不可逆;其中的邮件可能因提供商而丢失)。'list' 需要 read:email;create/rename/delete 需要 manage:folders,且 delete 会向你的 MCP 客户端标记为破坏性操作。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
action | enum | 必需 | 要执行的操作:"list"、"create"、"rename" 或 "delete"。决定其他哪些参数适用以及需要哪种权限。 |
inbox_id | string (uuid) | 可选 | 要管理其文件夹的收件箱的 UUID。可选:当密钥仅有一个收件箱时自动解析;否则传入此项或 inbox。调用 inbox_list 以获取可用的收件箱 ID。 |
inbox | string | 可选 | 要使用的收件箱的邮箱地址,作为 inbox_id 的便捷替代。可选;若已提供 inbox_id 则忽略。 |
name | string | 可选 | 新文件夹或标签的名称(action 'create')。1–255 个字符。 |
folder_id | string | 可选 | 提供商原生的文件夹/标签 ID(action 'rename' 或 'delete'),来自 folder 的 list 操作。 |
new_name | string | 可选 | 新的显示名称(action 'rename')。1–255 个字符。 |
draftmanage:drafts管理收件箱 Drafts 文件夹中的草稿。设置 action:'list'(已保存的草稿,每个都含 draft_id、主题、收件人和创建时间)、'create'(subject/body 必填,可选 to/cc/bcc/html_body)、'update'(draft_id 加上要覆盖的字段),或 'send'(draft_id,移除草稿并发送,不可逆)。收件箱的签名会在草稿创建或更新时嵌入,因此它已经存在于 Drafts 文件夹中,发送时不会再次追加;传入 include_signature: false 可创建不带签名的草稿。在基于 IMAP 的收件箱上,draft_id 在每次更新后都会改变,因此始终使用最新的;Gmail 和 Outlook 保持 draft_id 稳定。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
action | enum | 必需 | 要执行的操作:"list"、"create"、"reply"、"update" 或 "send"。决定其他哪些参数适用。 |
inbox_id | string (uuid) | 可选 | 拥有这些草稿的收件箱的 UUID。可选:当密钥仅有一个收件箱时自动解析;否则传入此项或 inbox。调用 inbox_list 以获取可用的收件箱 ID。 |
inbox | string | 可选 | 要使用的收件箱的邮箱地址,作为 inbox_id 的便捷替代。可选;若已提供 inbox_id 则忽略。 |
draft_id | string | 可选 | 提供商草稿 ID(action 'update' 或 'send'),来自最近的 create、update 或 list 操作。在 IMAP 收件箱上,它在每次更新后都会改变,因此始终使用最新的。 |
subject | string | 可选 | 草稿主题行(action 'create'/'update')。 |
body | string | 可选 | 草稿的纯文本正文(action 'create'/'update')。 |
to | array[string] | 可选 | 收件人地址(action 'create'/'update')。默认 []。 |
cc | array[string] | 可选 | 抄送收件人(action 'create'/'update')。默认 []。 |
bcc | array[string] | 可选 | 密送收件人(action 'create'/'update')。默认 []。 |
html_body | string | 可选 | 可选的 HTML 正文(action 'create'/'update')。 |
include_signature | boolean | 可选 | 是否在草稿中嵌入收件箱已配置的签名(action 'create'/'update')。默认 true;设为 false 可保存不带签名的草稿。 |
idempotency_key | string | 可选 | 可选的不透明键(1–200 个字符),用于一次草稿发送。仅在 24 小时内重试完全相同的发送时才可重复使用;参数不同的重复使用会被拒绝。 |
limit | integer | 可选 | 要返回的最大草稿数(action 'list')。默认 20,最大 50。 |
scheduleschedule:email通过服务器端队列安排邮件在未来发送。设置 action:'create'(to/subject/body 加上 ISO 8601 格式的 send_at 时间戳,收件人和正文会立即校验,无效的发送不会入队)、'list'(待发送的定时任务,最近的优先,可按收件箱筛选),或 'cancel'(scheduled_send_id,只能取消仍为 'pending' 的发送)。调度器每分钟运行一次,因此实际投递可能在 send_at 之后最多 60 秒。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
action | enum | 必需 | 要执行的操作:"create"、"list" 或 "cancel"。决定其他哪些参数适用。 |
inbox_id | string (uuid) | 可选 | 要从中发送(action 'create')或用于筛选(action 'list')的收件箱的 UUID。可选:当密钥仅有一个收件箱时自动解析;否则传入此项或 inbox。调用 inbox_list 以获取可用的收件箱 ID。 |
inbox | string | 可选 | 要使用的收件箱的邮箱地址,作为 inbox_id 的便捷替代。可选;若已提供 inbox_id 则忽略。 |
to | array[string] | 可选 | 收件人邮箱地址(action 'create')。最多 50 个。 |
subject | string | 可选 | 邮件主题行(action 'create')。最多 998 个字符。 |
body | string | 可选 | 邮件的纯文本正文(action 'create')。 |
send_at | string (ISO 8601) | 可选 | 带时区的 ISO 8601 日期时间,指定发送时刻(action 'create')。必须是将来时间,例如 "2026-06-02T09:00:00Z"。 |
cc | array[string] | 可选 | 抄送收件人(action 'create')。默认 []。 |
bcc | array[string] | 可选 | 密送收件人(action 'create')。默认 []。 |
html_body | string | 可选 | 正文的可选 HTML 版本(action 'create')。 |
reply_to | string | 可选 | 可选的 Reply-To 标头地址(action 'create')。 |
attachments | array | 可选 | 文件附件(action 'create')。与 send 操作的结构相同。最多 20 项,共 10 MB。 |
scheduled_send_id | string (uuid) | 可选 | 要取消的定时发送的 UUID(action 'cancel')。 |
idempotency_key | string | 可选 | 可选的不透明键,用于创建单次定时发送。仅在 24 小时内重试完全相同的创建请求时才可重复使用。 |
limit | integer | 可选 | 最大结果数(action 'list')。默认 20,最大 100。 |
contact_searchmanage:contacts通过对你邮箱的实时扫描按姓名或邮箱查找通信人,没有存储的联系人列表。每次调用都会扫描最近的一段匹配邮件窗口,并返回匹配的人员,按最近联系排序,每个都含显示名称、邮箱、匹配邮件数量和最后联系时间戳。计数反映该窗口内的匹配邮件,而非你的完整历史,且调用之间不存储任何内容。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
query | string | 必需 | 姓名或邮箱片段,对显示名称和地址进行不区分大小写的匹配。至少 1 个字符。 |
inbox_id | string (uuid) | 可选 | 可选。将实时扫描限制在一个收件箱。省略则扫描密钥可访问的收件箱(数量有限)。 |
inbox | string | 可选 | 要限制到的收件箱的邮箱地址,作为 inbox_id 的便捷替代。可选;若已提供 inbox_id 则忽略。 |
limit | integer | 可选 | 要返回的最大联系人数。默认 20,最大 50。 |
automationmanage:automations创建并管理无人值守的定时分拣规则。一条规则就是一个已保存的搜索加上一个固定动作,按固定周期重新求值,回路中没有任何模型:邮件只被匹配,绝不被解读。设置 action:'create'(name、filter、rule_action 与 interval_minutes;规则创建时始终处于停用状态)、'list'、'get'、'update'、'enable'、'disable'、'delete'(运行历史会保留)、'runs'(近期运行的计数)或 'preview'(试运行,报告过滤条件此刻匹配到什么,且不执行任何操作)。可用的规则动作为 move、label(Gmail 标签、Outlook 类别或 IMAP 关键字)、mark_read、forward 和 draft_reply。删除邮件不向自动化开放。无论邮箱的审批设置如何,转发始终会被扣留等待人工批准,而 draft_reply 只会写入草稿。启用前请先预览。每个操作都需要 manage:automations。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
action | enum | 必需 | 要执行的操作:「create」、「list」、「get」、「update」、「enable」、「disable」、「delete」、「runs」或「preview」。它决定其余参数中哪些会生效。 |
automation_id | string (uuid) | 可选 | 目标规则的 UUID,由 'create' 或 'list' 返回。get、update、enable、disable、delete 和 runs 必填。preview 可选:传入它即可对已保存的规则试运行,而不是使用临时过滤条件。 |
inbox_id | string (uuid) | 可选 | 规则所监视邮箱的 UUID('create'),或用于预览的邮箱。当密钥恰好只有一个邮箱时可省略;否则请传入本参数或 inbox。 |
inbox | string | 可选 | 邮箱的电子邮件地址,作为 inbox_id 的便捷替代。可选;若已提供 inbox_id 则忽略。 |
name | string | 可选 | 规则的可读名称,1 至 80 个字符。'create' 时必填。 |
filter | object | 可选 | 已保存的搜索,使用与 email_read 的 'search' 操作相同的结构化条件:from、to、cc、subject、body、text、unread、has_attachment、flagged、since、before。至少需要一个条件,因为空过滤条件会匹配你的整个邮箱。此处不接受提供商原生的原始查询字符串:一条规则会在无人值守的情况下连续运行数月,而原始字符串是一种无人校验的方言。 |
rule_action | object | 可选 | 对每个匹配项施加的那一个固定动作,形式为带类型标签的对象,type 可为 move(另加 folder)、label(另加 label;写入为 Gmail 标签、Outlook 类别或 IMAP 关键字)、mark_read、forward(另加 to 以及可选的 note)或 draft_reply(另加 template)。它之所以叫 rule_action,是因为 action 已用于选择操作。不存在任何删除类动作,提出这种请求会被拒绝而非被忽略。转发始终扣留等待批准,draft_reply 只写入草稿。模板只会替换 {{sender_name}}、{{sender_email}}、{{subject}} 和 {{date}},且全部经过 HTML 转义;其余内容一律为字面文本,邮件正文绝不会被插入模板。 |
interval_minutes | enum | 可选 | 两次运行之间的分钟数,取自固定档位 15、30、60、180、360、720 或 1440。'create' 时必填。使用档位而非自由整数,是为了让一分钟一次的规则无法把提供商打到触发限流。 |
max_messages_per_run | integer | 可选 | 单次运行最多可处理的匹配邮件数:1 至 200,默认 25。这就是影响半径,限定一个写错的过滤条件在有人查看运行日志之前最多能触及多少邮件。 |
limit | integer | 可选 | 用于操作 'runs':返回多少次运行记录,最新的在前。默认 20,最大 100。 |
signatureread:emailsend:email读取或配置收件箱的电子邮件签名,该签名会在每次发送、回复、转发、草稿和定时邮件时由服务器端追加。设置 action:'get'(返回当前签名的文本和 HTML、是否启用、回复/转发模式,以及其来源:'manual'、'gmail_import' 或 null),或 'set'(写入 signature_text 和/或 signature_html,以及可选的 signature_enabled 和 signature_reply_mode)。签名支持富文本 HTML:粗体、斜体、标题、列表、颜色、对齐、链接,以及以 https URL 引用的托管徽标/图片,因此代理可以通过传入 signature_html 设置完整格式化的签名。仪表盘中也提供相同的富文本编辑器。设置签名会将其来源标记为 'manual',这将永久覆盖该收件箱的 Gmail 自动导入。'get' 需要 read:email;'set' 需要 send:email。
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
action | enum | 必需 | 要执行的操作:"get"(读取当前签名)或 "set"(写入签名)。决定其他哪些参数适用以及需要哪种权限。 |
inbox_id | string (uuid) | 可选 | 要读取或设置其签名的收件箱的 UUID。可选:当密钥仅有一个收件箱时自动解析;否则传入此项或 inbox。调用 inbox_list 以获取可用的收件箱 ID。 |
inbox | string | 可选 | 要使用的收件箱的邮箱地址,作为 inbox_id 的便捷替代。可选;若已提供 inbox_id 则忽略。 |
signature_text | string | 可选 | 纯文本签名正文(action 'set')。省略则保持不变;传入空字符串可清除它。若仅提供文本,发送时会自动派生出 HTML 版本。 |
signature_html | string | 可选 | 可选的富文本 HTML 签名正文(action 'set')。支持格式(粗体、斜体、下划线、标题、列表、颜色、对齐、链接)以及通过 src 为 https URL 的 <img> 标签引用的托管图片(不支持 base64 或 CID);保存时会进行净化。省略则保持不变;传入空字符串可清除它。 |
signature_enabled | boolean | 可选 | 签名是否追加到外发邮件(action 'set')。默认 true;设为 false 可在不删除文本的情况下停止追加。 |
signature_reply_mode | enum | 可选 | 何时在回复和转发中包含签名(action 'set'):"always"(每次回复/转发)、"first_only"(默认,仅线程中的第一封邮件,避免重复署名)或 "never"。 |
自动化会按计划触碰你的邮箱,而且无人在旁。这与你正在对话的智能体属于不同的风险类别,因此下面这些保证由服务端强制执行,而不是交给你所写的规则去自觉遵守。
一条规则就是一个已保存的查询加上一个固定动作。运行时,服务端对你的邮箱执行该查询,并把该动作施加到匹配项上。没有任何东西会先读你的邮件、再决定拿它怎么办。邮件内容只被匹配,绝不被当作指令来解读,因此提示词注入在无人值守这条路径上是结构性缺席的,而不是被过滤、被评分或被缓解。回路里根本没有可供注入文本对话的对象。
这一点值得直说,因为这一类里真正危险的形态,是一个智能体读取不可信的来信、随后在无人在场的情况下据此行动。EchoLeak,以及被植入后门的 Postmark MCP 服务器等公开事件,让买家对此保持警惕是完全合理的。在交互式会话中,确实有模型读取你的邮件,这正是产品的意义所在,而那里有人在场,并且内容会被标记为不可信数据。定时路径是独自运行的那一条,它里面完全没有模型。
删除并非可用动作,这是刻意设计。移动、加标签、标为已读、转发和起草回复就是全部动作集合。删除是规则一旦出错便无法挽回的唯一动作,因此它在校验层就被排除:任何仅仅提到删除的动作都会被拒绝,而不是被悄悄忽略。
自动化产生的转发会进入审批队列,只有工作区成员批准后才会离开你的邮箱,无论各邮箱的发送审批设置如何。每条规则的收件人数量也有上限。无人值守的规则无法自行把邮件送出你的组织。
draft_reply 规则会在原对话中写入一封未发送的草稿,到此为止。在任何提供商、任何配置下,都不会有任何内容被无人值守地发出。
回复模板按原样存储,永远不会被求值。只有 {{sender_name}}、{{sender_email}}、{{subject}} 和 {{date}} 会被替换,并且全部经过 HTML 转义。邮件正文绝不会被插入,也不存在任何可求值的表达式语法,因此送进你邮箱的任何东西都无法把模板变成一次运算。
每次运行都会记录过滤条件匹配到了什么、每封邮件发生了什么、以及有哪些进入了审批队列,并附带匹配、已处理、成功、失败和跳过的计数。可逆动作会保留撤销所需的状态。运行历史比它所属的规则活得更久,因为它正是对你邮箱做过什么的记录。用操作 'runs' 或在仪表板中查看。
每条规则都以创建它的那把 API 密钥的身份运行。它永远无法超出该密钥已有的范围和邮箱访问权限;它执行的每个动作都会像交互式调用一样计量、限流并写入审计日志;吊销该密钥即可让规则停止。
连续 5 次运行失败后,规则会被自动停用,并记录原因。指向一个已不再响应的邮箱的规则会就此停下,而不是永远每 15 分钟重试一次。
每条规则都带有单次运行最多可处理的邮件数,范围 1 至 200,默认 25,因此一个比你本意更宽泛的过滤条件,在你看到运行日志之前最多只会触及这么多邮件。此外,规则创建时即为停用状态,而预览是一次试运行,它展示过滤条件此刻匹配到什么,却不执行任何操作。
认证、权限范围和速率限制失败会返回一个带有数字代码的 JSON-RPC error 对象。工具执行失败(收件箱未找到、服务商错误、触及合理使用上限等)会返回一个正常的 result,其中 isError: true,并在 content[0].text 中提供人类可读的消息。
| 代码 | 类型 | 发生时机 | 可重试 |
|---|---|---|---|
-32001 | JSON-RPC error | API 密钥缺失、格式错误、已撤销或已过期。当 API 密钥缺少所调用工具所需的权限范围时也会返回。 | 否 |
-32601 | JSON-RPC error | 未知的 JSON-RPC 方法(例如调用 initialize、tools/list、tools/call 以外的方法) | 否 |
-32602 | JSON-RPC error | 未知的工具名称,或 tools/call 中缺少 / 无效的参数 | 否 |
-32003 | JSON-RPC error | 超出每密钥或每工作区的速率限制(HTTP 429)。data.error_code 始终为 "rate_limit_exceeded"。重试前请等待 data.retry_after 秒,或读取 Retry-After 响应头。 | |
isError: true | Tool result | 工具已执行但遇到错误(收件箱未找到、邮件未找到、服务商认证失败、收件人无效、附件过大、服务商 5xx)。错误描述在 content[0].text 中。 | 否 |
isError: true | Tool result | 工作区在当前计费周期内已触及可计费操作的合理使用上限。它以普通工具结果返回,带 isError: true,而不是 JSON-RPC 错误;详情位于 _meta["com.mcpemails/usage_limit"]:error_code "usage_limit_reached" 和 reset_at。在 reset_at 之前重试不可能成功。 | 否 |
// Tool execution error: inbox not found
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [{ "type": "text", "text": "Inbox not found or not accessible." }],
"isError": true
}
}
// Rate limit: JSON-RPC error object with data (HTTP 429). Safe to retry
// after retry_after seconds.
{
"jsonrpc": "2.0",
"id": 3,
"error": {
"code": -32003,
"message": "Rate limit exceeded",
"data": {
"error_code": "rate_limit_exceeded",
"window": "per_minute",
"limit": 100,
"used": 100,
"retry_after": 34
}
}
}
// Fair-use ceiling: a normal tool result (HTTP 200) with isError: true.
// NOT a JSON-RPC error, and NOT retryable until reset_at.
{
"jsonrpc": "2.0",
"id": 4,
"result": {
"content": [{
"type": "text",
"text": "Usage limit reached for this workspace. Calls resume at reset_at."
}],
"isError": true,
"_meta": {
"com.mcpemails/usage_limit": {
"error_code": "usage_limit_reached",
"reset_at": "2026-09-01T00:00:00.000Z",
"dashboard_url": "https://mcpemails.com/dashboard/usage"
}
}
}
}无论套餐如何,均按每个 API 密钥强制执行。超出时,服务器返回 HTTP 429 以及 JSON-RPC 错误代码 -32003、data.error_code: "rate_limit_exceeded" 和一个 data.retry_after 字段(秒)。重试前请遵守该值:这只是一次可以重试的短暂暂停。
这是一个每工作区的合理使用突发限制,在你所有 API 密钥间汇总。超出时,调用会返回错误代码 -32003,并附带 data.error_code: "rate_limit_exceeded"、data.window: "per_minute" 和一个 data.retry_after 倒计时(秒)。Personal、Pro 和 Team 会提高该上限。
每个工作区在每个计费周期内都有一个针对可计费操作的合理使用上限。它远高于真实用量,也不是可以花钱突破的东西,但失控的智能体有可能触及它。触及该上限不是 JSON-RPC 错误:调用会返回 HTTP 200 和一个普通工具结果,带有 isError: true 以及一个 _meta["com.mcpemails/usage_limit"] 区块,其中包含 error_code: "usage_limit_reached" 和 reset_at。这里没有 retry_after,因为在 reset_at 之前重试不可能成功。请把它当作停止信号,而不是退避重试。
对于 rate_limit_exceeded 错误,请在重试前等待 data.retry_after 秒。对于 provider_error 请使用指数退避。请勿在 provider_error 时自动重试 email_compose 发送,因为该邮件可能已被服务商接受。切勿重试 usage_limit_reached:它只在 reset_at 时才会解除。