TrueDialog MCP

公式

AI AgentにTrueDialogを連携。受賞歴のあるTrueDialogプラットフォームを通じて、オムニチャネルメッセージを送信し、連絡先を管理できます。AI AgentをTrueDialogに接続すると、既存のTrueDialogアカウントを使用してビジネスSMSやRCSを送信し、連絡先を管理できます。連絡先の検索と取得、連絡先レコードの作成や更新、アカウントの詳細や設定済みの10DLC/ロングコードおよびショートコードのチャネルの確認、1人または複数の宛先へのテキストメッセージの送信が可能です。TrueDialogを活用して、SMS・RCSマーケティングのアウトリーチ、アラートや通知、予約やイベントのリマインダー、営業フォローアップ、カスタマーサービスの更新情報、従業員向けの連絡を行えます。メッセージはTrueDialogのキャリアへの直接接続と組み込みのオプトアウト処理を利用し、信頼性とコンプライアンスを備えたSMSワークフローを支援します。

TrueDialog MCPで何ができますか?

  • セッションを確認 — 認証の簡易チェックとして、認証済みの接続がどの TrueDialog ユーザーおよびアカウントとして動作しているかを確認します。
  • アカウントとチャネルを参照 — ログインで参照できるすべてのアカウントを一覧表示したり、特定のアカウントの詳細を取得したり、その SMS、RCS、メール、音声チャネルを一覧表示したりできます。
  • 連絡先を検索 — ID で連絡先を取得するか、電話番号やメールアドレスを部分一致で検索します。
  • 連絡先を作成または更新 — 電話番号またはメールアドレスから連絡先を追加するか、指定したフィールドのみを更新し、残りのフィールドは上書きしません。
  • SMS を送信 — 1 つ以上の番号にテキストを送信できます。ドライランも利用でき、送信チャネルを指定しない場合はコネクタが選択します。

ドキュメント

MCP(Model Context Protocol)は、AIクライアントが実際に何かを実行するために必要なツールやデータにアクセスする方法です。tdmcpは、MCP対応クライアントとTrueDialog SMS APIをつなぐ基盤です。30年にわたるキャリアインフラ、オプトアウト処理、双方向の会話、RCS、MMS、ショートコードのトラフィックを、名前が分かりやすい少数のツールとして提供します。

認証には、貼り付けた認証情報ではなくOAuth 2.1を使用します。ブラウザーで一度だけ、auth.tdmcp.comに対して認可します。ポータルで使っているものと同じTrueDialogログインでサインインします。AIクライアントが保持するのは有効期間の短いベアラートークンだけで、パスワードを保持することはありません。各呼び出しでトークンを送信します。コネクターはトークンを検証し、プライベートなバックチャネル経由でサーバー側からTrueDialogへのアクセスを解決します。クライアント設定に長期間有効な情報が保存されることはありません。

ランタイムは、意図的に目立たない構成です。マネージドフロントドアの背後にあるAzure Container Apps、AMD64コンテナー、Streamable HTTPを提供するFastMCP、スティッキーセッションなし。すべてTerraformで管理します。意外な要素はなく、ホットパスに自分で追加していないものはありません。


エンドポイント: https://connect.tdmcp.com。ステートレスなStreamable HTTPです。同じトランスポートはhttps://connect.tdmcp.com/mcpでも応答します。これは、/mcpパスの慣例を前提とするクライアント向けの互換エイリアスです。どちらのURLも使えます。認証はOAuth 2.1です。クライアントが自動的に検出し、ブラウザーでのサインインを案内します。貼り付けるキーやヘッダーはありません。

認可の仕組み

以下のどのクライアントでも同じ4つの手順に従います。そのほとんどは自動で行われます。

  1. クライアントにconnect.tdmcp.comを追加します。
  2. クライアントがauth.tdmcp.comのOAuthサーバーを見つけ、自動的に登録します(動的クライアント登録、PKCE)。
  3. ブラウザーウィンドウが開きます。TrueDialogの認証情報でサインインします。
  4. クライアントがトークンを受け取り、接続されます。トークンは自動更新されるため、セッションの有効期限が切れるまで再度サインインする必要はありません。

Claude(デスクトップアプリまたはclaude.ai)で、Customize → Connectorsを開き、+ → Add custom connectorをクリックします。名前を付けて、エンドポイントURLを入力します。

カスタムコネクターを追加

Name:   TrueDialog
URL:    https://connect.tdmcp.com/

Addをクリックし、続けてConnectをクリックします。ブラウザーウィンドウが開き、TrueDialogへのサインインが求められます。承認すると9つのツールが表示されます。ClaudeはOAuthサーバーに自動登録されるため、貼り付けるものはありません。Team/Enterpriseでは、まずOwnerが組織で有効にする必要があります(Organization settings → Connectors → Add → Custom → Web)。その後、各メンバーがCustomize → Connectorsから追加します。


各MCPツールは、特定のTrueDialog APIサーフェスに対応しています。ツールは意図的に小さく、分かりやすくしています。エージェントの推論はツール一覧ではなく、プロンプトにあります。全部で9つのツールがあり、6つは読み取り専用、3つは書き込みを行います。

  1. whoami
    認可済みセッションのユーザーとアカウントを返します。認証を一度だけ確認するのに便利です。読み取り専用。
  2. list_accounts
    ログインでアクセスできるすべてのアカウントを一覧表示します。マルチテナントの運用者には重要ですが、単一アカウントのユーザーには関係ありません。読み取り専用。
  3. get_account_info
    単一のアカウントレコードを取得します。デフォルトでは認証済みアカウントを対象にします。読み取り専用。
  4. list_channels
    アカウントのチャネル(ロングコード、ショートコード、RCS、メール、音声)を一覧表示します。send_smsの前に呼び出して、チャネルIDを確認します。読み取り専用。
  5. get_contact
    IDで連絡先を検索します。読み取り専用。
  6. search_contacts
    電話番号とメールアドレスを部分一致で検索します。読み取り専用。
  7. create_contact
    電話番号またはメールアドレスから連絡先を作成します(少なくとも一方が必須)。その電話番号またはメールアドレスがすでに連絡先に登録されている場合、TrueDialogは作成を拒否し、update_contactを使うよう案内します。重複が黙って作成されることはありません。
  8. update_contact
    連絡先の電話番号、メールアドレス、または名前を更新します。まずレコードを読み取り、渡されたフィールドだけを書き換えるため、TrueDialogの「すべて上書きする」更新によって他の情報が消えることはありません。読み取り・変更・書き込みの処理なので、manageに加えてcontact-read権限が必要です。また、同時編集に対してアトミックではありません。書き込み操作です。
  9. send_sms
    1つ以上の電話番号にSMSを送信します。実際の送信です。デフォルトでは実際の携帯電話に届きます(ドライランにはexecute=falseを渡します)。送信チャネルを指定しない場合は自動的に解決します。一方向の送信で、返信は読み取りません。

話しかけてみましょう。

ツール名を指定して呼び出す必要はありません。話しかけるだけで、エージェントが適切なツールを選びます。接続したら、次のように試してみてください。

  • 「誰として接続していますか?」認証を確認します
  • 「自分のアカウントにはどんなチャネルが設定されていますか?」チャネルを読み取ります
  • 「+1 512 555 0142にテキストを送って。午後7時に4名様でご予約を承りました。」1人の宛先に1件送信します
  • 「512 555 0142の連絡先を探して、注文を発送したと伝えて。」検索して送信します

ファイルはメールツールで扱います。inbox_send_messageとinbox_reply_to_messageはそれぞれattachmentsリストを受け取ります。inbox_forward_messageは元のファイルをそのまま引き継ぎます(include_attachmentsはデフォルトで有効)。attachmentsリストの各項目には、バイトデータの取得元を1つだけ指定します。どの取得元を選ぶかで、ファイルが届くかどうかが決まります。

これらのツールはInboxパックに属し、デプロイごとに有効化されます。connect.tdmcp.comのコネクターが現在公開しているのは、上記の9つのTrueDialogツールです。Inboxパックが有効になっている環境では、メールツールで添付ファイルを扱えます。

  1. attachment_id
    この受信トレイ内のメッセージにあり、プラットフォームがすでに保持している添付ファイルを指定します。IDはinbox_get_threadから取得します。サーバーが保存済みのバイトデータを再添付するため、base64データがモデルを経由することはありません。ごく小さなファイル以外にはこれが適しており、返信対象のスレッドにすでにバイトデータがある場合の自然な方法です。filenameとcontent_typeは保存済みデータから引き継がれ、上書きもできます。文字起こしの上限は回避できますが、サイズ上限は変わりません。(転送ではinbox_forward_messageが元の添付ファイルをデフォルトで引き継ぐため、これも不要です。)
  2. upload_id
    ストレージにすでにステージングされたバイトデータを指定します。新しい大きなファイルに使う方法です。ファイル名、MIMEタイプ、正確なバイト数を指定して、/v1/inboxes/{inbox_id}/attachments/uploadsにPOSTします。返された署名付きupload_urlに生のバイトデータをPUTします。その後、送信時にupload_idを指定します。Inboxパックが有効な環境では、inbox_create_attachment_uploadが最初の手順を実行し、upload_idとupload_urlを返します。PUTを行うツールはありません。そのため、このコネクターにしかアクセスできないエージェントは新しいバイトデータをステージングできません。アップロードは、クライアントまたはアプリからPUTする必要があります。
  3. content
    filenameとcontent_typeを指定して、base64をインラインで渡します。確実に扱えるのはごく小さなファイルだけです。目安は約2 KB、base64文字列で約2,700文字です。ツール呼び出しで文字列全体を一字一句そのまま出力する必要があり、1文字でも間違えると、分かりにくいbase64パディングエラーで送信に失敗するためです。これは信頼性の上限であり、検証済みの制限ではありません。2 KBで拒否されるわけではなく、送信は受け付けられた後、デコード中に失敗します。

サーバーが適用する制限

サーバー側で確認される制限は3つです。

  1. メッセージあたり10 MB。形式を問わず、すべての項目の合計です。参照されたバイトデータもインラインのものと同様に全量がカウントされます。参照を使えばファイルの文字起こしは不要になりますが、ファイル自体が小さくなるわけではありません。
  2. ファイルあたり10 MB。アップロード枠の発行時に、申告されたsize_bytesに適用されます。そのため、上限を超えるオブジェクトを保存できるURLが発行されることはありません。
  3. attachmentsリストあたり100項目。

合計サイズは、バイトデータを取得する前に保存済みメタデータから確認され、すべてのデータを解決した後にも再確認されます。そのため、上限を超える送信は一部だけ配信されるのではなく、422で拒否されます。いずれかの上限を超える場合は、複数回に分けて送信してください。

3つの形式は、1つのリスト内で自由に組み合わせられます。署名付きアップロードURLの有効期間は短く、デフォルトでは15分です。署名にはContent-TypeとContent-Lengthの両方が含まれるため、PUTは指定された値をそのまま送信する必要があります。アップロードは1回限りです。最初にそのアップロードを参照した送信で消費されます。GET …/attachments/uploads/{upload_id}では、枠がまだ保留中か、有効期限はいつか、どのメッセージで消費されたかを確認できますが、PUTが届いたかどうかは確認できません。バイトデータが届く前の送信は422で拒否され、アップロード枠は消費されません。そのため、PUTが完了した後に再試行できます。逆方向の読み取りでは、inbox_get_attachmentが添付ファイルのバイトデータをbase64エンコードして返します。


MCPサーバーは入口です。興味深い製品開発はその上にあります。SMSの会話を成果につなげるエージェントランタイムです。

SMSの返信が届いたら、適切なエージェントを会話の全コンテキストとともに起動します。返信のきっかけとなった送信内容、顧客の履歴、スレッドの目的を渡します。エージェント向けのWebhookです。

時間ではなく、目標を提供します。複数ターンにわたる予約確認や日程変更、低評価に対するNPSの掘り下げ、B2Bリードの選別、サポートのトリアージ。エージェントが会話を最初から最後まで進めます。

TrueDialogのコンプライアンスに関する知見を返信レイヤーに適用します。「夜はテキストを送らないで」という要望には、完全な配信停止ではなく、静穏時間帯の提案で対応します。TCPAに準拠した監査証跡も標準で付属します。

サポート担当者を置き換えるのではなく、支援します。返信の下書き、スレッドの要約、次善のアクションの提案を、担当者がすでに使っているエージェントコンソール内に表示します。


スタック

FastMCP / httpx / Python 3.14
Azure Container Apps / ACR / Static Web Apps / Azure DNS
Terraform / Docker

ライセンス

MIT。

使用フォント

Lato、JetBrains Mono。