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

# `close_thread`

> Clôt un fil traité : il sort de ce qui attend une réponse (unanswered) et prend le statut closed, sans rien effacer.

## En bref

| Propriété | Valeur |
|---|---|
| Titre | Clore une conversation |
| Outil MCP | `close_thread`, sur `https://api.subagent.fr/mcp` |
| Appel HTTP | `POST https://api.subagent.fr/v1/close_thread` |
| Accès | permission `send` ou `approve` |
| État de l'espace | vérifié ou non |
| Effet | écriture |
| Vue dans l'assistant | non |

## Ce que fait l'outil

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

> Clôt un fil traité : il sort de ce qui attend une réponse (unanswered) et prend le statut closed, sans rien effacer. Il se rouvre si le correspondant y répond, ou si vous y répondez. Refusé tant qu’un brouillon ou un message en file y attend.

## Paramètres

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

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `thread_id` | identifiant `thr_…` | oui | Le fil à clore (thr_…). |

## 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 |
|---|---|---|
| `closed` | booléen | `true` : le fil vient d’être clos ; `false` : il l’était déjà. |
| `thread` | objet | Un fil. Voir [les champs d'un fil](https://subagent.fr/docs/fils.md#champs). |

## Exemple d'appel

Les valeurs sont fictives.

HTTP :

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

MCP (`tools/call`) :

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "close_thread",
    "arguments": {
      "thread_id": "thr_b81f4c6a2d9e47035c1a8e6f0b4d2c97"
    }
  }
}
```

## Refus possibles

| Code | HTTP | Ce qui s'est passé | Que faire |
|---|---|---|---|
| `not_found` | 404 | L'objet n'existe pas pour cette clé. | Vérifier l'identifiant : il vient de `list_inboxes`, `list_threads`, `get_thread` ou `list_drafts`. |
| `thread_busy` | 409 | Un brouillon ou un message en file attend encore dans le fil à clore. | L'annuler avec `cancel_message`, ou le laisser partir, puis clore le fil. |
| `thread_not_closable` | 409 | Le fil est déjà terminé : adresse en échec, ou correspondant désinscrit. | Rien : plus rien ne part dans ce fil. |

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

- [Fils : close_thread](https://subagent.fr/docs/fils.md#close_thread)
- [`list_threads`](https://subagent.fr/docs/reference/list_threads.md)
- [`reply_to_thread`](https://subagent.fr/docs/reference/reply_to_thread.md)
- [`cancel_message`](https://subagent.fr/docs/reference/cancel_message.md)
- [Tous les outils](https://subagent.fr/docs/reference/index.md)
