エージェント基盤・プロトコル

ツールレジストリとは|説明文を書き直したら、候補が9個から5個に絞れた

ツールレジストリとは何を管理する仕組みなのか説明文の書き方で何が変わるのか登録するときに何を決めておくのか

エージェントにツールを持たせるとき、名前と説明を渡します。この説明文が選択の唯一の手がかりになります。ところが、ここが雑になりがちです。

今回は測りました。「データを取得する」のような曖昧な説明と、具体的な説明で、質問に対して候補をいくつまで絞れるかを比べています。結果は候補9個と5個、一意に決まった質問は0件と2件でした。

この記事の要点

  • ツールレジストリは使えるツールを登録して管理する仕組み
  • 実測では、曖昧な説明で候補9個、具体的な説明で5個
  • 一意に決まった質問は0件と2件
  • 説明文には何を受け取り、何を返し、何が対象外かを書く

説明文を書き直したら候補が9個から5個に絞れた

曖昧な説明と具体的な説明で、質問に対する候補の数を測りました。書き方だけで絞り込みの精度が変わります。

ツールレジストリの説明文の効果を確かめるため、実際に測りました。3つのツールと3つの質問を用意しています。

曖昧な説明は「データを取得する」「情報を取ってくる」「検索する」。具体的な説明は、受け取る引数と返す内容、対象の範囲まで書いたものです。

javascript
// 曖昧な説明
const VAGUE = [
  { name: 'get_data',    desc: 'データを取得する' },
  { name: 'fetch_info',  desc: '情報を取ってくる' },
  { name: 'search_docs', desc: '検索する' },
];

// 具体的な説明
const CLEAR = [
  { name: 'get_order',     desc: '注文番号を指定して、1件の注文の明細と配送状況を返す。過去2年分が対象' },
  { name: 'search_faq',    desc: 'キーワードでよくある質問を全文検索し、上位5件の質問と回答を返す' },
  { name: 'get_user_plan', desc: 'ユーザーIDを指定して、契約プラン名と次回請求日を返す' },
];
text
質問に対して、説明文だけで候補をいくつまで絞れるか

--- 曖昧な説明 ---
  「注文12345はいつ届く?」 候補3個 → 絞れない
  「返品のやり方を教えて」 候補3個 → 絞れない
  「今のプランと次の請求日は?」 候補3個 → 絞れない
  候補の合計: 9個 / 一意に決まった質問: 0 / 3

--- 具体的な説明 ---
  「注文12345はいつ届く?」 候補1個 → 一意に決まる
  「返品のやり方を教えて」 候補3個 → 絞れない
  「今のプランと次の請求日は?」 候補1個 → 一意に決まる
  候補の合計: 5個 / 一意に決まった質問: 2 / 3

絞れました。候補は9個から5個、一意に決まった質問は0件から2件です。ツールの数も機能も変えていません。説明文だけを書き直しました。

何が効いたのか

効いたのは、説明文に質問と結びつく語が入っていることです。「注文番号を指定して」と書いてあれば、注文についての質問と結びつきます。

曖昧な説明にはその手がかりがありません。「データを取得する」では、どの質問とも等しく結びついてしまい、選べません。

1件は絞れなかった

正直に書くと、具体的な説明でも1件は絞れていません。「返品のやり方を教えて」という質問です。返品という語が、どの説明文にも入っていないためです。

これは説明文の限界というより、想定する質問と説明文がずれている状態です。よく聞かれる語を説明文に含めることで改善できます。

説明文を書き直すだけで候補が減る。ツールの数も機能も変えていない。

単位: 個曖昧な説明9個具体的な説明5個−44%3つの質問それぞれの候補数の合計。曖昧な説明では毎回3個すべてが候補になる。
図1 ── 3つの質問に対する候補の合計数
出典Anthropic Engineering「Building effective agents」2026-08-17 確認
the most successful implementations use simple, composable patterns rather than complex frameworks
原文Anthropic Engineering「Building effective agents」 この内容の有効期限2027-02-17

登録するときに何を決めておくのか

説明文に加えて、取り消せる操作かどうかを属性として持たせます。これがないと、渡すツールを場面ごとに絞れません。

ツールレジストリに登録するとき、名前と説明だけでは足りません。その操作の性質も一緒に持たせます。

説明文に書く3要素

  1. 何を受け取るか。注文番号なのか、キーワードなのか
  2. 何を返すか。1件なのか一覧なのか、どんな項目が含まれるか
  3. 対象の範囲。過去2年分、上位5件、といった制限

3番目が抜けやすい項目です。範囲を書いておかないと、対象外のデータを探して「見つかりません」と答えることになります。

説明文以外に持たせる属性

選択のためではなく、安全のために持たせる情報もあります。取り消せる操作か、承認が必要か、外部に影響するか。

これらがあると、場面ごとに渡すツールを絞れます。外部の文章を読み込む場面では読み取り専用のものだけ渡す、といった制御が可能になります。

登録時に性質を持たせておくと、渡す段階で絞り込める。後から分類するのは難しい。

選択のための情報(3項目)L2安全のための情報(3項目)L1依存の向き上は選ばせるための情報、下は渡すかどうかを決めるための情報。役割が違うので分けて持つ。
図2 ── ツール登録時に持たせる情報

全部を常に渡さない

登録してあるツールを、毎回すべて渡す必要はありません。その場面で使うものだけ渡す方が、選択の誤りも減り、送る量も減ります。

OWASPが指摘する権限の過大さは、想定外の出力に応じて有害な操作が実行されてしまう問題でした。渡すツールを絞ることは、この対策にもなります。

権限の設計はエージェントのセキュリティの記事、渡す量を絞る考え方はコンテキスト設計の記事で扱っています。

使われていないツールを外す登録したまま呼ばれていないツールは、選択肢を増やすだけの存在になります。記録を見れば、一度も呼ばれていないものが分かります。定期的に外すと、選択の精度が保てます。記録の設計はエージェント可観測性の記事にあります。
出典OWASP Top 10 for LLM Applications「LLM06:2025 Excessive Agency」2026-08-17 確認
Excessive Agency is the vulnerability that enables damaging actions to be performed in response to unexpected, ambiguous or manipulated outputs from an LLM, regardless of what is causing the LLM to malfunction.
原文OWASP Top 10 for LLM Applications「LLM06:2025 Excessive Agency」 この内容の有効期限2027-02-17

ツールレジストリとは何を管理する仕組みなのか

エージェントが使える機能を一覧で持つ仕組みです。名前と説明、そして権限の情報をまとめて管理します。

ツールレジストリは、エージェントが呼び出せる機能を登録しておく場所です。名前・説明・引数の形式・返す内容をまとめて持ちます。

OWASPが説明するとおり、エージェントは開発者から関数を呼ぶ能力を与えられます。その能力の一覧を、どこでどう管理するかという話になります。

散らばると把握できなくなる

小さいうちは、ツールの定義をコードの中に直接書いても困りません。問題は数が増えたときです。どこにどれがあるか分からなくなり、似た機能が重複します

重複は選択の誤りを招きます。似た名前と似た説明のツールが並ぶと、どちらを使うべきかが判断できなくなります。

説明文が選択の唯一の手がかり

重要なのは、エージェントが説明文だけを見てツールを選ぶことです。中の実装は見えません。

つまり説明文の質が、そのまま選択の精度になります。次の節で、書き方によってどれだけ変わるかを測ります。

余談 人向けのコメントとは目的が違う

コード内のコメントは、後から読む人のために書きます。ツールの説明文は選ぶための判断材料として書きます。「注文を取得する」ではなく「注文番号を指定して1件返す」と書くのは、そのためです。

出典OWASP Top 10 for LLM Applications「LLM06:2025 Excessive Agency」2026-08-17 確認
An LLM-based system is often granted a degree of agency by its developer - the ability to call functions or interface with other systems via extensions
原文OWASP Top 10 for LLM Applications「LLM06:2025 Excessive Agency」 この内容の有効期限2027-02-17

よくある質問

説明文はどのくらい詳しく書けばよいですか?
受け取る引数、返す内容、対象の範囲の3つが書ければ足ります。長さより具体性で、「注文番号を指定して」「過去2年分が対象」といった記述が選択の手がかりになります。
ツールの数が多いと問題がありますか?
選択を誤りやすくなります。対策は、場面ごとに渡すツールを絞ることです。全部を常に渡す必要はありません。
レジストリは専用の仕組みが必要ですか?
必要ありません。ツールの定義を1箇所にまとめて、場面ごとに必要なものを選んで渡すだけでも成立します。要点は、定義が散らばらないようにすることです。
誰でも使えるツールと、権限が要るツールを分けられますか?
分けるべきです。登録の時点で、取り消せる操作かどうか、承認が必要かどうかを属性として持たせておくと、渡す側で絞り込めます。

まとめ

  • ツールレジストリはツールの定義を1箇所で管理する仕組み
  • 実測では説明文を書き直すだけで候補が9個から5個に絞れた
  • 一意に決まる質問も0件から2件に増えた
  • 書くべきは何を受け取り、何を返し、何が対象外か

今日から始められること

  1. 登録しているツールの説明文を読み返す
  2. 引数・返す内容・対象範囲が書かれているか確認する
  3. 同じような説明のツールが並んでいないか確認する
  4. 取り消せる操作かどうかを属性として持たせる

実務で組んだツールレジストリのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る