# La référence des tools, resources et prompts

> **Généré, ne pas éditer à la main.** Cette page sort de `scripts/reference-tools.ts`, qui monte un vrai serveur PalmaPlan et lit `tools/list`, `resources/list`, `resources/templates/list` et `prompts/list` — pas d'un README recopié. `scripts/reference-tools.test.ts` échoue si ce fichier n'est plus le résultat exact de cette commande :
>
> ```bash
> npx tsx scripts/reference-tools.ts
> ```

Compté sur le serveur réel : **101 tools**, **10 resources** (5 concrètes + 5 modèles paramétrés), **5 prompts**.

Dont **3 réservés à la vue MCP Apps** (`get_schedule_page`, `get_changes_since`, `get_schedule_absences` — `_meta.ui.visibility: ["app"]`) : le serveur ne les liste qu'à un client qui annonce l'extension `io.modelcontextprotocol/ui`, et l'hôte les cache au modèle. Un client sans MCP Apps (Claude Code) voit les **98 tools du modèle**.

## Tools (101)

## Plannings

### `create_schedule`

Crée un planning vierge : timeline au jour, semaine de cinq jours, trois colonnes texte. Avec « from_template » (un template, par nom ou identifiant) et « start_date » : une copie du template dont tout est décalé en unités ouvrées, jour 0 = start_date (S8).

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `name` | string | oui |  |
| `left_border_date` | string | non | Date ISO, par exemple 2026-10-05 ou 2026-10-05T00:00:00.000Z |
| `from_template` | string | non | Le template (nom ou identifiant) |
| `start_date` | string | non | Le jour 0 du nouveau planning, avec from_template |

### `get_schedule`

Lit un planning en entier : groupes, lignes, dates calculées, durées, avancement.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |

### `get_conflicts`

Les conflits d un planning : blocs d une même ligne qui se recouvrent, et dépendances dont la contrainte n est pas tenue. « Aucun conflit » sinon.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |

### `update_schedule`

Renomme un planning ou change ses réglages : notes, zoom par défaut (codes v23 : 3=mois, 4=semaine, 6/8/9/10=jour, 11=heure, 12/13/14=minutes), mode de propagation (forward, le seul connu), bord gauche de la timeline, largeur du panneau gauche.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `name` | string | non |  |
| `notes` | string | non |  |
| `default_zoom` | integer | non |  |
| `propagation_mode` | string (forward) | non |  |
| `left_border_date` | string | non | La date au bord gauche de la timeline |
| `left_panel_width` | integer | non | En pixels |

## Groupes

### `add_group`

Ajoute un groupe — une phase du projet. Les lignes se rattachent à un groupe.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `label` | string | oui |  |
| `color` | string | non | Couleur hexadécimale, sans dièse |
| `after` | string | non | Identifiant du groupe après lequel insérer |

### `update_group`

Change le libellé, la couleur ou le repliement d un groupe.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `group` | string | oui |  |
| `label` | string | non |  |
| `color` | string | non | Couleur hexadécimale, sans dièse |
| `folded` | boolean | non |  |

### `move_group`

Déplace un groupe. Sans « after », il passe en tête.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `group` | string | oui |  |
| `after` | string \| null | non |  |

### `delete_group`

Supprime un groupe et tout ce qu il porte : lignes, cellules, blocs, dépendances.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `group` | string | oui |  |

## Lignes

### `add_rows`

Ajoute des lignes à un groupe, avec leurs cellules et leurs blocs. C est le tool de construction principal.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `group` | string | oui |  |
| `after` | string | non | Identifiant de la ligne après laquelle insérer |
| `rows` | object[] | oui |  |

### `move_rows`

Déplace des lignes, éventuellement vers un autre groupe.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `rows` | string[] | oui |  |
| `group` | string | oui |  |
| `after` | string \| null | non |  |

### `indent_rows`

Indente des lignes d un cran : elles deviennent filles de la ligne au-dessus.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `rows` | string[] | oui |  |

### `outdent_rows`

Désindente des lignes d un cran. Leurs descendantes remontent avec elles.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `rows` | string[] | oui |  |

## Le presse-papiers

### `copy_rows`

Copie des lignes — avec leurs cellules, blocs, marqueurs, icônes, commentaires et les liens entre elles — dans un fragment à coller par paste_rows, dans ce planning ou dans un autre. Rien n est écrit ; les liens qui sortent de la sélection sont laissés et comptés.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `rows` | string[] | oui |  |

### `paste_rows`

Colle un fragment de copy_rows sous une ligne (ou en fin de groupe), dans ce planning ou dans un autre : identifiants neufs, liens internes conservés. Dans un autre planning, les cellules trouvent leur colonne par libellé et type, les statuts par nom ; ce qui n a pas de place est abandonné et nommé — jamais une colonne créée d office. Une commande fragment.paste, annulable.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `fragment` | object | oui | Le « fragment » rendu par copy_rows, tel quel |
| `group` | string | oui |  |
| `after` | string \| null | non | La ligne sous laquelle coller ; null pour le début du groupe ; absent pour la fin |

### `delete_rows`

Supprime des lignes et ce qu elles portent : cellules, blocs, dépendances, commentaires.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `rows` | string[] | oui |  |

## Colonnes et cellules

### `add_column`

Ajoute une colonne au panneau gauche. Les colonnes de dates et de durée sont calculées et ne se saisissent pas.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `type` | string (text \| symbol \| trafficlight \| startdate \| enddate \| duration \| progress \| status \| autonumber) | oui |  |
| `label` | string | oui |  |
| `width` | integer | non |  |
| `after` | string | non |  |

### `delete_column`

Supprime une colonne et ses cellules. La dernière colonne visible ne peut pas être supprimée.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `column` | string | oui |  |

### `set_cell`

Écrit la valeur d une cellule. La valeur est contrôlée contre le type de la colonne ; dans une colonne de statut, le nom du statut convient.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `row` | string | oui | Identifiant, numéro de ligne (1.2), libellé, ou « Groupe/Libellé » |
| `column` | string | oui |  |
| `value` | string | oui |  |

### `update_column`

Modifie une colonne : libellé, type, largeur, affichage, valeur par défaut, ou le port de l indentation. Changer le type vide les cellules que le nouveau type refuse.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `column` | string | oui |  |
| `label` | string | non |  |
| `type` | string (text \| symbol \| trafficlight \| startdate \| enddate \| duration \| progress \| status \| autonumber) | non |  |
| `width` | integer | non |  |
| `hidden` | boolean | non |  |
| `indent` | boolean | non | Fait porter à cette colonne le décalage visuel de l indentation. Une seule à la fois. |
| `default_value` | string \| null | non |  |

### `move_column`

Déplace une colonne. Sans « after », elle passe en première position.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `column` | string | oui |  |
| `after` | string | non |  |

### `set_column_statuses`

Définit la liste complète des statuts d une colonne de statut, dans l ordre. Les statuts absents de la liste sont retirés, et les cellules qui les portaient sont vidées.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `column` | string | oui |  |
| `statuses` | object[] | oui |  |

### `set_cell_style`

Met en forme une cellule : gras, italique, barré, couleur du texte et du fond. Un champ omis ne change pas ; une couleur à null la retire. Styler n est pas saisir : une colonne calculée l accepte.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `row` | string | oui | Identifiant, numéro de ligne (1.2), libellé, ou « Groupe/Libellé » |
| `column` | string | oui |  |
| `bold` | boolean | non |  |
| `italic` | boolean | non |  |
| `strike` | boolean | non |  |
| `text_color` | string \| null | non |  |
| `background_color` | string \| null | non |  |

## Timeline

### `update_timeline`

Règle la timeline : granularité, jours ouvrés, plage horaire, en-têtes affichés.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `type` | string (day \| hour \| minutes15 \| minutes10 \| minutes5) | non |  |
| `active_days` | boolean[] | non | Sept booléens, indice 0 = dimanche |
| `hide_weekend_days` | boolean | non |  |
| `first_week_day` | 0 \| 1 \| 6 | non |  |
| `active_hour_from` | integer | non |  |
| `active_hour_to` | integer | non |  |
| `mark_today` | boolean | non |  |
| `shade_days` | boolean[] | non | Jours ombrés à l écran, indice 0 = dimanche. Sans effet sur les durées. |
| `weekend_shade_color` | string \| null | non | Couleur d ombrage, RRGGBBAA |
| `show_year` | boolean | non |  |
| `show_month` | boolean | non |  |
| `show_week_nr` | boolean | non |  |
| `show_date` | boolean | non |  |
| `show_week_day` | boolean | non |  |
| `time_format` | string (24hour \| 12hour) | non |  |

### `add_special_dates`

Marque des jours chômés ou colorés — jours fériés, fermetures, absences. Une plage annuelle se rejoue chaque année. « label » la nomme (« Fermeture d août », « Congés Anne ») ; « rows » la restreint à des lignes (par libellé ou identifiant) : une absence ne chôme que ces lignes, une journée colorée ne les teinte qu elles. Une plage chômée allonge les blocs qu elle traverse et pousse leurs successeurs contraignants ; « propagate: false » les laisse.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `dates` | object[] | oui |  |
| `propagate` | boolean | non | Vrai par défaut : les successeurs liés sont poussés du minimum nécessaire ; false pour déplacer sans rien entraîner |

### `remove_special_dates`

Retire des jours chômés ou colorés.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `dates` | string[] | oui |  |

## Blocs

### `add_period`

Pose un bloc sur une ligne. Une date hors créneau ouvré est ramenée au créneau suivant, et le déplacement est signalé.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `row` | string | oui | Identifiant, numéro de ligne (1.2), libellé, ou « Groupe/Libellé » |
| `start` | string | oui | Date ISO, par exemple 2026-10-05 ou 2026-10-05T00:00:00.000Z |
| `duration` | integer | oui | En unités de la timeline |
| `color` | string | non | Couleur hexadécimale, sans dièse |
| `label` | string | non |  |
| `progress` | integer | non | Avancement, 0 à 100 |

### `move_periods`

Décale des blocs. Soit d un nombre d unités ouvrées, soit vers une date précise pour un bloc unique.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `periods` | string[] | oui |  |
| `delta` | integer | non | En unités ouvrées ; négatif pour avancer |
| `to` | string | non | Date cible ; un seul bloc à la fois |
| `row` | string | non | Nouvelle ligne ; un seul bloc à la fois |
| `propagate` | boolean | non | Vrai par défaut : les successeurs liés sont poussés du minimum nécessaire ; false pour déplacer sans rien entraîner |

### `resize_period`

Change la durée d un bloc, et éventuellement son début. `duration_unit` ré-exprime l unité du bloc : un bloc compté en semaines auquel on demande 10 jours doit la recevoir, sans quoi les 10 seraient lus comme 10 semaines.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `period` | string | oui |  |
| `duration` | integer | oui |  |
| `duration_unit` | string (day \| week \| month \| hour \| minutes15 \| minutes10 \| minutes5) | non | L unité dans laquelle `duration` se compte ; celle du bloc si omise |
| `start` | string | non | Date ISO, par exemple 2026-10-05 ou 2026-10-05T00:00:00.000Z |
| `propagate` | boolean | non | Vrai par défaut : les successeurs liés sont poussés du minimum nécessaire ; false pour déplacer sans rien entraîner |

### `update_periods`

Change la couleur, le libellé, l avancement ou le verrou de blocs. locked: true fige la place et l existence du bloc (move_periods, resize_period, delete_periods et la propagation le laissent où il est, refusés ELEMENT_LOCKED) ; le libellé, la couleur, l avancement, les commentaires et les actions restent libres ; locked: false le rend.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `periods` | string[] | oui |  |
| `color` | string | non | Couleur hexadécimale, sans dièse |
| `label` | string | non |  |
| `progress` | integer \| null | non | null retire le suivi |
| `locked` | boolean | non | true : le bloc ne bouge plus et ne se supprime plus ; false : le libère |

### `delete_periods`

Supprime des blocs, avec leurs dépendances et leurs commentaires.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `periods` | string[] | oui |  |

## Icônes

### `add_symbol`

Pose une icône — jalon, coche, alerte, réunion… — sur une ligne, à une date. Le code se trouve avec list_symbol_types. Une date hors créneau ouvré est ramenée au créneau suivant, et le déplacement est signalé.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `row` | string | oui | Identifiant, numéro de ligne (1.2), libellé, ou « Groupe/Libellé » |
| `at` | string | oui | Date ISO, par exemple 2026-10-05 ou 2026-10-05T00:00:00.000Z |
| `type` | integer \| integer \| string | oui | Code d icône v23, 1 à 91 (list_symbol_types les nomme et les cherche) ; ou une icône personnalisée du planning (S9) : son code négatif, ou le nom de son fichier |
| `label` | string | non |  |

### `move_symbol`

Déplace une icône : vers une date précise, ou d un nombre d unités ouvrées. Éventuellement vers une autre ligne.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `symbol` | string | oui | Identifiant, libellé, ou « ligne @ date-ou-libellé » — « 1.2 @ 2026-10-16 » ; sur une timeline horaire, l heure départage : « 1.2 @ 2026-10-16 14:00 » |
| `to` | string | non | Date cible |
| `delta` | integer | non | En unités ouvrées ; négatif pour avancer |
| `row` | string | non | Nouvelle ligne |
| `propagate` | boolean | non | Vrai par défaut : les successeurs liés sont poussés du minimum nécessaire ; false pour déplacer sans rien entraîner |

### `update_symbol`

Change le type, le libellé ou le verrou d icônes. locked: true fige la place et l existence du jalon (move_symbol, delete_symbol et la propagation le laissent où il est, refusés ELEMENT_LOCKED) ; locked: false le libère.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `symbols` | string[] | oui |  |
| `type` | integer \| integer \| string | non | Code d icône v23, 1 à 91 (list_symbol_types les nomme et les cherche) ; ou une icône personnalisée du planning (S9) : son code négatif, ou le nom de son fichier |
| `label` | string | non |  |
| `locked` | boolean | non | true : le jalon ne bouge plus et ne se supprime plus ; false : le libère |

### `delete_symbol`

Supprime des icônes, avec leurs dépendances et leurs commentaires.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `symbols` | string[] | oui |  |

### `list_symbol_types`

Les 91 types d icônes du format v23 — code, nom, mots-clés —, filtrés par un mot en français ou en anglais. Sans « search », la table entière. Avec « schedule », les icônes personnalisées de ce planning (S9) à la suite : code négatif, fichier, taille.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `search` | string | non | « réunion », « meeting », « alerte »… |
| `schedule` | string | non | Le planning dont on veut aussi les icônes personnalisées (code négatif, nom de fichier) |

## Dépendances

### `add_dependency`

Lie deux blocs ou icônes : la cible ne peut pas commencer (ou finir) avant l origine, plus un décalage. Si la cible est placée trop tôt, elle est poussée du minimum nécessaire, et la réponse le dit ; propagate: false pose le lien sans la bouger, et get_conflicts le montre violé. mode: soft trace un lien indicatif — un trait qui ne déplace rien et n est jamais violé.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `from` | string | oui | Identifiant, libellé d un bloc ou d une icône, ou « ligne @ date-ou-libellé » — avec l heure sur une timeline horaire |
| `to` | string | oui | Identifiant, libellé d un bloc ou d une icône, ou « ligne @ date-ou-libellé » — avec l heure sur une timeline horaire |
| `type` | string (fs \| ss \| ff \| sf) | non | fs fin→début (défaut), ss début→début, ff fin→fin, sf début→fin |
| `lag` | integer | non | Décalage en unités ouvrées de la timeline — jours ouvrés sur une timeline au jour, heures ouvrées sur une timeline horaire ; négatif pour faire chevaucher ; 0 par défaut |
| `mode` | string (hard \| soft) | non | hard (défaut) : contraignant — la cible est poussée quand la contrainte n est plus tenue, le lien compte dans get_conflicts, le chemin critique et what_if ; soft : indicatif — un trait qui ne déplace rien, jamais violé, hors du chemin critique, qui peut fermer une boucle |
| `propagate` | boolean | non | Vrai par défaut : les successeurs liés sont poussés du minimum nécessaire ; false pour déplacer sans rien entraîner |

### `update_dependency`

Change le type, le décalage ou le mode d une dépendance. Les extrémités ne se changent pas : on supprime et on relie. Si la nouvelle contrainte n est plus tenue, la cible est poussée du minimum nécessaire ; propagate: false la laisse en place. mode: hard rend le lien contraignant (il pousse aussitôt, et un cycle est refusé) ; mode: soft le rend indicatif (rien ne bouge).

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `dependency` | string | oui | Identifiant de la dépendance, ou « origine → cible » (deux références d éléments) |
| `type` | string (fs \| ss \| ff \| sf) | non | fs fin→début (défaut), ss début→début, ff fin→fin, sf début→fin |
| `lag` | integer | non | Décalage en unités ouvrées de la timeline — jours ouvrés sur une timeline au jour, heures ouvrées sur une timeline horaire ; négatif pour faire chevaucher ; 0 par défaut |
| `mode` | string (hard \| soft) | non | hard (défaut) : contraignant — la cible est poussée quand la contrainte n est plus tenue, le lien compte dans get_conflicts, le chemin critique et what_if ; soft : indicatif — un trait qui ne déplace rien, jamais violé, hors du chemin critique, qui peut fermer une boucle |
| `propagate` | boolean | non | Vrai par défaut : les successeurs liés sont poussés du minimum nécessaire ; false pour déplacer sans rien entraîner |

### `delete_dependency`

Supprime une dépendance. Les blocs restent où ils sont.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `dependency` | string | oui | Identifiant de la dépendance, ou « origine → cible » (deux références d éléments) |

## Commentaires

### `set_comment`

Écrit un commentaire sur un bloc, une icône ou une cellule. Une cible ne porte qu un commentaire : s il en existe un, il est remplacé. Un corps vide est refusé ; delete_comment retire.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `target` | object \| object \| object | oui | { period } \| { symbol } \| { row, column } |
| `body` | string | oui |  |

### `delete_comment`

Retire le commentaire d un bloc, d une icône ou d une cellule.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `target` | object \| object \| object | oui | { period } \| { symbol } \| { row, column } |

### `reply_comment`

Répond sous le commentaire d un bloc, d une icône ou d une cellule (set_comment pose la tête). Avec « reply_id » : modifie cette réponse (« body ») ou la retire (« delete: true »). Une réponse est signée de qui l écrit ; 200 réponses par fil, 10 000 caractères.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `target` | object \| object \| object | oui | { period } \| { symbol } \| { row, column } |
| `body` | string | non |  |
| `reply_id` | string | non | La réponse à modifier ou à retirer |
| `delete` | boolean | non | Avec reply_id : retire la réponse |

### `resolve_comment`

Clôt le fil d un commentaire (« resolved: true » — le triangle passe au gris), ou le rouvre (« resolved: false »). Réservé à qui édite le planning.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `target` | object \| object \| object | oui | { period } \| { symbol } \| { row, column } |
| `resolved` | boolean | oui |  |

## Légende

### `update_legend`

Affiche ou masque la légende, et nomme les couleurs de blocs.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `display` | boolean | non |  |
| `periods` | object[] | non |  |

## Chercher, la date de référence, les données projet

### `search_schedule`

Cherche dans un planning avec les critères du filtre de l éditeur (page 03 §7) : texte libre (cellules, libellés de blocs et d icônes, commentaires), couleurs de blocs, types d icônes, couleurs de fond de cellule, feux, statuts (par nom ou identifiant), plage de dates. OU entre les valeurs d un critère, ET entre critères. Rend les lignes trouvées et, par ligne, les blocs et icônes qui correspondent — le même moteur que le volet Filtre.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `text` | string | non | Texte cherché, sans accent ni casse |
| `colors` | string[] | non | Couleurs de blocs |
| `symbols` | integer[] | non | Types d icônes v23 |
| `backgrounds` | string[] | non | Couleurs de fond de cellule |
| `lights` | integer[] | non | Feux : 0 aucun, 1 rouge, 2 orange, 3 vert |
| `statuses` | string[] | non | Statuts, par nom ou identifiant |
| `from` | string | non | Début de la plage, inclus |
| `to` | string | non | Fin de la plage, incluse |

### `update_reference_date`

La date de référence (le trait vertical de la timeline) : la poser ou la déplacer (date), l afficher ou la masquer (visible), la retirer (clear). Une date hors créneau ouvré est ramenée au suivant, et la réponse le dit.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `date` | string | non | La date du trait |
| `visible` | boolean | non |  |
| `clear` | boolean | non | Vrai pour retirer le trait |

### `update_metadata`

Remplace les données projet affichées dans la légende (paires libellé / valeur : client, chef de projet, version…) par la liste donnée, dans cet ordre. Une liste vide les retire toutes.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `entries` | object[] | oui |  |

## Les actions d’un bloc

### `list_actions`

Les actions des blocs d un planning — le « comment » de chaque tâche — bloc par bloc : ○ à faire, ◐ en cours, ✓ fait, avec le responsable. « period » restreint à un bloc, « assignee » à un responsable (« me » : les vôtres), « status » à un statut.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `period` | string | non | Un bloc : libellé, identifiant, ou « ligne @ date » |
| `assignee` | "me" \| object \| object \| object \| null | non | « me » (vous-même : votre jeton nommé, ou l utilisateur), { kind: "name", label } pour un nom, null pour retirer |
| `status` | string (todo \| doing \| done) | non | todo (à faire), doing (en cours), done (fait) |

### `add_action`

Ajoute une action à faire sur un bloc — un titre, un contexte (Markdown léger : gras, italique, liens), un responsable. Dès qu un bloc a une action, son avancement est déduit de ses actions (faites / total) et ne se règle plus à la main. Répond avec le nouvel avancement du bloc.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `period` | string | oui | Le bloc : libellé, identifiant, ou « ligne @ date » |
| `title` | string | oui |  |
| `context` | string | non | Le contexte de l action, en Markdown léger |
| `assignee` | "me" \| object \| object \| object \| null | non | « me » (vous-même : votre jeton nommé, ou l utilisateur), { kind: "name", label } pour un nom, null pour retirer |
| `status` | string (todo \| doing \| done) | non | todo par défaut |
| `after` | string \| null | non | L action après laquelle insérer ; null pour insérer en tête ; absent : à la fin |

### `update_action`

Modifie une action : son titre, son contexte, son responsable, son statut, et son bloc (« period », S23 — l avancement des deux blocs suit, déduit de leurs actions). Pour le seul statut, set_action_status suffit ; pour la seule place dans la colonne, after seul suffit.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `action` | string | oui | Identifiant de l action, ou son titre — « Recette / relire » qualifie par le bloc |
| `title` | string | non |  |
| `context` | string | non |  |
| `assignee` | "me" \| object \| object \| object \| null | non | « me » (vous-même : votre jeton nommé, ou l utilisateur), { kind: "name", label } pour un nom, null pour retirer |
| `status` | string (todo \| doing \| done) | non | todo (à faire), doing (en cours), done (fait) |
| `period` | string | non | La déplacer vers un autre bloc — libellé, identifiant, ou « ligne @ date » (S23). Avec after, qui désigne alors une action de ce bloc d arrivée |
| `after` | string \| null | non | La place dans la colonne — dans le bloc d arrivée si period est posé, sinon dans le sien. null pour la mettre en tête |

### `set_action_status`

Change le statut d une action — done la termine, doing la passe en cours, todo la rouvre — et répond avec le nouvel avancement du bloc, déduit de ses actions.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `action` | string | oui | Identifiant de l action, ou son titre — « Recette / relire » qualifie par le bloc |
| `status` | string (todo \| doing \| done) | oui | todo (à faire), doing (en cours), done (fait) |

### `delete_action`

Retire une action de son bloc. La dernière retirée rend au bloc un avancement qui se règle à la main.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `action` | string | oui | Identifiant de l action, ou son titre — « Recette / relire » qualifie par le bloc |

### `list_my_actions`

Ce qui vous est confié — à vous-même (votre jeton nommé), ou à l utilisateur sinon — dans tous les plannings que vous pouvez lire, regroupé par planning. « status » restreint à un statut. « since » : reprenez le « as_of » d un appel précédent pour voir ce qui est neuf, changé, ou retiré (avec la raison) depuis — la réponse rend toujours un as_of neuf, à repasser au prochain appel : c est ce qui fait marcher « depuis ma dernière visite ».

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `status` | string (todo \| doing \| done) | non | todo (à faire), doing (en cours), done (fait) |
| `since` | string | non | L as_of rendu par un appel précédent de list_my_actions |

### `get_action_history`

L histoire d une action : sa création, chaque changement de colonne, de responsable, de titre ou de contexte, un déplacement vers un autre bloc, une suppression ou une restauration — qui et quand —, et le temps passé dans chaque colonne.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `action` | string | oui | Identifiant de l action, ou son titre — « Recette / relire » qualifie par le bloc |

## Ce qui coince, l’état du kanban

### `get_action_alerts`

Ce qui coince dans le kanban : une action non faite dont le bloc est terminé (en retard), une action « en cours » depuis idle_days jours sans changer (immobile, sept jours par défaut), une action sans responsable dans un bloc déjà commencé, ou confiée à quelqu un d absent pendant son bloc. Sans « schedule » : toutes vos alertes, tous les plannings que vous pouvez lire confondus ; avec : celles d un planning entier.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | non | Un planning ; sans lui, vos alertes dans tous ceux que vous pouvez lire |
| `idle_days` | integer | non | Jours sans changer avant « immobile » ; sept par défaut |

### `get_kanban_status`

L état du kanban d un planning : combien d actions dans chaque colonne, ce qui a bougé cette semaine (qui, de quoi à quoi, quand), et ce qui coince — les mêmes alertes que get_action_alerts.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `idle_days` | integer | non | Jours sans changer avant « immobile » ; sept par défaut |

## Les absences et les risques

### `list_absences`

Les absences — congés, temps partiel, formation, autre ; jamais un motif médical, le schéma le refuse. Sans « schedule » : les vôtres, par /me/absences. Avec un planning : celles de ses membres actuels, par la même visibilité que l écran Agenda — un étranger ou un ancien membre n y voit rien, même avec un nom gardé sur une ligne ou une action.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | non | Un planning, pour voir les absences de ses membres plutôt que les vôtres |

### `add_absence`

Pose une de vos absences. Trois formes : un jour ou une demi-journée, une période longue (« forme: periode »), ou des jours récurrents (« forme: recurrente » — tous les vendredis, un vendredi sur deux…). Le motif est congés, temps_partiel, formation ou autre — AUCUN motif médical et AUCUN champ libre : le schéma les refuse (donnée de santé, RGPD art. 9 ; un outil de planning n a besoin de savoir que vous êtes absent, jamais pourquoi). Ne déplace aucun bloc, d aucun planning : get_schedule_risks dit ce qu elle met en risque.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `motif` | string (conges \| temps_partiel \| formation \| autre) | oui | congés, temps_partiel, formation ou autre — jamais un motif médical |
| `forme` | object \| object | oui |  |

### `remove_absence`

Retire une de vos absences, par son identifiant (list_absences les donne) — ou par un bout de sa description si elle est seule à correspondre.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `absence` | string | oui | Identifiant d une absence, ou un bout de sa description — list_absences les donne |

### `get_schedule_risks`

Les blocs à risque d un planning : qui y travaille (une ligne reliée par set_row_member, ou une action confiée) est absent sur au moins un jour ouvré de sa durée — même liste, même calcul que l écran Risques. Une ligne reliée à un membre qui n est plus du planning est signalée à part, sans date.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |

### `set_row_member`

Relie une ligne à un membre du planning : tous ses blocs comptent alors pour cette personne dans get_schedule_risks — la disposition « une ligne par personne ». « member » : « me », un nom, un e-mail, ou un identifiant (list_members les donne) ; null délie la ligne.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `row` | string | oui | Identifiant, numéro de ligne (1.2), libellé, ou « Groupe/Libellé » |
| `member` | string \| null | oui | « me », un nom, un e-mail, un identifiant — list_members les donne ; null pour délier |

## Les plannings (cycle de vie)

### `list_schedules`

La liste des plannings : nom, taille, dernière modification et par qui (vous ou Claude). « trash » liste la corbeille avec la date de purge, « templates » les modèles.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `trash` | boolean | non | La corbeille plutôt que la liste |
| `templates` | boolean | non | Les templates plutôt que les plannings |

### `delete_schedule`

Met un planning à la corbeille : il n y est plus lisible ni modifiable, et sera purgé trente jours plus tard ; restore_schedule le rend d ici là.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |

### `restore_schedule`

Rend à la liste un planning mis à la corbeille, tel qu il était.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |

### `duplicate_schedule`

Copie un planning en entier — groupes, lignes, blocs, icônes, liens, commentaires, légende — avec des identifiants neufs, au rang 0 et sans histoire. Nommé « Copie de … » sauf nom donné.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `name` | string | non |  |

## Les versions

### `list_versions`

Les versions d un planning, la plus récente d abord : date, raison (daily, before_bulk, manual, restore), rang et libellé. restore_version en rend une, diff_versions { from_version, to_version } compare deux.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |

### `create_version`

Prend une version manuelle du planning tel qu il est, avec un libellé facultatif — avant une opération qu on voudrait pouvoir défaire d un coup.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `label` | string | non |  |

### `restore_version`

Restaure une version — par son identifiant ou son libellé exact. Une commande schedule.replace au journal, que undo défait ; l état d avant reste en version « restore ».

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `version` | string | oui | Identifiant ou libellé |

### `set_baseline`

Désigne une version comme référence (baseline) du planning : les blocs déplacés depuis portent une ombre à leur ancienne place (écran, SVG, PNG, impression), l inspecteur dit l écart, et diff_versions { from_version: "baseline" } le compare. Sans version : une version « Référence » est prise maintenant, puis désignée. Annulable par undo.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `version` | string | non | La version à désigner, par identifiant ou libellé exact ; sinon, une version prise maintenant |

### `clear_baseline`

Retire la référence (baseline) du planning : plus d ombre, plus d écart. La version, elle, reste. Annulable par undo.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |

### `replace_schedule`

Remplace le contenu entier d un planning par un modèle PalmaPlan complet (la forme de palmaplan://schedule/{id}/json, sans l identité : ni id, owner_id, created_at, seq, ni is_template, deleted_at). Validé comme un import ; l état d avant reste en version before_bulk, et undo y revient.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `model` | objet | oui | Le modèle entier, sans identité |

## Les gabarits

### `save_as_template`

Enregistre une copie du planning comme template : il quitte la liste principale pour la galerie, et create_schedule { from_template, start_date } en fait des plannings dont tout est décalé en unités ouvrées. Nommé comme le planning sauf nom donné.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `name` | string | non |  |

### `list_templates`

La galerie des templates : nom, taille, jour 0. Comme list_schedules { templates: true }.

_Aucun paramètre._

## L’impression et les ressources

### `update_print_setup`

Règle la mise en page d impression du planning — format, orientation, ajustement, plage, légende, commentaires — celle que l écran Imprimer et render_schedule { paper: {} } utilisent. Une commande print_setup.update, annulable.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `format` | string (A4 \| A3 \| A2 \| A1 \| A0 \| letter \| legal \| ledger) | non |  |
| `orientation` | string (landscape \| portrait) | non |  |
| `zoom_to_fit` | boolean | non |  |
| `range_start` | string \| null | non |  |
| `range_end` | string \| null | non |  |
| `include_legend` | boolean | non |  |
| `include_comments` | boolean | non |  |
| `show_critical_path` | boolean | non | Le liseré du chemin critique à l impression et dans render_schedule (S9) |
| `show_baseline` | boolean | non | Les ombres de la référence à l impression et dans render_schedule (S9) |

### `set_logo`

Le logo du planning, montré dans la légende, le SVG, le PNG et l impression. « file » téléverse un PNG, JPEG ou GIF (50 Ko, 185 px de large au plus) en base64 et le pose ; « asset » pose un fichier déjà téléversé ; « show » et « height » règlent ; « remove » retire. Une commande logo.update, annulable.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `file` | object | non |  |
| `asset` | string | non | L identifiant d un fichier déjà téléversé |
| `show` | boolean | non |  |
| `height` | integer | non | La hauteur affichée, en pixels |
| `remove` | boolean | non |  |

### `delete_asset`

Supprime un fichier téléversé (un logo) du planning ; le logo qui le montrait est retiré avec lui. Une commande asset.remove, annulable. Les fichiers sont listés dans palmaplan://schedule/{id}/json (assets).

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `asset` | string | oui | L identifiant du fichier |

## Les marqueurs

### `add_marker`

Pose un marqueur dans un bloc, à une date (AAAA-MM-JJ), avec un libellé et un genre facultatifs. Refusé s il tombe hors du bloc. Il suit le bloc qui se déplace ; l export Tom s Planner ne le porte pas.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `period` | string | oui | Le bloc, par libellé, « ligne @ date » ou identifiant |
| `at` | string | oui | Date ISO, par exemple 2026-10-05 ou 2026-10-05T00:00:00.000Z |
| `label` | string | non |  |
| `kind` | string | non |  |

### `update_marker`

Renomme un marqueur, ou change son genre. Par son identifiant, ou par son libellé exact.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `marker` | string | oui | Identifiant ou libellé du marqueur |
| `label` | string | non |  |
| `kind` | string | non |  |

### `remove_marker`

Retire un marqueur, par son identifiant ou son libellé exact ; undo le rend.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `marker` | string | oui |  |

## Le partage

### `list_members`

Qui a accès à un planning : le propriétaire, les membres (éditeur ou lecteur), les invitations en attente, et votre propre rôle.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |

### `share_schedule`

Partage un planning avec quelqu un par son e-mail, en éditeur ou en lecteur. Un e-mail dont le compte a prouvé son adresse devient membre tout de suite ; sinon, une invitation part à cette adresse et son lien est rendu ici (à transmettre — il vaut sept jours). Un membre déjà là change de rôle.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `email` | string | oui | L e-mail de la personne |
| `role` | string (editor \| viewer) | oui | editor modifie tout ; viewer lit seulement |

### `unshare_schedule`

Retire l accès de quelqu un à un planning — par son e-mail, ou par l identifiant d une invitation en attente (list_members les donne).

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `email` | string | non | Le membre à retirer |
| `invitation` | string | non | L invitation en attente à révoquer |

## La publication

### `publish_schedule`

Publie un planning en lecture seule : une adresse /p/<slug> que n importe qui peut ouvrir, toujours à jour ; un mot de passe facultatif ; l intégration en iframe permise ou non ; l agenda des absences montré ou non (les noms des membres et leurs dates, jamais le motif — ?vue=agenda). Avec l intégration, ?embed=1&vue=gantt|kanban|agenda s encadre. Republier après unpublish_schedule donne une autre adresse.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `password` | string | non | Un mot de passe à demander ; absent, la page est ouverte |
| `allow_embed` | boolean | non | Permettre l intégration en iframe (faux par défaut) |
| `show_absences` | boolean | non | Montrer l agenda des absences sur le lien : quiconque a le lien voit les noms des membres et leurs dates d absence, jamais le motif (faux par défaut ; absent, inchangé) |

### `unpublish_schedule`

Dépublie un planning : son adresse publique ne mène plus nulle part.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |

## En masse

### `build_schedule`

Crée un planning complet en un appel : groupes, lignes, cellules, blocs et dépendances entre blocs. C'est le tool à utiliser pour construire un planning depuis une description de projet.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `name` | string | oui |  |
| `start_date` | string | oui | Premier jour du planning, YYYY-MM-DD. Sert de repère aux offsets. |
| `timeline` | object | non |  |
| `columns` | object[] | non | Colonnes du panneau gauche. Par défaut : Activité, Responsable, Notes. |
| `holidays` | object[] | non | Jours chômés — fériés, fermetures, absences (avec « rows ») |
| `groups` | object[] | oui |  |

### `apply_patch`

Applique un lot de commandes brutes du moteur, atomiquement. Pour ce que les tools métier ne couvrent pas. Utilisez dry_run pour voir les effets sans écrire, et expected_rank pour n écrire que si le planning n a pas changé depuis votre lecture (STALE_BASE sinon, rien n est écrit).

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `commands` | object[] | oui |  |
| `dry_run` | boolean | non |  |
| `expected_rank` | integer | non | Le rang auquel vous avez lu ou simulé le planning (le rank de what_if) : le lot n est appliqué que si le planning y est toujours — sinon STALE_BASE, et rien n est écrit |

### `shift_schedule`

Décale tout le planning d'un nombre d'unités de la timeline — des jours ouvrés sur une timeline au jour, des heures ouvrées sur une timeline horaire. Les créneaux chômés sont sautés, et les écarts entre blocs conservés. Ne propage jamais : tout bouge du même pas, et une dépendance violée avant l'est encore après.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `delta` | integer | oui | En unités de la timeline du planning ; négatif pour avancer le planning. Lisez la timeline si vous n'êtes pas sûr de l'unité. |

## L’échange (import / export)

### `import_schedule`

Importe un planning depuis un texte et le crée en entier : « v23 » pour le format JSON v23, « palmaplan » pour un export JSON PalmaPlan, « csv » (une ligne par activité, en-têtes reconnues ou mapping explicite — avec un mapping, seules les colonnes nommées sont interprétées, les autres sont du texte), « ics » (un événement par ligne, les récurrences non développées), « msproject_xml » (MSPDI : tâches, niveaux, liens). Rend le rapport de conversion — ce qui a été dégradé, ignoré, aligné ou pris par défaut — et l identifiant du planning créé.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `format` | string (v23 \| palmaplan \| csv \| ics \| msproject_xml) | oui |  |
| `content` | string | oui | Le contenu du fichier, tel quel |
| `name` | string | non | Le nom du planning ; sinon une donnée projet du fichier, sinon « Planning importé » |
| `mapping` | object | non | CSV seulement : quelle en-tête porte quoi |
| `timeline` | string (day \| hour) | non | ICS seulement : au jour (défaut) ou horaire |

### `export_schedule`

Exporte un planning : « v23 » (le format JSON v23), « palmaplan » (le modèle complet, réimportable tel quel), « markdown » (la vue lisible), « csv » (une ligne par ligne : colonnes saisies, groupe, début, fin, durée, avancement — UTF-8 avec BOM, point-virgule, pour Excel), « xlsx » (S9 : un classeur à trois feuilles — Planning, le tableau du CSV avec de vraies dates ; Gantt, une colonne par jour, chaque bloc en cellules de sa couleur ; Actions (S10), une ligne par action — rendu en pièce jointe base64). Le premier bloc de la réponse résume et liste ce que le format ne sait pas dire ; le second est le fichier.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `format` | string (v23 \| palmaplan \| markdown \| csv \| xlsx) | oui |  |

## Le rendu (SVG, PNG, PDF)

### `render_schedule`

Rend un planning en image : « svg » (natif, le même dessin que l écran), « png » ou « pdf » (par Chromium ; sans lui, le SVG est rendu et le tool le dit). Le texte dit la plage et le cran retenus ; le PNG est rendu en image et en base64, le PDF en fichier incorporé et en base64.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `format` | string (svg \| png \| pdf) | oui |  |
| `range` | object | non | La plage montrée, AAAA-MM-JJ ; sinon toute la période du planning |
| `zoom` | integer | non | Le cran (codes : 3 mois, 4 semaine, 6/8/9/10 jour, 11 heure, 12/13/14 quarts d heure et moins) ; sinon le plus fin qui fasse tenir la plage |
| `include_legend` | boolean | non | Le bandeau de légende ; par défaut, le réglage du planning |
| `include_comments` | boolean | non | L annexe des commentaires, numérotés comme les repères du dessin |
| `include_actions` | boolean | non | L annexe des actions : par bloc, cochées, avec leur responsable (S10) |
| `critical_path` | boolean | non | Le liseré rouge du chemin critique (S9) — le même calcul que get_critical_path ; par défaut, la mise en page du planning (show_critical_path) |
| `baseline` | boolean | non | Les ombres de la référence (S9, set_baseline) sous les blocs déplacés ; par défaut, la mise en page du planning (show_baseline). Sans référence désignée, rien. |
| `width` | integer | non | La largeur en pixels, 1 200 par défaut |
| `scale` | number | non | PNG seulement : le facteur de définition, 2 pour un rendu Retina |
| `paper` | object | non | Le papier (S8) : le rendu part de la mise en page du planning (print_setup : plage, légende, commentaires, cran) — comme l aperçu imprimable — à la largeur de la page utile, et le PDF est mis en page dessus avec 10 mm de marge ; range, zoom, include_* et width surchargent. {} suffit pour imprimer comme l écran. |

## Les analyses

### `get_critical_path`

Le chemin critique d un planning : la chaîne d éléments dont tout retard recule la fin de projet, la fin de projet, et la marge de chaque autre élément — le nombre d unités ouvrées dont il peut glisser sans rien retarder. Dates au plus tôt et au plus tard dans le contenu structuré.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |

### `get_progress_report`

Le rapport d avancement : par groupe puis par ligne, l avancement pondéré par les durées, ce qui est terminé, en cours, à venir, en retard (fini avant aujourd hui sans être à 100), ce qui est passé sans être suivi, et les jalons des prochains jours. « today » fixe la date du rapport ; sinon maintenant.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `today` | string | non | La date du rapport, YYYY-MM-DD ; sinon maintenant |
| `horizon_days` | integer | non | Les jalons de ces N prochains jours ; 14 par défaut |

### `what_if`

Simule un geste sans rien écrire et dit ce qu il changerait : les éléments qui bougent (le geste et ce qu il entraîne), la nouvelle fin de projet, le nouveau chemin critique, les liens qui resteraient violés, les nouveaux risques d absence. Le geste : « move » (comme move_periods), « resize » (comme resize_period), ou « commands » (un lot brut, comme apply_patch). Dans un hôte MCP Apps, la proposition s affiche en avant/après, avec « Accepter » (apply_patch des mêmes commandes, refusé si le planning a changé depuis ; jamais offert si le lot change ce que l avant/après ne montre pas — le texte nomme alors ces changements non représentés) et « Refuser ».

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `action` | object \| object \| object | oui |  |

### `diff_versions`

Les différences lisibles entre deux états d un planning — deux rangs du journal (from_seq, to_seq), ou deux versions (from_version, to_version : identifiant ou libellé ; l une des deux peut être le courant ; « baseline » désigne la référence posée par set_baseline) : lignes ajoutées ou retirées, blocs ajoutés, retirés, déplacés (de → à), redimensionnés, recolorés, liens, cellules, commentaires. Sans arrivée : jusqu au courant. Dans un hôte MCP Apps, la comparaison s affiche en avant/après, en lecture seule.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `from_seq` | integer | non | Le rang de départ, tel que get_history le rend |
| `to_seq` | integer | non | Le rang d arrivée ; sinon le courant |
| `from_version` | string | non | La version de départ (S8) ; « baseline » : la référence (S9) |
| `to_version` | string | non | La version d arrivée ; sinon le courant |

### `get_history`

Le journal des commandes d un planning, filtré : acteur (user ou mcp), rang de départ, période, types de commande, limite. Chaque entrée : le rang, le type, l acteur, la date, et le payload résolu.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `actor` | string (user \| mcp) | non |  |
| `since_seq` | integer | non | Les entrées de rang strictement supérieur |
| `from` | string | non | Les entrées à partir de cette date |
| `to` | string | non | Les entrées jusqu à cette date, exclue |
| `types` | string[] | non | Les types de commande retenus, par exemple ["period.move"] |
| `limit` | integer | non | Les N dernières entrées retenues ; 50 par défaut |

### `list_comments`

Les commentaires d un planning, avec ce qu ils annotent — un bloc, une icône, une cellule —, leur auteur et leur date ; (S13) chaque fil avec ses réponses signées et son état (résolu par qui, quand). « element » restreint à un bloc ou une icône.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `element` | string | non | Un bloc ou une icône : identifiant ou libellé |

## La vue embarquée

### `show_schedule`

Affiche un planning dans la conversation : le Gantt de PalmaPlan, en ligne puis en plein écran, aux couleurs de l hôte (une vue MCP Apps) — ou, par view, le kanban de toutes ses actions, ou l agenda des absences de ses membres. Rend aussi un résumé textuel (période, comptes, risques) et, pour qui ne rend pas MCP Apps, l adresse de la vue, valable une heure, en lecture seule sauf editable: true. Options : la vue, un filtre, le zoom, une fenêtre de dates, le panneau, le chemin critique, la référence, editable: false pour une vue qui lit seulement.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `filter` | string | non | Un filtre, dans la syntaxe de l écran : t:texte, c:couleurs, s:statuts, d:début, f:fin, séparés par ; |
| `zoom` | integer | non | Le cran de zoom (code v23 : 8 = semaine, 9 = jour, 10 = jour large…) |
| `from` | string | non | Le premier jour visible (AAAA-MM-JJ) |
| `to` | string | non | Le dernier jour visible (AAAA-MM-JJ) : avec from, la vue cadre cette fenêtre |
| `panel` | string (grid \| timeline \| both) | non | La grille seule, le ruban seul, ou les deux (défaut) |
| `critical_path` | boolean | non | Peindre le chemin critique |
| `reference` | boolean | non | Montrer la version de référence (les ombres), si le planning en a une |
| `editable` | boolean | non | Faux : une vue qui lit seulement, même pour un éditeur. Dans un hôte MCP Apps, la vue écrit par défaut, selon le rôle ; le lien d une heure rendu aux hôtes sans MCP Apps lit seulement, sauf editable: true — le rôle réel de l utilisateur plafonne toujours |
| `view` | string (gantt \| kanban \| agenda) | non | Ce que la vue montre : le Gantt (défaut), le kanban de toutes les actions du planning, ou l agenda des absences de ses membres |

### `get_schedule_page`

Réservé à la vue MCP Apps de PalmaPlan : une page du modèle d un planning (ou d une de ses versions), chaque réponse sous 120 000 caractères. La première page porte le planning et le début de ses collections ; suivre next_cursor jusqu à null, et mettre les collections bout à bout (un fichier coupé garde son id : ses data se concatènent).

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `cursor` | string | non | Le next_cursor de la page précédente ; absent, la première page |
| `version` | string | non | Une version enregistrée à lire plutôt que le planning courant (la référence, pour ses ombres) |

### `get_changes_since`

Réservé à la vue MCP Apps de PalmaPlan : les entrées du journal d un planning après le rang since (la forme de GET /schedules/:id/commands?since=), à rejouer sur le modèle. Sous 120 000 caractères : coupé, rank est celui de la dernière entrée rendue — rappeler avec since=rank jusqu à une réponse vide. STALE_BASE : trop de retard, relire le planning par get_schedule_page. absences_rev : la révision de l agenda (absences et membres, qui ne passent pas par le journal) — si elle diffère de celle de get_schedule_absences, relire l agenda.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `since` | integer | oui | Le rang que la vue a déjà : les entrées du journal qui suivent |

### `get_schedule_absences`

Réservé à la vue MCP Apps de PalmaPlan : les membres actuels d un planning (nom affiché, identifiant opaque propre à la réponse) et leurs absences (la forme seule : dates, demi-journées, récurrence) — jamais le motif, ni l e-mail, ni l identifiant de compte. Les mêmes droits que l écran Agenda ; le modèle a list_absences.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |

## L’annulation (undo / redo)

### `undo`

Annule le dernier lot appliqué par cette session MCP sur ce planning (ou les N derniers) : ses inverses, lus au journal, sont appliqués en un lot. Ne connaît que ce que ce processus a écrit ; ce que l écran a fait entre-temps reste. redo rétablit.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `steps` | integer | non | Le nombre de lots ; 1 par défaut |

### `redo`

Rétablit le dernier lot annulé par undo dans cette session MCP sur ce planning (ou les N derniers). Une écriture nouvelle vide ce qui pouvait être rétabli.

| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| `schedule` | string | oui | Identifiant du planning, ou son nom — « Migration S/4HANA » convient |
| `steps` | integer | non | Le nombre de lots ; 1 par défaut |

## Resources (10)

### Resources concrètes (5)

| Nom | Adresse | Type MIME | Description |
|---|---|---|---|
| `schedules` | `palmaplan://schedules` | text/markdown | Liste des plannings connus |
| `templates` | `palmaplan://templates` | text/markdown | Les plannings enregistrés comme templates, à instancier par create_schedule { from_template, start_date } |
| `symbols` | `palmaplan://symbols` | text/markdown | Les 91 codes d icônes du format v23, avec leurs noms et mots-clés |
| `me-actions` | `palmaplan://me/actions` | text/markdown | Les actions qui me sont confiées, tous plannings confondus, regroupées par planning (S23) |
| `schedule-app` | `ui://palmaplan/planning` | text/html;profile=mcp-app | La vue native de PalmaPlan (MCP Apps) : le Gantt d un planning, dans la conversation — en ligne ou en plein écran, aux couleurs de l hôte. Affichée par show_schedule |

### Modèles de resource, paramétrés par `{id}` (5)

| Nom | Modèle d’adresse | Type MIME | Description |
|---|---|---|---|
| `schedule` | `palmaplan://schedule/{id}` | text/markdown | Vue lisible complète d un planning : groupes, lignes, dates, durées |
| `schedule-json` | `palmaplan://schedule/{id}/json` | application/json | Modèle complet normalisé, pour les traitements exacts |
| `schedule-history` | `palmaplan://schedule/{id}/history` | text/markdown | Journal des commandes appliquées : qui, quoi, quand |
| `schedule-dependencies` | `palmaplan://schedule/{id}/dependencies` | text/markdown | Le graphe des dépendances d un planning : la liste, avec les liens violés marqués, et un diagramme Mermaid |
| `schedule-actions` | `palmaplan://schedule/{id}/actions` | text/markdown | Les actions des blocs d un planning, bloc par bloc : à faire, en cours, faites, avec leur responsable (S10) |

## Prompts (5)

### `plan_project`

Transforme la description d'un projet en planning complet : découpage en phases, estimation, construction en un appel.

| Argument | Obligatoire | Description |
|---|---|---|
| `description` | oui | Le projet à planifier, en texte libre. Plus c'est précis, mieux c'est. |
| `start_date` | non | Date de début, YYYY-MM-DD |
| `end_date` | non | Échéance à tenir, si elle est imposée |
| `granularity` | non | « phase », « activité » ou « tâche » — le grain du découpage |

### `import_from_text`

Extrait activités, dates et durées d'un texte libre — compte rendu, liste de tâches, courriel — et en fait un planning.

| Argument | Obligatoire | Description |
|---|---|---|
| `content` | oui | Le texte à interpréter |
| `schedule` | non | Planning à compléter. Absent, un nouveau planning est créé. |

### `reschedule`

Lit le planning, simule avec what_if ce qu'une contrainte impose — « finir avant le 15 décembre », « X absent du 3 au 10 » —, puis applique après confirmation.

| Argument | Obligatoire | Description |
|---|---|---|
| `schedule` | oui | Le planning : identifiant ou nom |
| `constraint` | oui | La contrainte, en texte libre : une échéance, une absence, un retard connu |

### `plan_task`

Lit un bloc et son contexte, propose une liste d'actions (cinq à dix, un verbe à l'infinitif, un responsable proposé), et ne les écrit qu'après confirmation — avec add_action. L'avancement du bloc suivra les actions.

| Argument | Obligatoire | Description |
|---|---|---|
| `schedule` | oui | Le planning : identifiant ou nom |
| `period` | oui | Le bloc : son libellé, ou « ligne @ date » |

### `weekly_status`

Un rapport d'avancement lisible : ce qui est fait, en cours, en retard, les prochains jalons et les conflits — depuis get_progress_report et get_conflicts.

| Argument | Obligatoire | Description |
|---|---|---|
| `schedule` | oui | Le planning : identifiant ou nom |
| `today` | non | La date du point, YYYY-MM-DD ; sinon aujourd'hui |
