# Créer un projet

## Ce qu'il faut avant de commencer

- Un compte Bastide et une organisation où vous tenez au moins le rôle de mainteneur (`maintainer`) : c'est le rang que demande `project_create_with_backend`.
- Un dépôt Git joignable par l'adresse que vous donnerez à Bastide.
- Un jeton pour votre agent, délivré depuis la console : vous choisissez ses portées (lecture seule, déploiement, administration). Il se révoque d'un clic.

## 1. Brancher votre agent

Dans Claude Code, remplacez l'adresse par celle que la console affiche pour votre organisation :

```
claude mcp add --transport http bastide <adresse-mcp-de-votre-organisation> --header "Authorization: Bearer <votre-jeton>"
```

Au premier échange, l'agent liste les outils disponibles. Le catalogue complet, avec le schéma de chaque entrée, est dans [mcp-tools.json](../mcp-tools.json).

## 2. Trouver l'organisation

L'opération `account.organization.list` rend les organisations où le compte tient un rôle : identifiant (`org_…`), slug, nom et rôles. Elle touche à l'identité du compte : elle n'est pas un outil MCP, et se lit par l'API HTTP, sous un jeton personnel.

```
curl -H "Authorization: Bearer <votre-jeton>" https://api.bastide.fr/v1/account/organizations
```

Gardez l'identifiant de l'organisation où créer le projet, et donnez-le à votre agent.

## 3. Créer le projet, sa base et le premier déploiement

L'outil `project_create_with_backend` fait les trois en un appel.

| Champ | Requis | Sens |
| --- | --- | --- |
| `organizationId` | oui | L'identifiant `org_…` de l'étape 2. |
| `slug` | oui | Identifiant lisible, minuscules, chiffres et tirets, unique. |
| `name` | oui | Nom affiché, de 1 à 120 caractères. |
| `gitRemote` | non | Adresse du dépôt Git. |
| `ref` | non | Branche, étiquette ou empreinte à construire ; à défaut, la branche par défaut. |
| `idempotencyKey` | non | De 8 à 128 caractères : rejouer l'appel avec la même clé ne crée pas un second projet. |

Exemple d'arguments :

```json
{
  "organizationId": "org_01JQ8ZK4M7NP2RSTVWXYZ34567",
  "slug": "ma-boutique",
  "name": "Ma boutique",
  "gitRemote": "https://example.org/ma-boutique.git",
  "idempotencyKey": "creation-ma-boutique-001"
}
```

La réponse porte le projet, l'identifiant `environmentId` de sa production, le déploiement lancé et une liste `suivi` qui dit quoi relire ensuite. Conservez `project` et `environmentId` : [le déploiement](deploy.md) et [la restauration](restore.md) en ont besoin.

Pour ne créer que le projet, sans sa base ni son déploiement, utilisez `project_create`.

## En cas d'échec

Un refus rend un code d'erreur précis et la suite à donner, jamais un code HTTP nu. Les codes de chaque outil sont dans [la référence MCP](../reference/mcp.md). Les refus propres à cette création sont `plafond_de_creations_de_projet` (cinq créations par jour glissant par la voie des agents) et `palier_choisi_par_une_personne` : un agent crée un projet au palier par défaut, c'est pourquoi le champ `tier` n'est pas à renseigner ; le palier, qui engage une dépense, est choisi par une personne.

Voir aussi : [Déployer](deploy.md).
