A ferramenta de busca de ferramentas permite que o Claude trabalhe com centenas ou milhares de ferramentas, descobrindo-as e carregando-as dinamicamente sob demanda. Em vez de carregar todas as definições de ferramentas na "context window" (janela de contexto) antecipadamente, o Claude pesquisa seu catálogo de ferramentas (incluindo nomes de ferramentas, descrições, nomes de argumentos e descrições de argumentos) e carrega apenas as ferramentas de que precisa.
Essa abordagem resolve dois problemas que se agravam rapidamente à medida que as bibliotecas de ferramentas crescem:
Para contexto sobre os desafios de escalabilidade que a busca de ferramentas resolve, consulte Advanced tool use. O carregamento sob demanda da busca de ferramentas também é uma instância do princípio mais amplo de recuperação just-in-time descrito em Effective context engineering.
Embora seja fornecida como uma ferramenta do lado do servidor, você também pode implementar sua própria funcionalidade de busca de ferramentas do lado do cliente. Consulte Implementação personalizada de busca de ferramentas para obter detalhes.
Compartilhe feedback sobre este recurso através do formulário de feedback.
Este recurso é elegível para Zero Data Retention (ZDR). Quando sua organização possui um acordo de ZDR, os dados enviados por meio deste recurso não são armazenados após a resposta da API ser retornada.
No Amazon Bedrock, a busca de ferramentas do lado do servidor está disponível apenas através da InvokeModel API, não da Converse API.
No Claude Platform on AWS, a busca de ferramentas do lado do servidor funciona de forma idêntica à API do Claude. O Claude Platform on AWS usa a Messages API da Anthropic diretamente, portanto não há distinção entre InvokeModel ou Converse.
Existem duas variantes de busca de ferramentas:
tool_search_tool_regex_20251119): O Claude constrói padrões regex para buscar ferramentastool_search_tool_bm25_20251119): O Claude usa consultas em linguagem natural para buscar ferramentasQuando você habilita a ferramenta de busca de ferramentas:
tool_search_tool_regex_20251119 ou tool_search_tool_bm25_20251119) na sua lista de ferramentas.defer_loading: true para ferramentas que não devem ser carregadas imediatamente.tool_reference mais relevantes.Isso mantém sua janela de contexto eficiente enquanto mantém alta precisão na seleção de ferramentas.
Aqui está um exemplo simples com ferramentas adiadas:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=2048,
messages=[{"role": "user", "content": "What is the weather in San Francisco?"}],
tools=[
{"type": "tool_search_tool_regex_20251119", "name": "tool_search_tool_regex"},
{
"name": "get_weather",
"description": "Get the weather at a specific location",
"input_schema": {
"type": "object",
"properties": {
"location": {"type": "string"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
"defer_loading": True,
},
{
"name": "search_files",
"description": "Search through files in the workspace",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string"},
"file_types": {"type": "array", "items": {"type": "string"}},
},
"required": ["query"],
},
"defer_loading": True,
},
],
)
print(response)A ferramenta de busca de ferramentas tem duas variantes:
{
"type": "tool_search_tool_regex_20251119",
"name": "tool_search_tool_regex"
}{
"type": "tool_search_tool_bm25_20251119",
"name": "tool_search_tool_bm25"
}Formato de consulta da variante Regex: regex Python, NÃO linguagem natural
Ao usar tool_search_tool_regex_20251119, o Claude constrói padrões regex usando a sintaxe re.search() do Python, não consultas em linguagem natural. Padrões comuns:
"weather" - corresponde a nomes/descrições de ferramentas contendo "weather""get_.*_data" - corresponde a ferramentas como get_user_data, get_weather_data"database.*query|query.*database" - padrões OR para flexibilidade"(?i)slack" - busca sem diferenciação de maiúsculas e minúsculasComprimento máximo da consulta: 200 caracteres
Formato de consulta da variante BM25: Linguagem natural
Ao usar tool_search_tool_bm25_20251119, o Claude usa consultas em linguagem natural para buscar ferramentas.
Marque ferramentas para carregamento sob demanda adicionando defer_loading: true:
{
"name": "get_weather",
"description": "Get current weather for a location",
"input_schema": {
"type": "object",
"properties": {
"location": { "type": "string" },
"unit": { "type": "string", "enum": ["celsius", "fahrenheit"] }
},
"required": ["location"]
},
"defer_loading": true
}Pontos principais:
defer_loading são carregadas no contexto imediatamentedefer_loading: true são carregadas apenas quando o Claude as descobre através da buscadefer_loading: trueAmbas as variantes de busca de ferramentas (regex e bm25) pesquisam nomes de ferramentas, descrições, nomes de argumentos e descrições de argumentos.
Como o adiamento funciona internamente: Ferramentas adiadas não são incluídas no prefixo do prompt do sistema. Quando o modelo descobre uma ferramenta adiada através da busca de ferramentas, a API anexa um bloco tool_reference inline na conversa e, em seguida, o expande na definição completa da ferramenta antes de passá-la ao Claude. O prefixo permanece intocado, então o cache de prompt é preservado. A gramática para o modo estrito (as regras que restringem a saída de chamadas de ferramentas para corresponder aos seus schemas) é construída a partir do conjunto completo de ferramentas, então defer_loading e o modo estrito funcionam juntos sem recompilação de gramática.
Quando o Claude usa a ferramenta de busca de ferramentas, a resposta inclui novos tipos de blocos:
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "I'll search for tools to help with the weather information."
},
{
"type": "server_tool_use",
"id": "srvtoolu_01ABC123",
"name": "tool_search_tool_regex",
"input": {
"query": "weather"
}
},
{
"type": "tool_search_tool_result",
"tool_use_id": "srvtoolu_01ABC123",
"content": {
"type": "tool_search_tool_search_result",
"tool_references": [{ "type": "tool_reference", "tool_name": "get_weather" }]
}
},
{
"type": "text",
"text": "I found a weather tool. Let me get the weather for San Francisco."
},
{
"type": "tool_use",
"id": "toolu_01XYZ789",
"name": "get_weather",
"input": { "location": "San Francisco", "unit": "fahrenheit" }
}
],
"stop_reason": "tool_use"
}server_tool_use: Indica que o Claude está chamando a ferramenta de busca de ferramentastool_search_tool_result: Contém os resultados da busca com um objeto tool_search_tool_search_result aninhadotool_references: Array de objetos tool_reference apontando para ferramentas descobertastool_use: O Claude chamando a ferramenta descobertaOs blocos tool_reference são automaticamente expandidos em definições completas de ferramentas antes de serem mostrados ao Claude. Você não precisa lidar com essa expansão por conta própria. Isso acontece automaticamente na API, desde que você forneça todas as definições de ferramentas correspondentes no parâmetro tools.
Para configurar mcp_toolset com defer_loading, consulte Conector MCP.
Você pode implementar sua própria lógica de busca de ferramentas (por exemplo, usando embeddings ou busca semântica) retornando blocos tool_reference de uma ferramenta personalizada. Quando o Claude chama sua ferramenta de busca personalizada, retorne um tool_result padrão com blocos tool_reference no array de conteúdo:
{
"type": "tool_result",
"tool_use_id": "toolu_your_tool_id",
"content": [{ "type": "tool_reference", "tool_name": "discovered_tool_name" }]
}Cada ferramenta referenciada deve ter uma definição de ferramenta correspondente no parâmetro tools de nível superior com defer_loading: true. Essa abordagem permite que você use algoritmos de busca mais sofisticados enquanto mantém compatibilidade com o sistema de busca de ferramentas.
O formato tool_search_tool_result mostrado na seção Formato de resposta é o formato do lado do servidor usado internamente pela busca de ferramentas integrada da Anthropic. Para implementações personalizadas do lado do cliente, sempre use o formato tool_result padrão com blocos de conteúdo tool_reference, conforme mostrado no exemplo anterior.
Para um exemplo completo usando embeddings, consulte o cookbook de busca de ferramentas com embeddings.
A ferramenta de busca de ferramentas não é compatível com exemplos de uso de ferramentas. Se você precisar fornecer exemplos de uso de ferramentas, use a chamada de ferramentas padrão sem busca de ferramentas.
Esses erros impedem que a solicitação seja processada:
Todas as ferramentas adiadas:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "All tools have defer_loading set. At least one tool must be non-deferred."
}
}Definição de ferramenta ausente:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "Tool reference 'unknown_tool' has no corresponding tool definition"
}
}Erros durante a execução da ferramenta retornam uma resposta 200 com informações de erro no corpo:
{
"type": "tool_search_tool_result",
"tool_use_id": "srvtoolu_01ABC123",
"content": {
"type": "tool_search_tool_result_error",
"error_code": "invalid_pattern"
}
}Códigos de erro:
too_many_requests: Limite de taxa excedido para operações de busca de ferramentasinvalid_pattern: Padrão regex malformadopattern_too_long: Padrão excede o limite de 200 caracteresunavailable: Serviço de busca de ferramentas temporariamente indisponívelPara saber como defer_loading preserva o cache de prompt, consulte Uso de ferramentas com cache de prompt.
O sistema expande automaticamente os blocos tool_reference em todo o histórico da conversa, para que o Claude possa reutilizar ferramentas descobertas em turnos subsequentes sem pesquisar novamente.
Com o streaming habilitado, você receberá eventos de busca de ferramentas como parte do stream:
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "tool_search_tool_regex"}}
// Search query streamed
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"query\":\"weather\"}"}}
// Pause while search executes
// Search results streamed
event: content_block_start
data: {"type": "content_block_start", "index": 2, "content_block": {"type": "tool_search_tool_result", "tool_use_id": "srvtoolu_xyz789", "content": {"type": "tool_search_tool_search_result", "tool_references": [{"type": "tool_reference", "tool_name": "get_weather"}]}}}
// Claude continues with discovered toolsVocê pode incluir a ferramenta de busca de ferramentas na Messages Batches API. As operações de busca de ferramentas através da Messages Batches API têm o mesmo preço que aquelas em solicitações regulares da Messages API.
Bons casos de uso:
Quando a chamada de ferramentas tradicional pode ser melhor:
github_, slack_) para que as consultas de busca naturalmente revelem o grupo de ferramentas corretoO uso da ferramenta de busca de ferramentas é rastreado no objeto de uso da resposta:
{
"usage": {
"input_tokens": 1024,
"output_tokens": 256,
"server_tool_use": {
"tool_search_requests": 2
}
}
}Catálogo completo de ferramentas com compatibilidade de modelos e parâmetros.
Configure conjuntos de ferramentas MCP com carregamento adiado.
Combine busca de ferramentas com definições de ferramentas em cache.
Guia passo a passo para definir ferramentas.
Was this page helpful?