# Outils MCP pour agents

> Un agent IA appelle les opérations de l'API comme des outils MCP (Streamable HTTP, sans session), sous la même décision qu'un appel REST. Côté produit…

Guide - Depuis la version 0.1.0 - Flexway v1.6.3 - https://flexway.io/docs/developer-mcp/

> Un agent IA appelle les opérations de l'API comme des **outils** MCP (Streamable HTTP, sans session), sous la même décision qu'un appel REST.
>
> Côté produit : [Agents : MCP et A2A](https://flexway.io/docs/product-agents/) ; côté exploitation : [Agents et MCP](https://flexway.io/docs/operations-agents-mcp/).

## Obtenir un jeton pour la surface

La surface MCP d'un hôte (par exemple `https://api.example.com/mcp`) n'accepte que des jetons OAuth
**émis pour son URL** (RFC 8707). La découverte est standard :

```bash
curl -i -X POST https://api.example.com/mcp      # 401, WWW-Authenticate: Bearer resource_metadata="..."
curl https://api.example.com/.well-known/oauth-protected-resource/mcp
# {"resource":"https://api.example.com/mcp","authorization_servers":["https://login.example.com"],...}
```

Demandez le jeton à ce serveur d'autorisation avec `resource=https://api.example.com/mcp`. Un client
MCP conforme fait tout cela seul. Les clés d'API ne sont pas acceptées sur la surface MCP.

## Lister et appeler

```bash
curl -s https://api.example.com/mcp -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -s https://api.example.com/mcp -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_order","arguments":{"id":"42"}}}'
```

| Règle | Détail |
| --- | --- |
| `tools/list` | Ne montre que ce que votre jeton peut appeler |
| Résultat | Le corps de la réponse de l'API, borné à 1 Mio |
| Refus d'un outil | Un résultat `isError` portant le problème RFC 9457, son `code` lisible |
| Quota | Le même seau que vos appels REST |
| Agent non surveillé | Un agent qui agit pour lui-même (le sujet du jeton est le client) ne voit pas les outils réservés à une personne |

## Votre jeton ne quitte pas la passerelle

L'API derrière l'outil ne reçoit jamais votre jeton : elle reçoit, si elle en vérifie un, un jeton
échangé pour elle. Une chaîne d'agents agissant pour une personne est bornée en profondeur et en âge
par l'exploitant ; au-delà, `403`.
