update_cell
Updates the properties of an existing block: only the fields provided are WRITTEN. ⚠️ That does NOT mean that x/y stay stable — the automatic tidy-up runs AFTER the call and may RECOMPUTE the position, notably when a change of width/height creates an overlap (a block enlarged "without moving it" can therefore end up elsewhere). This holds for ALL kinds, org INCLUDED: an org block only keeps its position if it carries a manual placement, which a block only acquires by being explicitly moved — otherwise the tidy-up places it again like the others. On the kinds with DERIVED placement (arch, entity, process, journey, captable) the position belongs to the engine and never to the caller, and the response SAYS so (placementRecomputed + placementNote). ⚠️ The position returned in cell: over MCP it is the one AFTER that tidy-up, hence reliable; in the chat the tidy-up only runs at the end of the burst of tool calls: the final position is then read with get_cell_details. The parent is changed with move_cell.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X position in pixels | |
| y | No | New Y position in pixels | |
| id | Yes | ID of the block to modify | |
| desc | No | ||
| icon | No | ||
| name | No | ||
| note | No | ||
| type | No | Nature of the block. ⚠️ Switching a typed block (filiale, externe…) to 'container' (a division) makes it LOSE its capital shares (the assigned people stay): that is NOT the way to make it contain its children (the response then carries natureNote). A block contains its children when it keeps its type and carries displayMode:'container'. | |
| label | No | ||
| order | No | ||
| width | No | New width in pixels | |
| height | No | New height in pixels | |
| origin | No | ||
| status | No | ||
| colorKey | No | ||
| collapsed | No | Collapses the card to its header (title + status + count chip), ~90px instead of its full height. The content is NOT deleted: it stays in the panel, the exports and the Tasks view. Useful when a card carries many content blocks and crushes the overview. `false` expands it again. | |
| layoutHint | No | Placement hint. An OMITTED field touches nothing (keeps the DERIVED value set at creation by add_cell/apply_batch). 'column-side' forces the side column, 'bottom-center' forces the bottom band. | |
| statusType | No | 'done'/'abandoned' (kind='org' only) fade the card and, for 'abandoned', strike through the title — to close a subject visually without deleting it. | |
| displayMode | No | Switches between the 'container' rendering (encloses the children, in RELATIVE coordinates) and 'hat' (a hat above with downward arrows). ⚠️ This is THE field that decides whether the children are drawn INSIDE the card or NEXT TO it: on a type that does not enclose by default (everything except groupe/filiale/sous-filiale/container), leaving it empty makes the children display outside, even though the hierarchy is correct in the database. | |
| kindMetadata | No | Legal metadata (kind='org'): jurisdiction, legal form, entity class, share capital, incorporation date. MERGED with the existing values (like apply_batch and update_kind_metadata): you send ONLY the fields that change, the others STAY. A field is therefore never cleared by omitting it: naming it in `clearKindMetadata` clears it. If kindMetadata is entirely omitted, nothing is touched. | |
| childrenLabel | No | ||
| clearKindMetadata | No | kindMetadata fields to CLEAR explicitly (kind='org' only). Needed because the write is a MERGE: an omitted field is preserved. Accepted fields: jurisdiction, legalType, entityClass, shareCapital, incorporationDate — naming them all clears the whole legal-metadata block. An unknown name is refused and NOTHING is written (a typo is not taken for an erasure). | |
| 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. | |
| confirmRootPlacement | No | ⚠️ Required (true) ONLY if the project has locked its root placement (Settings) AND this displayMode:'hat' switch detaches EXISTING children (they become ROOT): without it, the switch is refused — nothing is written. Not applicable if the root placement is not locked, or if the block has no children. |