名称: sendgrid-automation 描述: 通过 Rube MCP 自动化 SendGrid 邮件操作,包括发送邮件、管理联系人/列表、发件人身份、模板和分析,使用 Composio。始终优先搜索工具以获取当前模式。 要求: mcp: [rube] 类别: 电子邮件
通过 Rube MCP 的 SendGrid 自动化
通过 Composio 的 SendGrid 工具包自动化 SendGrid 邮件交付工作流,包括营销活动(单次发送)、联系人和列表管理、发件人身份设置和邮件分析。
工具包文档: composio.dev/toolkits/sendgrid
先决条件
- Rube MCP 必须连接(RUBE_SEARCH_TOOLS 可用)
- 通过
RUBE_MANAGE_CONNECTIONS与工具包sendgrid建立活跃的 SendGrid 连接 - 始终先调用
RUBE_SEARCH_TOOLS以获取当前工具模式
设置
获取 Rube MCP: 在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务器。无需 API 密钥 — 只需添加端点即可工作。
- 通过确认
RUBE_SEARCH_TOOLS响应来验证 Rube MCP 是否可用 - 使用工具包
sendgrid调用RUBE_MANAGE_CONNECTIONS - 如果连接未激活,请按照返回的认证链接完成 SendGrid API 密钥认证
- 在运行任何工作流之前确认连接状态显示为激活
核心工作流
1. 创建和发送营销活动(单次发送)
何时使用: 用户希望创建并发送营销邮件活动到联系人列表或细分群体。
工具序列:
SENDGRID_RETRIEVE_ALL_LISTS- 列出可用的营销列表以定位 [先决条件]SENDGRID_CREATE_A_LIST- 如果需要,创建新列表 [可选]SENDGRID_ADD_OR_UPDATE_A_CONTACT- 将联系人添加到列表 [可选]SENDGRID_GET_ALL_SENDER_IDENTITIES- 获取已验证的发件人 ID [先决条件]SENDGRID_CREATE_SINGLE_SEND- 创建带有内容、发件人和收件人的活动 [必需]
SENDGRID_CREATE_SINGLE_SEND 的关键参数:
name: 活动名称(必需)email__config__subject: 邮件主题行email__config__html__content: HTML 正文内容email__config__plain__content: 纯文本版本email__config__sender__id: 已验证的发件人身份 IDemail__config__design__id: 代替 html_content 使用预构建设计send__to__list__ids: 要发送到的列表 UUID 数组send__to__segment__ids: 细分群体 UUID 数组send__to__all: true 以发送到所有联系人email__config__suppression__group__id或email__config__custom__unsubscribe__url: 合规性必需的一项
陷阱:
- 在 CREATE 上设置
send_at不安排发送;它只预填充 UI 日期;使用 Schedule 端点单独安排 send_at: "now"仅对 Schedule 端点有效,不对 CREATE- 必须提供
suppression_group_id或custom_unsubscribe_url以符合退订合规性 - 发件人必须在使用前验证;使用
SENDGRID_GET_ALL_SENDER_IDENTITIES检查 - 嵌套参数使用双下划线表示法(例如
email__config__subject)
2. 管理联系人和列表
何时使用: 用户希望创建联系人列表、添加/更新联系人、搜索联系人或从列表中移除联系人。
工具序列:
SENDGRID_RETRIEVE_ALL_LISTS- 列出所有营销列表 [必需]SENDGRID_CREATE_A_LIST- 创建新联系人列表 [可选]SENDGRID_GET_A_LIST_BY_ID- 获取列表详细信息和示例联系人 [可选]SENDGRID_ADD_OR_UPDATE_A_CONTACT- 更新联系人并与列表关联 [必需]SENDGRID_GET_CONTACTS_BY_EMAILS- 通过电子邮件查找联系人 [可选]SENDGRID_GET_CONTACTS_BY_IDENTIFIERS- 通过电子邮件、电话或外部 ID 查找联系人 [可选]SENDGRID_GET_LIST_CONTACT_COUNT- 操作后验证联系人计数 [可选]SENDGRID_REMOVE_CONTACTS_FROM_A_LIST- 从列表中移除联系人而不删除 [可选]SENDGRID_REMOVE_LIST_AND_OPTIONAL_CONTACTS- 删除整个列表 [可选]SENDGRID_IMPORT_CONTACTS- 从 CSV 批量导入 [可选]
SENDGRID_ADD_OR_UPDATE_A_CONTACT 的关键参数:
contacts: 联系人对象数组(最多 30,000 或 6MB),每个至少有一个标识符:email、phone_number_id、external_id或anonymous_id(必需)list_ids: 要关联联系人的列表 UUID 字符串数组
陷阱:
SENDGRID_ADD_OR_UPDATE_A_CONTACT是异步的;返回 202 和job_id;联系人可能需要 10-30 秒才出现- 列表 ID 是 UUID(例如 “ca7a3796-e8a8-4029-9ccb-df8937940562”),不是整数
- 列表名称必须唯一;重复名称会导致 400 错误
SENDGRID_ADD_A_SINGLE_RECIPIENT_TO_A_LIST使用旧版 API;首选带list_ids的SENDGRID_ADD_OR_UPDATE_A_CONTACTSENDGRID_REMOVE_LIST_AND_OPTIONAL_CONTACTS不可逆;需要明确的用户确认- SendGrid 自动将电子邮件地址转换为小写
3. 管理发件人身份
何时使用: 用户希望设置或查看发件人身份(发件地址)以发送邮件。
工具序列:
SENDGRID_GET_ALL_SENDER_IDENTITIES- 列出所有现有发件人身份 [必需]SENDGRID_CREATE_A_SENDER_IDENTITY- 创建新发件人身份 [可选]SENDGRID_VIEW_A_SENDER_IDENTITY- 查看特定发件人详细信息 [可选]SENDGRID_UPDATE_A_SENDER_IDENTITY- 更新发件人详细信息 [可选]SENDGRID_CREATE_VERIFIED_SENDER_REQUEST- 创建并验证新发件人 [可选]SENDGRID_AUTHENTICATE_A_DOMAIN- 设置域认证以自动验证 [可选]
SENDGRID_CREATE_A_SENDER_IDENTITY 的关键参数:
from__email: 发件电子邮件地址(必需)from__name: 显示名称(必需)reply__to__email: 回复地址(必需)nickname: 内部标识符(必需)address,city,country: 物理地址以符合 CAN-SPAM 合规性(必需)
陷阱:
- 新发件人必须在使用前验证;如果域未认证,会发送验证邮件
- 每个账户最多 100 个唯一发件人身份
- 避免使用具有严格 DMARC 策略的域(如 gmail.com, yahoo.com)作为发件地址
SENDGRID_CREATE_VERIFIED_SENDER_REQUEST发送验证邮件;发件人在验证前不可用
4. 查看邮件统计和活动
何时使用: 用户希望审查邮件交付统计、退信率、打开/点击指标或消息活动。
工具序列:
SENDGRID_RETRIEVE_GLOBAL_EMAIL_STATISTICS- 获取账户范围的交付指标 [必需]SENDGRID_GET_ALL_CATEGORIES- 发现可用于过滤的类别 [可选]SENDGRID_RETRIEVE_EMAIL_STATISTICS_FOR_CATEGORIES- 按类别获取统计信息 [可选]SENDGRID_FILTER_ALL_MESSAGES- 通过收件人、状态或日期搜索邮件活动提要 [可选]SENDGRID_FILTER_MESSAGES_BY_MESSAGE_ID- 获取特定消息的详细事件 [可选]SENDGRID_REQUEST_CSV- 为大数据集将活动数据导出为 CSV [可选]SENDGRID_DOWNLOAD_CSV- 下载导出的 CSV 文件 [可选]
SENDGRID_RETRIEVE_GLOBAL_EMAIL_STATISTICS 的关键参数:
start_date: 开始日期 YYYY-MM-DD(必需)end_date: 结束日期 YYYY-MM-DDaggregated_by: “day”、“week” 或 “month”limit/offset: 分页(默认 500)
SENDGRID_FILTER_ALL_MESSAGES 的关键参数:
query: SQL 类查询字符串,例如status="delivered"、to_email="user@example.com"、使用BETWEEN TIMESTAMP的日期范围limit: 1-1000(默认 10)
陷阱:
SENDGRID_FILTER_ALL_MESSAGES需要 “30 天额外邮件活动历史” 付费附加组件;没有则返回 403- 全局统计信息嵌套在
details[].stats[0].metrics下,不是扁平结构 - 类别统计信息仅对过去 13 个月可用
SENDGRID_RETRIEVE_EMAIL_STATISTICS_FOR_CATEGORIES中每请求最多 10 个类别- CSV 导出每 12 小时限制一次请求;链接在 3 天后过期
5. 管理压制
何时使用: 用户希望检查或管理邮件合规性的退订组。
工具序列:
SENDGRID_GET_SUPPRESSION_GROUPS- 列出所有压制组 [必需]SENDGRID_RETRIEVE_ALL_SUPPRESSION_GROUPS_FOR_AN_EMAIL_ADDRESS- 检查特定电子邮件的压制状态 [可选]
陷阱:
- 压制的地址即使在营销列表中也无法送达
- 活动发送计数可能因压制而低于列表计数
常见模式
ID 解析
在操作前始终将名称解析为 ID:
- 列表名称 -> list_id:
SENDGRID_RETRIEVE_ALL_LISTS并按名称匹配 - 发件人名称 -> sender_id:
SENDGRID_GET_ALL_SENDER_IDENTITIES并按名称匹配 - 联系人电子邮件 -> contact_id:
SENDGRID_GET_CONTACTS_BY_EMAILS带电子邮件数组 - 模板名称 -> template_id: 使用 SendGrid UI 或模板端点
分页
SENDGRID_RETRIEVE_ALL_LISTS: 基于令牌,使用page_token和page_size(最大 1000)SENDGRID_RETRIEVE_GLOBAL_EMAIL_STATISTICS: 基于偏移,使用limit(最大 500)和offset- 始终分页检索列表以避免遗漏现有列表
异步操作
联系人操作(ADD_OR_UPDATE_A_CONTACT、IMPORT_CONTACTS)是异步的:
- 返回 202 和
job_id - 等待 10-30 秒再使用
GET_CONTACTS_BY_EMAILS验证 - 使用
GET_LIST_CONTACT_COUNT确认列表增长
已知陷阱
ID 格式
- 营销列表 ID 是 UUID(例如 “ca7a3796-e8a8-4029-9ccb-df8937940562”)
- 旧版列表 ID 是整数;不与营销 API 端点混合使用
- 发件人身份 ID 是整数
- 模板 ID:动态模板以 “d-” 开头,旧版模板是 UUID
- 联系人 ID 是 UUID
速率限制
- SendGrid 可能返回 HTTP 429;尊重
Retry-After头 - CSV 导出每 12 小时限制一次请求
- 批量联系人更新最大:每请求 30,000 个联系人或 6MB
参数怪癖
- 嵌套参数使用双下划线:
email__config__subject、from__email - CREATE_SINGLE_SEND 上的
send_at只设置 UI 默认,不安排 SENDGRID_ADD_A_SINGLE_RECIPIENT_TO_A_LIST使用旧版 API;recipient_id是 Base64 编码的小写电子邮件SENDGRID_RETRIEVE_ALL_LISTS和SENDGRID_GET_ALL_LISTS都存在;对营销 API 首选 RETRIEVE_ALL_LISTS- 联系人添加是异步的(202);始终在延迟后验证
旧版 vs 营销 API
- 一些工具使用旧版联系数据库 API(
/v3/contactdb/),在新账户上可能返回 403 - 首选营销 API 工具:
SENDGRID_ADD_OR_UPDATE_A_CONTACT、SENDGRID_RETRIEVE_ALL_LISTS、SENDGRID_CREATE_SINGLE_SEND
快速参考
| 任务 | 工具 Slug | 关键参数 |
|---|---|---|
| 列出营销列表 | SENDGRID_RETRIEVE_ALL_LISTS |
page_size, page_token |
| 创建列表 | SENDGRID_CREATE_A_LIST |
name |
| 按 ID 获取列表 | SENDGRID_GET_A_LIST_BY_ID |
id |
| 获取列表计数 | SENDGRID_GET_LIST_CONTACT_COUNT |
id |
| 添加/更新联系人 | SENDGRID_ADD_OR_UPDATE_A_CONTACT |
contacts, list_ids |
| 通过电子邮件搜索联系人 | SENDGRID_GET_CONTACTS_BY_EMAILS |
emails |
| 通过标识符搜索 | SENDGRID_GET_CONTACTS_BY_IDENTIFIERS |
identifier_type, identifiers |
| 从列表中移除 | SENDGRID_REMOVE_CONTACTS_FROM_A_LIST |
id, contact_ids |
| 删除列表 | SENDGRID_REMOVE_LIST_AND_OPTIONAL_CONTACTS |
id, delete_contacts |
| 导入联系人 CSV | SENDGRID_IMPORT_CONTACTS |
字段映射 |
| 创建单次发送 | SENDGRID_CREATE_SINGLE_SEND |
name, email__config__*, send__to__list__ids |
| 列出发件人身份 | SENDGRID_GET_ALL_SENDER_IDENTITIES |
(无) |
| 创建发件人 | SENDGRID_CREATE_A_SENDER_IDENTITY |
from__email, from__name, address |
| 验证发件人 | SENDGRID_CREATE_VERIFIED_SENDER_REQUEST |
from_email, nickname, address |
| 认证域 | SENDGRID_AUTHENTICATE_A_DOMAIN |
domain |
| 全局邮件统计 | SENDGRID_RETRIEVE_GLOBAL_EMAIL_STATISTICS |
start_date, aggregated_by |
| 类别统计 | SENDGRID_RETRIEVE_EMAIL_STATISTICS_FOR_CATEGORIES |
start_date, categories |
| 过滤邮件活动 | SENDGRID_FILTER_ALL_MESSAGES |
query, limit |
| 消息详情 | SENDGRID_FILTER_MESSAGES_BY_MESSAGE_ID |
msg_id |
| 导出 CSV | SENDGRID_REQUEST_CSV |
query |
| 下载 CSV | SENDGRID_DOWNLOAD_CSV |
download_uuid |
| 列出类别 | SENDGRID_GET_ALL_CATEGORIES |
(无) |
| 压制组 | SENDGRID_GET_SUPPRESSION_GROUPS |
(无) |
| 获取模板 | SENDGRID_RETRIEVE_A_SINGLE_TRANSACTIONAL_TEMPLATE |
template_id |
| 复制模板 | SENDGRID_DUPLICATE_A_TRANSACTIONAL_TEMPLATE |
template_id, name |
Powered by Composio