Skip to main content

render_view

Render part of a board as an image, exactly as the DEON web client draws it, so you can check what you built. Pass itemIds (the items you just created or changed; the image frames their combined bounds), or a world bbox, or neither for the whole board. The result is the image plus JSON: bbox and pxPerUnit map pixels back to world coordinates, overflowing lists labels whose text is clipped, excessHeight boxes much taller than their text, orphanLines paragraphs ending in a lone short word, minTextPx the smallest text size on screen, and smallText the items whose text renders under 9 px - too small for the image to show whether it reads well - with their place in the image and the start of their text, so you can render them alone. maxEdge sets the longest image edge (default 1024, max 1568); an image costs about width x height / 750 tokens. Set annotate to outline items with the last four characters of their id; items too small or crowded to label at that scale are left out and a warning counts them. Typical loop: create items, render them, fix what looks wrong, render the fixed item alone.

Tool name: render_view

Parameters​

ParameterTypeRequiredDefaultDescription
projectIdstringYes—Project (map) id.
itemIdsstring[]No—Items to frame (up to 500). Omit together with bbox to render the whole board.
bbox{x, y, width, height}No—World rectangle to render instead of itemIds.
paddingnumberNo40World units added around the target.
maxEdgeintegerNo1024Longest image edge in px, 64 to 1568.
annotatebooleanNofalseOutline items and label them with the last 4 characters of their id.
formatpng | jpegNopngjpeg keeps large photo-heavy regions small.

Pass at most one of itemIds and bbox.

The board is rendered by the same code the DEON web client uses, in a browser on the server, with your own access: a render never shows anything you could not open yourself.

Returns​

An MCP image content block, then a JSON text block describing it:

{
"content": [
{ "type": "image", "data": "<base64>", "mimeType": "image/png" },
{ "type": "text", "text": "{\"bbox\":{\"x\":-40,\"y\":-40,\"width\":720,\"height\":160},\"pxPerUnit\":1.25, ...}" }
]
}
FieldMeaning
bboxWorld rectangle the image shows.
pxPerUnitImage pixels per world unit.
minTextPxSmallest rendered text size in image pixels, or null when nothing has text.
overflowingIds of labels whose text is clipped by their box.
excessHeightFixed-height labels much taller than their text: {id, textHeight, boxHeight}.
orphanLinesParagraphs whose last line is a single word or very short: {id, paragraph}.
smallTextVisible items whose text renders under 9 px, where the image cannot show whether it reads well: {id, rect, textPx, text} - rect in image pixels, textPx the item's smallest text size, text its first 30 characters. Smallest first, at most 20; a warning counts them all. Render them by itemIds, or raise maxEdge.
itemsVisible item ids with their rectangle in image pixels.
stalledWeb items whose page did not load in time.
warningsHints, for example when text is too small to judge.

Limits: 30 renders a minute per user; a render times out after 25 seconds.

Example​

"Check the diagram you just created."

{
"projectId": "a1b2c3d4-...",
"itemIds": ["33cc44dd-...", "55ee66ff-..."],
"maxEdge": 1024,
"annotate": true
}