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
|
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.
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:
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.
-
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.
-
Para um servidor MCP remoto, o assistente solicita o nome do servidor, a URL e os cabeçalhos de solicitação opcionais.
-
Para um AgentCore Gateway, insira o ARN do gateway e escolha sua autenticação de saída: AWS IAM (padrão), Nenhuma ou OAuth.
-
Revise o resumo da configuração e confirme.
Em seguida, corra agentcore deploy para se inscrever.
Pesquisa na web
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.
-
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
-
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.
-
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",
}
}],
},
],
)
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: