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

# `list_app_passwords`

> Liste les mots de passe d’application d’une boîte : le nom de l’appareil, ce qu’il ouvre (`calendar_contacts` ou `mail_read`) et sa date, jamais le secret.

## En bref

| Propriété | Valeur |
|---|---|
| Titre | Mots de passe d’application d’une boîte |
| Outil MCP | `list_app_passwords`, sur `https://api.subagent.fr/mcp` |
| Appelé par | l’assistant et la vue |
| Appel HTTP | `POST https://api.subagent.fr/v1/list_app_passwords` |
| Accès | permission `approve` |
| É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 :

> Liste les mots de passe d’application d’une boîte : le nom de l’appareil, ce qu’il ouvre (`calendar_contacts` ou `mail_read`) et sa date, jamais le secret. Rend aussi le serveur et l’identifiant à saisir dans un téléphone. C’est un geste humain : il demande la permission approve.

## Paramètres

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

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `inbox_id` | identifiant `inb_…` | oui | La boîte (inb_…, voir `list_inboxes`). |

## 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 |
|---|---|---|
| `address` | texte | L’adresse de la boîte. |
| `caldav_url` | texte | L’adresse de l’agenda (CalDAV), pour un logiciel qui la demande entière. |
| `carddav_url` | texte | L’adresse des contacts (CardDAV). |
| `guide_url` | texte | La marche à suivre, téléphone par téléphone. |
| `imap` | objet | La lecture en IMAP : host, port (993), security (tls). |
| `inbox_id` | texte | La boîte (inb_…). |
| `items` | liste | Les mots de passe d'application de la boîte, jamais leur secret. Chaque élément porte `id` (à donner à `revoke_app_password`), `label` (le nom de l'appareil), `access` (`calendar_contacts` ou `mail_read` ; `null` pour un mot de passe créé hors de Subagent) et `created_at` (ISO 8601, ou `null`). |
| `max` | entier | Le plafond par boîte. |
| `server` | texte | Le serveur à saisir dans le téléphone ou le logiciel. |
| `username` | texte | L’identifiant à saisir : l’adresse de la boîte. |

## Exemple d'appel

Les valeurs sont fictives.

HTTP :

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

MCP (`tools/call`) :

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_app_passwords",
    "arguments": {
      "inbox_id": "inb_3f9c2a7e5b1d4c8e9a0f6b2d7c4e1a95"
    }
  }
}
```

## 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`. |
| `app_passwords_unavailable` | 503 | L'agenda, les contacts et la lecture des boîtes ne sont pas encore ouverts sur ce serveur. | Prévenir un administrateur de Subagent. |
| `inbox_not_managed` | 409 | Subagent ne garde pas le mot de passe de cette boîte : elle n'a pas de mot de passe d'application. | Prévenir un administrateur de Subagent. |
| `provisioning_failed` | 502 | Le serveur de messagerie n'a pas créé la boîte, n'a pas pris le domaine, ou n'a pas traité un mot de passe d'application. | Réessayer dans un instant. Rien n'est perdu. |

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

- [Agenda et contacts : obtenir le mot de passe](https://subagent.fr/docs/agenda-et-contacts.md#obtenir)
- [`create_app_password`](https://subagent.fr/docs/reference/create_app_password.md)
- [`revoke_app_password`](https://subagent.fr/docs/reference/revoke_app_password.md)
- [Tous les outils](https://subagent.fr/docs/reference/index.md)
