AhaSend Email API & SMTP relay
官方在您的 AhaSend 账户中发送电子邮件、查明电子邮件发送失败的原因、设置发送域名,以及管理模板、联系人、列表和营销活动。
你可以用 AhaSend Email API & SMTP Relay MCP 做什么?
- 发送邮件 — 让助手发送一次性邮件、模板邮件或会话邮件,并取消已安排的发送。
- 诊断投递 — 查找邮件、查明邮件发送失败的原因,并获取可投递性、退信和投递时间统计。
- 管理域名 — 列出、添加、更新和删除发件域名,并检查域名的 DNS 记录。
- 构建模板 — 创建、更新、发布和版本化模板及营销活动模板,以 AhaML 标记编辑 Simple Editor 设计。
- 管理受众 — 创建和更新联系人、列表和细分,将联系人添加到列表,并预览细分。
- 运行营销活动 — 创建、复制、测试、发送和安排营销活动,然后查看营销活动统计和收件人。
托管 MCP 服务器
npx add-mcp 'https://mcp.ahasend.com/mcp'可安装到 Claude Code、Codex、Cursor 等客户端
文档
ahasend-mcp
一个 Go 模块,包含面向 AhaSend 的 MCP 工具。 借助这些工具,AI 智能体可以发送邮件、查明邮件发送失败的原因, 并管理域名、模板、联系人、列表、营销活动、Webhook、路由、 抑制项、SMTP 凭据和子账户。
每个工具都通过 ahasend-go 调用 AhaSend v2 API。API 密钥的权限范围 决定智能体能执行哪些操作。
该模块使用 官方 Go MCP SDK 构建服务器。你的 程序决定如何提供该服务:stdio、HTTP 或任何其他 SDK 传输方式。
go get github.com/AhaSend/ahasend-mcp
示例
server, err := ahasendmcp.NewServer(
&mcp.Implementation{Name: "my-app", Version: "1.0.0"},
ahasendmcp.Options{
Client: api.NewAPIClient(api.WithAPIKey(apiKey)),
AccountID: accountID,
DashboardBaseURL: "https://dash.ahasend.com",
ConfirmationKey: key, // at least 32 random bytes
},
)
if err != nil {
return err
}
return server.Run(ctx, &mcp.StdioTransport{})
选项
| 字段 | 作用 |
|---|---|
Client | ahasend-go 客户端,包含 API 密钥。必填。 |
AccountID | 工具所操作的账户。必填。 |
DashboardBaseURL | AhaSend 仪表盘 URL,用于营销活动链接。必填。 |
ConfirmationKey | 至少 32 字节的密钥,用于签署营销活动发送确认问题。必填。 |
Scopes | API 密钥的权限范围。仅显示该密钥可使用的工具。nil 显示所有工具。 |
Toolsets | 仅显示这些工具集。nil 显示全部。 |
ReadOnly | 仅显示不产生任何变更的工具。 |
Stateless | 如果通过无状态 HTTP 提供服务,请设为 true。 |
MaxRecipientsPerSend | 单次发送的最大收件人数。默认 50。 |
ReadInbound | 允许消息工具返回账户收到的邮件。默认关闭。 |
Blocked | 如果设置,每次工具调用都会返回此文本作为错误,且不执行任何操作。 |
Recorder | 每次工具调用获取一条记录:工具名称、是否成功、错误类型和耗时。绝不包含输入或结果。 |
如果为多个用户提供服务,请为每个请求使用该用户的密钥和权限范围
构建新的服务器。这样做开销很小。请在每个实例上使用相同的
ConfirmationKey。
Catalogue() 列出每个工具及其所需的权限范围。
OfferedScopes() 列出工具使用的所有权限范围,供用户
选择权限范围的页面使用。
工具
| 工具集 | 工具 |
|---|---|
sending | send_email, send_conversation_email, send_template_email, cancel_scheduled_email |
diagnostics | list_messages, get_message, diagnose_message, get_deliverability_stats, get_bounce_stats, get_delivery_time_stats |
domains | list_domains, get_domain, add_domain, check_domain_dns, update_domain, delete_domain |
templates | list_templates, get_template, get_published_template, create_template, update_template, delete_template, discard_template_draft, publish_template, list_template_versions, get_template_version, restore_template_version, list_campaign_templates, get_campaign_template, create_campaign_template, update_campaign_template, delete_campaign_template |
audience | list_contacts, get_contact, create_contact, upsert_contacts, update_contact, delete_contact, list_contact_lists, list_lists, get_list, create_list, update_list, delete_list, list_list_contacts, add_contacts_to_list, upsert_list_contact, remove_contact_from_list, list_segments, get_segment, create_segment, update_segment, delete_segment, preview_segment, list_segment_contacts, list_contact_segments |
campaigns | list_campaigns, get_campaign, create_campaign, update_campaign, delete_campaign, duplicate_campaign, send_campaign_test, send_campaign, schedule_campaign, unschedule_campaign, get_campaign_stats, list_campaign_recipients |
management | get_account, list_webhooks, get_webhook, create_webhook, update_webhook, delete_webhook, list_routes, get_route, create_route, update_route, delete_route, list_suppressions, add_suppression, remove_suppression, list_smtp_credentials, get_smtp_credential, delete_smtp_credential, list_sub_accounts, get_sub_account, create_sub_account, update_sub_account, get_sub_account_usage |
每个工具都需要其 API 端点所需的权限范围。send_campaign 和
schedule_campaign 还需要 campaigns:read 和 lists:read,以及
segments:read 才能发送使用分段的营销活动。营销活动
模板工具还需要 campaigns:read。preview_segment、
list_segment_contacts 和 list_contact_segments 需要 contacts:read
以及 segments:read。
列表工具默认返回 20 项,最多 100 项。传入返回的 游标以获取下一页。
没有用于创建 API 密钥或 SMTP 凭据、更改账户 设置、账单或团队成员、移除所有抑制项,或删除或 暂停子账户的工具。
Simple Editor 设计与 AhaML
模板、营销活动模板和营销活动工具会以 AhaSend 标记语言(AhaML)——设计的 XML 形式——
读写仪表盘 Simple Editor 的设计,存放在内容的 markup 字段中。get_template 返回
模板的工作副本,即存在草稿时的草稿,因此智能体编辑的是它读取到的内容;get_published_template 返回
发送时使用的副本。
服务器有一个资源,ahasend://docs/ahaml:AhaML 参考,
包含每个标签、属性、限制和错误代码。它也位于
https://ahasend.com/docs/send-api/ahaml。该资源在每个
连接上都会列出,因此没有网络访问权限的智能体也能读取它。
安全规则
营销活动发送需要用户确认。 send_campaign 和
schedule_campaign 会向用户显示一个表单,包含发送时间、联系人数量、
营销活动名称、主题、发件人、列表和分段,以及
排除的列表和分段。仅当用户回答是时才会发送。如果
提问后营销活动发生变化,工具会再次询问。如果客户端
无法显示表单,工具不会发送任何内容,并返回仪表盘中该
营销活动的链接。
一次性发送有收件人限制。 单次发送超过
MaxRecipientsPerSend 个收件人(默认 50)会被拒绝。批量邮件请使用
营销活动。
收到的邮件默认隐藏。 任何人都可以向
账户的入站地址发送邮件,而该邮件可能包含试图
欺骗智能体的文本。除非开启 ReadInbound,消息工具不会返回
收到的邮件。开启后,收到的消息会被标记为
untrusted: true。
错误
当 API 拒绝调用时,工具会返回一个错误,包含 API 的 消息以及后续操作建议。当 API 拒绝 AhaML 时,错误会列出 问题,最多前 100 个,每个都包含其代码、行、列、路径和 提示;API 的消息会给出问题总数。
本地试用
cmd/ahasend-mcp-dev 使用你自己的 API 密钥通过 stdio 提供所有工具。
仅供测试使用。
go build -o ahasend-mcp-dev ./cmd/ahasend-mcp-dev
claude mcp add ahasend \
-e AHASEND_API_KEY=... -e AHASEND_ACCOUNT_ID=... \
-- ./ahasend-mcp-dev
设置 AHASEND_BASE_URL 以使用默认之外的 API。
许可证
MIT