bertus37987.github.io
A shared infinite whiteboard for people and browser agents.
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 1 · Act 7 · Transact 0 · Score: Not yet scored
Tool inspector
create_structured_visual
Create an editable multi-element visual during the currently claimed human turn: sequence diagram, kanban board, roadmap, study note, guided explainer, diagram, timeline, comparison, hierarchy, styled UI mockup, research brief, math derivation or plot. Match the shape to the subject — a process between parties is a sequence, work in flight is a board, what lands when is a roadmap. Keep node labels to a few words and put the explanation in detail, which becomes the narration under the guided-explanation controls. A visual without x and y is placed in free canvas below whatever is already on the board. Requires that turn leaseToken. Prefer student-like composition and sketch accents where they clarify.
Page: /smooth-whiteboard-webmcp/
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
leaseToken |
string | yes | The leaseToken returned when this human turn was claimed. Required: writes without it are rejected. |
baseRevision |
number | no | Content revision returned by inspect_whiteboard; rejected when the canvas changed meanwhile. |
kind |
string | yes | Pick the shape that matches the thing: a process between parties is a sequence, work in flight is a board, what lands when is a roadmap, a breakdown of ideas is a mindmap, a decision path is a flowchart, a screen is a ui_mockup, a lesson is a guided_explainer. |
id |
string | no | — |
title |
string | no | — |
x |
number | no | — |
y |
number | no | — |
width |
number | no | — |
height |
number | no | — |
nodes |
array | no | — |
edges |
array | no | Connections between nodes. For a sequence these are the messages, in order: fromId and toId are actor ids, label is the short line on the arrow, detail becomes that step's narration. |
columns |
array | no | board only: the columns and the cards in them. |
lanes |
array | no | roadmap only: the rows, one per workstream. |
periods |
array | no | roadmap only: the columns, for example weeks or quarters. |
items |
array | no | roadmap only: bars and milestones placed by period index. |
sections |
array | no | — |
steps |
array | no | — |
axes |
object | no | — |
series |
array | no | — |
presentationSteps |
array | no | — |
theme |
object | no | — |
Raw JSON schema
{
"type": "object",
"required": [
"kind",
"leaseToken"
],
"properties": {
"leaseToken": {
"type": "string",
"description": "The leaseToken returned when this human turn was claimed. Required: writes without it are rejected."
},
"baseRevision": {
"type": "number",
"description": "Content revision returned by inspect_whiteboard; rejected when the canvas changed meanwhile."
},
"kind": {
"type": "string",
"enum": [
"flowchart",
"mindmap",
"ui_wireframe",
"ui_mockup",
"research_report",
"math_steps",
"plot",
"study_note",
"timeline",
"comparison",
"hierarchy",
"visual_explainer",
"guided_explainer",
"sequence",
"board",
"roadmap"
],
"description": "Pick the shape that matches the thing: a process between parties is a sequence, work in flight is a board, what lands when is a roadmap, a breakdown of ideas is a mindmap, a decision path is a flowchart, a screen is a ui_mockup, a lesson is a guided_explainer."
},
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"nodes": {
"type": "array",
"maxItems": 40,
"items": {
"type": "object",
"required": [
"id",
"label"
],
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"detail": {
"type": "string"
},
"parentId": {
"type": "string"
},
"role": {
"type": "string",
"description": "What this element is. On a screen: header, navbar, sidebar, section, card, button, input, select, checkbox, radio, switch, tabs, list, modal, badge, avatar, divider, icon, text, and image (a crossed placeholder box for a photo), price (a small tag) and chip (a pill). Elsewhere: primary, secondary, decision, callout, legend, example, warning, source."
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"fill": {
"type": "string",
"description": "Background of this one element as a hex colour — a green price, a red warning, a dark hero. The theme paints everything that does not say otherwise, and the text colour follows the fill's contrast on its own."
},
"textColor": {
"type": "string",
"description": "Hex colour for this element's own label, when the automatic choice is not what you want."
},
"radius": {
"type": "number",
"description": "Corner rounding in pixels: 0 is a sharp edge, a large number is a pill. Left alone, a chip or badge is a pill, a button or input is softly rounded, a card is square-ish."
},
"fontSize": {
"type": "number",
"description": "Type size for this element, so a restaurant name can be larger than its rating."
},
"fontWeight": {
"type": "number",
"enum": [
400,
500,
600,
700
]
}
}
}
},
"edges": {
"type": "array",
"maxItems": 80,
"description": "Connections between nodes. For a sequence these are the messages, in order: fromId and toId are actor ids, label is the short line on the arrow, detail becomes that step's narration.",
"items": {
"type": "object",
"required": [
"fromId",
"toId"
],
"properties": {
"fromId": {
"type": "string"
},
"toId": {
"type": "string"
},
"label": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
},
"columns": {
"type": "array",
"maxItems": 8,
"description": "board only: the columns and the cards in them.",
"items": {
"type": "object",
"required": [
"name",
"cards"
],
"properties": {
"name": {
"type": "string"
},
"cards": {
"type": "array",
"maxItems": 30,
"items": {
"type": "object",
"required": [
"label"
],
"properties": {
"label": {
"type": "string"
},
"detail": {
"type": "string"
},
"accent": {
"type": "string",
"description": "Card fill; use one of designSystem.palette.accentTints."
}
}
}
}
}
}
},
"lanes": {
"type": "array",
"maxItems": 12,
"items": {
"type": "string"
},
"description": "roadmap only: the rows, one per workstream."
},
"periods": {
"type": "array",
"maxItems": 16,
"items": {
"type": "string"
},
"description": "roadmap only: the columns, for example weeks or quarters."
},
"items": {
"type": "array",
"maxItems": 60,
"description": "roadmap only: bars and milestones placed by period index.",
"items": {
"type": "object",
"required": [
"lane",
"label",
"start"
],
"properties": {
"lane": {
"type": "string"
},
"label": {
"type": "string"
},
"start": {
"type": "number",
"description": "Zero-based index into periods."
},
"span": {
"type": "number",
"description": "How many periods the bar covers; default 1."
},
"milestone": {
"type": "boolean",
"description": "Draw a diamond at start instead of a bar."
}
}
}
},
"sections": {
"type": "array",
"maxItems": 24,
"items": {
"type": "object",
"required": [
"heading",
"body"
],
"properties": {
"heading": {
"type": "string"
},
"body": {
"type": "string"
}
}
}
},
"steps": {
"type": "array",
"maxItems": 30,
"items": {
"type": "object",
"required": [
"expression"
],
"properties": {
"expression": {
"type": "string"
},
"explanation": {
"type": "string"
}
}
}
},
"axes": {
"type": "object",
"properties": {
"xMin": {
"type": "number"
},
"xMax": {
"type": "number"
},
"yMin": {
"type": "number"
},
"yMax": {
"type": "number"
},
"xLabel": {
"type": "string"
},
"yLabel": {
"type": "string"
}
}
},
"series": {
"type": "array",
"maxItems": 8,
"items": {
"type": "object",
"required": [
"points"
],
"properties": {
"label": {
"type": "string"
},
"color": {
"type": "string"
},
"points": {
"type": "array",
"maxItems": 400,
"items": {
"type": "object",
"required": [
"x",
"y"
],
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
}
}
}
}
}
}
},
"presentationSteps": {
"type": "array",
"maxItems": 40,
"items": {
"type": "object",
"required": [
"title",
"focusIds"
],
"properties": {
"title": {
"type": "string"
},
"body": {
"type": "string"
},
"focusIds": {
"type": "array",
"items": {
"type": "string"
}
},
"revealIds": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"theme": {
"type": "object",
"properties": {
"background": {
"type": "string"
},
"surface": {
"type": "string"
},
"text": {
"type": "string"
},
"accent": {
"type": "string"
}
}
}
}
}
Similar websites
econsor.de
German digital agency building portals, e-commerce sites and online marketing, combining strategy, design and AI to grow clients' visibility and customer base.
inkframe-eta.vercel.app
Browser-native Elah video editor for 9:16 and 16:9 exports
agentdesk-demo.vercel.app
Meridian Ops
eworker.ca
E-Worker is business infrastructure powered by AI, with focused apps and connected business work.