AhaSend Email API & SMTP relay

公式

メールを送信し、メールが失敗した理由を確認し、送信ドメインを設定し、AhaSendアカウントでテンプレート、連絡先、リスト、キャンペーンを管理します。

AhaSend Email API & SMTP Relay MCPで何ができますか?

  • メールを送信 — アシスタントに単発メール、テンプレートメール、または会話メールの送信を依頼し、予約送信をキャンセルします。
  • 配信を診断 — メッセージを検索し、メールが失敗した理由を特定し、配信到達性、バウンス、配信時間の統計を取得します。
  • ドメインを管理 — 送信ドメインの一覧表示、追加、更新、削除を行い、ドメインの DNS レコードを確認します。
  • テンプレートを構築 — テンプレートとキャンペーンテンプレートを作成、更新、公開、バージョン管理し、Simple Editor のデザインを AhaML マークアップとして編集します。
  • オーディエンスを管理 — 連絡先、リスト、セグメントを作成・更新し、連絡先をリストに追加し、セグメントをプレビューします。
  • キャンペーンを実行 — キャンペーンを作成、複製、テスト、送信、予約し、キャンペーンの統計と受信者を確認します。

ホスト型 MCP サーバー

npx add-mcp 'https://mcp.ahasend.com/mcp'

Claude Code、Codex、Cursor などにインストールできます

ドキュメント

ahasend-mcp

AhaSend 向けの MCP ツールを提供する Go モジュールです。 これらのツールを使うと、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{})

オプション

フィールド動作
ClientAPI キーを含む ahasend-go クライアント。必須。
AccountIDツールが操作するアカウント。必須。
DashboardBaseURLAhaSend ダッシュボードの URL。キャンペーンのリンクに使用。必須。
ConfirmationKeyキャンペーン送信の確認を署名する、32 バイト以上のシークレット。必須。
ScopesAPI キーのスコープ。キーが使用できるツールのみが表示されます。nil はすべてのツールを表示します。
Toolsets指定したツールセットのみを表示します。nil はすべてを表示します。
ReadOnly何も変更しないツールのみを表示します。
Statelessステートレス HTTP で提供する場合は true に設定します。
MaxRecipientsPerSend1 回の送信における最大受信者数。デフォルトは 50。
ReadInboundメッセージツールがアカウントが受信したメールを返せるようにします。デフォルトではオフ。
Blocked設定すると、すべてのツール呼び出しがこのテキストをエラーとして返し、何も実行しません。
Recorderツール呼び出しごとに 1 件のレコードを取得します: ツール名、成功、エラー種別、所要時間。入力や結果は含まれません。

多くのユーザーに提供する場合は、リクエストごとにそのユーザーのキーとスコープで 新しいサーバーを構築してください。これは低コストです。すべてのインスタンスで 同じ 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 は segments:read に加えて contacts:read も必要とします。

リスト系ツールはデフォルトで 20 件、最大 100 件を返します。返された カーソルを渡すと次のページを取得できます。

API キーや SMTP 認証情報の作成、アカウント設定・請求・チームメンバーの変更、 すべてのサプレッションの削除、サブアカウントの削除や停止を行うツールはありません。

Simple Editor のデザインと AhaML

テンプレート、キャンペーンテンプレート、キャンペーンの各ツールは、ダッシュボードの Simple Editor のデザインを AhaSend Markup(AhaML、デザインの XML 形式)として、 コンテンツの markup フィールドで読み書きします。get_template は テンプレートの作業コピー(ドラフトが存在する間はそのドラフト)を返すため、エージェントは 読み取ったものを編集します。get_published_template は送信に使用されるコピーを返します。

サーバーには 1 つのリソース ahasend://docs/ahaml があります。これは AhaML リファレンスで、 すべてのタグ、属性、制限、エラーコードを含みます。これは https://ahasend.com/docs/send-api/ahaml にもあります。このリソースはすべての 接続で一覧表示されるため、Web アクセスのないエージェントでも読み取れます。

安全ルール

キャンペーン送信には人の承認が必要です。 send_campaign と schedule_campaign は、送信時刻、連絡先数、キャンペーン名、件名、送信者、リストとセグメント、 除外リストと除外セグメントを含むフォームをユーザーに表示します。ユーザーが「はい」と 回答した場合にのみ送信します。質問後にキャンペーンが変更された場合、ツールは再度 確認します。クライアントがフォームを表示できない場合、ツールは何も送信せず、 ダッシュボードのキャンペーンへのリンクを返します。

単発送信には受信者数の制限があります。 MaxRecipientsPerSend 人(デフォルト 50)を超える 受信者への単一送信は拒否されます。一括メールにはキャンペーンを使用してください。

受信メールはデフォルトで非表示です。 誰でもアカウントの受信アドレスにメールを 送信でき、そのメールにはエージェントを欺こうとするテキストが含まれる可能性があります。 ReadInbound がオンの場合を除き、メッセージツールは受信メールを返しません。オンの場合、 受信メッセージには untrusted: true のマークが付きます。

エラー

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

デフォルト以外の API を使用するには AHASEND_BASE_URL を設定してください。

ライセンス

MIT