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{})

选项

字段作用
Clientahasend-go 客户端,包含 API 密钥。必填。
AccountID工具所操作的账户。必填。
DashboardBaseURLAhaSend 仪表盘 URL,用于营销活动链接。必填。
ConfirmationKey至少 32 字节的密钥,用于签署营销活动发送确认问题。必填。
ScopesAPI 密钥的权限范围。仅显示该密钥可使用的工具。nil 显示所有工具。
Toolsets仅显示这些工具集。nil 显示全部。
ReadOnly仅显示不产生任何变更的工具。
Stateless如果通过无状态 HTTP 提供服务,请设为 true。
MaxRecipientsPerSend单次发送的最大收件人数。默认 50。
ReadInbound允许消息工具返回账户收到的邮件。默认关闭。
Blocked如果设置,每次工具调用都会返回此文本作为错误,且不执行任何操作。
Recorder每次工具调用获取一条记录:工具名称、是否成功、错误类型和耗时。绝不包含输入或结果。

如果为多个用户提供服务,请为每个请求使用该用户的密钥和权限范围 构建新的服务器。这样做开销很小。请在每个实例上使用相同的 ConfirmationKey。

Catalogue() 列出每个工具及其所需的权限范围。 OfferedScopes() 列出工具使用的所有权限范围,供用户 选择权限范围的页面使用。

工具

工具集工具
sendingsend_email, send_conversation_email, send_template_email, cancel_scheduled_email
diagnosticslist_messages, get_message, diagnose_message, get_deliverability_stats, get_bounce_stats, get_delivery_time_stats
domainslist_domains, get_domain, add_domain, check_domain_dns, update_domain, delete_domain
templateslist_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
audiencelist_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
campaignslist_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
managementget_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