

# Usa un AgentCore gateway con policy in AgentCore
<a name="use-gateway-with-policy"></a>

Segui la guida all'autorizzazione e all'autenticazione del gateway per ottenere le credenziali necessarie per l'accesso al gateway.

**Solo strumenti MCP**  
La valutazione delle politiche si applica solo agli strumenti MCP. Indipendentemente dalla modalità di valutazione delle politiche, il gateway consente sempre i prompt MCP (`prompts/list`,`prompts/get`) e le risorse (`resources/list`,,). `resources/read` `resources/templates/list`

**Topics**
+ [Elenca gli strumenti AgentCore Gateway con Policy in AgentCore](#list-gateway-tools)
+ [Chiama gli strumenti del gateway con policy](#call-gateway-tools)
+ [Risposte politiche](#policy-responses)

## Elenca gli strumenti AgentCore Gateway con Policy in AgentCore
<a name="list-gateway-tools"></a>

L'elenco degli strumenti viene considerato come una **metaazione**. Quando un principale elenca gli strumenti disponibili, il motore delle politiche non valuta il contesto completo della chiamata di uno strumento specifico (ad esempio, i parametri di input).

Un preside può visualizzare nell'elenco solo gli strumenti che sarebbe autorizzato a chiamare in base alla politica. Poiché il contesto completo di una chiamata allo strumento non è disponibile durante l'inserimento nell'elenco, ciò significa che un committente può elencare uno strumento **se esiste una serie di circostanze in cui una chiamata a tale strumento sarebbe consentita**.

Di conseguenza, uno strumento che compare nell'elenco non garantisce l'autorizzazione di una successiva chiamata a tale strumento. La decisione di autorizzazione per una chiamata effettiva dello strumento viene valutata separatamente utilizzando il contesto completo della richiesta, inclusi i parametri di input.

Selezionate uno dei seguenti metodi:

**Example**  

1. 

   ```
   curl -X POST \
     https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -d '{
       "jsonrpc": "2.0",
       "id": "list-tools-request",
       "method": "tools/list"
     }'
   ```

1. 

   ```
   import requests
   import json
   
   def list_tools(gateway_url, access_token):
       headers = {
           "Content-Type": "application/json",
           "Authorization": f"Bearer {access_token}"
       }
   
       payload = {
           "jsonrpc": "2.0",
           "id": "list-tools-request",
           "method": "tools/list"
       }
   
       response = requests.post(gateway_url, headers=headers, json=payload)
       return response.json()
   
   # Example usage
   gateway_url = "https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp"
   access_token = "YOUR_ACCESS_TOKEN"
   tools = list_tools(gateway_url, access_token)
   print(json.dumps(tools, indent=2))
   ```

   La risposta restituisce solo gli strumenti che le tue politiche ti consentono di visualizzare. Gli strumenti che sono negati dalle politiche non verranno visualizzati nell'elenco.

## Chiama gli strumenti del gateway con policy
<a name="call-gateway-tools"></a>

Effettua chiamate strumentali verso il tuo gateway. La valutazione delle politiche determina se la chiamata è consentita o rifiutata.

Seleziona uno dei seguenti metodi:

**Example**  

1. 

   ```
   # Call a tool to test policy enforcement
   curl -X POST \
     https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -d '{
       "jsonrpc": "2.0",
       "id": "test-policy",
       "method": "tools/call",
       "params": {
         "name": "tool_name",
         "arguments": {arguments}
       }
     }'
   ```

1. 

   ```
   import requests
   import json
   
   def call_gateway_tool(gateway_url, access_token, tool_name, arguments):
       headers = {
           "Content-Type": "application/json",
           "Authorization": f"Bearer {access_token}"
       }
   
       payload = {
           "jsonrpc": "2.0",
           "id": "test-policy",
           "method": "tools/call",
           "params": {
               "name": tool_name,
               "arguments": arguments
           }
       }
   
       response = requests.post(gateway_url, headers=headers, json=payload)
       return response.json()
   
   # Example usage
   gateway_url = "https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp"
   access_token = "YOUR_ACCESS_TOKEN"
   result = call_gateway_tool(
       gateway_url,
       access_token,
       "RefundTool___process_refund",
       {
           "orderId": "12345",
           "amount": 450,
           "reason": "Defective product"
       }
   )
   print(json.dumps(result, indent=2))
   ```

## Risposte politiche
<a name="policy-responses"></a>

Quando una politica consente la richiesta:

```
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "isError": false,
    "content": [
      {
        "type": "text",
        "text": "ToolResult"
      }
    ]
  }
}
```

Quando una politica rifiuta la richiesta:

```
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "AuthorizeActionException - Tool Execution Denied: Tool call not allowed due to policy enforcement [No policy applies to the request (denied by default).]"
      }
    ],
    "isError": true
  }
}
```