View a markdown version of this page

Outils - Base rocheuse de l'Amazonie AgentCore

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Outils

Les outils sont déclaratifs. Vous listez ce que l'agent peut appeler ; vous gérez AgentCore l'invocation, 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 protocole Model Context 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 de politiques. Référencez un ARN de passerelle et tous les outils configurés sur cette passerelle deviennent disponibles. Utilisez Gateway lorsque vous avez besoin d'une surface d'outils gérée et basée sur des règles.

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

  • AgentCore Interpréteur de code  : exécution de Python/JavaScript/TypeScript code en mode sandbox 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.

Surcharge des jetons due aux définitions d'outils

Les définitions d'outils sont prises en compte dans les jetons d'entrée du modèle même lorsque l'agent n'appelle pas les outils. Ensemble, la valeur par défaut shell et file_operations les définitions ajoutent environ 900 jetons d'entrée à chaque demande de modèle. Le nombre exact varie selon le modèle et peut changer en fonction de l'évolution des définitions des outils. Étant donné qu'une invocation peut générer plusieurs demandes de modèle, cette surcharge peut se produire plusieurs fois par appel. allowedToolsÀ utiliser pour exposer uniquement les outils nécessaires à une demande et réduire l'utilisation des jetons.

Modèles pris en charge :

Modèle Exemple Correspondance

*

"*"

Tous les outils

Nom en clair

"shell"

Construit 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 à partir 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"

Glob sur tous les serveurs

Note

allowedToolspermet de sélectionner l'outil LLM uniquement pendantInvokeHarness. Cela n'affecte pas InvokeAgentRuntimeCommand, qui est une API distincte avec 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'bedrock-agentcore:InvokeAgentRuntimeCommandautorisez pas vos politiques IAM.

Ajouter des outils

Exemple
AWS CLI/boto3

Transmettez 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

Le --type drapeau utilise des noms séparés par des traits de soulignement (par exemple,agentcore_browser), qui correspondent aux identifiants du type d'outil 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 # Create a harness with a remote MCP server and request headers. # Use ${arn:...} syntax to reference a credential provider. agentcore add harness \ --name secure_agent \ --model-provider bedrock \ --model-id us.anthropic.claude-sonnet-4-5-20250514-v1:0 \ --tools remote_mcp \ --mcp-name exa-secure \ --mcp-url https://mcp.exa.ai/mcp \ --mcp-headers '{"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 postuler.

Remplacez les outils sur une seule invocation :

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, puis passez aux paramètres avancés. Activez Outils avec espace, puis appuyez sur Entrée.

  1. Sélectionnez les outils correspondant à votre harnais : AgentCore navigateur, interpréteur de AgentCore code , AgentCore passerelle ou serveur MCP distant. Utilisez l'espace pour basculer entre chaque option, 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 de la passerelle
  4. Consultez le résumé de configuration et confirmez-le.

    Vérifiez la configuration de l'outil de harnais

Exécutez ensuite agentcore deploy pour postuler.

Pour permettre à votre agent de rechercher sur le Web, placez le connecteur de l'outil de recherche Web derrière une AgentCore passerelle et associez cette passerelle à votre harnais en tant qu'agentcore_gatewayoutil. La passerelle présente la recherche sur le Web en tant qu'outil MCP WebSearch standard. Votre agent le découvre et l'appelle comme n'importe quel autre outil de passerelle. AgentCore Gateway répond à toutes les requêtes entièrement depuis 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 Configuration de 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 Gateway intégré bedrock-agentcore:InvokeWebSearch au connecteur. Pour plus d'informations, voir Configurer le rôle de 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 à l'étape précédente) doit figurer bedrock-agentcore:InvokeGateway sur l'ARN de la passerelle. Pour plus d'informations sur les autorisations requises, consultez la politique relative aux autorisations facultatives de AgentCore Gateway dans la rubrique relative à la sécurité. Si votre harnais utilise de la mémoire gérée (valeur 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 connecter la passerelle au moment de la création.

Exemple
AWS CLI/boto3

Attachez la passerelle au moment de la création (ou tools transmettezupdate_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. Invoquez le harnais avec 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 fonctions 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 logique que vous souhaitez contrôler côté client.

Exemple
AWS CLI/boto3

Transmettez un outil de fonction en ligne au moment de l'invocation :

# 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 empêche 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) laisserait la session dans un état endommagé. 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 le raisonnement à partir du 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 en ligne pendant une invocation, 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 :