La herramienta de búsqueda de herramientas permite que Claude trabaje con cientos o miles de herramientas descubriendo 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 tu 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 se escalan:
Para obtener información sobre los desafíos de escalabilidad que resuelve la búsqueda de herramientas, consulta Uso avanzado de herramientas. La carga bajo demanda de búsqueda de herramientas también es una instancia del principio más amplio de recuperación justo a tiempo descrito en Ingeniería de contexto efectiva.
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 obtener 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 está disponible solo a través de la API de invocación, no la API inversa.
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 herramientas que no deberían cargarse inmediatamentetool_reference más relevantesEsto mantiene tu ventana de contexto eficiente mientras se mantiene alta la precisión de 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 variante Regex: Regex de Python, NO lenguaje natural
Cuando uses 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 flexibilidad"(?i)slack" - búsqueda insensible a mayúsculas/minúsculasLongitud máxima de consulta: 200 caracteres
Formato de consulta de variante BM25: Lenguaje natural
Cuando uses tool_search_tool_bm25_20251119, Claude usa consultas en lenguaje natural para buscar herramientas.
Marca herramientas para carga bajo demanda agregando 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 contexto inmediatamentedefer_loading: true se cargan solo cuando Claude las descubre a través de búsquedadefer_loading: trueAmbas variantes de búsqueda de herramientas (regex y bm25) buscan 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 mensaje del sistema. Cuando el modelo descubre una herramienta diferida a través de búsqueda de herramientas, la definición de la herramienta se agrega en línea como un bloque tool_reference en la conversación. El prefijo no se toca, por lo que el almacenamiento en caché de mensajes se preserva. La gramática para modo estricto se construye a partir del conjunto completo de herramientas, por lo que defer_loading y modo estricto se componen 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 herramientas descubiertastool_use: Claude invocando la herramienta descubiertaLos bloques tool_reference se expanden automáticamente en definiciones de herramientas completas antes de ser mostrados a Claude. No necesitas manejar esta expansión tú mismo. Sucede 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 (por ejemplo, usando incrustaciones 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 se mantiene 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 usado internamente por la búsqueda de herramientas integrada de Anthropic. Para implementaciones personalizadas del lado del cliente, siempre usa el formato estándar tool_result con bloques de contenido tool_reference como se muestra arriba.
Para un ejemplo completo usando incrustaciones, consulta el libro de recetas de búsqueda de herramientas con incrustaciones.
La herramienta de búsqueda de herramientas no es compatible con ejemplos de uso de herramientas. Si necesitas proporcionar ejemplos de uso de herramientas, usa llamadas de herramientas estándar sin búsqueda de herramientas.
Estos errores previenen 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 velocidad 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 cómo defer_loading preserva el almacenamiento en caché de mensajes, consulta Uso de herramientas con almacenamiento en caché de mensajes.
El sistema expande automáticamente bloques tool_reference en todo el historial de conversación completo, por lo que Claude puede reutilizar herramientas descubiertas en turnos posteriores sin volver a buscar.
Con 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"}}
// 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 toolsPuedes 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 se cotizan igual que las solicitudes de la API de Mensajes regular.
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 elegibilidad de ZDR en todas las características, consulta Retención de API y datos.
Casos de uso buenos:
Cuándo la llamada de herramientas tradicional podría ser mejor:
github_, slack_) para que las consultas de búsqueda naturalmente muestren el grupo de herramientas correctoEl uso de la herramienta de búsqueda de herramientas se rastrea en el objeto de uso de respuesta:
{
"usage": {
"input_tokens": 1024,
"output_tokens": 256,
"server_tool_use": {
"tool_search_requests": 2
}
}
}Catálogo completo de herramientas con compatibilidad de modelos y parámetros.
Configura conjuntos de herramientas MCP con carga diferida.
Combina búsqueda de herramientas con definiciones de herramientas en caché.
Was this page helpful?
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-7",
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)Guía paso a paso para definir herramientas.