Inboxes
An inbox is an e-mail address driven by an agent. It receives from the moment it is created. Its sending rises in steps, week after week.
What an inbox is
- An address
name@domainand a name shown in “From:”. The password is managed by Escouade Mail and never returned: the inbox is driven through the tools, not over SMTP. A phone shows its calendar and contacts, and Escouade reads it, each with its own app password: see Calendar and contacts. - Every inbox receives. An e-mail received opens a thread, or joins its correspondent’s thread. See Threads.
- Its sending rises in steps: 5 e-mails a day the first week, then 10, 15 and 20. The schedule starts when the inbox is created. See Sending rules.
- A state:
active,suspended(the circuit breaker stopped it, nothing leaves) ordeleted. - A cap per space: one inbox before payment, then 2, 5 or 15 depending on the plan. Beyond that,
create_inboxis refused. Every number: Limits and quotas.
The first inbox
sign_up opens an inbox on the shared domain, subagentmail.fr. What it does depends on two things: the 6-digit code, then the plan.
| When | What the inbox does |
|---|---|
| Before the 6-digit code | It receives and does not send: any send is refused with the code space_unverified. |
| After the code, before payment | It receives, prepares drafts and only writes to its human: send_email with test. Any other send is refused with the code payment_required. |
| Once the plan is paid | It replies to whoever wrote to it. A first message, or a follow-up with no reply, is refused with the code own_domain_required. |
- To write to someone first, you need an inbox on the customer’s domain: see Domains.
- A test send always goes through: it only goes to the e-mail of the space’s human, or to another inbox of the space.
- The rule applies to every inbox on the shared domain, not just the first one.
Plans and payment: Pricing and payment.
inbox_status
The starting point. It says which space the key works on, whether it is verified, where its plan stands, its permissions, the sending window, and the state of each inbox. Call it before sending, and when a send is slow to leave. Any key can call it.
| Parameter | Type | Required | Description |
|---|---|---|---|
inbox_id | inb_… identifier | no | One specific inbox. Absent: every inbox of the key. |
Espace Atelier Exemple (marque Subagent), 13 octobre 2026. Clé « Claude ([email protected]) » : send, read, approve, manage_inboxes. Forfait à 19 € par mois, payé jusqu’à jeudi 12 novembre à 14 h 32 (détail : billing_status). Créneau d’envoi : du lundi au vendredi, de 9 h à 18 h, heure de Paris, jours fériés exclus. Boîte [email protected] (inb_3f9c2a7e5b1d4c8e9a0f6b2d7c4e1a95) — active Quota du jour : 9/15 envoyés, 6 restants (semaine 3 du réchauffage, palier de 15 par jour). En file : 3 ; brouillons à valider : 3. Prochain départ au plus tôt : mardi 13 octobre à 14 h 31.
The structured object carries:
| Field | Content |
|---|---|
tenant | The space: id, name, brand, and domains, the domains it can create an inbox on. |
verified | true: the space is verified. false: its inboxes only receive. |
trial | null in the public service. The field only serves a server configured without plans. |
key | The key: name, permissions, daily_cap. |
send_window | The sending window, in plain words. |
require_approval | true: every send of the space waits for human approval. |
now | The moment of this status, in ISO 8601, in Paris time. |
inboxes | The inboxes, each with the fields below. |
The text says in one line where the plan stands. The details, with the period, the volume sent and the invoices, are returned by billing_status: see Pricing and payment.
In an assistant that displays MCP Apps views, inbox_status comes with a view: the state of the inboxes, drawn from the same object. It says nothing the text does not say. list_inboxes has its own: one line per inbox. See Views.
The fields of an inbox
| Field | Content |
|---|---|
id | The inbox identifier, inb_…. |
address | The e-mail address. |
display_name | The name shown on sends. |
status | active, suspended or deleted. |
status_reason | The reason for a suspension, otherwise null. |
created_at | The inbox’s creation date, in ISO 8601. |
warmup | The gradual warm-up: week (current week), tier_limit (step), steps (the steps), complete (last step reached), start_date. |
quota | daily_quota (today’s quota), daily_max (maximum quota), sent_today, remaining_today. |
queued | The number of queued messages. |
drafts | The number of drafts to approve. |
next_send_at | The earliest next departure, or null if nothing is queued. |
send_window | The sending window, in plain words. |
activity_report
Today’s summary and the report. In one call, it says what waits for a human decision, and what the inboxes sent and received: today, or over the last seven days. Call it when the human asks how their space is doing, or for a report. Permission: read or approve. The space does not need to be verified.
| Parameter | Type | Required | Description |
|---|---|---|---|
period | text | no | today: the current day, in Paris time. week: the last seven days, today included. today by default. |
inbox_id | inb_… identifier | no | A single inbox. Absent: every inbox of the key. |
Point du jour, 13 octobre 2026, espace Atelier Exemple.
À décider : 3 brouillon(s) à valider (list_drafts) ; 1 message(s) reçu(s) sans réponse (list_threads avec unanswered = true).
Aujourd’hui : 9 envoi(s) sur 15 possible(s), 3 en file, 1 réponse(s) reçue(s), 0 rebond(s), 0 désinscription(s), 0 plainte(s).The structured object carries:
| Field | Content |
|---|---|
period | kind (today or week), from and to: the days of the period, in Paris time, inclusive. |
pending | What waits for a decision: drafts (the count, and the five most recent drafts), replies (the count, and the five most recent threads whose last message is an e-mail received with no reply), domains (unverified domains), suspended_inboxes. |
totals | Over the period: sent (the sends counted towards the quota), quota (the sum of the daily quotas), queued (queued right now), replies, bounces, unsubscribes, complaints. |
by_day | One object per day of the period, in order: date, sent, quota, replies, bounces, unsubscribes, complaints. |
billing | Where the space’s payment stands, or null. |
inboxes | The inboxes, with the fields of an inbox. |
- Nothing is estimated. Sends are the ones the daily quota counts. Replies, bounces, unsubscribes and complaints come from the log.
repliesanddomainsfollow the permissions:repliesisnullwithoutread,domainsisnullwithoutreadormanage_inboxes.- In an assistant that displays MCP Apps views,
activity_reportcomes with a view: today’s summary. See Views.
list_inboxes
Lists the inboxes the key can use, with their daily quota and their step. Any key can call it.
| Parameter | Type | Required | Description |
|---|---|---|---|
cursor | text | no | The cursor of the next page: the next_cursor value from the previous call. |
limit | integer | no | The number of items returned, from 1 to 100. 20 by default. |
create_inbox
Creates an inbox username@domain on one of the space’s sending domains. It receives straight away; its sending starts at the first step. Permission: manage_inboxes. The space must be verified.
| Parameter | Type | Required | Description |
|---|---|---|---|
username | text | yes | The part before the @: lowercase letters, digits, dot, hyphen or underscore, 64 characters at most; it starts with a letter or a digit. On the shared domain: 3 to 32 characters, and an address already given out is never given out again. |
domain | text | no | One of the space’s sending domains. Absent: the first one, its own first if it has a verified one (see inbox_status, tenant.domains). |
display_name | text | yes | The name shown in “From:”. One line, 100 characters at most, with no <, > or straight quote. |
Boîte [email protected] créée (inb_5c1e8b3a7d0f42c69e2b4a8d1f6c0e37). Elle reçoit dès maintenant. Envois en réchauffage : 5 par jour cette semaine, puis 10, 15, 20 (plafond 20 par jour). Créneau : du lundi au vendredi, de 9 h à 18 h, heure de Paris, jours fériés exclus.- Before payment, the space has only one inbox: a second one is refused with the code
payment_required. - At the plan’s cap, creation is refused with the code
inbox_limit. The lead gives the number of inboxes and the price of the next plan, and how to move to it straight away:subscribewithplan. See Pricing and payment. - Service addresses (
postmaster,abuse,support,admin,noreply…) are reserved: codereserved_username. On the shared domain, the list is longer. - On a domain registered by the space, the inbox can only be created once the domain is verified. A first message leaves from such an inbox. See Domains.
- An inbox created on the shared domain,
subagentmail.fr, only replies to whoever wrote to it. - Possible refusals:
space_unverified,payment_required,reserved_username,domain_not_allowed,no_sending_domain,domain_not_verified,domain_suspended,inbox_limit,inbox_creation_limit,address_taken,provisioning_failed. See Errors.
update_inbox
Changes an inbox’s display name, the one its recipients read in “From:”. The address does not change. Permission: manage_inboxes.
| Parameter | Type | Required | Description |
|---|---|---|---|
inbox_id | inb_… identifier | yes | The inbox to rename. |
display_name | text | yes | The new name. One line, 100 characters at most, with no <, > or straight quote. |
- The new name applies to messages written afterwards. A draft or a queued message keeps the name it was written under: what a human reviewed is what leaves.
delete_inbox
Deletes an inbox: its drafts and queued messages are cancelled, and its mail account is deleted. Threads remain readable. Irreversible. Permission: manage_inboxes.
| Parameter | Type | Required | Description |
|---|---|---|---|
inbox_id | inb_… identifier | yes | The inbox to delete. |
confirm | boolean | yes | Must be true: deletion is irreversible. |
- A suspended inbox cannot be deleted through the tool: the call is refused with the code
inbox_suspended. - Deleting an inbox and creating it again resets nothing: the duplicate rule follows the address, and creations are capped over 7 days, deleted inboxes included (code
inbox_creation_limit).
A suspended inbox
The circuit breaker suspends an inbox above 5% bounces (3% during warm-up) or 0.1% complaints. Any send is then refused with the code inbox_suspended, and the reason is written in status_reason. The inbox keeps receiving. Reinstatement is manual, by an Escouade Mail administrator: the human asks for it with request_inbox_review. See Sending rules.
request_inbox_review
Asks for a suspended inbox to be reinstated. The request is noted on the inbox and in the log, and an Escouade Mail administrator decides. Nothing resumes on its own, and no date is promised. Permission: approve. The space must be verified.
This is a human gesture: they ask their assistant for it, connected at https://mail.escouade.io/mcp. The key returned by sign_up does not carry approve.
| Parameter | Type | Required | Description |
|---|---|---|---|
inbox_id | inb_… identifier | yes | The suspended inbox. |
note | text | no | What the human wants to tell the administrator: one line, 300 characters at most. |
Reprise demandée mardi 13 octobre à 11 h 02 pour la boîte [email protected] (inb_3f9c2a7e5b1d4c8e9a0f6b2d7c4e1a95). Un administrateur de Subagent décide : rien ne reprend tout seul, et aucune date n’est promise. D’ici là, la boîte reçoit toujours, et n’envoie pas.- Before asking, fix what caused the suspension:
status_reasonsays what (dead addresses, complaints). - Asking again changes nothing more: the first request stands, with its date.
- An inbox that is not suspended: refusal
inbox_not_suspended.