create-tool について
アシスタント向けのツール選択、設定、更新、接続を行うVapiスキルです。開発者が要件に合うツール種別を選び、依存関係と変更を確認できます。
主な機能
- 01適切なツール種別の選択
- 02既存ツールの確認と再利用
- 03検証済みツールペイロードの作成
- 04ツールの更新と変更確認
- 05アシスタントへの接続と解除
活用シーン
- 01HTTP APIリクエストツールの設定
- 02MCPサーバーのツールへの接続
- 03Vapiアシスタントへのツール接続
MCP 対応
既存のMCPサーバーのツールを検出して使うため、Vapiの`mcp`ツールを設定できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ vapiai/ skills --skill create-toolインストール後、Claude Code で/create-toolを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/api-examples.mdassistant-attachments.mdfunction-tool-server.mdtool-types.md詳細
Vapi ツール管理
要求された機能を直接提供する、ドキュメントに記載されたツールの種類を選択してください。ユーザーが明示的に Vapi のライブ変更を要求していない限り、ペイロードまたは実装計画を提示してください。
安全性と情報源に関するルール
- 使用前に、種類とすべてのフィールドを最新の Create Tool API、公開 OpenAPI スキーマ、または種類別の公開ガイドで確認してください。
- ドキュメントに記載された Vapi の機能を、カスタム関数ツールで模倣しないでください。
- エンドポイント、リクエストスキーマ、宛先、電話番号、アシスタント ID、ツール ID、インテグレーション接続、認証情報、シークレットを決して捏造しないでください。
- シークレットは Vapi の認証情報、またはユーザーのバックエンドで管理してください。トークンを含む MCP サーバー URL は認証情報として扱ってください。
- ツールの設定、アシスタントへのアタッチ、プロバイダー接続、外部実装を区別してください。これらはそれぞれ別の成果物であり、いずれかが成功しても他が成功したことにはなりません。
ツールファミリーを選択する
| 必要な機能 | 選択するツール |
|---|---|
| 通話を終了する、通話を転送する、アシスタント間で引き継ぐ、DTMF または SMS を送信する、SIP リクエストを行う、またはボイスメールを処理する | 該当するネイティブ Vapi ツール |
| ドキュメントで公開されている Google Calendar、Google Sheets、Slack、GoHighLevel、その他の対応プロバイダーのアクションを使用する | 接続と必須リソースを解決したうえで、該当するインテグレーションツール |
| 宣言型のメソッド、URL、ヘッダー、本文を指定して既知の HTTP エンドポイントを呼び出す | apiRequest |
| Vapi のコールバック契約を実装するカスタムバックエンドロジックに、モデルが選択した関数呼び出しを送る | function |
| 既存の MCP サーバーからツールを検出して使用する | デフォルトの Streamable HTTP トランスポートを使用する mcp |
モデルがその機能を呼び出すという理由だけで、function を選択しないでください。ネイティブツール、インテグレーションツール、API Request、MCP ツールもモデルから呼び出されます。
Code Tool(type: "code")を先回りして推奨または作成しないでください。ほとんどのアカウントでは一般に利用できません。既知の HTTP エンドポイントには apiRequest を、ユーザーがホストするコールバックロジックにはユーザーの server.url を指定した function を優先してください。Code Tool について説明するのは、ユーザーが明示的に質問した場合に限り、推奨オプションとして提示しないでください。
ペイロードを作成する前に、Tool Type Selection を読んでください。選択したファミリーのセクションだけを読んでください。
手順
-
実行モードを決定します。
- ユーザーがドラフトを求めている場合、またはライブ変更を明確に許可していない場合は、JSON、コード、または契約を返します。
- ユーザーが作成、更新、アタッチ、デタッチを明示的に要求し、
VAPI_API_KEYを利用できる場合に限り、Vapi API を呼び出します。 - キーを利用できない場合は、ユーザーにチャットへの貼り付けを求めず、すぐに使える成果物とローカルコマンドを返します。
-
作成前に確認します。
GET /toolを使用し、指定された名前と機能に合致する既存のツールを確認します。- 一致するツールが明確で、ユーザーが新しいリソースを必要としていない場合は、適切な既存ツールを再利用します。
- 該当するツールが複数ある場合は、ユーザーに選択を求めます。ID を推測してはいけません。
- 既存のツールを更新する前に、
GET /tool/{id}を使用します。
-
機能と依存関係を解決します。
- 上の表と最新の公開ドキュメントを使って、ツールファミリーを選択します。
- ライブ作成の前に、必要なエンドポイント、宛先、プロバイダー接続、カレンダー、スプレッドシート、チャネル、認証情報、MCP サーバーをすべて解決します。
- ある値が有効なツールの作成を妨げている場合は、まず有用な契約案を示し、その値だけを尋ねます。
-
最小限の有効なペイロードを作成します。
- ツールをいつ呼び出すべきか、簡潔かつ具体的にモデルへ説明します。
function.nameを持つ型では、^[a-zA-Z0-9_-]+$に一致する1〜64文字を使用します。ユーザーから指定がない場合は、安定した説明的な名前を生成します。apiRequestでは、現在の公開スキーマに照らして、トップレベルのname、メソッド、URL、ヘッダー、本文スキーマ、認証情報、タイムアウトを検証します。- モデルが指定する必要のあるパラメーターのみを定義します。信頼できる値や秘密の値は、モデルから見えるスキーマの外に置きます。
- 進捗の通知が有用でない限り、音声の
messagesは省略します。含める場合は、request-start、request-response-delayed、request-complete、request-failedなど、選択したツールのスキーマで現在受け付けられている型のみを使用します。
-
安全に作成または更新します。
- 本番環境に影響する変更の前に、ユーザーの現在の指示でその変更が明確に許可されている場合を除き、型、機能、外部依存関係、対象を要約します。
POST /toolで作成します。返されたid、型、該当する場合は呼び出し可能な名前、および要求した設定を検証します。- 更新する場合は、現在の
typeと変更したトップレベルフィールドのみをPATCH /tool/{id}に送信します。ネストされたオブジェクトを変更するときは、取得したツール内のそのオブジェクトに要求された変更をディープマージし、省略されたキーが失われないように、マージ済みのネストされたオブジェクトを送信します。変更のないトップレベルフィールドや、レスポンス専用フィールドは再送信しないでください。 - ツールを再取得して結果を検証します。ツールを作成または更新しても、アシスタントには紐付けられません。
-
アシスタントの設定を失わずに紐付けまたは解除します。
- アシスタントを変更する前に、Assistant Attachments を読んでください。
GET /assistant/{id}で現在のmodel全体をコピーし、ツール ID をmodel.toolIdsに追加するか、そこから削除して、model.toolsと無関係なすべてのモデルフィールドを保持します。- マージ済みの
model全体をPATCH /assistant/{id}に送信します。手書きの部分的なmodelをパッチしないでください。 - アシスタントを再取得し、要求した紐付け状態と保持されたモデル設定の両方を検証します。
-
要求された場合にのみ、外部の動作を実装します。
apiRequestでは、設定された HTTP リクエストを Vapi が実行します。関数コールバックサーバーも構築しないでください。mcpでは、呼び出し可能なツールは MCP サーバーが提供します。個別の Vapi 関数ツールとして重複して作成しないでください。- バックエンドを構築する必要があるカスタム
functionについては、Function Tool Server を読んでください。それ以外のツールファミリーでは、このリファレンスを読み込まないでください。
-
失敗は正直に伝えます。
400の場合は、文書化された形式または検証エラーを修正してから、正当な理由がある場合に限り、1回だけ再試行します。401または403の場合は、認証または権限の問題として処理を停止します。404の場合は、見つからないツール、アシスタント、接続先、または依存関係を報告します。5xxの場合は、サービス障害を報告します。- 関連する操作を検証するまでは、作成、更新、紐付け、解除、プロバイダーへの接続、またはバックエンドの実装が成功したと決して主張しないでください。
API 実装例
ユーザーが TypeScript、Python、または cURL の実装コードを要求した場合は、Tool API Examples を読んでください。更新や紐付けの変更を行う前に、現在のツールとアシスタントの状態を読み取ってください。ドラフトの成果物ではプレースホルダーを使用できますが、実際のリクエストでは使用できません。