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

# `activity_report`

> Dit en un appel ce qui attend une décision humaine (brouillons à valider, messages reçus sans réponse, domaines à vérifier, boîtes suspendues) et ce que les boîtes ont envoyé et reçu : aujourd’hui, ou sur les sept derniers jours avec le détail par jour.

## En bref

| Propriété | Valeur |
|---|---|
| Titre | Point du jour et bilan |
| Outil MCP | `activity_report`, sur `https://api.subagent.fr/mcp` |
| Appel HTTP | `POST https://api.subagent.fr/v1/activity_report` |
| Accès | permission `read` ou `approve` |
| État de l'espace | vérifié ou non |
| Effet | lecture seule |
| Vue dans l'assistant | oui : voir [Vues](https://subagent.fr/docs/vues.md) |

## Ce que fait l'outil

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

> Dit en un appel ce qui attend une décision humaine (brouillons à valider, messages reçus sans réponse, domaines à vérifier, boîtes suspendues) et ce que les boîtes ont envoyé et reçu : aujourd’hui, ou sur les sept derniers jours avec le détail par jour. À appeler quand votre humain demande où en est son espace, ou un bilan. Les envois sont ceux que compte le quota du jour ; les réponses, les rebonds, les désinscriptions et les plaintes viennent du journal : rien n’est estimé.

## Paramètres

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

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `period` | texte | non | today : le jour en cours (heure de Paris). week : les sept derniers jours, aujourd’hui compris. |
| `inbox_id` | identifiant `inb_…` | non | Une seule boîte (inb_…). Absent : toutes les boîtes de la clé. |

## 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 |
|---|---|---|
| `billing` | objet ou `null` | Où en est le paiement de l’espace : standing (exempt, unpaid, paid), plan, `paid_until`, `subscription_status`, `last_payment`. `null` : rien à payer sur ce serveur. |
| `by_day` | liste | Un objet par jour de la période, dans l’ordre : date, sent, quota (0 un jour sans envoi), replies, bounces, unsubscribes, complaints. |
| `inboxes` | liste | Une liste : des boîtes. Voir [les champs d'une boîte](https://subagent.fr/docs/boites.md#champs). |
| `key` | objet | La clé qui lit : name, permissions. |
| `now` | texte | Instant du relevé (ISO 8601, heure de Paris). |
| `pending` | objet | Ce qui attend une décision. drafts : count et items (les cinq brouillons les plus récents : id, `inbox_id`, to, `to_name`, subject, `is_reply`, `created_at`). replies : count et items (les cinq fils les plus récents dont le dernier message est un e-mail reçu sans réponse), ou `null` sans la permission read. domains : les domaines non vérifiés (id, domain, status, `required_missing`), ou `null` sans la permission read ou `manage_inboxes`. `suspended_inboxes` : id, address, `status_reason`, `suspended_at`. |
| `period` | objet | kind (today ou week), from et to : jours de Paris (AAAA-MM-JJ), compris. |
| `require_approval` | booléen | Tout envoi de l’espace attend une validation humaine. |
| `send_window` | texte | Créneau d’envoi en clair. |
| `tenant` | objet | L’espace : id, name. |
| `totals` | objet | Sur la période : sent (envois comptés au quota), quota (somme des quotas du jour), queued (en file à l’instant), replies (réponses reçues dans un fil, hors réponses automatiques), bounces, unsubscribes, complaints. |
| `verified` | booléen | L’espace est vérifié : il envoie. |

## Exemple d'appel

Les valeurs sont fictives.

HTTP :

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

MCP (`tools/call`) :

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "activity_report",
    "arguments": {
      "period": "week"
    }
  }
}
```

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

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

- [Boîtes : activity_report](https://subagent.fr/docs/boites.md#activity_report)
- [Vues dans l'assistant](https://subagent.fr/docs/vues.md)
- [`inbox_status`](https://subagent.fr/docs/reference/inbox_status.md)
- [`list_drafts`](https://subagent.fr/docs/reference/list_drafts.md)
- [`list_threads`](https://subagent.fr/docs/reference/list_threads.md)
- [Tous les outils](https://subagent.fr/docs/reference/index.md)
