ThunderPhone 2.0、提供開始。セルフサービスで、1分あたり2セントから。発表内容を見る

Connect tools & data

ThunderPhoneをMCPサーバーとして使用する

Claude、ChatGPT、Claude Code、Codex、Cursor、VS Code、またはその他のStreamable HTTP MCPクライアントから、ThunderPhone音声エージェントを構築、テスト、検証、運用します。

ThunderPhone は、以下の場所で Streamable HTTP Model Context Protocol サーバーを公開しています。

https://api.thunderphone.com/v1/mcp

これは、リモート MCP サーバーを音声エージェントに接続する場合とは逆方向です。

方向結果
リモート MCP サーバー → ThunderPhone エージェント音声エージェントがリモートサーバーのツールを呼び出せます。
ThunderPhone → MCP クライアントコーディングエージェントで ThunderPhone を構築、テスト、運用できます。

認証

ディレクトリクライアントでは、デフォルトで OAuth を使用します。ログインし、組織を選択して、要求された権限を承認します。アクセス権は 組織 → APIキー → 承認済みアプリ で取り消します。

APIキーで設定されたクライアントでは、組織 → キー で sk_live_ キーを作成し、THUNDERPHONE_API_KEY として MCP クライアントに公開します。キーは1つの組織に紐付けられます。別の組織が所有する ID は見つからないものとして扱われます。

CLI と stdio の代替手段

ThunderPhone CLI は、無関係なサーバーを保持したままクライアント設定を書き込めます。

npx -y @thunderphone/mcp setup --client cursor --api-key-env THUNDERPHONE_API_KEY
npx thunderphone mcp setup --client claude-desktop --scope user

@thunderphone/mcp をグローバルインストールした後は、同じオプションで thunderphone-mcp setup を使用します。セットアップは Claude Code、Codex、Cursor、VS Code、Gemini、Claude Desktop、Windsurf をサポートしています。直接 HTTP が推奨されます。Desktop では stdio を使用します。

stdio 対応クライアントでは、command: "npx" と args: ["-y", "@thunderphone/mcp"] を設定します。ラッパーはまず THUNDERPHONE_API_KEY を使用し、次に thunderphone login の認証情報を使用して期限切れのトークンを更新し、その後 mcp-remote 経由で OAuth を使用します。デバイスログインと OAuth には、対応する API OAuth の提供開始が必要です。APIキーの経路には必要ありません。直接 HTTP の設定では CLI 認証情報ストアを読み取りません。デバイスログインを再利用するには stdio ラッパーを使用します。

これらは、以下の手動クライアント設定の代替手段です。

クライアント設定

Claude と ChatGPT は OAuth でログインするため、API キーは不要です。ThunderPhone アカウントをまだ作成していない場合は、ログインページで アカウントを作成 を選択します。メールアドレスの確認後、承認画面に戻ります。

Claude(ウェブ、デスクトップ、モバイル)

  1. カスタマイズ → コネクタ を開きます(旧バージョンでは 設定 → コネクタ)。コネクタディレクトリに ThunderPhone が表示されている場合は選択します。表示されない場合は カスタムコネクタを追加 を選択し、名前を ThunderPhone、URL を https://api.thunderphone.com/v1/mcp として入力します。
  2. 接続 を選択し、ThunderPhone にログインして組織を選択し、権限を承認します。
  3. チャットでツールメニューから ThunderPhone を有効にし、必要な操作を依頼します。例: 「エージェントを一覧表示」。

Claude は各ツールを初めて使用する前に確認を求めます。ほとんどの確認を省略するには、カスタマイズ → コネクタ → ThunderPhone を開き、読み取り専用ツール を常に許可するよう設定します。これらのツールは、エージェント、通話、文字起こし、残高、ドキュメントを参照するだけです。変更が実行される前に毎回確認したい場合は、書き込み/削除ツール を承認が必要な設定のままにします。

カスタムコネクタには有料の Claude プランが必要です。Team および Enterprise プランでは、まずオーナーが組織のコネクタ設定でコネクタを追加し、その後各メンバーが自身の ThunderPhone アカウントを接続します。

ChatGPT

  1. ChatGPT のアプリディレクトリに ThunderPhone が表示されている場合は、選択して接続します。
  2. 表示されない場合は 設定 → アプリとコネクタ → 詳細設定 を開き、開発者モード を有効にして、URL https://api.thunderphone.com/v1/mcp と OAuth 認証を使用するコネクタを作成します。
  3. ThunderPhone にログインし、組織を選択して権限を承認します。ツールメニューからチャットに ThunderPhone を追加します。

エージェントまたは電話番号の削除、下書きの破棄、キャンペーンの開始、外部システムに書き込み可能なテストリクエストの送信では、どちらのアプリでも2回目の確認が求められます。破壊的操作の確認を参照してください。

Claude Code

claude mcp add --transport http thunderphone https://api.thunderphone.com/v1/mcp \
  --header "Authorization: Bearer $THUNDERPHONE_API_KEY"

Codex

以下を ~/.codex/config.toml に追加します。

[mcp_servers.thunderphone]
url = "https://api.thunderphone.com/v1/mcp"
bearer_token_env_var = "THUNDERPHONE_API_KEY"

Cursor

.cursor/mcp.json を作成します。

{
  "mcpServers": {
    "thunderphone": {
      "url": "https://api.thunderphone.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${env:THUNDERPHONE_API_KEY}"
      }
    }
  }
}

Claude Desktop

Claude Desktop の設定に mcp-remote ブリッジを追加します。

{
  "mcpServers": {
    "thunderphone": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.thunderphone.com/v1/mcp",
        "--header",
        "Authorization: Bearer ${THUNDERPHONE_API_KEY}"
      ],
      "env": {
        "THUNDERPHONE_API_KEY": "sk_live_YOUR_API_KEY"
      }
    }
  }
}

VS Code

.vscode/mcp.json を作成し、VS Code の入力プロンプトでキーを入力します。

{
  "inputs": [
    {
      "type": "promptString",
      "id": "thunderphone-api-key",
      "description": "ThunderPhone organization API key",
      "password": true
    }
  ],
  "servers": {
    "thunderphone": {
      "type": "http",
      "url": "https://api.thunderphone.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${input:thunderphone-api-key}"
      }
    }
  }
}

ツール

すべてのツールには MCP 注釈が付いています。表内の R は読み取り専用、D は破壊的操作、I はべき等、O はオープンワールドまたはネットワークとの連携を示します。ダッシュはヒントが設定されていないことを示します。

接続

ツール主な引数注釈機能
get_connection_identity—R, I認証情報を検証し、組織と安全な認証情報メタデータを返します。

エージェント

ツール主な引数注釈機能
list_agents—R, Iエージェントを一覧表示します。
get_agentagent_idR, I1つのエージェントを取得します。
create_agentエージェント設定—エージェントを作成します。
update_agentagent_id、変更フィールドDエージェントの下書きにフィールドをステージングし、下書き内の既存の値を置き換えます。確認手順なしで実行されます。deploy_agent を実行するまでデプロイ済みエージェントは変更されず、discard_agent_draft を実行すると下書きが元に戻ります。
deploy_agentagent_id、任意の if_updated_atD, I下書きを本番環境に反映します。
discard_agent_draftagent_id、任意の if_updated_at、2回目のリクエストで confirmation_tokenD, Iステージング済みの変更を破棄します。2ステップです。破壊的操作の確認を参照してください。
duplicate_agentagent_id、任意の name—組織内でエージェントを複製します。
delete_agentagent_id、2回目のリクエストで confirmation_tokenD, Iエージェントを完全に削除します。2ステップです。
list_agent_versionsagent_idR, Iデプロイ済みの設定バージョンを一覧表示します。

電話番号と通信事業者

ツール主な引数注釈機能
list_phone_numbers—R, I組織の電話番号とルーティングを一覧表示します。
get_phone_number_limits—R, I管理対象番号の使用状況と上限を取得します。
provision_phone_number任意の area_code、city、state、idempotency_keyD, OThunderPhone 管理の着信番号を購入します。
list_voip_connections—R, I接続されている顧客キャリアを一覧表示します。
search_voip_numbersconnection_id、country、type、任意の area_codeR, I, Oキャリアの在庫を検索します。
import_voip_numbersconnection_id、numbersD, Oキャリアですでに所有している番号をインポートします。
update_phone_numberphone_number_id、ルーティング/ラベル/Webhook フィールドDエージェントの割り当てを含む、番号のルーティングを更新します。
delete_phone_numberphone_number_id、confirm、任意の release_at_provider、2 回目のリクエストでの confirmation_tokenD, I, O番号を解放します。2 ステップです。

SMS

ツール主な引数注釈機能
send_smsfrom_number, to, body, idempotency_keyD, I, O接続されたTwilioまたはTelnyxの番号を通じて、プレーンテキストのSMSを1件送信します。

通話

ツール主な引数注釈機能
list_calls任意のフィルター、limit、offsetR、IRESTの通話履歴フィルターで通話を一覧表示します。
get_callcall_idR、I通話ステータスとメタデータを取得します。
get_call_transcriptcall_id、任意のliveR、I通話の文字起こしを取得します。
get_call_audio_urlcall_id、任意のdownloadR、I、O署名付き音声URLを返します。MCP経由で音声をストリーミングすることはありません。
get_call_gradecall_idR、I最新の通話評価を取得します。
place_callagent_id、from_number、to_numberD、O冪等ではない発信通話を1件実行します。
export_calls通話フィルター、export_formatR、IRESTエンドポイントの上限までJSONまたはCSVとしてエクスポートします。

テストと検証

ツール主な引数注釈機能
list_test_scenariosagent_idR, Iテストシナリオを一覧表示します。
create_test_scenarioagent_id, title, scenario_prompt, 任意の条件—シナリオを作成します。
generate_test_scenariosagent_id, 任意の count、include_edge_cases、localeOエージェントプロンプトからシナリオを生成します。
run_agent_testsagent_id, channel, consent_to_charge, 任意の選択項目/マトリクスD, Oウェブまたは電話経由でシナリオを実行します。
get_test_runagent_id, batch_idR, Iバッチのステータスとシナリオごとの結果を取得します。
list_validation_runsagent_idR, I最近の下書き検証実行を一覧表示します。
get_validation_statusagent_idR, I最新の検証状態と下書き一致情報を取得します。

ナレッジ

ツール主な引数注釈機能
list_knowledge_bases—R, Iナレッジベースを一覧表示します。
create_knowledge_basename、任意の description—ナレッジベースを作成します。
add_knowledge_documentknowledge_base_id、name、content—テキストまたは Markdown を追加します。
import_knowledge_urlurl、任意の nameO安全な取り込みのために公開ページをキューに追加します。
search_knowledgeknowledge_base_id、queryR, I本番の検索機能を通じて検索します。

連携、Webhook、リモート MCP サーバー

ツール主な引数注釈機能
list_integrations—R, IHTTP 関数インテグレーションを一覧表示します。
create_integrationdisplay_name、関数 spec、任意のエンドポイントフィールド—HTTP ツールを作成します。認証ヘッダーはダッシュボードで追加します。
test_integrationurl、任意のメソッド/本文/タイムアウト、header_names を含む integration_id、2 回目のリクエストの confirmation_tokenD, O制限付きで SSRF 保護されたテストリクエストを送信します。保存済みのヘッダー値はインテグレーションから入力され、そのホストにのみ送信されます。POST(デフォルト)、PUT、PATCH、DELETE は 2 ステップです。GET はすぐに実行されます。
list_webhook_endpoints—R, I署名付き Webhook エンドポイントを一覧表示します。
list_webhook_deliveries任意の agent_id、任意の endpoint_idR, Iペイロードを含まない最近の Webhook 配信結果を一覧表示します。
create_webhook_endpointlabel、url、任意のイベント/ステータスO署名付き Webhook エンドポイントを作成します。
test_webhook_endpointendpoint_idO通常の配信フローで合成イベントを送信します。
list_mcp_servers—R, I音声エージェントから呼び出し可能なリモートサーバーを一覧表示します。
create_mcp_serverdisplay_name、urlOリモートサーバーを登録して同期します。認証ヘッダーが必要なサーバーはダッシュボードで追加します。
sync_mcp_server_toolsserver_idD, Oリモートサーバーのツールカタログを更新します。

キャンペーン

ツール主な引数注釈機能
list_campaigns—R, I発信キャンペーンを一覧表示します。
create_campaignキャンペーンフィールド—下書きキャンペーンを作成します。
add_campaign_contactscampaign_id、contacts—最大5,000件の JSON 連絡先を追加します。
campaign_actioncampaign_id、action、任意の consent_to_charge、2回目のリクエストでは confirmation_tokenD, Ostart、pause、resume、または stop を実行します。start と resume は2段階操作です。pause と stop は即時に実行されます。
get_campaign_statscampaign_idR, Iカウンターと最近の結果を取得します。

音声、請求、ドキュメント

ツール主な引数注釈機能
list_voices—R、I音声と対応言語を一覧表示します。
preview_voicevoice, language, textOサンプルを生成し、署名付き URL を返します。
list_voice_clones—R、Iカスタム音声クローンを一覧表示します。
get_billing_summary—R、I残高と正式なティア価格を取得します。支払いの変更操作は公開されません。
search_docsquery、任意の limitR、I、O公開ドキュメントのインデックスを検索します。
get_doc_pagepathR、I、O公開されている Markdown ドキュメントページを 1 件取得します。

すべての製品ツールは、公開 API と同じ REST コードパスを使用します。したがって、REST 検証、組織スコープ、ロール、請求承認、クォータ、TCPA 確認、プロバイダー安全性、監査動作は変更なく適用されます。

破壊的操作の確認

D とマークされたツールは、何かを変更または削除するか、実在の人物への発信を開始します。元に戻せない操作には、2 回のリクエストが必要です。最初のリクエストでは何も変更されず、次を返します。

{
  "status": "confirmation_required",
  "action": "Delete agent",
  "target": { "id": 195, "name": "Front Desk Receptionist" },
  "confirmation_token": "…",
  "expires_in_seconds": 600,
  "next_step": "…"
}

アシスタントは影響を受ける内容をユーザーに示し、確認を求めます。その後、同じ引数に confirmation_token を追加してリクエストを繰り返します。トークンは 10 分間有効で、1 つの組織、1 つのツール、および 1 組の完全に一致する引数に対してのみ有効です。そのため、3 つのエージェントを削除するには 3 回の確認が必要です。pause または stop を指定した campaign_action はこの手順をスキップするため、実行中のキャンペーンは常にすぐに停止できます。GET を指定した test_integration も同様です。一部の D ツールは 1 回のリクエストで実行されます。これは、D がサーバー側の確認ではなく、その操作の影響を示すためです。update_agent は下書きの内容を置き換えます(discard_agent_draft で元に戻せます)。deploy_agent は本番設定を置き換え、update_phone_number は進行中の通話を再ルーティングし、sync_mcp_server_tools はリモートサーバーのツールカタログを置き換えます。import_voip_numbers は番号を通信事業者に再割り当てし、run_agent_tests はクレジットを消費する可能性があります。send_sms と place_call は実在の人物に連絡します(place_call には独自の同意確認があります)。provision_phone_number は番号を購入します。MCP クライアントは、これらの操作についても承認を求める場合があります。

スタータープロンプト

prompts/list は、再利用可能な5つのワークフローを提供します。

  • create_inbound_receptionist
  • run_agent_tests
  • buy_and_attach_number
  • review_low_grade_calls
  • add_url_to_agent_knowledge

一覧にあるプロンプト名と宣言された引数を指定して prompts/get を使用すると、すぐに実行できるユーザーメッセージを取得できます。

リソース

resources/list は、公開キャッシュ済みの参照情報を公開します。

URI内容
thunderphone://docs/llms.txt公開ドキュメントのインデックス。
thunderphone://docs/quickstartクイックスタートの Markdown。
thunderphone://pricing現在の公開料金の Markdown。

1 件を resources/read で読み取ります。公開フェッチでは、短いタイムアウト、2 MiB の上限、プロセス内で 10 分間のキャッシュを使用します。

プロトコルとエラー

サーバーはプロトコルバージョン 2025-06-18 と 2025-03-26 をサポートします。サポート対象のクライアントバージョンをエコーし、それ以外の場合は 2025-06-18 を選択します。initialize、ping、ツール、プロンプト、リソース、通知を実装しています。通知は 202 Accepted を返します。このステートレスサーバーは SSE リスナーまたはセッション削除を公開しないため、GET と DELETE は Allow: POST を伴う 405 Method Not Allowed を返します。

ツールの失敗は、isError: true を含む成功した JSON-RPC レスポンスとして返されます。テキストには短い文に続いて JSON ブロックが含まれます。

{
  "code": "insufficient_balance",
  "detail": "There is not enough prepaid balance.",
  "next_step": "Call get_billing_summary, add funds in Organization > Billing, then retry."
}

place_call では、固有の outbound_tcpa_confirmation_required: プレフィックスが維持されます。不明な JSON-RPC メソッドは、HTTP 200 レスポンス内で -32601 を返します。JSON-RPC バッチは MCP 2025-06-18 でサポートされておらず、明確な -32600 の無効なリクエストエラーを返します。