Skip to main content

MCP Tools

Reference for each tool exposed by the DEON MCP server.

📄️ get_project

Read a project kinds, parentId (direct children of one container), bbox (items intersecting a canvas rectangle) and textContains (case-insensitive) combine with AND; offset/limit page through the result (default 200 items), which reports total and hasMore. By default each item has id, kind, position (relative to its container), size (plus estimatedSize, the box the clients draw, for a label that grows with its text) and plain text cut to 200 characters (textTruncated marks a cut). fields picks others: style (fillColor, backgroundColor, strokeColor, strokeThickness, textColor, fontSize, fontFamily, horizontalTextAlignment, verticalTextAlignment, shapeType), a shape's cornerRadius (round-corner rectangles, world units) and adjustmentValues, connector lineType/start/end, zIndex (stacking order in the container, 0 = back-most), autoSize, parentId, angle, fileId, fullText (no cut), html (stored markup), or all. Item ids are stable, so after a write re-fetch only what changed, not the whole board. Ids feed updateitemproperty, styleitem, arrangeitem, deleteitem and connectitems.

📄️ create_item

Create a text item "height" wraps at size.width and grows down - use it for running text of unknown length; "width" is one line that grows right at a fixed size.height; "both" is one line that grows freely (size is ignored); "none" is a fixed size.width x size.height box that clips text that does not fit - the user only sees a red overflow handle when they select the label. A sticky never auto-sizes. Without autoSize a label follows size [{itemId, code, message}] for text cut off by its box (TEXTHEIGHTTOOSMALL), text running into other text (TEXTOVERLAP), text that cannot be read on what is behind it (LOWCONTRAST), text running past the shape it starts on (OUTSIDEPARENTSHAPE) and text a new shape hides (TEXTCOVERED). The write happened; fix what they name before reporting the work as done.

📄️ create_items

Create many items and the connectors between them in one call. Preferred way to build a diagram or a board section. For a single item the single tools remain. Each entry has a kind - label, sticky, shape, connector or image - and the fields of the matching single tool (createitem, createshape, connectitems, uploadimage; a connector's line type is lineType). Name entries with ref and attach connectors with source/target {"ref" "..."} - no round trip for ids. Items are created in entry order, connectors after all of them. The whole batch is checked first and created as one change [{itemId, code, message}] for text cut off by its box (TEXTHEIGHTTOOSMALL), text running into other text (TEXTOVERLAP), text that cannot be read on what is behind it (LOWCONTRAST), text running past the shape it starts on (OUTSIDEPARENTSHAPE) and text a new shape hides (TEXTCOVERED). The write happened; fix what they name before reporting the work as done.

📄️ create_shape

Place a shape on a project canvas. shape comes from six groups every corner of a RoundedRectangle, the top two of TwoSameSideRoundCornerRectangle, top left and bottom right of TwoDiagonalRoundCornerRectangle, the round corner of OneRoundCornerRectangle and OneSnipOneRoundCornerRectangle; other shapes reject it. It is capped at half the shorter side. A later size change scales the corners with the shape - send cornerRadius again after resizing to keep them. Colors are hex strings only - "#RRGGBB" (e.g. "#3B82F6"), or "#AARRGGBB" for alpha (alpha first). rgb()/rgba(), hsl() and named colors are rejected. New items are drawn on top of existing ones; to put one behind the rest (e.g. a backdrop) call arrangeitem with position "back". Returns the new item id. To recolor it later use styleitem. The result may carry warnings: [{itemId, code, message}] for text cut off by its box (TEXTHEIGHTTOOSMALL), text running into other text (TEXTOVERLAP), text that cannot be read on what is behind it (LOWCONTRAST), text running past the shape it starts on (OUTSIDEPARENTSHAPE) and text a new shape hides (TEXTCOVERED). The write happened; fix what they name before reporting the work as done.

📄️ connect_items

Draw a connector (line/arrow) between two existing items. Defaults to a straight line with an arrow at the end. Connector or arrow shape? connectitems draws a thin line/arrow attached to two items that follows them when they move - use it for relationships and flow edges. A block arrow shape (createshape, e.g. RightArrow) is a standalone filled area, not attached to anything - use it between process steps, as a direction cue, callout or header, and style it like any shape (fillColor, strokeColor, a text label on top). Colors are hex strings only - "#RRGGBB" (e.g. "#3B82F6"), or "#AARRGGBB" for alpha (alpha first). rgb()/rgba(), hsl() and named colors are rejected. Returns the new connector id.

📄️ style_item

Change an item's appearance with friendly hex colors; the fields are mapped to the right property for the item type. By type - label/sticky fillColor, strokeColor, strokeThickness; connector [{itemId, code, message}] for text cut off by its box (TEXTHEIGHTTOOSMALL), text running into other text (TEXTOVERLAP), text that cannot be read on what is behind it (LOWCONTRAST), text running past the shape it starts on (OUTSIDEPARENTSHAPE) and text a new shape hides (TEXTCOVERED). The write happened; fix what they name before reporting the work as done.

📄️ update_item_property

Set one property of an item to a value, using the friendly REST property names from getdatamodel (e.g. "text", "fontSize", "fillColor", "strokeColor", "angle", or "position"={x,y} / "size"={width,height}). Keys inside position/size are case-insensitive. Setting "size" on a label or sticky also pins its auto-size flags, so the new width is the width its text wraps at; pass height 0 to keep the height growing with the text. To change only how a label grows, set "autoSize" ("none" | "width" | "height" | "both") or "isAutoSizeWidth" / "isAutoSizeHeight" (true/false) "height" wraps at size.width and grows down - use it for running text of unknown length; "width" is one line that grows right at a fixed size.height; "both" is one line that grows freely (size is ignored); "none" is a fixed size.width x size.height box that clips text that does not fit - the user only sees a red overflow handle when they select the label. A sticky never auto-sizes. Setting backgroundColor or fillColor to null (or "#00000000") removes the fill. "cornerRadius" of a round-corner shape is in world units and is converted at the shape's current size - set it after "size", not before. "text" of a label or sticky ` for each line, / with (not nested), , /, /, , and with font-weight, font-styleunderline, color and background-color (#RRGGBB). The whole text has one fontSize and fontFamily - span font-size, headings and other tags are rejected. The stored form getproject returns as html (...) is accepted too. Colors are hex strings only - "#RRGGBB" (e.g. "#3B82F6"), or "#AARRGGBB" for alpha (alpha first). rgb()/rgba(), hsl() and named colors are rejected. The item type is resolved automatically; for items other than labels and stickies, passing itemType skips the lookup. The result may carry warnings: [{itemId, code, message}]` for text cut off by its box (TEXTHEIGHTTOOSMALL), text running into other text (TEXTOVERLAP), text that cannot be read on what is behind it (LOWCONTRAST), text running past the shape it starts on (OUTSIDEPARENTSHAPE) and text a new shape hides (TEXT_COVERED). The write happened; fix what they name before reporting the work as done.

📄️ retrieve_knowledge

Semantic search over a project's indexed knowledge. Returns an answer (when post-processing is enabled) and source citations with relevance scores. Use to ground responses in the actual content of a DEON project. Requires the project to have been analysed by you, under your currently selected tenant — knowledge is scoped to (user, tenant, project), not to the project alone. When there are no citations the result carries an indexed flag saying whether that means 'not analysed' or 'analysed, but no match for this query'.