この API を使わなくても、ダッシュボードでほとんどのツール要件に対応できます。接続
→ アプリでは、数回の OAuth クリックで Slack、HubSpot、Salesforce、Google Calendar、
Google Sheets、Cal.com を接続できます。接続 → APIでは、任意の HTTP API をエージェントアクションに変換できます
(cURL コマンドを貼り付けると、AI ウィザードがツールを作成し、組み込みのリクエストテストも利用できます)。
接続 → MCPでは、MCP サーバーを追加できます。詳細は
接続を参照してください。このガイドでは、API 画面の基盤となる
生の API を扱います。
ツールの構成
構成要素は 2 つです。- スキーマ — ツールの機能と受け取る引数を LLM に伝える OpenAI 形式の関数定義
(
{type: "function", function: {name, description, parameters}})。 - エンドポイント — LLM がツールを使用すると判断した際に、ThunderPhone のサーバーが呼び出す URL。 リクエストは JSON POST で、本文には LLM が選択した引数が含まれます。
1. 保存方法を選択する
エージェントにインラインで追加
単発のツールをエージェントの
tools 配列に追加します。シンプルですが、
再利用はできません。保存済み統合
ツールを再利用可能な統合として保存し、
複数のエージェントからリンクします。複数回使用するものにはこちらを推奨します。
2. 統合を作成する
id(UUID)を保存します。
3. エンドポイントをサンドボックスでテストする
統合をエージェントにリンクする前に、ThunderPhone のサーバーから署名付きリクエストを送信し、 接続を確認します。Response
400 code=url_not_allowed を返します。
4. 統合をエージェントにリンクする
エージェントを作成または更新する際に、integration_ids を使用して紐付けます。
get_weather を使用するよう指定できます。また、スキーマの説明から暗黙的に検出することもできます。
5. エンドポイントを実装する
エージェントがツールを呼び出すと、ThunderPhone は署名付き POST リクエストをendpoint_url に送信します。
6. ループをテストする
エージェントに対してマイクセッションを実行し、ツールが処理する質問(「94110 の天気は?」)をします。通話の文字起こしには、往復のすべての処理が表示されます。GET /v1/calls/{call_id}/transcriptで取得できます。エントリごとのタイミングと音声オフセットを含む生イベントストリームは、GET /v1/calls/{call_id}/historyで取得できます。
よくある注意点
エージェントがツールを呼び出さない
エージェントがツールを呼び出さない
LLM はツールの説明に基づいて判断します。発信者の質問が説明と一致しない場合、モデルはツールを呼び出しません。説明を具体化し(よく使われる同義語や表現を追加)、またはエージェントのプロンプトで明示します(「発信者が天気について質問した場合は
get_weather を使用する。」)。ツールが返すデータ量が多すぎる
ツールが返すデータ量が多すぎる
6 kB を超える応答は、文字起こしのプレビューで切り詰められます。行全体ではなく、LLM が必要とするフィールドのみを返してください。
タイムアウト
タイムアウト
ツールエンドポイントのデフォルトタイムアウトは 10 秒です。より長い時間が必要な場合は、非同期で処理してください。
{"status": "pending", "request_id": "..."} を返し、別のツール呼び出しで結果を提示します。バージョニング
バージョニング
統合に対する
PATCH は、すべて新しいリビジョンを作成します。GET /v1/integrations/{id}/versionsを確認して、誰が何を変更したかを把握できます。ツールのスキーマを壊してしまった場合は、古いスナップショットを PATCH で戻すことで手動でロールバックできます。次のステップ
連携リファレンス
CRUD、転送、バージョン履歴。
Function Tools仕様
完全なJSONスキーマ文法と署名付きエンドポイントの契約。
署名を検証
Webhook署名パターンをツールエンドポイントに適用。
文字起こし + 履歴API
ツール呼び出しの完全な往復を確認。