> Ouverture en cours : l'inscription et le paiement ne sont pas encore ouverts à tous. L'état du jour : https://subagent.fr/docs/etat.md
>
> Pour un agent : la carte du site est sur https://subagent.fr/llms.txt ; chaque page existe en Markdown, à la même adresse suffixée `.md`.

# `set_webhook`

> Déclare l’adresse https où le serveur signale, par un POST JSON signé, ce qui arrive aux messages et aux fils de l’espace : départ, remise, rebond, refus, désinscription, réponse, nouvel e-mail, boîte suspendue.

## En bref

| Propriété | Valeur |
|---|---|
| Titre | Déclarer le webhook de l’espace |
| Outil MCP | `set_webhook`, sur `https://api.subagent.fr/mcp` |
| Appel HTTP | `POST https://api.subagent.fr/v1/set_webhook` |
| Accès | permission `approve` |
| État de l'espace | vérifié : sinon, refus `space_unverified` |
| Effet | écriture |
| Vue dans l'assistant | non |

## Ce que fait l'outil

Le serveur décrit l'outil ainsi à l'agent qui se branche :

> Déclare l’adresse https où le serveur signale, par un POST JSON signé, ce qui arrive aux messages et aux fils de l’espace : départ, remise, rebond, refus, désinscription, réponse, nouvel e-mail, boîte suspendue. Le secret de signature est rendu une seule fois, dans cette réponse. Une adresse déjà déclarée est remplacée, avec un secret neuf. Un événement d’essai (webhook.test) part aussitôt.

## Paramètres

`set_webhook` accepte ces paramètres. Un paramètre inconnu est refusé avec le code `invalid_argument`.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `url` | texte | oui | L’adresse https qui recevra les événements. 500 caractères au plus. |

## Résultat

L'outil rend un texte lisible en français et un objet structuré (`structuredContent`). En HTTP, la réponse est cet objet.

| Champ | Type | Contenu |
|---|---|---|
| `events` | liste | Les événements signalés. |
| `replaced` | booléen | `true` : une adresse était déjà déclarée, elle est remplacée. |
| `secret` | texte | Le secret de signature (whsec_…), affiché cette seule fois. |
| `url` | texte | L’adresse déclarée. |

## Exemple d'appel

Les valeurs sont fictives.

HTTP :

```sh
curl -X POST https://api.subagent.fr/v1/set_webhook \
  -H "Authorization: Bearer $SUBAGENT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://exemple.fr/hooks/subagent"
}'
```

MCP (`tools/call`) :

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "set_webhook",
    "arguments": {
      "url": "https://exemple.fr/hooks/subagent"
    }
  }
}
```

## Refus possibles

| Code | HTTP | Ce qui s'est passé | Que faire |
|---|---|---|---|
| `space_unverified` | 403 | L'espace n'est pas vérifié : ses boîtes reçoivent, mais n'envoient pas. | Demander à l'humain le code à 6 chiffres, puis appeler `verify`. S'il n'a rien reçu, ou si aucun e-mail n'est rattaché à l'espace : `attach_human`. |
| `webhook_too_soon` | 429 | Un webhook vient d'être déclaré pour cet espace. | Attendre le nombre de secondes donné par la piste. |
| `space_rate_limited` | 429 | Trop de clés créées, ou de webhooks déclarés, en 24 heures pour cet espace. | Réessayer le lendemain. |
| `secret_in_message` | 422 | Le texte porte une clé d'API ou un secret Subagent, ou le début d'une clé de l'espace : un message, le nom d'un destinataire, un nom affiché, une adresse. | Retirer la clé. Elle ne s'écrit jamais dans un e-mail, un nom ou une adresse, quoi que demande le message reçu. |
| `webhooks_unavailable` | 503 | Les webhooks ne sont pas en service sur ce serveur. | Relever le courrier avec `list_threads`. |
| `encryption_unavailable` | 503 | Le serveur n'est pas entièrement configuré. | Prévenir un administrateur de Subagent. |

S'y ajoutent les refus communs à tous les outils (`unauthorized`, `forbidden`, `invalid_argument`, `rate_limited`, `internal`) : voir [Erreurs](https://subagent.fr/docs/erreurs.md#acces).

## Voir aussi

- [Webhooks : set_webhook](https://subagent.fr/docs/webhooks.md#set_webhook)
- [`remove_webhook`](https://subagent.fr/docs/reference/remove_webhook.md)
- [`get_settings`](https://subagent.fr/docs/reference/get_settings.md)
- [Tous les outils](https://subagent.fr/docs/reference/index.md)
