View a markdown version of this page

Outils - Amazon Bedrock AgentCore

Outils

Les outils sont déclaratifs. Vous listez ce que l'agent peut appeler ; il AgentCore gère les appels, les informations d'identification et les résultats. Le harnais prend en charge cinq types d'outils, ainsi que le système de fichiers et les outils shell intégrés.

  • Serveurs MCP : connectez-vous à n'importe quel point de terminaison distant du Model Context Protocol par URL. Aucune passerelle n'est requise pour les cas simples.

  • AgentCore Passerelle : connectivité gouvernée aux API et aux serveurs MCP avec inbound/outbound authentification, contrôle d'accès et application des politiques. Référencez l'ARN d'une passerelle et tous les outils configurés sur cette passerelle seront disponibles. Utilisez Gateway lorsque vous avez besoin d'une surface d'outils gérée et basée sur des politiques.

  • AgentCore Navigateur : navigation Web gérée et automatisation.

  • AgentCore Interpréteur de code : exécution de Python/JavaScript/TypeScript code dans un bac à sable pour l'analyse et le calcul des données.

  • Fonctions intégrées : schémas d'outils qui s'exécutent côté client, et non sur la machine virtuelle du harnais. Le harnais fait une pause lorsque l'outil est appelé et renvoie l'appel à votre code, qui décide de la marche à suivre et renvoie un résultat. C'est le modèle pour les approbations humaines et les intégrations personnalisées.

Les outils shell par défaut file_operations sont disponibles dans chaque session, sauf si vous les limitez avecallowedTools. shellexécute des commandes bash ; file_operations prend en charge l'affichage, la création et la modification de fichiers.

Le allowedTools paramètre contrôle les outils que l'agent peut utiliser. En cas d'omission, tous les outils sont autorisés.

Modèles pris en charge :

Modèle Exemple Correspondance

*

"*"

Tous les outils

Nom simple

"shell"

Intégré par nom

Globe intégré

"file_*"

file_operations, file_read

@builtin

"@builtin"

Tous les outils intégrés

@builtin/name

"@builtin/shell"

Intégré spécifique

@server

"@git"

Tous les outils d'un serveur MCP

@server/tool

"@git/git_status"

Outil MCP spécifique

@server/glob

"@git/read_*"

Glob au sein d'un serveur

@*/tool

"@*-mcp/status"

Passez d'un serveur à l'autre

Note

allowedToolsétend la sélection de l'outil LLM uniquement pendantInvokeHarness. Cela n'affecte InvokeAgentRuntimeCommandpas le fait qu'il s'agit d'une API distincte dotée de sa propre action IAM (bedrock-agentcore:InvokeAgentRuntimeCommand) qui exécute les commandes directement sans passer par le LLM. Pour empêcher l'exécution directe de commandes, n'accordez pas d'autorisation bedrock-agentcore:InvokeAgentRuntimeCommand dans vos politiques IAM.

Ajouter des outils

Exemple
AWS CLI/boto3

Passez tools au moment de la création, de la mise à jour ou de l'appel :

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

Lorsque vous créez un nouveau harnais de manière interactive, l'agentcore add harnessassistant vous permet de sélectionner des outils. Pour ajouter des outils via la CLI, utilisez agentcore add tool après avoir créé le harnais :

Note

L'--typeindicateur utilise des noms séparés par des traits de soulignement (par exemple,agentcore_browser), qui correspondent aux identificateurs de type d'outil contenus dans. 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"]}'

Déployez pour appliquer.

Remplacez les outils lors d'un seul appel :

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

Exécutez agentcore dans un répertoire de projet, sélectionnez Ajouter, choisissez Harness et passez aux paramètres avancés. Activez Outils avec espace, puis appuyez sur Entrée.

  1. Sélectionnez les outils adaptés à votre harnais : AgentCore navigateur, interpréteur de AgentCore code, AgentCore passerelle ou serveur MCP distant. Utilisez la touche Espace pour passer d'une option à l'autre, puis appuyez sur Entrée.

    Sélectionnez les outils : navigateur, interpréteur de code, passerelle, serveur MCP distant
  2. Pour un serveur MCP distant, l'assistant demande le nom du serveur, l'URL et les en-têtes de demande facultatifs.

    Entrez l'URL du serveur MCP
  3. Pour une AgentCore passerelle, entrez l'ARN de la passerelle et choisissez son authentification sortante : AWS IAM (par défaut), None ou OAuth.

    Sélectionnez l'authentification sortante par passerelle
  4. Passez en revue le résumé de configuration et confirmez.

    Passez en revue la configuration de l'outil de harnais

Exécutez ensuite agentcore deploy pour appliquer.

Pour permettre à votre agent d'effectuer des recherches sur le Web, placez le connecteur de l'outil de recherche Web derrière une AgentCore passerelle et attachez cette passerelle à votre harnais en tant qu'agentcore_gatewayoutil. La passerelle présente la recherche sur le Web comme un outil MCP WebSearch standard. Votre agent le découvre et l'appelle comme n'importe quel autre outil de passerelle. AgentCore Gateway répond entièrement à toutes les requêtes AWS. Pour plus d'informations sur le modèle de confidentialité et l'index Web spécialement conçu, consultez la page du connecteur de l'outil de recherche Web.

Disponibilité dans les Régions

L'outil de recherche Web est disponible dans la us-east-1 région de l'est des États-Unis (Virginie du Nord). Créez la passerelle et exploitez-laus-east-1.

Procédez comme suit pour configurer la recherche sur le Web pour votre harnais.

  1. Créez la passerelle et la cible du connecteur. Suivez les étapes décrites dans Configurer l'outil de recherche Web pour créer une passerelle (protocole MCP, authentification AWS_IAM entrante) et ajouter une cible avec. connectorId: "web-search" Cette cible a besoin d'un rôle de service de passerelle bedrock-agentcore:InvokeWebSearch sur le connecteur. Pour plus d'informations, voir Configurer le rôle du service de passerelle. Notez l'ARN de la passerelle une fois qu'il est atteintREADY.

  2. Accordez l'accès au rôle d'exécution du harnais. Le rôle d'exécution du harnais (distinct du rôle de service de passerelle de l'étape précédente) doit se trouver bedrock-agentcore:InvokeGateway sur l'ARN de la passerelle. Pour plus d'informations sur les autorisations requises, consultez la politique d'autorisations facultatives de AgentCore Gateway dans la rubrique relative à la sécurité. Si votre harnais utilise de la mémoire gérée (par défaut), le rôle d'exécution a également besoin des autorisations de AgentCore mémoire. L'agent lit et écrit la mémoire de session à chaque appel.

  3. Fixez la passerelle au harnais. Ajoutez-le en tant qu'agentcore_gatewayoutil avec l'authentification AWS_IAM sortante par défaut. Les exemples suivants montrent comment associer la passerelle au moment de la création.

Exemple
AWS CLI/boto3

Attachez la passerelle au moment de la création (ou tools transmettez-laupdate_harness/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, )

Les outils de la passerelle sont désormais à la disposition de l'agent. Appelez le harnais à l'aide d'une invite qui nécessite des informations à jour :

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."

Appels de fonction en ligne

Les fonctions intégrées vous permettent de définir un outil qui s'exécute dans votre code, et non sur le harnais. Cela est utile pour les approbations humaines, pour appeler des API internes ou pour toute autre logique que vous souhaitez contrôler côté client.

Exemple
AWS CLI/boto3

Passez un outil de fonction en ligne au moment de l'appel :

# 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", } }], }, ], )
Note

Vous devez inclure à la fois le toolUse message de l'assistant et toolResult le vôtre à l'étape 3. Le harnais ne maintient pas intentionnellement le passage de la fonction en ligne à la session. Si le client ne renvoie jamais de résultat, la persistance d'un tour partiel (assistant toolUse sans correspondancetoolResult) laissera la session dans un état corrompu. En demandant au client d'envoyer les deux messages, la session reste propre, que le client termine ou non l'appel à l'outil.

L'agent reprend son raisonnement avec le résultat de l'outil et diffuse la réponse finale.

AgentCore CLI

Ajoutez un outil fonctionnel intégré à un harnais :

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

Définissez ensuite la description et le schéma de saisie dans app/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"] } } } }

Courez agentcore deploy pour postuler. Lorsque l'agent appelle la fonction intégrée pendant un appel, le TUI fait une pause et vous invite à fournir le résultat de l'outil en ligne. En mode non interactif (CLI), le flux revient avec stopReason: "tool_use" et vous renvoyez le résultat avec un appel d'appel de suivi.

En savoir plus sur chaque outil :