AIエージェント向け

SendHQ MCPサーバー

59個の厳密に型付けされたツールを通じて、AIエージェントに1つのSendHQワークスペースを安全かつ完全に操作させられます。メールの送受信、ドメインの検証、テンプレートの公開、到達率の調査が可能です。エージェントを第一の読者として書かれていますが、人間の方もご活用ください。

59個のツールstdioトランスポート、コマンド1つキー管理ツールは0個
インストールと接続(Claude Code)
curl -fsSL https://downloads.sendhq.cc/install.sh | sh
claude mcp add sendhq --env SENDHQ_API_KEY=re_your_key -- sendhq mcp

このサーバーについて

SendHQ MCPサーバーを使うと、AIエージェントがModel Context Protocolを通じて1つのSendHQワークスペースを操作できます。メールの送信(単一送信、一括送信、テンプレート送信、返信、添付ファイル、冪等な再試行)、送信済みメールと受信メール(件名、本文、添付ファイル名)とその配信イベントの読み取りと検索、自動振り分けルール付きのラベルによるメールの整理、下書きと非公開の添付ファイルの管理、ホスト型テンプレートの作成と公開、ドメインとそのDNSの追加と検証、メール受信と受信用アドレスの設定、到達率・バウンス・苦情・サプレッションの確認、アカウントの使用量・請求状態・分析・APIキーのメタデータの読み取りが可能です。

これはsendhq CLIバイナリに組み込まれたローカルのstdioサーバーです。MCPクライアントがsendhq mcpを子プロセスとして起動し、stdin/stdout上でJSON-RPCを使って通信します。各ツール呼び出しは、ワークスペースのAPIキーで認証されたhttps://sendhq.cc/api/v1のSendHQ REST APIへのドキュメント化されたリクエスト1件になります。そのため、MCPサーバーの権限はそのキーの権限とまったく同じで、それを超えることはありません。

  • 8つのグループに分かれた59個のツールは、1つのカタログから生成されています。このカタログはtools.jsonとしても公開されています。
  • 厳密なJSONスキーマ:不明な引数、誤った型、必須フィールドの欠落は、SendHQに届く前にローカルで拒否されます。
  • 構造化されたエラー:安定したcode、HTTPのstatus、explanation(説明)、具体的なremedy(対処法)、再試行が有効かどうかを含みます。
  • 実際にメールを送信するツールやデータを破棄するツールは、説明文の冒頭でその旨を示し、MCPの安全性アノテーションを持っています。
  • --read-onlyモードでは、送信や変更を行うツールがすべて非表示になります。
  • 何もログに記録されません。stdoutにはプロトコルメッセージのみが流れ、APIキーやメッセージの内容がログに残ることはありません。
ドキュメント用MCPエンドポイントとは別物です。SendHQは、https://sendhq.cc/api/mcpで読み取り専用の小さなドキュメント用MCPエンドポイントもホストしています(料金とドキュメントの参照のみで、アカウントへのアクセスはありません)。このページで説明するサーバーは、アカウント単位の完全なサーバーで、ローカルまたは以下のホスト型コネクタとして動作します。

ClaudeとChatGPTでSendHQを使う

インストールは不要です。SendHQはこのサーバーを、同じツールを備えたホスト型コネクタとしてhttps://mcp.sendhq.cc/mcpでも提供しています。キーを貼り付ける代わりに、SendHQアカウントでログインします。

Claude

  1. Settings → Connectorsを開いてディレクトリからSendHQを探すか、Add custom connectorを選んでhttps://mcp.sendhq.cc/mcpを貼り付けます。
  2. ConnectをクリックしてSendHQにログインし、アクセス内容を確認してAllowをクリックします。
  3. 受信トレイの確認、検証済みドメインからのメール送信、バウンスの説明などをClaudeに依頼できます。

ChatGPT

  1. Open Settings → Security and login and turn on Developer mode.
  2. Go to chatgpt.com/plugins, click Create MCP app, name it SendHQ and enter https://mcp.sendhq.cc/mcp.
  3. Sign in to SendHQ and click Allow, then pick SendHQ from the tools menu in a new chat.

Muse by Meta

In Muse, open Connectors and search for SendHQ. Click Connect, sign in to SendHQ and click Allow.

承認と接続解除

  • The request_feature tool sends a feature request to the SendHQ team with your account details, so we can follow up by email.
  • 実際にメールを送信するツールやデータを削除するツールには、その旨のラベルが付いています。アシスタントが事前に確認を求めるかどうかは、アシスタント側でツールごとに設定します。Claudeでは、Settings → Connectors → SendHQでそれらのツールにNeeds approvalを選択してください。
  • コネクタには、アシスタントの名前が付いた専用のAPIキー(例:「Claude (AI connector)」)が発行されます。APIキーでこれを削除すると、即座に接続が解除されます。
  • APIキーの作成や失効、請求の変更はできません。添付ファイルはbase64で送受信され、ローカルファイルへのアクセスはありません。
  • 未払いのワークスペース(連携トライアル)は、アカウントのメールアドレスまたはAWS SESシミュレーターのアドレスにのみ配信できます。

お問い合わせ:postmaster@sendhq.cc。プライバシー:sendhq.cc/privacy。

インストール

sendhqバイナリをインストールします(Linux、macOS、Windows、x86-64およびarm64に対応)。インストーラーはリリースのチェックサムを検証し、デフォルトではバイナリを~/.local/binに配置します。

macOSとLinux
curl -fsSL https://downloads.sendhq.cc/install.sh | sh
Windows PowerShell
irm https://downloads.sendhq.cc/install.ps1 | iex
インストールを確認する
sendhq version
SENDHQ_API_KEY=re_your_key sendhq doctor

ダッシュボードのhttps://sendhq.cc/app#/keysでAPIキーを作成します。MCPサーバーはキーを作成できません。サーバーを起動するコマンドは次の1つだけです。

stdioサーバーを起動する
SENDHQ_API_KEY=re_your_key sendhq mcp

通常、これを手動で実行することはありません。MCPクライアントが起動します。ターミナルで実行すると、stdinでJSON-RPCを待ち受けます。

クライアントを設定する

Claude Code

claude mcp add
claude mcp add sendhq --env SENDHQ_API_KEY=re_your_key -- sendhq mcp

# read-only variant
claude mcp add sendhq-readonly --env SENDHQ_API_KEY=re_your_key -- sendhq mcp --read-only

--scope userを追加するとすべてのプロジェクトで使えるようになり、--scope projectを追加するとプロジェクトの.mcp.jsonに書き込まれます。共有する.mcp.jsonでは、キーをコミットせずに環境変数から参照してください。Claude Codeは.mcp.json内の${VAR}を展開します。

.mcp.json
{
  "mcpServers": {
    "sendhq": {
      "command": "sendhq",
      "args": [
        "mcp"
      ],
      "env": {
        "SENDHQ_API_KEY": "${SENDHQ_API_KEY}"
      }
    }
  }
}

OpenAI Codex

~/.codex/config.toml
[mcp_servers.sendhq]
command = "sendhq"
args = ["mcp"]
env = { SENDHQ_API_KEY = "re_your_key" }

コマンドラインからも設定できます:codex mcp add sendhq --env SENDHQ_API_KEY=re_your_key -- sendhq mcp。

Claude Desktop

claude_desktop_config.json(macOS:~/Library/Application Support/Claude/、Windows:%APPDATA%\Claude\)を編集し、アプリを再起動します。デスクトップアプリはシェルのPATHを引き継がないため、バイナリの絶対パス(which sendhq)を使ってください。

claude_desktop_config.json
{
  "mcpServers": {
    "sendhq": {
      "command": "/Users/you/.local/bin/sendhq",
      "args": [
        "mcp"
      ],
      "env": {
        "SENDHQ_API_KEY": "re_your_key"
      }
    }
  }
}

その他のMCPクライアント

コマンドsendhq、引数["mcp"](必要に応じて"--read-only")、および以下の環境変数を指定してstdioサーバーを設定します。サーバーはMCPプロトコルバージョン2024-11-05、2025-03-26、2025-06-18、2025-11-25に対応し、initialize、ping、tools/list、tools/callを実装しています。ツールの結果には、JSONテキストブロックとstructuredContentの両方が含まれます。

stdioの簡易動作確認(sendhq mcpにパイプする)
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_service_health","arguments":{}}}

アカウント単位のサーバーには、ホスト型のHTTPトランスポートはありません。書き込み可能なリモートMCPエンドポイントにはユーザーごとのOAuthが必要ですが、SendHQはこれを提供していません。ローカルのバイナリなら、キーをすでに保持しているマシン上に留めておけます。

環境変数とフラグ

変数またはフラグ必須意味
SENDHQ_API_KEYはいワークスペースのAPIキー(re_…)。get_service_health以外のすべてのツールで必要です。キーがなくてもサーバーは起動しますが、すべての呼び出しで修正方法を説明する構造化されたauth_errorが返されます。
SENDHQ_API_BASE_URLいいえAPIのベースURL。デフォルトはhttps://sendhq.cc/api/v1です。ローカル環境やステージング環境でのみ使用してください。旧エイリアスとしてSENDHQ_BASE_URLも使用できます。
SENDHQ_MCP_READ_ONLYいいえ1、true、yesを指定すると--read-onlyと同じ動作になります。
--read-onlyいいえメールの送信も状態の変更も行わないツールのみを公開します。非表示のツールは、名前を指定して呼び出されても拒否されます。
SENDHQ_PROFILE / --profileいいえSENDHQ_API_KEYの代わりに、sendhq auth loginでOSのキーリングに保存したキーを使います。両方が存在する場合は環境変数が優先されます。

キーは、設定されたベースURLにAuthorization: Bearerヘッダーとしてのみ送信されます。出力、ログへの記録、エラーでの表示、ツールの結果への含有は一切ありません。

エージェント向けの安全モデル

  • 実際にメールを送信します。send_email、send_batch、send_template_testは実在する人にメールを配信し、配信クレジットを消費します。これらの説明文はSENDS REAL EMAILで始まります。ユーザーがその特定のメッセージの送信を明示的に依頼し、受信者、送信者、内容が確認済みの場合にのみ呼び出してください。
  • 破壊的操作。delete_email、delete_draft、delete_attachment、delete_domain、delete_inbox、remove_suppressionにはdestructiveHint: trueが付いており、説明文はDESTRUCTIVEで始まります。事前にユーザーに確認してください。remove_suppressionは安全のためのブロックを弱めるもので、アドレスが再び使えることを人間が確認した場合にのみ適切です。
  • 状態を変更します。下書き、テンプレート、ドメイン、インボックスの作成や更新、テンプレートの公開、検証の開始はワークスペースを変更しますが、メールは送信しません。
  • 読み取り専用。それ以外はすべてreadOnlyHint: trueで、自由に呼び出しても安全です。
  • このサーバーがDNSを変更することはありません。add_domainは人間が公開するためのレコードを返します。get_domain_connect_linkは、ユーザー本人が開いてDNSプロバイダー上で承認する必要がある同意URLを返します。
  • このサーバーが請求を変更することはありません。get_accountはプラン、使用量、サブスクリプションの状態を読み取るだけです。
  • 未払いのワークスペース(連携トライアル)は、アカウント所有者のメールアドレス(get_account → user.email)またはsuccess@simulator.amazonses.comなどのAWS SESシミュレーターのアドレスにのみ配信でき、添付ファイルは送信できません。
  • 受け付けは配信ではありません。送信が成功するとIDが返されます。配信、バウンス、苦情の証拠は後からlist_email_eventsに届きます。受信トレイへの到達や、相手がメッセージを読んだことを主張してはいけません。
  • 423の一時停止を回避するために別のFromアドレスに切り替えないでください。また、配信停止した受信者や苦情を報告した受信者を再び追加してはいけません。

APIキーは対象外

設計上、APIキーを作成、変更、ローテーション、失効、削除するツールはありません。エージェントが認証情報を発行したり破棄したりしてはいけません。list_api_keysが返すのは、名前、秘密でないプレフィックス、最終使用日時のみです。キーの管理は、ログインした人間がダッシュボードで行います。

ワークフロー

1. 最初の送信

  1. get_service_healthでAPIに到達できることを確認します(キーなしで動作します)。
  2. get_accountで、プラン(access.tier)、残りのクォータ、user.emailを確認します。トライアル中は、このメールアドレスが唯一許可された実在の受信者です。
  3. list_sending_identitiesで使用できるFromアドレスを一覧表示します。空の場合は、先にドメインのワークフローを実行してください。
  4. 送信者、受信者、件名、本文をユーザーに確認してから、idempotency_keyを付けてsend_emailを呼び出します。
  5. 返されたidを指定してlist_email_eventsを呼び出すと、プロバイダーが報告した時点で(通常は数秒から数分)delivery、bounce、complaint、rejectが表示されます。
最初の送信
{
  "name": "send_email",
  "arguments": {
    "from": "Acme <hello@example.com>",
    "to": [
      "owner@example.com"
    ],
    "subject": "SendHQ is connected",
    "text": "It works.",
    "idempotency_key": "first-send-2026-09-26"
  }
}

2. ドメイン検証の一連の流れ

  1. name: "example.com"を指定してadd_domainを呼び出します。結果にはDNSレコード(DKIMのCNAME、SES検証、SPF、推奨されるDMARC)が含まれます。
  2. domain_idを指定してget_dns_providerを呼び出すと、権威DNSプロバイダーが検出され、そのプロバイダーで各レコードに入力すべき正確な相対ホストが返されます。
  3. providers.domainConnect.availableがtrueの場合、get_domain_connect_linkが同意URLを返します。これを人間に渡してください。プロバイダー上で承認されるまで何も変更されません。それ以外の場合は、公開すべきレコードを人間に伝えてください。SPFレコードを2つ公開してはいけません。既存のv=spf1の値にinclude:amazonses.comを統合してください。
  4. verify_domainはDNSとSESを再チェックします。ステータスはpending、checking、propagatingを経てverifiedになります。verify_domainまたはget_domainを30〜60秒ごとにポーリングしてください。DNSの反映には数分から数時間かかることがあります。
  5. statusがverifiedになると、そのドメインのアドレスがlist_sending_identitiesに表示されます。

3. バウンス、苦情、サプレッション

  1. list_blocked_recipientsは、ブロックされたすべてのアドレスをその理由(bounce、complaint、unsubscribe)と件数のサマリーとともに返します。
  2. list_suppressionsはハードバウンスと苦情によるサプレッションを返します。deliverability_statsは過去30日間の配信率、バウンス率、苦情率を返します。list_sender_reputationは、どのFromアドレスがスロットリングまたは一時停止されているかを示します。
  3. サプレッション対象の受信者を含む送信は422 recipient_suppressedで失敗します。その受信者を除外して再送してください。
  4. バウンスしたメールボックスが現在は使えることを人間が確認した場合にのみ、remove_suppressionを呼び出してください。苦情によるサプレッションは恒久的です(409 complaint_suppression_locked)。

4. メールを受信する

  1. ドメイン(多くの場合inbound.example.comのようなサブドメイン)が検証済みである必要があります。
  2. setup_inboundは受信を準備し、MXレコードを1つ返します。これを人間が公開します。
  3. statusがreadyになるまでverify_inboundを呼び出します。
  4. domain_idとlocal_part(例:support)を指定してcreate_inboxを呼び出すと、support@inbound.example.comが作成されます。
  5. direction: "in"とunread: true(必要に応じてinbox_idも)を指定してlist_emailsをポーリングします。メッセージはget_emailで、その会話はget_threadで、添付ファイルはdownload_attachmentで読み取り、mark_email(read: true)で処理済みにします。
  6. send_emailとreply_to_email_idでスレッド内に返信します。SendHQがIn-Reply-To、References、スレッドを設定します。

5. Webhookとイベント通知

SendHQは現在、顧客が設定できるWebhookを提供していないため、Webhook用のツールはありません。プロバイダーからの通知はSendHQ内部で処理され、読み取り操作を通じて公開されます。代わりにポーリングしてください。1通のメッセージの結果にはlist_email_events、最近の変化にはstatus(例:bounced)またはafterを指定したlist_emails、新着の受信メールにはdirection: "in"とunread: trueを指定したlist_emails、新しいサプレッションにはlist_blocked_recipientsを使います。ポーリングは、1つの問い合わせにつき1分に1回程度までにしてください。

6. 配信失敗を診断する

  1. メッセージを探します。direction: "out"とtoまたはqueryを指定してlist_emailsを呼び出すか、IDがわかっている場合はget_emailを使います。status: failedは、SendHQまたはプロバイダーが送信時に拒否したことを意味します。メールのエラーにその理由が記載されています。
  2. list_email_events:bounce(恒久的または一時的、プロバイダーの診断情報付き)、complaint、reject、delivery。イベントがまだない場合は、プロバイダーがまだ報告していないということです。しばらく待ってから再確認してください。
  3. 送信呼び出し自体が失敗した場合は、エラーのcodeを確認します。sender_domain_unverified → ドメイン検証を完了する。recipient_suppressed → そのアドレスは以前にハードバウンスしたか苦情を報告している。sender_paused → list_sender_reputationを確認し、リストの入手元を修正する。trial_recipient_restricted → トライアルの制限。quota_exhausted → get_accountで使用量を確認する。
  4. get_domainでDKIM、SPF、DMARCが引き続き公開されていることを確認します。deliverability_statsで、問題が1通のメッセージだけか、傾向なのかがわかります。
  5. 証拠が示す内容を報告してください。deliveryイベントは受信者側のサーバーがメッセージを受け付けたことを意味し、受信トレイに届いたことや読まれたことを意味するわけではありません。

7. タスク用バケットを管理する(ラベル)

  1. name(例:Agent/Orders)とskip_inbox: trueを指定してcreate_labelを呼び出します。これでラベルがバケットになります。このラベルが付いた受信メールはアーカイブされ、人間の受信トレイには表示されずラベル内にのみ表示されます。
  2. send_email(またはsend_batch)とlabels: ["Agent/Orders"]でタスク用のメールを送信します。その会話への返信は自動的にラベルを引き継ぎ、受信トレイをスキップします。
  3. 自分の会話以外から始まるメールには、振り分けルールを追加します。inbox_id(orders@…のような専用アドレス)、from、to、subjectのいずれかを指定してcreate_label_ruleを呼び出します。受信済みのメールも振り分けるにはapply_to_existing: trueを渡します。
  4. バケットを処理します。label: "Agent/Orders"、direction: "in"、unread: trueを指定してlist_emailsを呼び出し、get_emailまたはget_threadで読み、send_emailとreply_to_email_idで返信し、処理したらmark_emailでread: trueにします。
  5. 紛れ込んだメッセージの出し入れにはlabel_email(add / remove)を使います。受信メッセージにバケットのラベルを追加すると、そのメッセージはアーカイブもされます。
  6. 必要に応じてset_inbox_forwardingを使うと、受信アドレスに届いたすべてのメールのコピーを別のメールボックスに送信できます(転送先は先にメールで確認を行います)。
バケットに送信する
{
  "name": "send_email",
  "arguments": {
    "from": "Orders <orders@example.com>",
    "to": [
      "customer@example.net"
    ],
    "subject": "Order 1042: confirm delivery window",
    "text": "Reply with a time that works.",
    "labels": [
      "Agent/Orders"
    ],
    "idempotency_key": "order-1042-window"
  }
}

8. 添付ファイルとテンプレート

有料プランでは、send_emailのattachmentsで最大10個のファイルを添付できます(それぞれcontent_base64またはローカルのfile_pathが必要です。filenameのデフォルトはファイルのベース名です)。ホスト型テンプレートの場合:create_template → update_template_draft → render_templateでサンプルデータを使ってプレビュー → send_template_test(実際のテストを1通送信) → publish_templateの順に進め、その後template: {key, data}とちょうど1人のto受信者を指定してsend_emailまたはsend_batchで送信します。

結果、ページネーション、エラー

呼び出しが成功すると、APIのJSONオブジェクトがstructuredContentとJSONテキストブロックとして返されます。すべてのlist_*ツールはlimit(1〜200、デフォルト50)とoffsetを受け付け、paginationオブジェクトを付加します。has_moreがtrueの間は、offset: pagination.next_offsetを指定して呼び出しを続けてください。

ページネーションされた結果
{
  "data": [
    "…"
  ],
  "count": 50,
  "pagination": {
    "offset": 0,
    "limit": 50,
    "returned": 50,
    "total": 180,
    "has_more": true,
    "next_offset": 50
  }
}

呼び出しが失敗すると、構造化されたエラーとともにisError: trueが返されます。むやみに再試行せず、remedyに従ってください。再試行するのはretryableがtrueの場合だけにしてください。

構造化されたツールエラー
{
  "error": {
    "code": "trial_recipient_restricted",
    "status": 402,
    "message": "The integration trial can deliver only to your account email or an AWS SES simulator address",
    "retryable": false,
    "explanation": "This workspace is on the unpaid integration trial. Trial sends can be delivered only to the account owner's email address or an AWS SES simulator address.",
    "remedy": "Send to the account email (get_account -> user.email) or a simulator address such as success@simulator.amazonses.com to test. To email anyone else, the account owner must activate a paid plan in the dashboard (Profile & Billing). Do not retry the same recipients."
  }
}

任意のエラーフィールド:request_id(サポートへの問い合わせ時に伝えてください)、retry_after_seconds、problems(invalid_argumentsの場合のスキーマ違反のリスト)、idempotent_replayed(「冪等性」を参照)。

冪等性

send_emailとsend_batchはidempotency_key(最大200文字)を受け付け、Idempotency-Keyヘッダーとして送信します。論理的なメッセージごとに一定のキーを1つ生成してください(例:invoice-4812-receipt)。

  • 再試行では、同じキーと同一のリクエストボディの両方を再利用する必要があります。同じキーで何かを変更すると(受信者、件名、本文、ヘッダー、テンプレートデータ、さらには引数の値でも)、409 idempotency_conflictが返されます。
  • 同じキー、同じボディで、元のリクエストが完了している場合:SendHQは再送せずに保存済みの結果を返します。これが、タイムアウトやnetwork_errorの後に安全に再試行する方法です。
  • 元のリクエストがまだ実行中に同じキーを使った場合:409 idempotency_in_progressが返されます。少し待ってから再試行できます。
  • 新しい論理的なメッセージには新しいキーが必要です。
  • 保存された失敗も再生されます。最初の試行が失敗した場合、同じキーで再試行すると、同じ失敗がidempotent_replayed: trueとretryable: false付きで返されます。list_emails(direction: out)で何も送信されていないことを確認し、原因を修正してから、新しいキーで送信してください。
  • サーバーがPOSTを自動で再試行することはありません。自動的に再試行されるのは読み取り専用のGET呼び出しだけです(ネットワークエラー、429、5xxの場合に最大3回)。
  • インラインのattachmentsを指定したsend_emailは複数のリクエストを実行するため、idempotency_keyを受け付けません。再試行しても安全な添付ファイル付きの送信には、create_draft → upload_attachment → draft_idとidempotency_keyを指定したsend_emailの順に使ってください。
再試行しても安全な送信(タイムアウト時はまったく同じ内容で繰り返す)
{
  "name": "send_email",
  "arguments": {
    "from": "Acme <billing@example.com>",
    "to": [
      "owner@example.com"
    ],
    "subject": "Receipt #4812",
    "text": "Thanks for your payment.",
    "idempotency_key": "receipt-4812"
  }
}

レート制限とクォータ

SendHQは、APIについて1秒あたりのリクエスト数の固定上限を公表していません。エージェントが実際に直面する制限は使用量の上限で、429として返されます。

  • プランごとの月間受信者配信数。To、Cc、Bccの各アドレスがそれぞれ1配信としてカウントされます。get_account → usage.recipientDeliveriesとusage.emailQuotaMonthを比較してください。
  • Fromアドレスごとの1日あたりの受信者数。その送信者のレピュテーションの状態によって決まります(list_sender_reputation → dailyLimit、有料プランのデフォルトは2,000)。
  • 連携トライアル:合計100受信者まで。アカウントのメールアドレスまたはSESシミュレーターのアドレスにのみ送信できます。
  • 添付ファイル:1メッセージあたり最大10ファイル、10 MBまで。有料プランでは、受信者数で重み付けした添付ファイルの転送量が月10 GBまで。
  • リクエストごと:To + Cc + Bccで最大100アドレス。send_batchは最大100メッセージ。
  • レピュテーションのサーキットブレーカー:直近7日間のローリングウィンドウで、バウンスや苦情がしきい値を超えると、該当するFromアドレスがスロットリングまたは一時停止されます(423 sender_paused)。率が下がれば自動的に回復します。

quota_exhaustedは、期間がリセットされるかプランが変更されるまで再試行できません。rate_limitedはretry_after_secondsの経過後に再試行できます。送信の場合は、同じidempotency_keyと同一のボディで再試行してください。

エラー一覧

codeは安定しています。messageではなく、こちらで分岐してください。

codeHTTP再試行意味と対処法
invalid_arguments—いいえ引数がツールのJSONスキーマのローカル検証に失敗しました。SendHQには何も届いていません。problemsに記載されたフィールドを修正してください。
auth_error401いいえAPIキーがない、失効している、または誤っています。サーバープロセスにSENDHQ_API_KEYを設定してください。キーは人間がダッシュボードで作成します。
trial_recipient_restricted402いいえ連携トライアルでは、アカウントのメールアドレスまたはSESシミュレーターのアドレスにのみ配信できます。そこに送信するか、所有者が有料プランを有効にしてください。
payment_required402いいえこの機能(添付ファイルなど)には有料プランが必要です。その機能を使わずに送信するか、アップグレードしてください。
sender_domain_not_owned403いいえFromのドメインがこのワークスペースにありません。list_sending_identitiesまたはadd_domainを使ってください。
sender_domain_unverified403いいえFromのドメインがまだ検証されていません。get_domainで確認し、不足しているレコードを公開して、verify_domainを実行してください。
domain_limit_reached403いいえプランのドメイン数の上限に達しました。使っていないドメインを(承認を得て)削除するか、アップグレードしてください。
marketing_not_enabled403いいえこのドメインまたはプランではマーケティングクラスが有効になっていません。メッセージが本当にトランザクションメールである場合にのみtransactionalを使ってください。
forbidden403いいえポリシーによりこの操作は許可されていません。リクエストを調整してください。
not_found404いいえIDがこのワークスペースにありません。リソースを一覧表示して正しいIDを確認してください。アーカイブ済みのテンプレートは先に復元してください。
idempotency_conflict409いいえキーが異なるボディで再利用されました。元のリクエストをまったく同じ内容で再送するか、新しいメッセージには新しいキーを使ってください。
idempotency_in_progress409はい元のリクエストがまだ実行中です。待ってから、同じキーとボディで再試行してください。
revision_conflict409いいえ読み取った後にテンプレートの下書きが変更されました。get_templateで取得し、変更をマージして、再度保存してください。
complaint_suppression_locked409いいえ受信者が苦情を報告しています。今後そのアドレスには絶対にメールを送らないでください。
inbound_not_ready409いいえメール受信の準備ができていません。setup_inboundを実行し、MXを公開して、verify_inboundを実行してください。
conflict409いいえリソースがすでに存在するか、状態が正しくありません。リソースを読み取って調整してください。
attachments_too_large413いいえ10ファイルまたは10 MBを超えています。添付ファイルを削除するか小さくしてください。
recipient_suppressed422いいえ受信者が以前にハードバウンスしたか苦情を報告しています。その受信者を除外してください。list_blocked_recipientsを参照してください。
recipient_unsubscribed422いいえ受信者がマーケティングメールの配信を停止しています。その受信者を恒久的に除外してください。
validation_failed422いいえ内容が拒否されました(変数の仕様に違反するテンプレートデータなど)。入力を修正してください。
sender_paused423いいえこのFromアドレスは、7日間のバウンス・苦情のサーキットブレーカーによって一時停止されています。送信を停止し、リストを修正して、自動回復を待ってください。
quota_exhausted429いいえ月間、送信者ごとの1日あたり、添付ファイル、またはトライアルの上限に達しました。get_accountを確認し、リセットを待つかアップグレードしてください。
rate_limited429はいペースを落としてください。retry_after_secondsだけ待ちます。送信の場合は同じキー、同じボディを使います。
server_error5xxはいSendHQまたはプロバイダーの一時的な障害です。間隔を空けて再試行してください。送信の場合は同じキーとボディを使います。idempotent_replayedがtrueの場合は、何も送信されていないことを確認してから新しいキーを使ってください。
network_error—はいリクエストまたはレスポンスが失われました。再試行してください。送信の場合は、同じidempotency_keyを使えば安全に再試行できます。
invalid_request400いいえリクエストの形式が不正です。messageを読んで修正してください。
tool_error—いいえMCPサーバー内部でのローカルな失敗です(読み取れないfile_pathなど)。messageを確認してください。

ツールリファレンス

すべてのツールについて、安全性の分類、呼び出すRESTエンドポイント、パラメータ、戻り値の形式、tools/callのparamsオブジェクトの例を記載しています。パラメータは厳密で、記載されていないものはすべてサーバーに拒否されます。

メールとスレッド:send_email、send_batch、list_emails、get_email、mark_email、delete_email、list_email_events、get_thread
ラベルと自動振り分けルール:list_labels、get_label、create_label、update_label、delete_label、create_label_rule、delete_label_rule、label_email
下書き、添付ファイル、送信者ID:list_sending_identities、create_draft、list_drafts、get_draft、update_draft、delete_draft、upload_attachment、download_attachment、delete_attachment
ホスト型テンプレート:list_templates、create_template、get_template、update_template_draft、create_template_draft、render_template、send_template_test、publish_template、archive_template、restore_template
ドメインとDNS:list_domains、get_domain、add_domain、verify_domain、delete_domain、get_dns_provider、get_domain_connect_link
メール受信:setup_inbound、verify_inbound、list_inboxes、get_inbox、create_inbox、update_inbox、set_inbox_forwarding、delete_inbox
到達率、バウンス、サプレッション:deliverability_stats、list_sender_reputation、list_suppressions、remove_suppression、list_blocked_recipients
アカウント、使用量、分析、キー:get_account、get_analytics、list_api_keys、get_service_health

メールとスレッド

実際にメールを送信send_email
POST /emails

メールを1通送信する

SENDS REAL EMAIL。検証済みドメインから1通のメッセージを送信します。直接指定したhtml/text、公開済みのホスト型テンプレート、既存スレッドへの返信、添付ファイル付きのメッセージに対応します。再試行で二重送信されないようidempotency_keyを渡してください。再試行では同じキーと同一のリクエストの両方を再利用する必要があり、そうでない場合SendHQは409を返します。attachmentsは、下書きを作成し、各ファイルをアップロードして、その下書きで送信する便利機能です。idempotency_keyやdraft_idとは併用できません(再試行しても安全な添付ファイル付き送信には、create_draft + upload_attachment + draft_idを指定したsend_emailを使ってください)。未払いのワークスペース(連携トライアル)は、アカウントのメールアドレスまたはAWS SESシミュレーターのアドレスにのみ配信でき、添付ファイルは送信できません。

html、text、templateのうち少なくとも1つを指定してください。

パラメータ型必須説明
fromstringはい送信者。例:Acme <hello@example.com>。ドメインがこのワークスペースで検証済みである必要があります(list_sending_identitiesを参照)。(最大998文字)
tostring[]はい受信者。各エントリーはアドレスで、表示名を付けることもできます。to+cc+bccの合計は最大100件で、宛先ごとに配信クレジットを1つ消費します。(1〜100件)
ccstring[]いいえCcの受信者。(0〜100件)
bccstring[]いいえBccの受信者。(0〜100件)
subjectstringいいえ件名。テンプレートを送信する場合は省略します。(最大998文字)
textstringいいえプレーンテキストの本文。text、html、templateのいずれかを指定してください。
htmlstringいいえHTMLの本文。SendHQがサニタイズし、textが省略された場合はテキスト版を生成します。
reply_tostringいいえReply-Toアドレス。
headersobjectいいえ追加の安全なカスタムヘッダー(値は文字列)。例:{"X-Entity-Ref-ID": "123"}。From/To/Message-IDなどのルーティングヘッダーはSendHQが制御します。
message_classstringいいえtransactional(デフォルト)またはmarketing。マーケティングには、マーケティングが有効なプランまたはドメインが必要で、配信停止の処理が追加されます。(transactional、marketingのいずれか)
reply_to_email_idstringいいえ既存の会話の中で返信します。返信先のメッセージのem_… IDを指定します。SendHQがIn-Reply-To/Referencesとスレッドを設定します。
thread_idstringいいえメッセージを振り分ける明示的なスレッドID。
draft_idstringいいえ保存済みの下書き(dr_…)の添付ファイルをこのメッセージで送信します。送信が成功すると下書きは削除されます。
templateobjectいいえ直接指定したhtml/textの代わりに、公開済みのホスト型テンプレートを送信します。to受信者がちょうど1人で、cc/bccがないことが必要です。件名はテンプレートが提供します。id、keyのうち少なくとも1つを指定してください。
template.idstringいいえテンプレートID(tmpl_…)。idまたはkeyを指定してください。
template.keystringいいえaccount-welcomeなどのテンプレートキー。idまたはkeyを指定してください。
template.version_idstringいいえ任意の公開済みリリースID(tmplv_…)。デフォルトは現在の公開済みリリースです。
template.dataobjectいいえテンプレートの型付き変数に渡す値。
labelsstring[]いいえこのメッセージを振り分けるラベル名またはlbl_… ID。存在しない名前は作成されます。会話内の返信はラベルを引き継ぎ、バケットのラベル(skip_inbox)はそれらの返信を受信トレイに入れません。最大10個。(0〜10件)
idempotency_keystringいいえIdempotency-Keyヘッダー(最大200文字)。このリクエストをまったく同じ内容で再試行する場合にのみ再利用してください。(最大200文字)
attachmentsobject[]いいえ添付するファイル(最大10ファイル、合計10 MB)。それぞれcontent_base64(とfilename)またはローカルのfile_pathが必要です。(0〜10件)content_base64、file_pathのうち少なくとも1つを指定してください。
attachments[].filenamestringいいえ受信者に表示されるファイル名。content_base64を使う場合は必須です。デフォルトはfile_pathのベース名です。(最大255文字)
attachments[].content_typestringいいえMIMEタイプ。例:application/pdf。デフォルトはapplication/octet-streamです。
attachments[].content_base64stringいいえ標準のbase64でエンコードしたファイルの内容。
attachments[].file_pathstringいいえMCPサーバーのプロセスが読み取れるローカルファイルの絶対パス。
戻り値{id: em_…, providerMessageId, threadId, templateId, templateVersionId, isTest}。受け付けは配信ではありません。list_email_eventsで追跡してください。
tools/callのparamsの例
{
  "name": "send_email",
  "arguments": {
    "from": "Acme <hello@example.com>",
    "to": [
      "owner@example.com"
    ],
    "subject": "Your export is ready",
    "text": "Download it from your dashboard.",
    "idempotency_key": "export-ready-42"
  }
}
実際にメールを送信send_batch
POST /emails/batch

個別化したメールを一括送信する

SENDS REAL EMAIL。1回のリクエストで1〜100通の独立したメッセージを送信します(受信者ごとにテンプレートを個別化する場合はこれを使います)。各項目はsend_emailと同じ形式です(attachments/idempotency_keyを除く)。項目ごとに個別に成功または失敗します。HTTP 207は一部成功を意味するため、各data[i].okとdata[i].errorを確認してください。1つのidempotency_keyがバッチのボディ全体に適用されます。

パラメータ型必須説明
emailsobject[]はい送信するメッセージ。(1〜100件)html、text、templateのうち少なくとも1つを指定してください。
idempotency_keystringいいえバッチ全体に対するIdempotency-Key(最大200文字)。(最大200文字)
戻り値{data: [{index, ok, id?, error?: {message, status}}], count, successful, failed}。
tools/callのparamsの例
{
  "name": "send_batch",
  "arguments": {
    "emails": [
      {
        "from": "Acme <hello@example.com>",
        "to": [
          "owner@example.com"
        ],
        "template": {
          "key": "account-welcome",
          "data": {
            "first_name": "Asha"
          }
        }
      }
    ],
    "idempotency_key": "welcome-batch-2026-09-26"
  }
}
読み取り専用list_emails
GET /emails

メールを一覧表示・検索する

送信済みメール(direction: out)と受信メール(direction: in)を、フィルター付きで新しい順に一覧表示します。受信メールは分類されています。人間の受信トレイを読むにはdirection: in、archived: false、category: primaryを指定し、優先度の判断にはimportant: trueを使います。迷惑メールは、category: spamまたはinclude_spam: trueを指定しない限り非表示です。ページネーションあり:結果にはpagination {offset, limit, returned, total?, has_more, next_offset}が含まれます。

パラメータ型必須説明
directionstringいいえ受信メールはin、送信済みメールはout。(in、outのいずれか)
statusstringいいえステータスによるフィルター。例:queued、sent、delivered、bounced、complained、failed。
domainstringいいえこのドメイン、またはカンマ区切りのドメインのリスト(いずれかに一致)のメッセージのみ。
inbox_idstringいいえこのインボックス(inb_…)が受信したメッセージのみ。
labelstringいいえこのラベルが付いたメッセージのみ。ラベルID lbl_…または正確な名前、あるいはカンマ区切りのリスト(いずれかに一致)を指定します。フォルダを確認するにはlist_labelsを使ってください。
archivedbooleanいいえfalse = 受信トレイビュー(アーカイブされていない受信メール)、true = アーカイブ済みのみ。すべてのメールを対象にする場合は省略します。
categorystringいいえprimary(人からのメール)、updates(ニュースレター、一斉送信メール、自動送信メール)、spam、またはカンマ区切りのリスト。迷惑メールは指定しない限り非表示です。
importantbooleanいいえtrue = 重要フラグが付いたメッセージのみ(自分が開始した会話への返信と、重要とマークされた送信者からのメール)。
include_spambooleanいいえ結果に迷惑メールを含めます(すべてのフォルダを横断して検索する場合)。
fromstringいいえ送信者アドレスにこの値を含むもの。
tostringいいえ受信者アドレスにこの値を含むもの。
unreadbooleanいいえtrue = 未読のみ、false = 既読のみ。
afterstringいいえISO-8601形式のタイムスタンプ。この日時より後に作成されたメッセージのみ。(date-time)
beforestringいいえISO-8601形式のタイムスタンプ。この日時より前に作成されたメッセージのみ。(date-time)
querystringいいえ件名、本文、送信者/受信者のアドレス、添付ファイル名を対象としたフリーテキスト検索。(最大200文字)
limitintegerいいえページサイズ。デフォルトは50です。(デフォルト50、1〜200)
offsetintegerいいえスキップするレコード数。前のページのpagination.next_offsetを使います。(デフォルト0、0〜…)
戻り値{data: [メールの概要], count, pagination}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "list_emails",
  "arguments": {
    "direction": "in",
    "unread": true,
    "limit": 25
  }
}
読み取り専用get_email
GET /emails/:email_id

メールを1通取得する

ヘッダー、html/textの本文、ステータス、スレッドのメタデータ、添付ファイルのメタデータを含むメッセージを1通取得します(バイトデータはdownload_attachmentでダウンロードします)。

パラメータ型必須説明
email_idstringはいメールID(em_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
戻り値メールオブジェクト:{id, direction, status, from, to, cc, bcc, subject, html, text, threadId, messageId, providerMessageId, readAt, createdAt, attachments: [{id, filename, contentType, sizeBytes, available}]}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "get_email",
  "arguments": {
    "email_id": "em_123"
  }
}
状態を変更mark_email
PATCH /emails/:email_id

既読、アーカイブ、迷惑メール、重要としてマークする

1通のメッセージを更新します:read、archived、category(primary、updates、spam。受信メールのみ)、important。迷惑メールとして報告したり重要とマークしたりすると、SendHQはその送信者について学習し、今後のメールに反映します。このメッセージだけを変更するにはlearn: falseを渡します。少なくとも1つのフィールドを渡してください。

パラメータ型必須説明
email_idstringはいメールID(em_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
readbooleanいいえtrue = 既読、false = 未読。
archivedbooleanいいえtrue = アーカイブ(受信トレイをスキップ)、false = 受信トレイに戻す。
categorystringいいえ受信メッセージをprimary、updates、spamのいずれかに移動します。(primary、updates、spamのいずれか)
importantbooleanいいえメッセージに重要フラグを付ける、または外します。
learnbooleanいいえfalse = この判定を送信者に対して記憶しない(デフォルトはtrue)。
戻り値更新されたメールオブジェクト。
アノテーションidempotentHint
tools/callのparamsの例
{
  "name": "mark_email",
  "arguments": {
    "email_id": "em_123",
    "read": true
  }
}
破壊的操作delete_email
DELETE /emails/:email_id

メールを削除する

DESTRUCTIVE:保持されているメッセージとその保存済み添付ファイルをSendHQから完全に削除します。すでに配信されたメッセージを取り消すものではありません。

パラメータ型必須説明
email_idstringはいメールID(em_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
戻り値{ok: true}。
アノテーションdestructiveHint idempotentHint
tools/callのparamsの例
{
  "name": "delete_email",
  "arguments": {
    "email_id": "em_123"
  }
}
読み取り専用list_email_events
GET /emails/:email_id/events

メールの配信イベントを一覧表示する

送信済みメッセージ1通に対するプロバイダーのイベント:delivery、bounce、complaint、reject、open、click。これが、メッセージが配信されたかどうか、または失敗した理由を示す証拠です。ページネーションあり:結果にはpagination {offset, limit, returned, total?, has_more, next_offset}が含まれます。

パラメータ型必須説明
email_idstringはいメールID(em_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
limitintegerいいえページサイズ。デフォルトは50です。(デフォルト50、1〜200)
offsetintegerいいえスキップするレコード数。前のページのpagination.next_offsetを使います。(デフォルト0、0〜…)
戻り値{data: [{event_type, recipient, reason, created_at, …}], count, pagination}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "list_email_events",
  "arguments": {
    "email_id": "em_123"
  }
}
読み取り専用get_thread
GET /threads/:thread_id

会話を取得する

会話内のすべてのメッセージ(送信・受信とも)を、それぞれの添付ファイルのメタデータとともに時系列順に取得します。

パラメータ型必須説明
thread_idstringはいスレッドID(通常は最初のメッセージのem_… ID。任意のメールのthreadIdを参照)。(最大128文字)
戻り値{id, subject, data: [メール]}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "get_thread",
  "arguments": {
    "thread_id": "em_123"
  }
}

ラベルと自動振り分けルール

読み取り専用list_labels
GET /labels

ラベルを一覧表示する

ワークスペースのラベル(フォルダ)を、合計数、未読数、自動振り分けルールとともに一覧表示します。ページネーションあり:結果にはpagination {offset, limit, returned, total?, has_more, next_offset}が含まれます。

パラメータ型必須説明
limitintegerいいえページサイズ。デフォルトは50です。(デフォルト50、1〜200)
offsetintegerいいえスキップするレコード数。前のページのpagination.next_offsetを使います。(デフォルト0、0〜…)
戻り値{data: [{id, name, color, totalCount, unreadCount, rules: [...]}], count, pagination}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "list_labels",
  "arguments": {}
}
読み取り専用get_label
GET /labels/:label_id

ラベルを取得する

件数と自動振り分けルールを含むラベルを1つ取得します。

パラメータ型必須説明
label_idstringはいラベルID(lbl_で始まる)または正確なラベル名。(最大128文字)
戻り値ラベルオブジェクト。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "get_label",
  "arguments": {
    "label_id": "Billing"
  }
}
状態を変更create_label
POST /labels

ラベルを作成する

フォルダ型のラベルを作成します。skip_inbox: trueを設定すると、エージェントが管理するバケットになります。labels: [name]を指定して送信すると、返信はそのラベルに振り分けられ、受信トレイには入りません。任意の自動振り分けルールで、新しい送信メールや受信メールを振り分けられます(ルールのすべての条件に一致する必要があります)。保持済みのメールも振り分けるにはapply_to_existingを設定します。

パラメータ型必須説明
namestringはいラベル名。例:Billing、Clients/Acme。ワークスペース内で一意(大文字と小文字を区別しない)。(最大64文字)
colorstringいいえ#1a73e8のような16進数のカラーコード。任意。
skip_inboxbooleanいいえバケットモード:このラベルが付いた受信メール(ルールによるもの、このラベル付きで送信した会話への返信、手動で付けたもの)はアーカイブされ、受信トレイではなくラベル内にのみ表示されます。
rulesobject[]いいえ任意の自動振り分けルール(最大20個)。それぞれinbox_id、from、to、subjectのうち少なくとも1つが必要です。(0〜20件)
rules[].directionstringいいえin(受信)またはout(送信)のメールのみ。両方を対象にする場合は省略します。(in、outのいずれか)
rules[].inbox_idstringいいえこのインボックス(inb_…)が受信したメールのみ。受信アドレスごとに専用のフォルダへ振り分けられます。
rules[].fromstringいいえ送信者にこのテキストを含むもの(大文字と小文字を区別しない)。例:@stripe.com。(最大200文字)
rules[].tostringいいえTo/Ccにこのテキストを含むもの(大文字と小文字を区別しない)。(最大200文字)
rules[].subjectstringいいえ件名にこのテキストを含むもの(大文字と小文字を区別しない)。(最大200文字)
rules[].skip_inboxbooleanいいえ一致した受信メールをアーカイブし、受信トレイではなくラベルのフォルダにのみ表示します。
apply_to_existingbooleanいいえルールに一致する保持済みのメールも振り分けます。
戻り値作成されたラベル(ルールを含む)。
tools/callのparamsの例
{
  "name": "create_label",
  "arguments": {
    "name": "Agent/Orders",
    "skip_inbox": true,
    "rules": [
      {
        "from": "@stripe.com"
      }
    ]
  }
}
状態を変更update_label
PATCH /labels/:label_id

ラベルの名前や色を変更する、またはバケットにする

ラベルの名前や色を変更したり、バケットモード(skip_inbox)を切り替えたりします。バケットモードを有効にすると、すでにそのラベルが付いている受信メールがアーカイブされます。

パラメータ型必須説明
label_idstringはいラベルID(lbl_で始まる)または正確なラベル名。(最大128文字)
namestringいいえ新しい名前。(最大64文字)
colorstringいいえ新しい16進数のカラーコード。
skip_inboxbooleanいいえバケットモード:このラベルが付いた受信メール(ルールによるもの、このラベル付きで送信した会話への返信、手動で付けたもの)はアーカイブされ、受信トレイではなくラベル内にのみ表示されます。
戻り値更新されたラベル。
アノテーションidempotentHint
tools/callのparamsの例
{
  "name": "update_label",
  "arguments": {
    "label_id": "lbl_123",
    "name": "Finance/Billing"
  }
}
破壊的操作delete_label
DELETE /labels/:label_id

ラベルを削除する

DESTRUCTIVE:ラベルとそのルールを削除します。メール自体は保持され、このラベルが外れるだけです。

パラメータ型必須説明
label_idstringはいラベルID(lbl_で始まる)または正確なラベル名。(最大128文字)
戻り値{ok: true}。
アノテーションdestructiveHint idempotentHint
tools/callのparamsの例
{
  "name": "delete_label",
  "arguments": {
    "label_id": "lbl_123"
  }
}
状態を変更create_label_rule
POST /labels/:label_id/rules

自動振り分けルールを追加する

ラベルにルールを追加し、一致する新着メールを自動的に振り分けます。設定したすべての条件に一致する必要があります。受信アドレスごとに専用のフォルダを持たせるにはinbox_idを使い、受信トレイに入れないようにするにはskip_inboxを追加します。

パラメータ型必須説明
label_idstringはいラベルID(lbl_で始まる)または正確なラベル名。(最大128文字)
directionstringいいえin(受信)またはout(送信)のメールのみ。両方を対象にする場合は省略します。(in、outのいずれか)
inbox_idstringいいえこのインボックス(inb_…)が受信したメールのみ。受信アドレスごとに専用のフォルダへ振り分けられます。
fromstringいいえ送信者にこのテキストを含むもの(大文字と小文字を区別しない)。例:@stripe.com。(最大200文字)
tostringいいえTo/Ccにこのテキストを含むもの(大文字と小文字を区別しない)。(最大200文字)
subjectstringいいえ件名にこのテキストを含むもの(大文字と小文字を区別しない)。(最大200文字)
skip_inboxbooleanいいえ一致した受信メールをアーカイブし、受信トレイではなくラベルのフォルダにのみ表示します。
apply_to_existingbooleanいいえ一致する保持済みのメールも振り分けます。
戻り値{id: lrule_…, labelId, direction, inboxId, from, to, subject, skipInbox}。
tools/callのparamsの例
{
  "name": "create_label_rule",
  "arguments": {
    "label_id": "Billing",
    "inbox_id": "inb_123",
    "skip_inbox": true
  }
}
破壊的操作delete_label_rule
DELETE /labels/:label_id/rules/:rule_id

自動振り分けルールを削除する

DESTRUCTIVE:自動振り分けルールを1つ削除します。すでに振り分けられたメールのラベルはそのまま残ります。

パラメータ型必須説明
label_idstringはいラベルID(lbl_で始まる)または正確なラベル名。(最大128文字)
rule_idstringはいルールID(lrule_で始まる)。get_labelで取得します。(最大128文字)
戻り値{ok: true}。
アノテーションdestructiveHint idempotentHint
tools/callのparamsの例
{
  "name": "delete_label_rule",
  "arguments": {
    "label_id": "lbl_123",
    "rule_id": "lrule_123"
  }
}
状態を変更label_email
POST /emails/:email_id/labels

メールのラベルを追加・削除する

メッセージをフォルダ間で移動します。名前またはlbl_… IDでラベルを追加・削除します。addに存在しない名前を指定すると、createがfalseでない限りラベルが作成されます。

パラメータ型必須説明
email_idstringはいメールID(em_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
addstring[]いいえ追加するラベル。(0〜10件)
removestring[]いいえ削除するラベル。(0〜10件)
createbooleanいいえaddに存在しないラベルを作成します(デフォルトはtrue)。
戻り値labelsを含む更新されたメール。
アノテーションidempotentHint
tools/callのparamsの例
{
  "name": "label_email",
  "arguments": {
    "email_id": "em_123",
    "add": [
      "Billing"
    ],
    "remove": [
      "Support"
    ]
  }
}

下書き、添付ファイル、送信者ID

読み取り専用list_sending_identities
GET /sending-identities

検証済みの送信者IDを一覧表示する

このワークスペースが現在送信に使えるアドレスとドメイン(検証済みドメイン、そのデフォルトのFrom、有効なインボックスのアドレス)。有効なfromを選ぶため、send_emailの前に呼び出してください。

パラメータはありません。

戻り値{domains: [検証済みドメイン名], addresses: [送信元アドレス], localParts: [...]}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "list_sending_identities",
  "arguments": {}
}
状態を変更create_draft
POST /drafts

下書きを作成する

作成画面用の下書きを作成します。下書きには添付ファイルを保持できます。下書きを作成し、upload_attachmentを実行してから、draft_idを指定してsend_emailを呼び出します。これ自体は何も送信しません。

パラメータ型必須説明
fromstringいいえ検証済みドメイン上の送信元アドレス(下書き中は空でもかまいません)。
tostring[]いいえ受信者。(0〜100件)
ccstring[]いいえCcの受信者。(0〜100件)
bccstring[]いいえBccの受信者。(0〜100件)
subjectstringいいえ件名。(最大998文字)
htmlstringいいえHTMLの本文。
textstringいいえプレーンテキストの本文。
reply_to_email_idstringいいえこの下書きが返信する対象のメールID。
thread_idstringいいえこの下書きが属するスレッドID。
戻り値下書きオブジェクト {id: dr_…, from, to, cc, bcc, subject, html, text, attachments: []}。
tools/callのparamsの例
{
  "name": "create_draft",
  "arguments": {
    "from": "hello@example.com",
    "to": [
      "owner@example.com"
    ],
    "subject": "Invoice"
  }
}
読み取り専用list_drafts
GET /drafts

下書きを一覧表示する

作成画面用の下書きを、更新日時の新しい順に一覧表示します。ページネーションあり:結果にはpagination {offset, limit, returned, total?, has_more, next_offset}が含まれます。

パラメータ型必須説明
limitintegerいいえページサイズ。デフォルトは50です。(デフォルト50、1〜200)
offsetintegerいいえスキップするレコード数。前のページのpagination.next_offsetを使います。(デフォルト0、0〜…)
戻り値{data: [下書き], count, pagination}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "list_drafts",
  "arguments": {}
}
読み取り専用get_draft
GET /drafts/:draft_id

下書きを取得する

添付ファイルのメタデータを含む下書きを1つ取得します。

パラメータ型必須説明
draft_idstringはい下書きID(dr_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
戻り値attachmentsを含む下書きオブジェクト。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "get_draft",
  "arguments": {
    "draft_id": "dr_123"
  }
}
状態を変更update_draft
PUT /drafts/:draft_id

下書きの内容を置き換える

下書きの内容と受信者を置き換えます。これは完全な置き換えで、省略したフィールドはクリアされます。そのため、先にget_draftで読み取り、残したいフィールドをすべて送信してください。添付ファイルには影響しません。

パラメータ型必須説明
draft_idstringはい下書きID(dr_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
fromstringいいえ検証済みドメイン上の送信元アドレス(下書き中は空でもかまいません)。
tostring[]いいえ受信者。(0〜100件)
ccstring[]いいえCcの受信者。(0〜100件)
bccstring[]いいえBccの受信者。(0〜100件)
subjectstringいいえ件名。(最大998文字)
htmlstringいいえHTMLの本文。
textstringいいえプレーンテキストの本文。
reply_to_email_idstringいいえこの下書きが返信する対象のメールID。
thread_idstringいいえこの下書きが属するスレッドID。
戻り値更新された下書きオブジェクト。
アノテーションidempotentHint
tools/callのparamsの例
{
  "name": "update_draft",
  "arguments": {
    "draft_id": "dr_123",
    "from": "hello@example.com",
    "to": [
      "owner@example.com"
    ],
    "subject": "Invoice (updated)",
    "text": "Attached."
  }
}
破壊的操作delete_draft
DELETE /drafts/:draft_id

下書きを破棄する

DESTRUCTIVE:下書きを破棄し、その保存済み添付ファイルを完全に削除します。

パラメータ型必須説明
draft_idstringはい下書きID(dr_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
戻り値{ok: true}。
アノテーションdestructiveHint idempotentHint
tools/callのparamsの例
{
  "name": "delete_draft",
  "arguments": {
    "draft_id": "dr_123"
  }
}
状態を変更upload_attachment
POST /drafts/:draft_id/attachments

下書きに添付ファイルをアップロードする

下書きにファイルを1つアップロードします(1メッセージあたり最大10ファイル、合計10 MB)。content_base64またはローカルのfile_pathを指定してください。送信時に添付ファイルを使うには有料プランが必要です。

content_base64、file_pathのうち少なくとも1つを指定してください。

パラメータ型必須説明
draft_idstringはい下書きID(dr_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
filenamestringいいえ受信者に表示されるファイル名。デフォルトはfile_pathのベース名です。(最大255文字)
content_typestringいいえMIMEタイプ。例:application/pdf。デフォルトはapplication/octet-streamです。
content_base64stringいいえ標準のbase64でエンコードしたファイルの内容。
file_pathstringいいえMCPサーバーのプロセスが読み取れるローカルファイルの絶対パス。
戻り値{id: att_…, filename, contentType, sizeBytes, available}。
tools/callのparamsの例
{
  "name": "upload_attachment",
  "arguments": {
    "draft_id": "dr_123",
    "filename": "invoice.pdf",
    "content_type": "application/pdf",
    "file_path": "/tmp/invoice.pdf"
  }
}
読み取り専用download_attachment
GET /attachments/:attachment_id

添付ファイルをダウンロードする

非公開の添付ファイル(送信、受信、下書き)をダウンロードします。base64の内容を返すか、save_to_pathが設定されている場合はファイルを書き込みます(overwriteがtrueでない限り上書きは拒否されます)。

パラメータ型必須説明
attachment_idstringはい添付ファイルID(att_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
save_to_pathstringいいえbase64を返す代わりにファイルを書き込む、任意のローカルの絶対パス。
overwritebooleanいいえsave_to_pathにある既存ファイルの置き換えを許可します。デフォルトはfalseです。
戻り値{attachment_id, filename, content_type, size_bytes, content_base64}または{attachment_id, filename, content_type, size_bytes, saved_to}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "download_attachment",
  "arguments": {
    "attachment_id": "att_123",
    "save_to_path": "/tmp/invoice.pdf"
  }
}
破壊的操作delete_attachment
DELETE /attachments/:attachment_id

添付ファイルを削除する

DESTRUCTIVE:保存済みの添付ファイルを完全に削除します(例:送信前に下書きからファイルを取り除く)。

パラメータ型必須説明
attachment_idstringはい添付ファイルID(att_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
戻り値{ok: true}。
アノテーションdestructiveHint idempotentHint
tools/callのparamsの例
{
  "name": "delete_attachment",
  "arguments": {
    "attachment_id": "att_123"
  }
}

ホスト型テンプレート

読み取り専用list_templates
GET /templates

ホスト型テンプレートを一覧表示する

ホスト型メールテンプレートを、公開状態と使用状況とともに一覧表示します。ページネーションあり:結果にはpagination {offset, limit, returned, total?, has_more, next_offset}が含まれます。

パラメータ型必須説明
lifecyclestringいいえactive(デフォルト)、archived、all。(active、archived、allのいずれか)
querystringいいえ名前またはキーで検索します。(最大120文字)
limitintegerいいえページサイズ。デフォルトは50です。(デフォルト50、1〜200)
offsetintegerいいえスキップするレコード数。前のページのpagination.next_offsetを使います。(デフォルト0、0〜…)
戻り値{data: [テンプレート], count, pagination}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "list_templates",
  "arguments": {
    "lifecycle": "active"
  }
}
状態を変更create_template
POST /templates

ホスト型テンプレートを作成する

編集可能な下書き付きのテンプレートを作成します。スターター(welcome、reset、receipt、blank)から作成することもできます。キーで送信する前に公開してください。

パラメータ型必須説明
namestringはい人が読める名前。(最大120文字)
keystringいいえ送信用の固定キー:小文字、数字、ハイフンで構成され、英字で始まる(2〜64文字)。省略した場合は名前から生成されます。
starterstringいいえスターターの内容。(blank、welcome、reset、receiptのいずれか)
戻り値{template, draft, activeVersion, versions, usage}。
tools/callのparamsの例
{
  "name": "create_template",
  "arguments": {
    "name": "Account welcome",
    "key": "account-welcome",
    "starter": "welcome"
  }
}
読み取り専用get_template
GET /templates/:template_id

テンプレートを取得する

テンプレートの現在の下書き(revision付き)、有効な公開済みリリース、リリース履歴、使用状況を取得します。IDまたはキーを指定できます。

パラメータ型必須説明
template_idstringはいテンプレートID(tmpl_…)またはキー。(最大128文字)
戻り値{template, draft: {id, revision, subjectTemplate, htmlTemplate, textTemplate, variables, sampleData, …} | null, activeVersion, versions, usage}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "get_template",
  "arguments": {
    "template_id": "account-welcome"
  }
}
状態を変更update_template_draft
PUT /templates/:template_id/draft

テンプレートの下書きを保存する

楽観的同時実行制御を使って、テンプレートの編集可能な下書きを保存します。get_templateで取得した現在のrevisionを渡してください(409は他の誰かが先に保存したことを意味します。再度読み取ってから再試行してください)。これは下書きの内容の完全な置き換えで、省略したフィールドはクリアされるため、残したいフィールドをすべて送信してください。プレースホルダーには{{variable}}を使います。

パラメータ型必須説明
template_idstringはいテンプレートIDまたはキー。(最大128文字)
revisionintegerはいget_templateで取得した現在の下書きのリビジョン。(1〜…)
namestringいいえテンプレート名。(最大120文字)
subject_templatestringいいえプレースホルダーを含む件名。(最大998文字)
preheader_templatestringいいえプレビューテキスト。(最大240文字)
html_templatestringいいえプレースホルダーを含むHTMLの本文。
text_templatestringいいえプレースホルダーを含むプレーンテキストの本文。
fromstringいいえこのテンプレートで送信する際のデフォルトの送信者。
reply_tostringいいえデフォルトのReply-To。
variablesobject[]いいえ型付き変数の仕様。各項目:{key(小文字/アンダースコア), label, type: text|number|url|boolean, required(デフォルトはtrue), fallback, description}。
variables[].keystringはい
variables[].labelstringいいえ
variables[].typestringいいえ(text、number、url、booleanのいずれか)
variables[].requiredbooleanいいえ
variables[].fallbackanyいいえ
variables[].descriptionstringいいえ
sample_dataobjectいいえプレビューとテストに使うサンプル値。
戻り値{template, draft: {revision: next}, validation: {valid, findings}}。
tools/callのparamsの例
{
  "name": "update_template_draft",
  "arguments": {
    "template_id": "account-welcome",
    "revision": 3,
    "name": "Account welcome",
    "subject_template": "Welcome, {{first_name}}",
    "text_template": "Hi {{first_name}}",
    "variables": [
      {
        "key": "first_name",
        "type": "text",
        "required": true
      }
    ],
    "sample_data": {
      "first_name": "Asha"
    }
  }
}
状態を変更create_template_draft
POST /templates/:template_id/draft

公開済みリリースから新しい下書きを開始する

現在の公開済みリリースをコピーして、編集可能な新しい下書きを作成します(下書きがすでに存在する場合や、何も公開されていない場合は409)。

パラメータ型必須説明
template_idstringはいテンプレートIDまたはキー。(最大128文字)
戻り値{draft}。
tools/callのparamsの例
{
  "name": "create_template_draft",
  "arguments": {
    "template_id": "account-welcome"
  }
}
読み取り専用render_template
POST /templates/:template_id/render

テンプレートのプレビューをレンダリングする

下書き、公開済みリリース、または特定のバージョンについて、指定したデータでサーバーの実際の出力(subject、html、text)をレンダリングします。送信は行いません。データが変数の仕様に違反している場合は、findingsとともに422を返します。

パラメータ型必須説明
template_idstringはいテンプレートIDまたはキー。(最大128文字)
version_idstringいいえ任意のバージョンID。デフォルトは下書き、次に公開済みリリースです。
dataobjectいいえ変数の値。デフォルトはそのバージョンのサンプルデータです。
戻り値{subject, html, text, preheader, versionId, versionNumber, isDraft, findings}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "render_template",
  "arguments": {
    "template_id": "account-welcome",
    "data": {
      "first_name": "Asha"
    }
  }
}
実際にメールを送信send_template_test
POST /templates/:template_id/test

テンプレートのテストメールを送信する

SENDS REAL EMAIL。下書き(または指定したバージョン)の[Test]プレフィックス付きスナップショットを、指定した受信者に送信します。使用量にカウントされます。トライアル中のワークスペースは、アカウントのメールアドレスまたはSESシミュレーターのアドレスにのみ送信できます。

パラメータ型必須説明
template_idstringはいテンプレートIDまたはキー。(最大128文字)
tostring[]はいテストの受信者。(1〜100件)
fromstringいいえ検証済みドメイン上の送信者。デフォルトはテンプレートのFromです。
version_idstringいいえ任意のバージョンID。
dataobjectいいえ変数の値。デフォルトはサンプルデータです。
戻り値{id: em_…, providerMessageId, threadId, isTest: true}。
tools/callのparamsの例
{
  "name": "send_template_test",
  "arguments": {
    "template_id": "account-welcome",
    "to": [
      "owner@example.com"
    ]
  }
}
状態を変更publish_template
POST /templates/:template_id/publish

テンプレートのリリースを公開する

現在の下書きを、template.keyを指定したsend_emailが使用する変更不可のリリースとして公開します。バリデーションエラーがある場合は422とfindingsで失敗し、本番環境ですでに使われているテンプレートの現行の変数仕様を壊す場合は409で失敗します。

パラメータ型必須説明
template_idstringはいテンプレートIDまたはキー。(最大128文字)
戻り値{template, published}。
tools/callのparamsの例
{
  "name": "publish_template",
  "arguments": {
    "template_id": "account-welcome"
  }
}
状態を変更archive_template
POST /templates/:template_id/archive

テンプレートをアーカイブする

このテンプレートを使った新規送信を停止します(履歴は保持され、restore_templateで元に戻せます)。このキーで送信している連携はすべて404で失敗するようになります。

パラメータ型必須説明
template_idstringはいテンプレートIDまたはキー。(最大128文字)
戻り値{template}。
アノテーションidempotentHint
tools/callのparamsの例
{
  "name": "archive_template",
  "arguments": {
    "template_id": "account-welcome"
  }
}
状態を変更restore_template
POST /templates/:template_id/restore

アーカイブしたテンプレートを復元する

アーカイブしたテンプレートを再び有効にします。

パラメータ型必須説明
template_idstringはいテンプレートIDまたはキー。(最大128文字)
戻り値{template}。
アノテーションidempotentHint
tools/callのparamsの例
{
  "name": "restore_template",
  "arguments": {
    "template_id": "account-welcome"
  }
}

ドメインとDNS

読み取り専用list_domains
GET /domains

ドメインを一覧表示する

送信ドメインを、集約されたsetup_status(verified | checking | pending)、レコードごとのDNS状態、受信のステータスとともに一覧表示します。未検証のドメインはその場で再チェックされるため、時間がかかる場合があります。ページネーションあり:結果にはpagination {offset, limit, returned, total?, has_more, next_offset}が含まれます。

パラメータ型必須説明
limitintegerいいえページサイズ。デフォルトは50です。(デフォルト50、1〜200)
offsetintegerいいえスキップするレコード数。前のページのpagination.next_offsetを使います。(デフォルト0、0〜…)
戻り値{data: [レコードを含むドメイン], count, pagination}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "list_domains",
  "arguments": {}
}
読み取り専用get_domain
GET /domains/:domain_id

ドメインの設定詳細を取得する

1つのドメインについて、公開すべき正確なDNSレコード(type、name、value)、2つの公開リゾルバーから見た各レコードの現在の状態、修正方法付きのdns_issues、受信のステータスを取得します。

パラメータ型必須説明
domain_idstringはいドメインID(dom_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
戻り値{id, name, status, setup_status, dns_propagating, records: [{type, name, value, verified, dns_state}], dns_issues: [{code, message, …}], inbound_domain, inbound_status}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "get_domain",
  "arguments": {
    "domain_id": "dom_123"
  }
}
状態を変更add_domain
POST /domains

送信ドメインを追加する

管理しているドメインを送信用に登録します。所有者が公開する必要のあるDNSレコード(SES Easy DKIMのCNAME)を返します。DNS自体は変更しません。プランのドメイン数の上限にカウントされます。

パラメータ型必須説明
namestringはいドメイン名のみ。例:example.com、mail.example.com。(最大253文字)
default_fromstringいいえこのドメインの任意のデフォルト送信元アドレス。
戻り値{id: dom_…, name, status: pending, records: [...], ses: {configured}}。
tools/callのparamsの例
{
  "name": "add_domain",
  "arguments": {
    "name": "example.com"
  }
}
状態を変更verify_domain
POST /domains/:domain_id/verify

ドメインを検証する

SES/DNSの検証チェックを今すぐ実行します。繰り返し実行しても安全です。DNSの変更後は30〜60秒ごとにポーリングしてください(反映には数分から数時間かかることがあります)。ステータスがverifiedになると送信できます。

パラメータ型必須説明
domain_idstringはいドメインID(dom_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
戻り値{domain, checks: {ses, dkim, dkim_status}, status: verified|pending}。
アノテーションidempotentHint
tools/callのparamsの例
{
  "name": "verify_domain",
  "arguments": {
    "domain_id": "dom_123"
  }
}
破壊的操作delete_domain
DELETE /domains/:domain_id

ドメインを削除する

DESTRUCTIVE:受信のルーティングを含め、ドメインをワークスペースから削除します。その直後から、このドメインからの送信は失敗します。DNSプロバイダー上のDNSレコードは削除されません。

パラメータ型必須説明
domain_idstringはいドメインID(dom_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
戻り値{ok: true}。
アノテーションdestructiveHint idempotentHint
tools/callのparamsの例
{
  "name": "delete_domain",
  "arguments": {
    "domain_id": "dom_123"
  }
}
読み取り専用get_dns_provider
GET /dns/provider

DNSプロバイダーとレコードのホストを検出する

ドメインの権威DNSプロバイダーを検出し、各レコードについてそのプロバイダーに入力する相対ホスト、推奨されるDMARCレコード、受信用MXのガイダンス、ワンクリック設定(Domain Connect)が利用可能かどうかを返します。

パラメータ型必須説明
domain_idstringはいドメインID(dom_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
戻り値{detectionStatus, detected, zone, nameservers, recordHosts: {recordId: host}, inbound, recommendations, authentication, providers: {domainConnect: {available, providerName}}}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "get_dns_provider",
  "arguments": {
    "domain_id": "dom_123"
  }
}

メール受信

状態を変更setup_inbound
POST /domains/:domain_id/inbound/setup

ドメインのメール受信を有効にする

検証済みドメインでSESのメール受信を準備します。ルートドメインに競合するMXがない場合はルートドメインを使い、ある場合はinbound.<domain>を使います。所有者が公開する必要のあるMXレコードを返します。DNSは編集しません。

パラメータ型必須説明
domain_idstringはいドメインID(dom_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
戻り値{domain: 受信用ドメイン, status: dns_pending|ready, record: {type: MX, name, value}}。
アノテーションidempotentHint
tools/callのparamsの例
{
  "name": "setup_inbound",
  "arguments": {
    "domain_id": "dom_123"
  }
}
状態を変更verify_inbound
POST /domains/:domain_id/inbound/verify

受信用MXを検証する

受信用MXレコードを再チェックします。両方の公開リゾルバーから確認できると、ステータスがreadyになります。

パラメータ型必須説明
domain_idstringはいドメインID(dom_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
戻り値{domain, status: ready|dns_pending|propagating|checking, record}。
アノテーションidempotentHint
tools/callのparamsの例
{
  "name": "verify_inbound",
  "arguments": {
    "domain_id": "dom_123"
  }
}
読み取り専用list_inboxes
GET /inboxes

受信用アドレスを一覧表示する

受信用アドレスを一覧表示します。1つのドメインに絞り込むこともできます。ページネーションあり:結果にはpagination {offset, limit, returned, total?, has_more, next_offset}が含まれます。

パラメータ型必須説明
domain_idstringいいえ任意のドメインIDによるフィルター。
limitintegerいいえページサイズ。デフォルトは50です。(デフォルト50、1〜200)
offsetintegerいいえスキップするレコード数。前のページのpagination.next_offsetを使います。(デフォルト0、0〜…)
戻り値{data: [{id, address, name, status, domainId}], count, pagination}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "list_inboxes",
  "arguments": {
    "domain_id": "dom_123"
  }
}
読み取り専用get_inbox
GET /inboxes/:inbox_id

インボックスを取得する

受信用アドレスを1つ取得します。

パラメータ型必須説明
inbox_idstringはいインボックスID(inb_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
戻り値インボックスオブジェクト。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "get_inbox",
  "arguments": {
    "inbox_id": "inb_123"
  }
}
状態を変更create_inbox
POST /inboxes

受信用アドレスを作成する

受信のステータスがreadyのドメイン上に、support@<receiving domain>のようなアドレスを作成します(先にsetup_inboundとverify_inboundを実行してください)。受信したメールは、direction inとしてlist_emailsに表示されます。

パラメータ型必須説明
domain_idstringはいドメインID(dom_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
local_partstringはい@より前の部分。例:support。(最大64文字)
namestringいいえ任意の表示名。
戻り値{id: inb_…, address, name, status: active}。
tools/callのparamsの例
{
  "name": "create_inbox",
  "arguments": {
    "domain_id": "dom_123",
    "local_part": "support",
    "name": "Support"
  }
}
状態を変更update_inbox
PATCH /inboxes/:inbox_id

インボックスの名前を変更する、有効化する、無効化する

インボックスの名前を変更するか、ステータスをactive / disabledに設定します。

パラメータ型必須説明
inbox_idstringはいインボックスID(inb_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
namestringいいえ新しい表示名。
statusstringいいえ新しいステータス。(active、disabledのいずれか)
戻り値更新されたインボックス。
アノテーションidempotentHint
tools/callのparamsの例
{
  "name": "update_inbox",
  "arguments": {
    "inbox_id": "inb_123",
    "status": "disabled"
  }
}
実際にメールを送信set_inbox_forwarding
PUT /inboxes/:inbox_id/forwarding

インボックスを別のアドレスに転送する

アカウント所有者以外に転送する場合はSENDS REAL EMAIL。インボックスが受信したメールの転送先を設定します。所有者自身のアドレスは即座に有効になります。それ以外のアドレスには確認メールが届き、転送先で誰かが確認するまで転送はpendingのままです。転送を無効にするにはforward_to: nullを渡します。転送されたコピーはインボックスのアドレスから送信され、元の送信者がReply-Toに設定されます。

パラメータ型必須説明
inbox_idstringはいインボックスID(inb_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
forward_tostring,nullはい転送先のメールアドレス。転送を無効にする場合はnull。(最大254文字)
戻り値forwardToとforwardStatus(off、pending、active)を含むインボックス。
アノテーションidempotentHint
tools/callのparamsの例
{
  "name": "set_inbox_forwarding",
  "arguments": {
    "inbox_id": "inb_123",
    "forward_to": "team@example.net"
  }
}
破壊的操作delete_inbox
DELETE /inboxes/:inbox_id

インボックスを削除する

DESTRUCTIVE:受信用アドレスを削除します。受信済みのメールは保持されますが、このアドレス宛ての新着メールはここに振り分けられなくなります。

パラメータ型必須説明
inbox_idstringはいインボックスID(inb_で始まる)。一覧取得ツールや作成ツールから返されたもの。(最大128文字)
戻り値{ok: true}。
アノテーションdestructiveHint idempotentHint
tools/callのparamsの例
{
  "name": "delete_inbox",
  "arguments": {
    "inbox_id": "inb_123"
  }
}

到達率、バウンス、サプレッション

読み取り専用deliverability_stats
GET /deliverability/stats

過去30日間の配信統計を取得する

ワークスペース全体の過去30日間の合計:sent、delivery、bounce、complaint、reject、open、click、deliveryRate(%)。

パラメータはありません。

戻り値{window: 30d, sent, delivery, bounce, complaint, reject, open, click, deliveryRate}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "deliverability_stats",
  "arguments": {}
}
読み取り専用list_sender_reputation
GET /deliverability/reputation

送信者レピュテーションを一覧表示する

Fromアドレスごとのレピュテーションの状態:active、throttled(1日あたりの上限が低い)、paused(送信すると423が返る)と、その理由および1日あたりの上限。送信が423や429で失敗した場合に確認してください。ページネーションあり:結果にはpagination {offset, limit, returned, total?, has_more, next_offset}が含まれます。

パラメータ型必須説明
limitintegerいいえページサイズ。デフォルトは50です。(デフォルト50、1〜200)
offsetintegerいいえスキップするレコード数。前のページのpagination.next_offsetを使います。(デフォルト0、0〜…)
戻り値{data: [{sender, status, dailyLimit, reason, cleanSince, warnedAt, pausedAt, evaluatedAt}], count, pagination}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "list_sender_reputation",
  "arguments": {}
}
読み取り専用list_suppressions
GET /suppressions

サプレッションを一覧表示する

ワークスペースのサプレッションリスト:恒久的なバウンスまたは迷惑メール報告の後にブロックされた受信者です。これらの受信者への送信は422で失敗します。ページネーションあり:結果にはpagination {offset, limit, returned, total?, has_more, next_offset}が含まれます。

パラメータ型必須説明
limitintegerいいえページサイズ。デフォルトは50です。(デフォルト50、1〜200)
offsetintegerいいえスキップするレコード数。前のページのpagination.next_offsetを使います。(デフォルト0、0〜…)
戻り値{data: [{email, reason, detail, created_at}], count, pagination}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "list_suppressions",
  "arguments": {}
}
破壊的操作remove_suppression
DELETE /suppressions/:email

バウンスのサプレッションを解除する

DESTRUCTIVE(安全のためのブロックを弱めます):バウンスのサプレッションを解除し、そのアドレスに再びメールを送れるようにします。アドレスが現在は有効であることを人間が確認した場合にのみ実行してください。苦情によるサプレッションは解除できません(409)。

パラメータ型必須説明
emailstringはいサプレッション対象の受信者アドレス。(最大320文字)
戻り値{ok: true}。
アノテーションdestructiveHint idempotentHint
tools/callのparamsの例
{
  "name": "remove_suppression",
  "arguments": {
    "email": "fixed-mailbox@example.net"
  }
}
読み取り専用list_blocked_recipients
GET /blocked-recipients

ブロックされた受信者を一覧表示する

SendHQが送信を拒否するすべての受信者(バウンス、苦情、ドメイン単位のマーケティングの配信停止)を、種類別のサマリーとともに返します。最新の500件まで読み取ります。ページネーションあり:結果にはpagination {offset, limit, returned, total?, has_more, next_offset}が含まれます。

パラメータ型必須説明
limitintegerいいえページサイズ。デフォルトは50です。(デフォルト50、1〜200)
offsetintegerいいえスキップするレコード数。前のページのpagination.next_offsetを使います。(デフォルト0、0〜…)
戻り値{data: [{email, domain, kind: bounce|complaint|unsubscribe, reason, detail, source, status, created_at}], count, summary: {total, bounce, complaint, unsubscribe}, pagination}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "list_blocked_recipients",
  "arguments": {}
}

アカウント、使用量、分析、キー

読み取り専用get_account
GET /account

アカウント、使用量、請求情報を取得する

アカウント所有者のメールアドレス、プラン/アクセスティア、当期の受信者配信数の使用量とクォータ、ドメインの使用数と上限、添付ファイルの転送量、レピュテーションのサマリー、サブスクリプションの状態、公開されているプラン、ワークスペースの各種件数。残りのクォータや、トライアルで配信できる相手(アカウントのメールアドレス)の確認に使います。

パラメータはありません。

戻り値{user: {email, …}, usage: {domainsUsed, domainLimit, recipientDeliveries, emailQuotaMonth, attachmentBytes, attachmentByteLimit, periodKey}, access: {tier, planCode}, reputation, infrastructure, billing: {status, subscriptions, …}, plans, workspace: {mailer, stats}}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "get_account",
  "arguments": {}
}
読み取り専用get_analytics
GET /analytics

送信の分析データを取得する

過去7日、30日、90日間のダッシュボード分析:sent/received/delivered/bounced/blocked/opened/clicked/complaintの合計、日別のタイムライン、送信数の多いドメイン、件名の上位。

パラメータ型必須説明
daysintegerいいえ日数単位の期間:7、30(デフォルト)、90。(7、30、90のいずれか)
戻り値{window, days, metrics, timeline: [{day, sent, received}], domains, topContent}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "get_analytics",
  "arguments": {
    "days": 30
  }
}
読み取り専用list_api_keys
GET /keys

APIキーのメタデータを一覧表示する

APIキーの名前、秘密でないプレフィックス、最終使用日時を一覧表示します。読み取り専用:このMCPサーバーはキーの作成、ローテーション、失効ができません。それらは人間がダッシュボードで行います。ページネーションあり:結果にはpagination {offset, limit, returned, total?, has_more, next_offset}が含まれます。

パラメータ型必須説明
limitintegerいいえページサイズ。デフォルトは50です。(デフォルト50、1〜200)
offsetintegerいいえスキップするレコード数。前のページのpagination.next_offsetを使います。(デフォルト0、0〜…)
戻り値{data: [{id, name, prefix, lastUsedAt, createdAt}], count, pagination}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "list_api_keys",
  "arguments": {}
}
読み取り専用get_service_health
GET /health

SendHQサービスの稼働状況を確認する

SendHQ APIが稼働しているかどうかと、どのメールプロバイダーが有効かを確認します。有効なAPIキーは不要です。

パラメータはありません。

戻り値{ok, service, mailer}。
アノテーションreadOnlyHint idempotentHint
tools/callのparamsの例
{
  "name": "get_service_health",
  "arguments": {}
}

APIカバレッジ一覧

公開APIのすべての操作と、それに対応するツールです。ダッシュボードでできる操作のうちAPIがあるものはすべてカバーしています。以下の除外は意図的なものです。

エンドポイントツール備考
POST /emailssend_emailメールを1通送信する
POST /emails/batchsend_batch個別化したメッセージを最大100通送信する
GET /emailslist_emails送信済みメールと受信メールを一覧表示する
GET /emails/:idget_emailメールとその添付ファイルを取得する
PATCH /emails/:idmark_email既読、アーカイブ、迷惑メール、カテゴリ、重要度を更新する
POST /emails/:id/labelslabel_emailメールのラベルを追加・削除する
DELETE /emails/:iddelete_email保持されているメールを削除する
GET /emails/:id/eventslist_email_eventsメールの配信イベントを一覧表示する
GET /threads/:idget_thread会話を時系列順に取得する
GET /labelslist_labelsメッセージ数と振り分けルールを含めてラベルを一覧表示する
POST /labelscreate_labelラベルを作成する(自動振り分けルールも指定可能)
GET /labels/:idget_labelIDまたは名前でラベルを取得する
PATCH /labels/:idupdate_labelラベルの名前や色を変更する、またはバケットにする
DELETE /labels/:iddelete_labelメールを削除せずにラベルを削除する
POST /labels/:id/rulescreate_label_ruleラベルに自動振り分けルールを追加する
DELETE /labels/:id/rules/:rule_iddelete_label_rule自動振り分けルールを削除する
POST /draftscreate_draft作成画面用の下書きを作成する
GET /draftslist_drafts作成画面用の下書きを一覧表示する
GET /drafts/:idget_draft下書きと添付ファイルを取得する
PUT /drafts/:idupdate_draft下書きの内容を置き換える
DELETE /drafts/:iddelete_draft下書きを破棄する
POST /drafts/:id/attachmentsupload_attachment下書きに添付ファイルをアップロードする
GET /attachments/:iddownload_attachment非公開の添付ファイルをダウンロードする
DELETE /attachments/:iddelete_attachment非公開の添付ファイルを削除する
GET /sending-identitieslist_sending_identities検証済みの送信者IDを一覧表示する
GET /templateslist_templatesホスト型テンプレートを一覧表示する
POST /templatescreate_templateホスト型テンプレートを作成する
GET /templates/:idget_template下書き、リリース、使用状況を取得する
PUT /templates/:id/draftupdate_template_draftテンプレートの下書きを自動保存する
POST /templates/:id/draftcreate_template_draft公開済みリリースから新しい下書きを作成する
POST /templates/:id/renderrender_templateサーバーの出力をそのままレンダリングする
POST /templates/:id/testsend_template_testテスト用スナップショットを送信する
POST /templates/:id/publishpublish_template変更不可のテンプレートリリースを公開する
POST /templates/:id/archivearchive_templateテンプレートをアーカイブする
POST /templates/:id/restorerestore_templateアーカイブしたテンプレートを復元する
POST /domainsadd_domain送信ドメインを追加する
GET /domainslist_domainsドメインとキャッシュ済みのDNS状態を一覧表示する
GET /domains/:idget_domainドメインの設定詳細を取得する
POST /domains/:id/verifyverify_domainSESとDNSの検証を更新する
POST /domains/:id/inbound/setupsetup_inboundSESのメール受信を準備する
POST /domains/:id/inbound/verifyverify_inbound受信用MXのルーティングを検証する
DELETE /domains/:iddelete_domainドメインを削除する
GET /dns/providerget_dns_provider権威DNSプロバイダーとレコードの相対ホストを検出する
GET /dns/domain-connect/connectget_domain_connect_linkワンクリックDNS設定用のDomain Connect同意リンクを作成する
POST /inboxescreate_inbox受信用アドレスを作成する
GET /inboxeslist_inboxes受信用アドレスを一覧表示する
GET /inboxes/:idget_inbox受信用アドレスを取得する
PATCH /inboxes/:idupdate_inboxインボックスの名前を変更する、有効化する、無効化する
PUT /inboxes/:id/forwardingset_inbox_forwardingインボックスの受信メールを別のアドレスに転送する
DELETE /inboxes/:iddelete_inboxメッセージを保持したままインボックスを削除する
GET /deliverability/statsdeliverability_stats過去30日間の配信統計を取得する
GET /deliverability/reputationlist_sender_reputation送信者IDごとのレピュテーションの状態を一覧表示する
GET /suppressionslist_suppressionsワークスペースのサプレッションを一覧表示する
DELETE /suppressions/:emailremove_suppression削除可能なバウンスのサプレッションを解除する
GET /blocked-recipientslist_blocked_recipientsバウンス、苦情、配信停止を一覧表示する
GET /accountget_accountAPIキーを使って、アカウント、使用量、請求状態、ワークスペースの各種件数を取得する
GET /analyticsget_analytics過去7日、30日、90日間のダッシュボードの送信分析を取得する
GET /profileget_accountGET /accountのセッション専用版です。MCPサーバーはAPIキー用のルートを読み取ります。
POST /billing/checkout公開していません請求の変更は設計上セッション専用で、アカウント所有者がダッシュボードで行う必要があります。請求状態はget_accountで読み取れます。
POST /billing/cancel公開していません請求の変更は設計上セッション専用で、アカウント所有者がダッシュボードで行う必要があります。請求状態はget_accountで読み取れます。
POST /keys公開していません意図的に除外しています。エージェントが認証情報を発行したり破棄したりしてはいけません。キーは人間がダッシュボードで管理します。
GET /keyslist_api_keysAPIキーのメタデータを一覧表示する
DELETE /keys/:id公開していません意図的に除外しています。エージェントが認証情報を発行したり破棄したりしてはいけません。キーは人間がダッシュボードで管理します。

意図的に提供していない機能

機能エンドポイント理由
APIキーの作成、ローテーション、失効、削除POST /keys, DELETE /keys/:id意図的に除外しています。エージェントが認証情報を発行したり破棄したりしてはいけません。キーは人間がダッシュボードで管理します。
チェックアウトの開始またはサブスクリプションのキャンセルPOST /billing/checkout, POST /billing/cancel請求の変更は設計上セッション専用で、アカウント所有者がダッシュボードで行う必要があります。請求状態はget_accountで読み取れます。
CloudflareのワンクリックDNS設定(OAuth)GET /api/dns/cloudflare/connect対話的なブラウザセッションとCloudflareのOAuth同意が必要です。代わりに、get_domainのレコード、get_dns_providerのホスト、またはget_domain_connect_linkを使ってください。
サインアップ、ログイン、ログアウト、Googleアカウントの連携/api/auth/*人間によるブラウザ認証です。MCPサーバーはAPIキーで認証します。
サポートへのお問い合わせフォームPOST /api/contact人間向けの公開マーケティングサイトのフォームで、ワークスペースの操作ではありません。

機械可読なカタログ:/docs/mcp/tools.json(スキーマ、アノテーション、エンドポイントの対応、除外項目)。このページのMarkdown版:/docs/mcp.md。CLIをインストールしていれば、sendhq commands --format jsonで同じカタログを出力できます。