View a markdown version of this page

Ferramentas - Amazon Bedrock AgentCore

Ferramentas

As ferramentas são declarativas. Você lista o que o agente pode chamar; AgentCore lida com a invocação, as credenciais e os resultados. O chicote suporta cinco tipos de ferramentas, além das ferramentas integradas de sistema de arquivos e shell.

Ferramentas padrão shell e file_operations estão disponíveis em todas as sessões, a menos que você as restrinja comallowedTools. shellexecuta comandos bash; file_operations suporta visualização, criação e edição de arquivos.

O allowedTools parâmetro controla quais ferramentas o agente pode usar. Se omitidas, todas as ferramentas são permitidas.

Padrões suportados:

Padrão Exemplo Correspondências

*

"*"

Todas as ferramentas

Nome simples

"shell"

Construído por nome

Globo embutido

"file_*"

file_operations, file_read

@builtin

"@builtin"

Todas as ferramentas integradas

@builtin/name

"@builtin/shell"

Específico embutido

@server

"@git"

Todas as ferramentas de um servidor MCP

@server/tool

"@git/git_status"

Ferramenta MCP específica

@server/glob

"@git/read_*"

Glob dentro de um servidor

@*/tool

"@*-mcp/status"

Globalize entre servidores

nota

allowedToolsdefine o escopo da seleção da ferramenta LLM somente duranteInvokeHarness. Isso não afeta InvokeAgentRuntimeCommand, que é uma API separada com sua própria ação do IAM (bedrock-agentcore:InvokeAgentRuntimeCommand) que executa comandos diretamente sem passar pelo LLM. Para evitar a execução direta de comandos, não conceda bedrock-agentcore:InvokeAgentRuntimeCommand em suas políticas do IAM.

Adicionar ferramentas

exemplo
AWS CLI/boto3

Passe tools no momento da criação, atualização ou invocação:

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

Ao criar um novo arnês de forma interativa, o agentcore add harness assistente permite selecionar ferramentas. Para adicionar ferramentas por meio da CLI, use agentcore add tool depois de criar o chicote:

nota

O --type sinalizador usa nomes separados por sublinhado (por exemplo,agentcore_browser), que correspondem aos identificadores do tipo de ferramenta em. 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"]}'

Implante para se inscrever.

Substitua as ferramentas em uma única invocação:

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

Execute agentcore em um diretório de projeto, selecione adicionar, escolha Harness e avance para Configurações avançadas. Ative Tools with Space e pressione Enter.

  1. Selecione as ferramentas para seu equipamento: AgentCore navegador, intérprete de AgentCore código, AgentCore gateway ou servidor MCP remoto. Use Espaço para alternar cada um e pressione Enter.

    Selecione ferramentas: navegador, intérprete de código, gateway, servidor MCP remoto
  2. Para um servidor MCP remoto, o assistente solicita o nome do servidor, a URL e os cabeçalhos de solicitação opcionais.

    Insira a URL do servidor MCP
  3. Para um AgentCore Gateway, insira o ARN do gateway e escolha sua autenticação de saída: AWS IAM (padrão), Nenhuma ou OAuth.

    Selecione a autenticação de saída do gateway
  4. Revise o resumo da configuração e confirme.

    Revise a configuração da ferramenta de arnês

Em seguida, corra agentcore deploy para se inscrever.

Para fornecer ao seu agente uma pesquisa na Web, coloque o conector da Ferramenta de Pesquisa na Web atrás de um AgentCore Gateway e conecte esse gateway ao seu equipamento como uma agentcore_gateway ferramenta. O gateway expõe a pesquisa na web como uma ferramenta MCP WebSearch padrão. Seu agente a descobre e a chama como qualquer outra ferramenta de gateway. AgentCore O Gateway atende a todas as consultas inteiramente internas AWS. Para obter mais informações sobre o modelo de privacidade e o índice da Web criado especificamente, consulte a página do conector da Ferramenta de Pesquisa na Web.

Disponibilidade de regiões

A Ferramenta de Pesquisa na Web está disponível na us-east-1 região Leste dos EUA (Norte da Virgínia). Crie o gateway e aproveite. us-east-1

Conclua as etapas a seguir para configurar a pesquisa na web para seu arnês.

  1. Crie o gateway e o destino do conector. Siga as etapas em Configurar a ferramenta de pesquisa na Web para criar um gateway (protocolo MCP, autenticação de AWS_IAM entrada) e adicionar um destino com. connectorId: "web-search" Esse destino precisa de uma função de serviço do Gateway bedrock-agentcore:InvokeWebSearch no conector. Para obter mais informações, consulte Configurar a função do serviço Gateway. Observe o ARN do gateway quando ele chegar. READY

  2. Conceda acesso à função de execução do arnês. A função de execução do harness (distinta da função de serviço do Gateway na etapa anterior) precisa do bedrock-agentcore:InvokeGateway ARN do gateway. Para obter mais informações sobre as permissões necessárias, consulte a política de permissões opcionais do AgentCore Gateway no tópico de segurança. Se seu equipamento usa memória gerenciada (o padrão), a função de execução também precisa das permissões de AgentCore memória. O agente lê e grava a memória da sessão em cada invocação.

  3. Conecte o gateway ao chicote. Adicione-o como uma agentcore_gateway ferramenta com a autenticação de AWS_IAM saída padrão. Os exemplos a seguir mostram como conectar o gateway no momento da criação.

exemplo
AWS CLI/boto3

Conecte o gateway no momento da criação (ou tools update_harness transmita/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, )

As ferramentas do gateway agora estão disponíveis para o agente. Invoque o arnês com um aviso que precisa de informações atuais:

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

Chamadas de função embutidas

As funções embutidas permitem que você defina uma ferramenta que é executada em seu código, não no chicote. Isso é útil para aprovações automáticas, chamadas de APIs internas ou qualquer lógica que você queira controlar no lado do cliente.

exemplo
AWS CLI/boto3

Passe uma ferramenta de função embutida no momento da invocação:

# 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

Você deve incluir a toolUse mensagem do assistente e a sua toolResult na etapa 3. O chicote intencionalmente não persiste na mudança da função em linha para a sessão - se o cliente nunca retornar um resultado, persistir em uma rodada parcial (assistente toolUse sem correspondênciatoolResult) deixaria a sessão em um estado corrompida. Ao exigir que o cliente envie as duas mensagens, a sessão permanece limpa, independentemente de o cliente concluir a chamada da ferramenta.

O agente retoma o raciocínio com o resultado da ferramenta e transmite a resposta final.

AgentCore CLI

Adicione uma ferramenta de função embutida a um arnês:

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

Em seguida, defina a descrição e o esquema de entrada em: 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"] } } } }

Corra agentcore deploy para se inscrever. Quando o agente chama a função embutida durante uma invocação, a TUI faz uma pausa e solicita que você forneça o resultado da ferramenta em linha. No modo não interativo (CLI), o stream retorna e você envia o resultado de volta stopReason: "tool_use" com uma chamada de invocação de acompanhamento.

Saiba mais sobre cada ferramenta: