add_person
Creates a person (a member of the project's network: partner, executive, contributor…). A person belongs to the whole project and appears on no block until assign_person links them to one. Required: id (unique, kebab-case) and name; REFUSED with an error, nothing written, if the id already exists. Omitted fields take defaults: initials derived from the name, role empty, colour '#5b9eff', network 'core', category 'executant', level 'Intermédiaire', no tags. search_people finds out whether the person already exists. An existing person is modified with update_person; calling this tool again with a new id creates a second, separate person.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique kebab-case ID | |
| desc | No | Description of the profile | |
| name | Yes | First name or full name | |
| note | No | Internal notes | |
| role | No | Professional role | |
| tags | No | Key tags | |
| color | No | Hex color (e.g. '#3dffa0') | |
| level | No | Level, free text (any text is accepted): `Élevé` (high), `Intermédiaire`, `Intermédiaire+`, etc. When omitted, the stored level is `Intermédiaire`. | |
| network | No | Network of belonging: 'core', 'marc', 'michael' | |
| category | No | Category: `moteur` (driver / leader), `pivot` (linchpin), `executant` (operational) | |
| initials | No | 2 uppercase letters (e.g. 'MS', 'JV'). When omitted, this field is DERIVED from `name` (same rule as the displayed chip); a supplied value serves a deliberately different choice. | |
| expectedProjectId | No | UUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted. |