Was this page helpful?
La herramienta de búsqueda de herramientas permite a Claude trabajar con cientos o miles de herramientas descubriéndolas y cargándolas dinámicamente bajo demanda. En lugar de cargar todas las definiciones de herramientas en la ventana de contexto de antemano, Claude busca en su catálogo de herramientas (incluyendo nombres de herramientas, descripciones, nombres de argumentos y descripciones de argumentos) y carga solo las herramientas que necesita.
Este enfoque resuelve dos problemas que se agravan rápidamente a medida que las bibliotecas de herramientas escalan:
Para información de fondo sobre los desafíos de escalado que resuelve la búsqueda de herramientas, consulta Advanced tool use. La carga bajo demanda de la búsqueda de herramientas también es una instancia del principio más amplio de recuperación justo a tiempo descrito en Effective context engineering.
Aunque esto se proporciona como una herramienta del lado del servidor, también puedes implementar tu propia funcionalidad de búsqueda de herramientas del lado del cliente. Consulta Implementación personalizada de búsqueda de herramientas para más detalles.
Comparte comentarios sobre esta función a través del formulario de comentarios.
This feature qualifies for Zero Data Retention (ZDR) with limited technical retention. See the Data retention section for details on what is retained and why.
En Amazon Bedrock, la búsqueda de herramientas del lado del servidor solo está disponible a través de la API invoke, no la API converse.
También puedes implementar búsqueda de herramientas del lado del cliente devolviendo bloques tool_reference desde tu propia implementación de búsqueda.
Hay dos variantes de búsqueda de herramientas:
tool_search_tool_regex_20251119): Claude construye patrones regex para buscar herramientastool_search_tool_bm25_20251119): Claude usa consultas en lenguaje natural para buscar herramientasCuando habilitas la herramienta de búsqueda de herramientas:
tool_search_tool_regex_20251119 o tool_search_tool_bm25_20251119) en tu lista de herramientasdefer_loading: true para las herramientas que no deben cargarse inmediatamentetool_reference más relevantesEsto mantiene tu ventana de contexto eficiente mientras mantiene alta la precisión en la selección de herramientas.
Aquí hay un ejemplo simple con herramientas diferidas:
La herramienta de búsqueda de herramientas tiene dos 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 de la variante Regex: Python regex, NO lenguaje natural
Al usar tool_search_tool_regex_20251119, Claude construye patrones regex usando la sintaxis re.search() de Python, no consultas en lenguaje natural. Patrones comunes:
"weather" - coincide con nombres/descripciones de herramientas que contienen "weather""get_.*_data" - coincide con herramientas como get_user_data, get_weather_data"database.*query|query.*database" - patrones OR para mayor flexibilidad"(?i)slack" - búsqueda sin distinción de mayúsculas y minúsculasLongitud máxima de consulta: 200 caracteres
Formato de consulta de la variante BM25: Lenguaje natural
Al usar tool_search_tool_bm25_20251119, Claude usa consultas en lenguaje natural para buscar herramientas.
Marca las herramientas para carga bajo demanda añadiendo 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
}Puntos clave:
defer_loading se cargan en el contexto inmediatamentedefer_loading: true solo se cargan cuando Claude las descubre mediante búsquedadefer_loading: trueAmbas variantes de búsqueda de herramientas (regex y bm25) buscan en nombres de herramientas, descripciones, nombres de argumentos y descripciones de argumentos.
Cómo funciona el diferimiento internamente: Las herramientas diferidas no se incluyen en el prefijo del prompt del sistema. Cuando el modelo descubre una herramienta diferida a través de la búsqueda de herramientas, la definición de la herramienta se añade en línea como un bloque tool_reference en la conversación. El prefijo no se modifica, por lo que se preserva el caché de prompts. La gramática para el modo estricto se construye a partir del conjunto completo de herramientas, por lo que defer_loading y el modo estricto se combinan sin recompilación de gramática.
Cuando Claude usa la herramienta de búsqueda de herramientas, la respuesta incluye nuevos tipos de bloques:
{
"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 Claude está invocando la herramienta de búsqueda de herramientastool_search_tool_result: Contiene los resultados de búsqueda con un objeto tool_search_tool_search_result anidadotool_references: Array de objetos tool_reference que apuntan a las herramientas descubiertastool_use: Claude invocando la herramienta descubiertaLos bloques tool_reference se expanden automáticamente en definiciones completas de herramientas antes de mostrarse a Claude. No necesitas manejar esta expansión tú mismo. Ocurre automáticamente en la API siempre que proporciones todas las definiciones de herramientas coincidentes en el parámetro tools.
Para configurar mcp_toolset con defer_loading, consulta Conector MCP.
Puedes implementar tu propia lógica de búsqueda de herramientas (p. ej., usando embeddings o búsqueda semántica) devolviendo bloques tool_reference desde una herramienta personalizada. Cuando Claude llama a tu herramienta de búsqueda personalizada, devuelve un tool_result estándar con bloques tool_reference en el array de contenido:
{
"type": "tool_result",
"tool_use_id": "toolu_your_tool_id",
"content": [{ "type": "tool_reference", "tool_name": "discovered_tool_name" }]
}Cada herramienta referenciada debe tener una definición de herramienta correspondiente en el parámetro tools de nivel superior con defer_loading: true. Este enfoque te permite usar algoritmos de búsqueda más sofisticados mientras mantienes la compatibilidad con el sistema de búsqueda de herramientas.
El formato tool_search_tool_result mostrado en la sección Formato de respuesta es el formato del lado del servidor utilizado internamente por la búsqueda de herramientas integrada de Anthropic. Para implementaciones personalizadas del lado del cliente, utiliza siempre el formato estándar tool_result con bloques de contenido tool_reference como se muestra arriba.
Para un ejemplo completo usando embeddings, consulta el cookbook de búsqueda de herramientas con embeddings.
La herramienta de búsqueda de herramientas no es compatible con los ejemplos de uso de herramientas. Si necesitas proporcionar ejemplos de uso de herramientas, usa la llamada estándar de herramientas sin búsqueda de herramientas.
Estos errores impiden que la solicitud sea procesada:
Todas las herramientas diferidas:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "All tools have defer_loading set. At least one tool must be non-deferred."
}
}Definición de herramienta faltante:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "Tool reference 'unknown_tool' has no corresponding tool definition"
}
}Los errores durante la ejecución de herramientas devuelven una respuesta 200 con información de error en el cuerpo:
{
"type": "tool_result",
"tool_use_id": "srvtoolu_01ABC123",
"content": {
"type": "tool_search_tool_result_error",
"error_code": "invalid_pattern"
}
}Códigos de error:
too_many_requests: Límite de tasa excedido para operaciones de búsqueda de herramientasinvalid_pattern: Patrón regex malformadopattern_too_long: El patrón excede el límite de 200 caracteresunavailable: Servicio de búsqueda de herramientas temporalmente no disponiblePara saber cómo defer_loading preserva el caché de prompts, consulta Uso de herramientas con caché de prompts.
El sistema expande automáticamente los bloques tool_reference a lo largo de todo el historial de conversación, por lo que Claude puede reutilizar las herramientas descubiertas en turnos posteriores sin necesidad de volver a buscarlas.
Con el streaming habilitado, recibirás eventos de búsqueda de herramientas como parte del 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"}}
// Consulta de búsqueda transmitida
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"query\":\"weather\"}"}}
// Pausa mientras se ejecuta la búsqueda
// Resultados de búsqueda transmitidos
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 continúa con las herramientas descubiertasPuedes incluir la herramienta de búsqueda de herramientas en la API de lotes de mensajes. Las operaciones de búsqueda de herramientas a través de la API de lotes de mensajes tienen el mismo precio que las de las solicitudes regulares de la API de mensajes.
La búsqueda de herramientas del lado del servidor (herramienta tool_search) indexa y almacena datos del catálogo de herramientas (nombres de herramientas, descripciones y metadatos de argumentos) más allá de la respuesta inmediata de la API; estos datos del catálogo se retienen de acuerdo con la política de retención estándar de Anthropic. Las implementaciones personalizadas de búsqueda de herramientas del lado del cliente que usan la API de mensajes estándar son completamente elegibles para ZDR.
Para la elegibilidad ZDR en todas las funciones, consulta API y retención de datos.
Buenos casos de uso:
Cuándo la llamada tradicional de herramientas podría ser mejor:
github_, slack_) para que las consultas de búsqueda muestren naturalmente el grupo de herramientas correctoEl uso de la herramienta de búsqueda de herramientas se rastrea en el objeto de uso de la respuesta:
{
"usage": {
"input_tokens": 1024,
"output_tokens": 256,
"server_tool_use": {
"tool_search_requests": 2
}
}
}curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data '{
"model": "claude-opus-4-6",
"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
}
]
}'Guía paso a paso para definir herramientas.