edit_board
Update cards and connections in a workflow diagram with atomic writes. Add, modify, or delete nodes and edges, and handle concurrency by specifying a base revision.
Instructions
GRANULAR write — edit cards & connections in ONE board WITHOUT resending the sheet. This is the primary way to keep the diagram in sync as you work (mark a card done, add a step, wire two cards). "at" addresses the board: the sheet id = its ROOT board, or "sheetId/nodeId/…" = the child board inside that container node (every non-leaf node on the path must already exist; only a leaf container's missing board is created so you can author into it). nodes[] UPSERT-MERGE by id: an existing id patches just the fields you pass (top-level keys replace; "detail" merges per key — set {detail:{note}} and detail.in/out/open are untouched; a null value CLEARS a field; an array replaces the whole array); a new id CREATES the node (needs a title; auto-placed below the board's bbox — pass x/y to override). edges[] upsert by id (omit id to create one; from/to must be node ids in THIS board; kind? flow|loop|dep, label?, fromSide? top|right|bottom|left). deleteNodes[] removes nodes (and cascades their incident edges); deleteEdges[] removes edges by id. One atomic, validated write. CONCURRENCY: auto-rejected if a human edited the sheet in the app since you last read it (re-read & re-apply, or pass force:true); pass baseRev (from list_sheets / a prior write) to pin it explicitly. Returns what changed + the new rev. Persists.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| at | Yes | ||
| edges | No | ||
| force | No | ||
| nodes | No | ||
| baseRev | No | ||
| deleteEdges | No | ||
| deleteNodes | No |