ツールボックスでツール検索を有効にする

ツールボックスに多数のツールが含まれている場合、すべてのツール定義をターンごとにモデルに渡すと、3 つの複合的な問題が発生します。トークン コストはコンテキストに追加されるたびに増加し、コンテキスト ウィンドウには現在のタスクに必要のない定義が入力され、モデルは過密リストから間違ったツールを選択します。 ツール検索では、完全なツール リストを 2 つのフォーカスされたメタ ツールに置き換えることでこの問題が解決されるため、ツールボックスのサイズに関係なくコストはフラットなままです。

ツール検索を有効にすると、モデルには 2 つの組み込みのメタ ツールが取得されます。 tool_searchは、必要な機能の自然言語の説明を使用して呼び出し、 call_toolを使用して検出されたツールを名前で呼び出します。 Foundry は、ツールボックス内のツールの完全なセットに対して tool_search クエリを評価し、一致するもののみを返します。そのため、アクティブなコンテキストはフォーカスされ、関連性が維持されます。

リクエスト スコープでの遅延ツール定義の検出については、「Azure OpenAI Responses API でツール検索を使用する」を参照してください。

次の場合にツール検索を使用します。

  • ツールボックスには 10 ~ 15 個を超えるツールがあり、コンテキストの肥大化を回避する必要があります。
  • エージェント タスクが異なる場合は、さまざまなツールのサブセットが必要であり、モデルで適切なサブセットを動的に選択する必要があります。

前提条件

ツール検索のしくみ

ツールボックスに {"type": "toolbox_search"} を含めると、最初の tools/list 応答によってツールボックス内のすべてのツールが非表示になります。 代わりに、Foundry は 2 つのメタツールを追加します。

  • tool_search — モデルは、必要な機能の自然言語の説明を使用してこのツールを呼び出します。 Foundry はクエリを評価し、一致するツール定義を返します。
  • call_tool — モデルでは、このツールを使用して、検出されたツールを名前で呼び出します。

モデルでは、完全なツール 一覧は参照されません。 意図について説明し、適切なツールを検出して、それらを呼び出します。

検索メカニズム

ツール検索では 、BM25 (Best Matching 25) が使用されます。これは、メタデータがクエリとどの程度一致するかに基づいてツールをスコア付けする確率論的ランク付けアルゴリズムです。 BM25 では、用語の頻度、逆ドキュメントの頻度、ドキュメントの長さの正規化を考慮して結果をランク付けします。 モデルが tool_searchを呼び出すと、Foundry は各ツールの名前、説明、およびパラメーター情報にインデックスを付け、クエリの上位スコアの一致を返します。

Parameters

tool_search関数は、次のパラメーターを受け入れます。

パラメーター タイプ 必須 Description
query 文字列 はい ツールが必要な機能またはタスクの自然言語の説明。
limit 整数 いいえ 返されるツールの最大数。 既定値は 5 です。 最大値は 10 です。

モデルは、1 ターンで必要な回数 tool_search 呼び出すことができます。 各呼び出しではクエリに一致するツールのみが返されるため、アクティブなコンテキストは現在のステップに関連するものに焦点を当てたままです。 tool_searchによって返されたツールは、繰り返し検索することなく、ターンの残りの部分で呼び出し可能なままです。

Note

toolbox_search エントリは、ツール検索をアクティブにする構成ディレクティブです。 tools/list自体には表示されません。また、型ごとの名前のないツールの制限にはカウントされません。

ツールボックス バージョンのツール リストに {"type": "toolbox_search"} を追加します。 ツールボックス内の他のすべてのツールは、ツール検索を通じて使用できます。モデルに表示される最初のツール リストでは、これらのツールは公開されません。

Foundry Toolkit for Visual Studio Codeを使用して、ツールボックスを作成または編集するときにツール検索を有効にします。 [ ツール検索 ] チェック ボックスをオンにすると、 toolbox_search 構成エントリがツールボックス のバージョンに追加されます。

  1. アクティビティ バーで Foundry Toolkit を選択します。
  2. [ マイ リソース] で、[ プロジェクト名>Tools] を展開します。
  3. [+ ツールボックスの追加] アイコンを選択します。
  4. [ カスタム ツールボックスのビルド ] タブで、ツールボックスの名前と説明を入力し、目的のツールを追加します。
  5. [ ツール検索] を選択します。
  6. 公開を選択します。

新しいツールボックスを発行すると、最初のバージョンが作成されます。 そのバージョンは自動的に既定のバージョンになります。 ツールボックスの完全な作成ワークフローについては、「 Foundry の意図ベースのツールボックスをキュレーションする」を参照してください。

import os
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import MCPToolboxTool, ToolSearchToolboxTool

project = AIProjectClient(
    endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
    credential=DefaultAzureCredential(),
)

# ToolSearchToolboxTool() enables tool search — other tools in the toolbox are discovered on
# demand through tool_search instead of being listed up front. Add as many MCP servers as you need;
# tool search keeps the agent's initial tool surface small regardless of toolbox size.
inner_mcp_tool = MCPToolboxTool(
    server_label="github",
    server_url="https://api.githubcopilot.com/mcp",
    require_approval="never",
    project_connection_id="github-mcp-conn",
)

toolbox_version = project.toolboxes.create_version(
    name="my-toolbox",
    description="Large toolbox with tool search enabled",
    tools=[inner_mcp_tool, ToolSearchToolboxTool()],
)
print(f"Created toolbox `{toolbox_version.name}` (version {toolbox_version.version})")

重要なツールをピン留めしたり、特定のツールの検索キーワードを追加したりするには、個々のツール エントリで tool_configs を使用します。 ツール検出の微調整を参照してください。

POST {project_endpoint}/toolboxes/my-toolbox/versions?api-version=v1
Authorization: Bearer {token}
Content-Type: application/json

{
  "description": "Large toolbox with tool search enabled",
  "tools": [
    {
      "type": "toolbox_search"
    },
    {
      "type": "work_iq_preview",
      "project_connection_id": "{workiq-connection-id}",
      "tool_configs": {
        "calendar_events": {
          "pin": true,
          "additional_search_text": "meetings appointments schedule calendar invites"
        }
      }
    },
    {
      "type": "mcp",
      "server_label": "github",
      "server_url": "https://api.githubcopilot.com/mcp",
      "require_approval": "never",
      "project_connection_id": "github-mcp-conn"
    }
  ]
}

Note

ベアラー トークンを取得するときに、トークン スコープ https://ai.azure.com/.default を使用します。

using Azure.AI.Projects;
using Azure.AI.Projects.Agents;
using Azure.Identity;

var projectEndpoint = Environment.GetEnvironmentVariable("FOUNDRY_PROJECT_ENDPOINT");
DefaultAzureCredential credential = new();
AIProjectClient projectClient = new(endpoint: new Uri(projectEndpoint), tokenProvider: credential);
AgentToolboxes toolboxClient = projectClient.AgentAdministrationClient.GetAgentToolboxes();

// ToolSearchToolboxTool enables tool search — other tools are discovered on demand via tool_search
MCPToolboxTool mcpTool = new(serverLabel: "github")
{
  ServerUri = new Uri("https://api.githubcopilot.com/mcp"),
  ToolCallApprovalPolicy = new McpToolCallApprovalPolicy(
    GlobalMcpToolCallApprovalPolicy.NeverRequireApproval),
};
ToolSearchToolboxTool searchTool = new()
{
    Name = "ToolBoxSearch",
    Description = "Search for tools by capability"
};

ToolboxVersion toolboxVersion = toolboxClient.CreateVersion(
    name: "my-toolbox",
    tools: [mcpTool, searchTool],
    description: "Large toolbox with tool search enabled");
Console.WriteLine($"Created toolbox `{toolboxVersion.Name}` (version {toolboxVersion.Version})");
import { DefaultAzureCredential } from "@azure/identity";
import { AIProjectClient } from "@azure/ai-projects";

const projectEndpoint = process.env["FOUNDRY_PROJECT_ENDPOINT"];
const project = new AIProjectClient(projectEndpoint, new DefaultAzureCredential());

// { type: "toolbox_search" } enables tool search — other tools in the toolbox are
// discovered on demand through tool_search instead of being listed up front. Add as many MCP
// servers as you need; tool search keeps the agent's initial tool surface small regardless of size.
const toolboxVersion = await project.toolboxes.createVersion(
  "my-toolbox",
  [
    {
      type: "mcp",
      server_label: "github",
      server_url: "https://api.githubcopilot.com/mcp",
      require_approval: "never",
      project_connection_id: "github-mcp-conn",
    },
    { type: "toolbox_search" },
  ],
  { description: "Large toolbox with tool search enabled" },
);
console.log(`Created toolbox \`${toolboxVersion.name}\` (version ${toolboxVersion.version})`);

ツール検索がアクティブであることを確認する

バージョン固有のエンドポイントを使用して、 tool_searchcall_tool、ピン留めされたツールが tools/listに表示されることを確認します。 固定されていない通常のツールボックス ツールは、最初の一覧から非表示のままにする必要があります。

Foundry Toolkit によってツールボックスが作成され、発行されます。 特定のツールボックス バージョンの MCP エンドポイント応答を確認するには、このセクションの Python、.NET、JavaScript、または REST API タブを選択します。

まだインストールしていない場合は、MCP クライアント SDK をインストールします。

pip install mcp
import asyncio
from azure.identity import DefaultAzureCredential
from mcp.client.streamable_http import streamablehttp_client
from mcp import ClientSession

url = "https://<account>.services.ai.azure.com/api/projects/<proj>/toolboxes/<name>/versions/<version>/mcp?api-version=v1"
expected_pinned_tools = {"calendar_events"}  # Match the tools configured with pin=True.

token = DefaultAzureCredential().get_token("https://ai.azure.com/.default").token
headers = {
    "Authorization": f"Bearer {token}",
}

async def verify_toolbox():
    async with streamablehttp_client(url, headers=headers) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # List the two meta-tools and any explicitly pinned tools.
            tools_result = await session.list_tools()
            print(f"Tools found: {len(tools_result.tools)}")
            for tool in tools_result.tools:
                print(f"  - {tool.name}: {(tool.description or '')[:80]}")

            names = {tool.name for tool in tools_result.tools}
            meta_tools = {"tool_search", "call_tool"}
            assert meta_tools <= names, "Tool Search meta-tools are missing -- check toolbox_search config"
            assert expected_pinned_tools <= names, "A configured pinned tool is missing"

            unexpected_tools = names - meta_tools - expected_pinned_tools
            assert not unexpected_tools, f"Unpinned tools are visible: {sorted(unexpected_tools)}"

asyncio.run(verify_toolbox())

昇格する前に、バージョン固有のエンドポイント (/versions/{version}/mcp) を使用して検証します。

1. MCP セッションを初期化します。

POST {project_endpoint}/toolboxes/{toolbox_name}/versions/{version}/mcp?api-version=v1
Authorization: Bearer {token}
Content-Type: application/json

{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}

2. 初期化された通知を送信します。

POST {project_endpoint}/toolboxes/{toolbox_name}/versions/{version}/mcp?api-version=v1
Authorization: Bearer {token}
Content-Type: application/json

{"jsonrpc":"2.0","method":"notifications/initialized"}

3. 使用可能なツールを一覧表示します。

POST {project_endpoint}/toolboxes/{toolbox_name}/versions/{version}/mcp?api-version=v1
Authorization: Bearer {token}
Content-Type: application/json

{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}

result.toolsで、tool_searchcall_tool、およびpin: trueで構成されたすべてのツールが存在することを確認します。 ピン留めされていない通常のツールボックス ツールはすべて、最初の一覧には表示されません。

MCP 互換の.NETクライアントを使用します。 スコープ https://ai.azure.com/.default を持つトークンを取得し、バージョン固有の MCP エンドポイントに対して tools/list を呼び出します。 要求図形の REST API タブを参照してください。

まだインストールしていない場合は、MCP クライアント SDK をインストールします。

npm install @modelcontextprotocol/sdk @azure/identity
import { DefaultAzureCredential } from "@azure/identity";
import { Client } from "@modelcontextprotocol/sdk/client";
import {
  StreamableHTTPClientTransport,
} from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const url =
  "https://<account>.services.ai.azure.com/api/projects/<proj>" +
  "/toolboxes/<name>/versions/<version>/mcp?api-version=v1";
// Match the tools configured with pin: true.
const expectedPinnedTools = new Set(["calendar_events"]);

async function verifyToolbox() {
  const credential = new DefaultAzureCredential();
  const tokenResponse = await credential.getToken(
    "https://ai.azure.com/.default",
  );
  if (!tokenResponse) {
    throw new Error("Failed to acquire an access token.");
  }

  // Build the bearer header from the acquired token. Using tokenResponse.token
  // here reveals no secret in source -- it's a variable reference resolved at
  // runtime, not a hardcoded value.
  const authorizationHeader = "Bearer " + tokenResponse.token;
  const transport = new StreamableHTTPClientTransport(new URL(url), {
    requestInit: {
      headers: { Authorization: authorizationHeader },
    },
  });

  const client = new Client({ name: "tool-search-verifier", version: "1.0.0" });
  await client.connect(transport);

  try {
    // List the two meta-tools and any explicitly pinned tools.
    const toolsResult = await client.listTools();
    console.log(`Tools found: ${toolsResult.tools.length}`);
    for (const tool of toolsResult.tools) {
      console.log(`  - ${tool.name}: ${(tool.description ?? "").slice(0, 80)}`);
    }

    const names = new Set(toolsResult.tools.map((tool) => tool.name));
    const metaTools = ["tool_search", "call_tool"];
    for (const metaTool of metaTools) {
      if (!names.has(metaTool)) {
        throw new Error(
          `Tool Search meta-tool "${metaTool}" is missing -- check toolbox_search config`,
        );
      }
    }
    for (const pinnedTool of expectedPinnedTools) {
      if (!names.has(pinnedTool)) {
        throw new Error(`A configured pinned tool is missing: ${pinnedTool}`);
      }
    }

    const unexpectedTools = [...names].filter(
      (name) => !metaTools.includes(name) && !expectedPinnedTools.has(name),
    );
    if (unexpectedTools.length > 0) {
      throw new Error(`Unpinned tools are visible: ${unexpectedTools.join(", ")}`);
    }
  } finally {
    await client.close();
  }
}

verifyToolbox().catch((err) => {
  console.error("The verifier encountered an error:", err);
});

ツール検出を微調整する

ツール検索は、追加の構成なしで機能します。 予測可能な使用パターンの場合は、特定のツールを表示してインデックスを作成する方法を調整します。

Foundry Toolkit では、ツール検索の有効化がサポートされています。 ピン留めされたツールまたは追加の検索キーワードを構成するには、このセクションのPython、.NET、JavaScript、または REST API タブを選択します。

重要なツールをピン留めする

pinを使用して、特定のツールを常にtools/listtool_searchと共にcall_toolに表示します。 ピン留めされたツールは、検索ラウンド トリップなしですぐに呼び出すことができます。 MCP サーバーまたは組み込みのツール エントリ内のすべてのツールをピン留めするには、キーとして "*" を使用します。

tools=[
    {"type": "toolbox_search"},
    {
        "type": "mcp",
        "server_label": "analytics",
        "server_url": "https://db-mcp.internal/sse",
        "tool_configs": {
            "execute_query": {"pin": True},  # always visible — no search needed
        },
    },
]
{
  "tools": [
    { "type": "toolbox_search" },
    {
      "type": "mcp",
      "server_label": "analytics",
      "server_url": "https://db-mcp.internal/sse",
      "tool_configs": {
        "execute_query": { "pin": true }
      }
    }
  ]
}

.NET SDK で、ツールボックス バージョンを構築するときに、tool_configs を MCP ツール エントリにアタッチします。 構成図形は、 REST API タブに表示される JSON と同じです。

JavaScript では、project.toolboxes.createVersionに渡される MCP ツール オブジェクトにtool_configsを含めます。

const tools = [
  { type: "toolbox_search" },
  {
    type: "mcp",
    server_label: "analytics",
    server_url: "https://db-mcp.internal/sse",
    tool_configs: {
      execute_query: { pin: true }, // always visible — no search needed
    },
  },
];

エントリ内のすべてのツールをピン留めするには、キーとして "*" を使用します。

{
    "type": "mcp",
    "server_label": "analytics",
    "server_url": "https://db-mcp.internal/sse",
    "tool_configs": {
        "*": {"pin": True},  # every tool in this server is always visible
    },
}
{
  "type": "mcp",
  "server_label": "analytics",
  "server_url": "https://db-mcp.internal/sse",
  "tool_configs": {
    "*": { "pin": true }
  }
}

.NET MCP ツール エントリの "*" 内で同じ tool_configs ワイルドカード キーを使用して、MCP サーバーからすべてのツールをピン留めします。 JSON 図形の REST API タブを参照してください。

JavaScript MCP ツール オブジェクトのtool_configs内で同じ"*"ワイルドカード キーを使用して、MCP サーバーからすべてのツールをピン留めします。

{
  type: "mcp",
  server_label: "analytics",
  server_url: "https://db-mcp.internal/sse",
  tool_configs: {
    "*": { pin: true }, // every tool in this server is always visible
  },
}

検索キーワードを追加する

ツールの MCP の説明が、ユーザーが自然に使用するボキャブラリと一致しない場合は、 additional_search_textを使用してキーワードを追加します。 追加のテキストは、検索ランク付けにのみ使用されます。ツール スキーマ内のモデルに公開されることはありません。

{
    "type": "mcp",
    "server_label": "analytics",
    "server_url": "https://db-mcp.internal/sse",
    "tool_configs": {
        "execute_query": {
            "pin": True,
            "additional_search_text": "SQL database analytics reporting dashboard queries",
        },
        "list_tables": {
            "additional_search_text": "schema columns metadata table structure discover",
        },
    },
}
{
  "type": "mcp",
  "server_label": "analytics",
  "server_url": "https://db-mcp.internal/sse",
  "tool_configs": {
    "execute_query": {
      "pin": true,
      "additional_search_text": "SQL database analytics reporting dashboard queries"
    },
    "list_tables": {
      "additional_search_text": "schema columns metadata table structure discover"
    }
  }
}

.NET SDK で、MCP ツール エントリの additional_search_text (および必要に応じて pin) tool_configs 内に設定します。 図形は、 REST API タブに表示される JSON と一致します。

JavaScript で、project.toolboxes.createVersionに渡される MCP ツール オブジェクトのtool_configs内にadditional_search_text (および必要に応じてpin) を設定します。

{
  type: "mcp",
  server_label: "analytics",
  server_url: "https://db-mcp.internal/sse",
  tool_configs: {
    execute_query: {
      pin: true,
      additional_search_text: "SQL database analytics reporting dashboard queries",
    },
    list_tables: {
      additional_search_text: "schema columns metadata table structure discover",
    },
  },
}

自動ピン留め

Foundry は、各ユーザーが最も頻繁に呼び出すツールを自動的に追跡し、 tools/listに直接表示します。構成は必要ありません。 短いウォームアップ期間の後、よく使うツールが検索を介さずに表示されます。 ホット セットはユーザー単位であり、使用パターンの変化に応じて更新されます。古いエントリは自動的に期限切れになります。

自動ピン留めは、明示的な pinadditional_search_text 構成で構成されます。 事前に把握している重要なツールはピン留めし、名称が曖昧なツールにはキーワードを追加しておき、使用パターンが明らかになるにつれて、ロングテールなツールについては自動ピン留め機能に任せましょう。

構成のリファレンス

フィールド タイプ 必須 Description
type "toolbox_search" はい ツールボックスのツール検索をアクティブにします。

ツール検索を有効にするには、ツールボックスのツール リストに {"type": "toolbox_search"} を含めます。 その他の構成フィールドはすべて省略可能です。

tool_configs (ツールごと)

個々の MCP ツール エントリに tool_configs を設定して、検索コンテキスト内での特定のツールの動作を制御します。 特定のツールを構成するキーとして正確なツール名を使用するか、そのエントリ内のすべてのツールに構成を適用 "*"

フィールド タイプ Description
pin boolean trueすると、ツールはtools/listtool_searchと共にcall_toolに直接表示されます。 モデルは、最初に検索せずに呼び出すことができます。
additional_search_text 文字列 ツールの検索インデックス エントリに追加された追加のキーワード。 検索ランク付けにのみ使用されます。ツール スキーマ内のモデルには表示されません。

Considerations

  • すべてのツールボックス ツールは、最初の一覧から非表示になります。 toolbox_searchがツールボックス内にある場合、他のツールボックス ツールはtools/listに表示されません。 モデルは、 tool_searchを介してのみそれらを検出します。 ツールボックスの外部にあるエージェントに直接追加されたツールは影響を受けず、表示されたままです。
  • ツールの説明は、一致の精度を左右します。 Foundry では、ツール名と説明を使用して検索クエリを評価します。 説明のないツールやあいまいなツールは、関連するクエリであっても返される可能性は低いです。 ツールの動作と、そのツールが処理するタスクの種類を説明する説明を記述します。
  • tool_search は、ツールの制限にカウントされません。 プラットフォームがそれを挿入し、それは型ごとの無名ツール用スロットを消費しません。
  • ターンごとに複数の検索がサポートされています。 異なる手順で異なる機能が必要な場合、モデルは 1 ターンで tool_search を複数回呼び出すことができます。
  • 返されたツールは、そのターン中は保持されます。 tool_searchによってツールが返されると、モデルは再検索せずに複数回呼び出すことができます。
  • ピン留めされたツールは常に tools/listに表示されます。 "pin": Truetool_configsを含むツールは、検索クエリに関係なく、ターンごとにtool_searchcall_toolと共に表示されます。
  • よく使うツールの表示領域を自動的に固定します。 Foundry は、ユーザーごとのツール呼び出し頻度を追跡し、ウォームアップ期間が短い後に最も呼び出されたツールを tools/list に昇格させます。 ホット セットはユーザーごとであり、使用パターンの変化に応じて更新されます。
  • OAuth の同意が必要な場合があります。 ツールボックス内のツールが OAuth ベースの MCP サーバーに接続した場合、最初の呼び出しでは、応答に同意 URL を含む CONSENT_REQUIRED エラー (コード -32006) が返されます。 ブラウザーでその URL を開き、OAuth フローを完了してから再試行します。 後続の呼び出しは、再プロンプトを表示せずに成功します。 この エラーを処理するためのツールボックス エラーのトラブルシューティング を参照してください。

ベスト プラクティス

  • すべてのツールに説明を追加します。 ツール検索では、説明を使用してツールとクエリを照合します。 説明が欠落しているかあいまいな場合は、検出が不十分です。
  • ツール検索を使用して大きなツールボックスを検索します。 この構成は、10 個以上のツールがある場合に最も効果的です。
  • ツールボックスのバージョン管理と共にツール検索を使用します。 バージョン固有のエンドポイントで構成をテストしてから、既定に昇格させます。
  • システムプロンプトでツール検索に言及します。 機能が使用できないことを結論付ける前に、 tool_search を呼び出すモデルをガイドします。 例: 「現在のリストにないツールが必要な場合は、対応できないと返答する前に、何が必要かの説明を添えて tool_search を呼び出してください。」
  • よく使うツールをピン留めします。 ほぼすべてのターンで呼び出されるツールについては、検索の往復を省くために "pin": Truetool_configs を使用します。
  • 説明があいまいな場合は、 additional_search_text を使用します。 チームが MCP サーバーのツールの説明とは異なるボキャブラリを使用している場合は、キーワードを追加して、サーバーを変更せずに検索精度を向上させます。

Troubleshoot

症状: 考えられる原因 修正
tool_searchtools/list がありません toolbox_search がツールボックス バージョンに含まれていないか、変更の前のバージョンに接続されています。 ツールの一覧に {"type": "toolbox_search"} を追加し、新しいバージョンを作成します。 更新されたバージョンのエンドポイントを使用していることを確認します。
tool_search はクエリの結果を返しません ツールボックス内のツールには説明がないか、説明がクエリに関連していません。 ツールボックスのツールの説明を追加または改善します。 説明では、ツールの機能と、そのツールが処理するタスクの種類について説明する必要があります。
ツールボックス ツールが最初の tools/list に表示されます。 ツールは、ツールボックス定義の代わりに、またはツールボックス定義に加えて、エージェントに直接追加されました。 エージェントの直接ツール リストからツールを削除し、ツールボックスに依存します。 エージェントに直接追加されたツールは、ツール検索に関係なく常に表示されます。
モデルが呼び出すことはありません tool_search モデルは、追加のツール tool_search 取得できることを認識していません。 必要な機能が現在のツール リストにない場合に tool_search を呼び出すようにモデルに指示する命令をシステム プロンプトに追加します。
tool_search が呼び出されますが、返されたツールの実行に失敗する 基になるツールの接続または構成が無効です。 返されたツールの project_connection_id およびその他のフィールドを確認します。 ツール検索を有効にせずに、ツールボックス MCP エンドポイントを介してツールを直接テストします。