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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
projectId | string | Yes | — | Project (map) id. |
itemIds | string[] | 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. |
padding | number | No | 40 | World units added around the target. |
maxEdge | integer | No | 1024 | Longest image edge in px, 64 to 1568. |
annotate | boolean | No | false | Outline items and label them with the last 4 characters of their id. |
format | png | jpeg | No | png | jpeg 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, ...}" }
]
}
| Field | Meaning |
|---|---|
bbox | World rectangle the image shows. |
pxPerUnit | Image pixels per world unit. |
minTextPx | Smallest rendered text size in image pixels, or null when nothing has text. |
overflowing | Ids of labels whose text is clipped by their box. |
excessHeight | Fixed-height labels much taller than their text: {id, textHeight, boxHeight}. |
orphanLines | Paragraphs whose last line is a single word or very short: {id, paragraph}. |
smallText | Visible 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. |
items | Visible item ids with their rectangle in image pixels. |
stalled | Web items whose page did not load in time. |
warnings | Hints, 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
}