infiniteboard-mcp 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/tools.mjs +3 -2
package/package.json
CHANGED
package/tools.mjs
CHANGED
|
@@ -6,7 +6,7 @@ export const INSTRUCTIONS = [
|
|
|
6
6
|
"Tools for reading and editing the user's open whiteboard (an infinite canvas). The user watches changes live and can undo each call.",
|
|
7
7
|
"For anything with structure (flowcharts, processes, system architecture, org charts, mind maps, feature breakdowns, kanban, roadmaps, timelines, brainstorm clusters) use create_diagram: describe nodes, edges and groups and the board lays them out, sizes nodes to their text and routes the connectors. Don't compute coordinates by hand for those.",
|
|
8
8
|
"For planning a whole product, project or idea, follow the plan_board prompt: a set of titled sections placed side by side, each built with create_diagram, then checked with get_screenshot.",
|
|
9
|
-
"Use create_elements for small additions (a note, a label, one connector) and
|
|
9
|
+
"When the user asks to change a diagram, use update_elements for small edits (text, colours) and create_diagram with replace:<section id> to restructure it in place. Use create_elements for small additions (a note, a label, one connector) and arrange_elements to tidy. Coordinates are world units, x right, y down; elements have x/y (top-left) and w/h.",
|
|
10
10
|
"On a board with existing content, start with get_board {outline:true}, then read sections with get_board {frame:id}. Place new work with place:{near:id, side} so it doesn't overlap.",
|
|
11
11
|
"get_screenshot {ids:[...]} shows any region without moving the user's view; check your work with it and fix overlaps or unclear labels.",
|
|
12
12
|
].join(" ");
|
|
@@ -110,7 +110,7 @@ export function registerBoardTools(server, call) {
|
|
|
110
110
|
"Layouts: flow = layered graph from edges (flowcharts, processes, system architecture, data flow, dependencies; direction down or right); tree = hierarchy from each node's parent (org chart, feature/work breakdown, sitemap); mindmap = one root (no parent) with branches on both sides, coloured per branch; columns = one column per group, nodes stacked (kanban, Now/Next/Later roadmap, user-story map, pros/cons, categories); grid = cards in a grid, one cluster per group (brainstorm, affinity map, personas, risks); timeline = nodes in the given order along an axis, detail shown as the date, groups become phases.",
|
|
111
111
|
"Node kinds: process (rounded box), decision (diamond), terminal (start/end pill), io (parallelogram), database (cylinder), service (box), user (actor), external (grey box), queue (hexagon), card (white card), note (sticky note), topic (mind-map topic), text (plain label). Defaults: flow/tree process, mindmap topic, columns/timeline card, grid note.",
|
|
112
112
|
"Groups become frames around their nodes (e.g. Frontend / Backend / Data in an architecture; lanes; phases). Give the diagram a title to make it a titled section.",
|
|
113
|
-
"Keep node text short (2–8 words); put extra explanation in detail. Returns the element id for each node id, group frame ids, a section id
|
|
113
|
+
"Keep node text short (2–8 words); put extra explanation in detail. Returns the element id for each node id, group frame ids, a section id and bounds. The section id stands for the whole diagram in place.near, replace and get_screenshot ids. Place the next diagram with place:{near:<section id>, side}; it goes beside the whole section.",
|
|
114
114
|
].join(" "),
|
|
115
115
|
inputSchema: {
|
|
116
116
|
layout: z.enum(["flow", "tree", "mindmap", "columns", "grid", "timeline"]),
|
|
@@ -144,6 +144,7 @@ export function registerBoardTools(server, call) {
|
|
|
144
144
|
]).optional().describe("Where to put it. Default: to the right of existing content (or centred in view on an empty board)"),
|
|
145
145
|
spacing: z.enum(["compact", "normal", "roomy"]).optional(),
|
|
146
146
|
focus: z.boolean().optional().describe("Move the user's view to the new diagram (default true)"),
|
|
147
|
+
replace: z.string().optional().describe("To change a diagram you made: its section id (or any element in it). The old one is swapped out in place, as one undo step"),
|
|
147
148
|
},
|
|
148
149
|
}, relay("create_diagram"));
|
|
149
150
|
|