View a markdown version of this page

Tools (Herramientas) - Amazon Bedrock AgentCore

Tools (Herramientas)

Las herramientas son declarativas. Enumera a qué puede llamar el agente; AgentCore gestiona la invocación, las credenciales y los resultados. El arnés admite cinco tipos de herramientas, además del sistema de archivos integrado y las herramientas de shell.

  • Servidores MCP: Conéctese a cualquier punto final remoto del Model Context Protocol mediante una URL. No se requiere una puerta de enlace para casos simples.

  • AgentCore Puerta de enlace: conectividad controlada con las API y los servidores MCP con inbound/outbound autenticación, control de acceso y aplicación de políticas. Haga referencia a un ARN de puerta de enlace y todas las herramientas configuradas en esa puerta de enlace estarán disponibles. Utilice Gateway cuando necesite una superficie de herramientas gestionada y respaldada por políticas.

  • AgentCore Navegador: navegación web gestionada y automatización.

  • AgentCore Intérprete de código: ejecución de Python/JavaScript/TypeScript código en un entorno aislado para el análisis y el cálculo de datos.

  • Funciones integradas: esquemas de herramientas que se ejecutan en el lado del cliente, no en la máquina virtual de Harness. El arnés se detiene cuando se llama a la herramienta y devuelve la llamada al código, que decide qué hacer y devuelve el resultado. Este es el patrón para las aprobaciones informales y las integraciones personalizadas.

Las herramientas son predeterminadas shell y file_operations están disponibles en todas las sesiones, a menos que las restrinja. allowedTools shellejecuta comandos bash; file_operations admite la visualización, la creación y la edición de archivos.

El allowedTools parámetro controla las herramientas que puede utilizar el agente. Si se omite, se permiten todas las herramientas.

Patrones compatibles:

Patrón Ejemplo Coincide

*

"*"

Todas las herramientas

Nombre sencillo

"shell"

Incorporado por nombre

Globo integrado

"file_*"

file_operations, file_read

@builtin

"@builtin"

Todas las herramientas integradas

@builtin/name

"@builtin/shell"

Integradas específicas

@server

"@git"

Todas las herramientas de un servidor MCP

@server/tool

"@git/git_status"

Herramienta MCP específica

@server/glob

"@git/read_*"

Glob dentro de un servidor

@*/tool

"@*-mcp/status"

Globe en todos los servidores

nota

allowedToolsabarca la selección de la herramienta LLM únicamente durante. InvokeHarness No afecta InvokeAgentRuntimeCommand, ya que es una API independiente con su propia acción de IAM (bedrock-agentcore:InvokeAgentRuntimeCommand) que ejecuta los comandos directamente sin pasar por el LLM. Para evitar la ejecución directa de comandos, no incluya bedrock-agentcore:InvokeAgentRuntimeCommand en sus políticas de IAM.

Añada herramientas

ejemplo
AWS CLI/boto3

Pase tools al momento de crear, actualizar o invocar:

tools = [ # MCP server { "type": "remote_mcp", "name": "exa", "config": {"remoteMcp": {"url": "https://mcp.exa.ai/mcp"}}, }, # MCP server with authentication headers (plain text) { "type": "remote_mcp", "name": "my-private-mcp", "config": {"remoteMcp": { "url": "https://mcp.example.com/api", "headers": {"Authorization": "Bearer <your-token>"} }}, }, # MCP server with API key stored in AgentCore Identity Token Vault. # Use ${arn:...} to reference a credential provider - the ARN is resolved # to the actual API key at invocation time. { "type": "remote_mcp", "name": "exa-secure", "config": {"remoteMcp": { "url": "https://mcp.exa.ai/mcp", "headers": {"x-api-key": "${arn:aws:bedrock-agentcore:us-west-2:123456789012:token-vault/default/apikeycredentialprovider/my-exa-key}"} }}, }, # For managed credential rotation and OAuth-protected tools, put your MCP server # behind AgentCore Gateway and use AgentCore Identity instead of raw headers. # # AgentCore Gateway with SigV4 auth (default) { "type": "agentcore_gateway", "name": "my-gateway", "config": {"agentCoreGateway": {"gatewayArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-gateway"}}, }, # AgentCore Gateway with OAuth auth { "type": "agentcore_gateway", "name": "my-oauth-gateway", "config": {"agentCoreGateway": { "gatewayArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-oauth-gateway", "outboundAuth": {"oauth": { "credentialProviderName": "my-oauth-provider", "scopes": ["read", "write"] }} }}, }, # AgentCore Browser {"type": "agentcore_browser", "name": "browser"}, # AgentCore Code Interpreter {"type": "agentcore_code_interpreter", "name": "code_interpreter"}, # Inline function - executes on the client side, not on the harness VM. # When the agent calls this tool, the call is returned to your code for handling. { "type": "inline_function", "name": "approve_purchase", "config": { "inlineFunction": { "description": "Request human approval for a purchase.", "inputSchema": { "type": "object", "properties": { "item": {"type": "string"}, "amount": {"type": "number"}, }, "required": ["item", "amount"], }, } }, }, ] response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, tools=tools, messages=[{"role": "user", "content": [{"text": "Find a mechanical keyboard under $200 and request approval."}]}], )
AgentCore CLI

Al crear un nuevo arnés de forma interactiva, el agentcore add harness asistente le permite seleccionar herramientas. Para añadir herramientas mediante la CLI, utilice agentcore add tool después de crear el arnés:

nota

El --type indicador utiliza nombres separados por guiones bajos (por ejemplo,agentcore_browser), que coinciden con los identificadores de tipo de herramienta que aparecen en él. harness.json

# Add a remote MCP server agentcore add tool --harness my-agent --type remote_mcp \ --name exa --url https://mcp.exa.ai/mcp # Add a remote MCP server with an API key from AgentCore Identity Token Vault. # Use ${arn:...} syntax in header values to reference a credential provider. agentcore add tool --harness my-agent --type remote_mcp \ --name exa-secure --url https://mcp.exa.ai/mcp \ --header 'x-api-key=${arn:aws:bedrock-agentcore:us-west-2:123456789012:token-vault/default/apikeycredentialprovider/my-exa-key}' # Add Browser agentcore add tool --harness my-agent --type agentcore_browser --name browser # Add Code Interpreter agentcore add tool --harness my-agent --type agentcore_code_interpreter --name code-interpreter # Add Gateway by ARN agentcore add tool --harness my-agent --type agentcore_gateway \ --name my-gateway --gateway-arn arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-gateway # Add Gateway by project-local name agentcore add tool --harness my-agent --type agentcore_gateway \ --name my-gateway --gateway my-gateway # Add an inline function tool (executes client-side, not on the harness VM) agentcore add tool --harness my-agent --type inline_function \ --name approve_purchase \ --description "Request human approval for a purchase" \ --input-schema '{"type": "object", "properties": {"item": {"type": "string"}, "amount": {"type": "number"}}, "required": ["item", "amount"]}'

Despliegue para aplicar.

Anule las herramientas en una sola invocación:

agentcore invoke --harness research-agent --tools agentcore-browser "Find the latest news on AI agents"
Interactive

Ejecute agentcore en un directorio de proyectos, seleccione agregar, elija Harness y avance a la configuración avanzada. Active Herramientas con espacio y, a continuación, pulse Entrar.

  1. Seleccione las herramientas para su arnés: AgentCore navegador, intérprete de AgentCore código, AgentCore puerta de enlace o servidor MCP remoto. Use la barra espaciadora para alternar entre ellas y, a continuación, presione Entrar.

    Seleccione las herramientas: navegador, intérprete de código, puerta de enlace, servidor MCP remoto
  2. En el caso de un servidor MCP remoto, el asistente solicita el nombre del servidor, la URL y los encabezados de solicitud opcionales.

    Introduzca la URL del servidor MCP
  3. Para una AgentCore puerta de enlace, introduzca el ARN de la puerta de enlace y elija su autenticación de salida: AWS IAM (predeterminada), None u OAuth.

    Seleccione la autenticación saliente de la puerta de enlace
  4. Revise el resumen de la configuración y confirme.

    Revise la configuración de la herramienta del arnés

A continuación, ejecute agentcore deploy para aplicarla.

Para que su agente busque en Internet, coloque el conector de la herramienta de búsqueda en Internet detrás de una AgentCore puerta de enlace y conecte esa puerta de enlace a su arnés como una agentcore_gateway herramienta. La puerta de enlace expone la búsqueda web como una herramienta MCP WebSearch estándar. Su agente la descubre y la llama como cualquier otra herramienta de pasarela. AgentCore Gateway atiende todas las consultas de forma totalmente interna AWS. Para obtener más información sobre el modelo de privacidad y el índice web diseñado específicamente, consulte la página del conector de la herramienta de búsqueda web.

Disponibilidad por región

La herramienta de búsqueda web está disponible en la región EE.UU. Este (Norte de Virginia). us-east-1 Cree la puerta de enlace y aprovéchelaus-east-1.

Complete los siguientes pasos para configurar la búsqueda web de su arnés.

  1. Cree la puerta de enlace y el conector de destino. Siga los pasos que se indican en Configurar la herramienta de búsqueda web para crear una puerta de enlace (protocolo MCP, autenticación AWS_IAM entrante) y añadir un destino con ella. connectorId: "web-search" Ese objetivo necesita una función de servicio de puerta de enlace incluida bedrock-agentcore:InvokeWebSearch en el conector. Para obtener más información, consulte Configurar el rol del servicio de puerta de enlace. Anote el ARN de la puerta de enlace una vez que llegue. READY

  2. Otorgue acceso a la función de ejecución del arnés. La función de ejecución del arnés (distinta de la función de servicio de puerta de enlace del paso anterior) debe estar bedrock-agentcore:InvokeGateway en el ARN de la puerta de enlace. Para obtener más información sobre los permisos necesarios, consulte la política de permisos opcionales de AgentCore Gateway en el tema de seguridad. Si el arnés utiliza memoria gestionada (la opción predeterminada), la función de ejecución también necesita los permisos de AgentCore memoria. El agente lee y escribe la memoria de la sesión en cada invocación.

  3. Conecte la puerta de enlace al arnés. Añádala como una agentcore_gateway herramienta con la autenticación de AWS_IAM salida predeterminada. Los siguientes ejemplos muestran cómo conectar la puerta de enlace en el momento de la creación.

ejemplo
AWS CLI/boto3

Adjunte la puerta de enlace en el momento de la creación (o tools update_harness transfiérala/invoke_harness):

tools = [ { "type": "agentcore_gateway", "name": "web-search", "config": {"agentCoreGateway": { "gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-web-search-gateway", "outboundAuth": {"awsIam": {}} }}, }, ] client.create_harness( harnessName="research-agent", executionRoleArn="arn:aws:iam::123456789012:role/MyHarnessRole", tools=tools, )

Las herramientas de la pasarela ya están disponibles para el agente. Invoque el arnés con un mensaje que requiera información actualizada:

response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, messages=[{"role": "user", "content": [{"text": "Search the web for the latest AWS announcements and cite your sources."}]}], )
AgentCore CLI
# Attach the web-search gateway to your harness agentcore add tool --harness research-agent --type agentcore_gateway \ --name web-search \ --gateway-arn arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-web-search-gateway # Deploy, then invoke agentcore deploy agentcore invoke --harness research-agent "Search the web for the latest AWS announcements and cite your sources."

Llamadas a funciones en línea

Las funciones integradas permiten definir una herramienta que se ejecuta en el código, no en el arnés. Esto resulta útil para las aprobaciones informales, las llamadas a las API internas o cualquier lógica que desees controlar desde el lado del cliente.

ejemplo
AWS CLI/boto3

Pase una herramienta de función en línea en el momento de la invocación:

# 1. Invoke with an inline function tool response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, tools=[{ "type": "inline_function", "name": "get_weather", "config": {"inlineFunction": { "description": "Get the current weather for a city.", "inputSchema": { "type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"] } }} }], messages=[{"role": "user", "content": [{"text": "What's the weather in Seattle?"}]}], ) # 2. The agent calls the tool - capture the toolUseId and input from the stream tool_use_id = None tool_name = None tool_input = None for event in response["stream"]: if "contentBlockStart" in event: start = event["contentBlockStart"].get("start", {}) if "toolUse" in start and start["toolUse"].get("name") == "get_weather": tool_use_id = start["toolUse"]["toolUseId"] tool_name = start["toolUse"]["name"] if "contentBlockDelta" in event: delta = event["contentBlockDelta"].get("delta", {}) if "toolUse" in delta: tool_input = (tool_input or "") + delta["toolUse"].get("input", "") # 3. Execute the tool yourself and send the result back # Include the assistant's toolUse message followed by your toolResult client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, messages=[ { "role": "assistant", "content": [{"toolUse": {"toolUseId": tool_use_id, "name": tool_name, "input": json.loads(tool_input)}}], }, { "role": "user", "content": [{ "toolResult": { "toolUseId": tool_use_id, "content": [{"text": "72°F, partly cloudy"}], "status": "success", } }], }, ], )
nota

Debes incluir tanto el toolUse mensaje del asistente como el tuyo toolResult en el paso 3. El arnés no prolonga intencionadamente el giro de la función en línea hacia la sesión. Si el cliente no devuelve nunca un resultado, si se mantiene un giro parcial (asistente toolUse sin el correspondientetoolResult), se corrompería la sesión. Al requerir que el cliente envíe ambos mensajes, la sesión permanece limpia independientemente de si el cliente completa o no la llamada a la herramienta.

El agente reanuda el razonamiento con el resultado de la herramienta y transmite la respuesta final.

AgentCore CLI

Añada una herramienta de función en línea a un arnés:

agentcore add tool --harness my-agent --type inline_function \ --name get_weather

A continuación, defina la descripción y el esquema de entrada enapp/my-agent/harness.json:

{ "type": "inline_function", "name": "get_weather", "config": { "inlineFunction": { "description": "Get the current weather for a city.", "inputSchema": { "type": "object", "properties": { "city": { "type": "string" } }, "required": ["city"] } } } }

Ejecute agentcore deploy para aplicar. Cuando el agente llama a la función en línea durante una invocación, la TUI hace una pausa y le pide que proporcione el resultado de la herramienta en línea. En el modo no interactivo (CLI), la transmisión regresa stopReason: "tool_use" y usted devuelve el resultado con una llamada de invocación de seguimiento.

Obtenga más información sobre cada herramienta: