> Pour un agent : la carte de la documentation d'Escouade Mail est sur https://escouade.io/mail/docs/llms.txt ; chaque page existe en Markdown, à la même adresse suffixée `.md`.

# `list_threads`

> Boîte mail : échanges reçus et messages individuels, les plus récents d’abord.

## En bref

| Propriété | Valeur |
|---|---|
| Titre | Lister les conversations |
| Outil MCP | `list_threads`, sur `https://api.subagent.fr/mcp` |
| Appelé par | l’assistant et la vue |
| Appel HTTP | `POST https://api.subagent.fr/v1/list_threads` |
| Accès | permission `read` |
| État de l'espace | vérifié ou non |
| Effet | lecture seule |
| Vue dans l'assistant | non |

## Ce que fait l'outil

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

> Boîte mail : échanges reçus et messages individuels, les plus récents d’abord. Les envois de campagne seuls restent dans `campaign_history` ; dès qu’une réponse arrive, la conversation apparaît ici avec son contexte. Statuts : open, replied, bounced, unsubscribed, closed. Avec unanswered = `true` : fils qui attendent votre réponse, y compris les nouveaux messages reçus (open). Pagination par curseur.

## Paramètres

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

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `inbox_id` | identifiant `inb_…` | non | Une seule boîte (inb_…). |
| `status` | texte | non | Un seul statut. Valeurs : `open`, `replied`, `bounced`, `unsubscribed`, `closed`. |
| `unanswered` | booléen | non | `true` : seulement les fils dont le dernier message est un e-mail reçu auquel rien n’est encore écrit en retour (une réponse, ou un premier e-mail). |
| `archived` | booléen | non | `true` : archives ; `false` : conversations non archivées. |
| `unread` | booléen | non | `true` : messages reçus non lus ; `false` : lus. |
| `label` | texte | non | Tag exact. 40 caractères au plus. |
| `folder` | texte | non | Valeurs : `received`, `sent`, `drafts`. |
| `since` | date | non | Fils actifs depuis cette date. |
| `query` | texte | non | Recherche : une partie de l’adresse du correspondant, de son nom ou du sujet. 100 caractères au plus. |
| `cursor` | texte | non | Curseur de la page suivante : la valeur `next_cursor` de l’appel précédent. |
| `limit` | entier | non | Nombre d’éléments rendus (20 par défaut). De 1 à 100. |

## 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 |
|---|---|---|
| `inboxes` | liste | Boîtes accessibles : id, address, aliases, status. |
| `items` | liste | Une liste : des fils. Voir [les champs d'un fil](https://escouade.io/mail/docs/fils.md#champs). |
| `next_cursor` | texte ou `null` | À repasser en cursor pour la page suivante ; `null` à la dernière page. |

## Exemple d'appel

Les valeurs sont fictives.

HTTP :

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

MCP (`tools/call`) :

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_threads",
    "arguments": {
      "unanswered": true
    }
  }
}
```

## Refus possibles

Aucun refus propre à cet outil. Restent les refus communs à tous les outils (`unauthorized`, `forbidden`, `invalid_argument`, `rate_limited`, `internal`) : voir [Erreurs](https://escouade.io/mail/docs/erreurs.md#acces).

## Voir aussi

- [Fils : list_threads](https://escouade.io/mail/docs/fils.md#list_threads)
- [Recevoir du courrier](https://escouade.io/mail/docs/recevoir.md)
- [`get_thread`](https://escouade.io/mail/docs/reference/get_thread.md)
- [`reply_to_thread`](https://escouade.io/mail/docs/reference/reply_to_thread.md)
- [Tous les outils](https://escouade.io/mail/docs/reference/index.md)
