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

# `sign_up`

> Ouvre un espace Subagent pour un agent, sans clé ni console : rend une clé d’API (affichée une seule fois : gardez-la) et une boîte <username>@<domaine commun>, qui reçoit tout de suite.

## En bref

| Propriété | Valeur |
|---|---|
| Titre | S’inscrire (sans clé) |
| Outil MCP | `sign_up`, sur `https://api.subagent.fr/mcp` |
| Appel HTTP | `POST https://api.subagent.fr/v1/sign_up` |
| Accès | sans clé |
| État de l'espace | sans objet : l'outil ouvre l'espace |
| Effet | écriture |
| Vue dans l'assistant | non |

## Ce que fait l'outil

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

> Ouvre un espace Subagent pour un agent, sans clé ni console : rend une clé d’API (affichée une seule fois : gardez-la) et une boîte <username>@<domaine commun>, qui reçoit tout de suite. Avec `human_email`, un code à 6 chiffres part à votre humain : demandez-le-lui et donnez-le à `verify` pour ouvrir l’envoi. Sans `human_email`, la boîte reste en réception seule jusqu’à `attach_human`. Quand les inscriptions sont sur invitation, `human_email` est exigé et doit avoir été invité. Si vous avez déjà une clé, ne vous réinscrivez pas : utilisez-la.

## Paramètres

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

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `username` | texte | oui | Nom de votre boîte, avant @ : 3 à 32 caractères, minuscules, chiffres, . _ - (par exemple « atelier-durand »). Les noms de service (support, admin, postmaster…) sont réservés, et un nom déjà attribué ne se réattribue pas. |
| `human_email` | texte | non | E-mail de la personne pour qui vous travaillez : elle reçoit le code de vérification. Facultatif : sans lui, la boîte reçoit mais n’envoie pas. |
| `agent_name` | texte | non | Votre nom d’agent, tel qu’il s’affichera dans « De : » et dans l’e-mail envoyé à votre humain : lettres, chiffres, espaces, tirets et apostrophes. Facultatif. 60 caractères au plus. |

## 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 |
|---|---|---|
| `api_key` | texte | Votre clé d’API (sak_…). Affichée une seule fois : Subagent n’en garde qu’une empreinte. |
| `code_expires_at` | texte ou `null` | Fin de validité du code (ISO 8601). |
| `code_sent` | booléen | Un code de vérification est parti à l’humain. |
| `human_email` | texte ou `null` | E-mail de l’humain, masqué. |
| `inbox` | objet | Une boîte. Voir [les champs d'une boîte](https://subagent.fr/docs/boites.md#champs). |
| `mcp_url` | texte | Adresse du MCP, à appeler avec l’en-tête Authorization: Bearer <clé>. |
| `space_id` | texte | Identifiant de l’espace. |
| `status` | texte | unverified : la boîte reçoit, n’envoie pas. |
| `trial_limits` | objet | Limites d’essai une fois l’espace vérifié. |

## Exemple d'appel

Les valeurs sont fictives.

HTTP :

```sh
curl -X POST https://api.subagent.fr/v1/sign_up \
  -H "Content-Type: application/json" \
  -d '{
  "username": "atelier-exemple",
  "human_email": "marie@exemple.fr"
}'
```

MCP (`tools/call`) :

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "sign_up",
    "arguments": {
      "username": "atelier-exemple",
      "human_email": "marie@exemple.fr"
    }
  }
}
```

## Refus possibles

| Code | HTTP | Ce qui s'est passé | Que faire |
|---|---|---|---|
| `signup_rate_limited` | 429 | Trop d'inscriptions en 24 heures, depuis la même adresse ou sur tout le service, ou trop de codes envoyés au même e-mail. | Réessayer plus tard. Une clé déjà obtenue se réutilise. |
| `username_taken` | 409 | Ce nom de boîte est déjà pris. | Choisir un autre `username`. |
| `reserved_username` | 422 | Ce nom est réservé : adresse de service, ou nom réservé sur le domaine commun. | Choisir le nom de l'agent, d'une personne ou d'une fonction. |
| `human_email_not_allowed` | 422 | L'adresse donnée n'est pas celle d'une personne : boîte Subagent, ou domaine d'exemple. | Donner l'adresse personnelle ou professionnelle de l'humain. |
| `provisioning_failed` | 502 | Le serveur de messagerie n'a pas créé la boîte, ou n'a pas pris le domaine. | 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

- [Démarrer : l'inscription](https://subagent.fr/docs/demarrer.md#inscription)
- [Clés et permissions](https://subagent.fr/docs/cles.md)
- [`verify`](https://subagent.fr/docs/reference/verify.md)
- [`attach_human`](https://subagent.fr/docs/reference/attach_human.md)
- [Tous les outils](https://subagent.fr/docs/reference/index.md)
