← WebMCP Directory

bertus37987.github.io

bertus37987.github.io

live Unverified (seed import) Productivity & Business 8 tools imperative implementation

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

apply_whiteboard_changes

act imperative

Create or edit movable canvas objects during the currently claimed human turn: rich text, notes, callouts, agent-only tables, artboards, highlights, filled shapes, flowchart shapes, routed connectors, icons, smoothed free-hand paths, temporary red agent comments, groups, auto layout, explanation steps and guided-explanation navigation. Requires that turn leaseToken. The whole batch is validated first: an id collision or a missing target applies nothing. The answer returns lintIssues for what you just drew: fix overflowing text, overlaps, unlabelled controls and low contrast in the same turn. Changes stay a proposal until the human accepts them.

Page: /smooth-whiteboard-webmcp/

Input schema

PropertyTypeRequiredDescription
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.
operations array yes —
Raw JSON schema
{
  "type": "object",
  "required": [
    "operations",
    "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."
    },
    "operations": {
      "type": "array",
      "minItems": 1,
      "maxItems": 160,
      "items": {
        "type": "object",
        "required": [
          "type"
        ],
        "description": "One canvas operation. Creation operations need x/y (plus width/height or points); mutation operations need the id or ids of objects that already exist on the board. To draw something real, send create_path with SVG path data in \"d\" plus the x/y/width/height box to fit it into — curves and arcs are supported and the result is ordinary editable geometry. Draw a symbol you need more than once with define_symbol { name, d } and then stamp it with create_icon { name }, rather than repeating the same path. Use create_icon for a stock symbol, create_annotation for a brace, speech bubble, arc or measured span, create_callout for a labelled box, auto_layout and fit_to_content instead of hand-computed coordinates, and present_step to move the human through a guided explanation. Nothing may straddle existing work, and nothing in one batch may straddle anything else in it: ask inspect_whiteboard with \"needed\" for a free origin before placing a block, and when something is in the way either place elsewhere or move it aside with translate in this same call — never draw a second copy of it.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "create_text",
              "create_note",
              "create_table",
              "create_frame",
              "create_highlight",
              "highlight_text",
              "create_shape",
              "create_arrow",
              "create_stroke",
              "create_polygon",
              "create_path",
              "create_annotation",
              "create_callout",
              "create_icon",
              "define_symbol",
              "create_agent_marker",
              "translate",
              "resize",
              "update_text",
              "update_points",
              "update_style",
              "set_locked",
              "reorder",
              "connect",
              "align",
              "distribute",
              "auto_layout",
              "fit_to_content",
              "duplicate",
              "group",
              "ungroup",
              "set_parent",
              "update_artboard",
              "set_explanation_sequence",
              "present_step",
              "delete"
            ]
          },
          "id": {
            "type": "string",
            "description": "Target id for update_text/update_points/resize/update_artboard, otherwise the id of the object to create."
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Existing element or group ids to mutate."
          },
          "groupId": {
            "type": "string"
          },
          "parentId": {
            "type": "string"
          },
          "anchorId": {
            "type": "string",
            "description": "create_callout: the element the callout points at with a leader line."
          },
          "name": {
            "type": "string",
            "description": "create_icon: which symbol to stamp. Built in are check, close, plus, minus, menu, search, user, heart, arrow, star, bulb, question, warning, clock, server, database, cloud, browser, mobile, lock, key, file, folder, gear, mail, link, chart, shield, globe, terminal; anything you defined yourself is listed as \"symbols\" by inspect_whiteboard. define_symbol: the name to save your drawing under."
          },
          "semanticRole": {
            "type": "string"
          },
          "locked": {
            "type": "boolean"
          },
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          },
          "dx": {
            "type": "number"
          },
          "dy": {
            "type": "number"
          },
          "text": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "fontSize": {
            "type": "number"
          },
          "fontFamily": {
            "type": "string",
            "enum": [
              "sans",
              "serif",
              "mono",
              "handwriting"
            ]
          },
          "fontWeight": {
            "type": "number",
            "enum": [
              400,
              500,
              600,
              700
            ]
          },
          "fontStyle": {
            "type": "string",
            "enum": [
              "normal",
              "italic"
            ]
          },
          "textDecoration": {
            "type": "string",
            "enum": [
              "none",
              "underline",
              "line-through"
            ]
          },
          "textAlign": {
            "type": "string",
            "enum": [
              "left",
              "center",
              "right"
            ]
          },
          "blockStyle": {
            "type": "string",
            "enum": [
              "body",
              "heading-1",
              "heading-2",
              "heading-3",
              "bullet",
              "numbered",
              "check",
              "quote",
              "code",
              "math"
            ]
          },
          "rows": {
            "type": "number"
          },
          "columns": {
            "type": "number",
            "description": "create_table column count, or the grid width for auto_layout."
          },
          "headers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "cells": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "kind": {
            "type": "string",
            "enum": [
              "rectangle",
              "ellipse",
              "diamond",
              "triangle",
              "brace",
              "bubble",
              "arc",
              "dimension"
            ],
            "description": "create_shape takes rectangle, ellipse, diamond or triangle; diamond and triangle become editable polygons. create_annotation takes brace (a curly brace calling out a span), bubble (a speech bubble with a tail), arc (a bow over a span) or dimension (a measured line with end ticks); each fills its x/y/width/height box, points the way \"direction\" says, and labels itself with \"text\"."
          },
          "filled": {
            "type": "boolean"
          },
          "closed": {
            "type": "boolean"
          },
          "size": {
            "type": "number"
          },
          "color": {
            "type": "string",
            "description": "Hex colour. Ink by default; use designSystem.palette.accents when the colour distinguishes branches, categories, series or a status."
          },
          "backgroundColor": {
            "type": "string"
          },
          "strokeWidth": {
            "type": "number"
          },
          "fillColor": {
            "type": "string"
          },
          "fillOpacity": {
            "type": "number"
          },
          "radius": {
            "type": "number"
          },
          "opacity": {
            "type": "number"
          },
          "padding": {
            "type": "number"
          },
          "highlightColor": {
            "type": "string"
          },
          "renderStyle": {
            "type": "string",
            "enum": [
              "clean",
              "sketch"
            ],
            "description": "Overrides the automatic choice, which follows the human's Appearance setting (settings.cleanStyle) and is always clean on artboards. Set it only when one element should deliberately differ from the rest of the board."
          },
          "artboardPreset": {
            "type": "string",
            "enum": [
              "desktop",
              "tablet",
              "mobile",
              "custom"
            ]
          },
          "preset": {
            "type": "string",
            "enum": [
              "desktop",
              "tablet",
              "mobile",
              "custom"
            ]
          },
          "clipContent": {
            "type": "boolean"
          },
          "lineStyle": {
            "type": "string",
            "enum": [
              "solid",
              "dashed",
              "dotted"
            ]
          },
          "arrowHeads": {
            "type": "string",
            "enum": [
              "end",
              "start",
              "both"
            ]
          },
          "direction": {
            "type": "string",
            "enum": [
              "front",
              "back",
              "row",
              "column",
              "grid",
              "left",
              "right",
              "up",
              "down"
            ],
            "description": "reorder takes front/back; auto_layout takes row/column/grid; create_annotation takes left/right/up/down for the side the brace tip, bubble tail or arc points to."
          },
          "route": {
            "type": "string",
            "enum": [
              "straight",
              "orthogonal",
              "curved"
            ],
            "description": "Connector path for connect and update_style. Use orthogonal for flowcharts and curved for mindmaps so edges do not cross their own nodes."
          },
          "d": {
            "type": "string",
            "description": "SVG path data (M L H V C S Q T A Z, absolute or relative). create_path scales it into the x/y/width/height box and keeps its aspect ratio, centring what is left over — so a square drawing in a wide box becomes a centred square, not a stretched one. Author the path in the proportions you want it to end up in. This is the way to draw something that is not a rectangle. define_symbol saves it as a reusable symbol, scaled to a unit box. create_icon can take it directly for a one-off symbol that needs no name."
          },
          "smooth": {
            "type": "boolean",
            "description": "create_path: smooth the points into a drawn-looking curve (default true). Ignored when d is given."
          },
          "bow": {
            "type": "number",
            "description": "create_path with exactly two points: bend the line into an arc or brace by this many world units."
          },
          "mode": {
            "type": "string",
            "enum": [
              "container",
              "text"
            ],
            "description": "fit_to_content: resize the container around its text, or re-measure the text itself."
          },
          "align": {
            "type": "string",
            "enum": [
              "start",
              "center",
              "end"
            ],
            "description": "auto_layout: cross-axis alignment inside a row."
          },
          "sequenceId": {
            "type": "string",
            "description": "present_step: which explanation sequence to show; defaults to the first one."
          },
          "index": {
            "type": "number",
            "description": "present_step: zero-based step to put on the human screen."
          },
          "fromId": {
            "type": "string"
          },
          "toId": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "alignment": {
            "type": "string",
            "enum": [
              "left",
              "center-x",
              "right",
              "top",
              "center-y",
              "bottom"
            ]
          },
          "axis": {
            "type": "string",
            "enum": [
              "horizontal",
              "vertical"
            ]
          },
          "gap": {
            "type": "number"
          },
          "from": {
            "type": "object",
            "required": [
              "x",
              "y"
            ],
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              }
            }
          },
          "to": {
            "type": "object",
            "required": [
              "x",
              "y"
            ],
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              }
            }
          },
          "points": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "x",
                "y"
              ],
              "properties": {
                "x": {
                  "type": "number"
                },
                "y": {
                  "type": "number"
                },
                "pressure": {
                  "type": "number"
                },
                "time": {
                  "type": "number"
                }
              }
            }
          },
          "sequence": {
            "type": "object",
            "required": [
              "id",
              "title",
              "steps"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "steps": {
                "type": "array",
                "maxItems": 60,
                "items": {
                  "type": "object",
                  "required": [
                    "id",
                    "title",
                    "focusElementIds",
                    "revealElementIds"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "body": {
                      "type": "string"
                    },
                    "focusElementIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "revealElementIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

Similar websites

econsor.de

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.

live Unverified Productivity & Business Transact tools
143 tools A0 / Act142 / T1 Not yet scored Seen 2026-11-05
econsor_click_search econsor_click_image econsor_click_menu econsor_click_burger_menu_icon econsor_click_previous_button
Inspect tools
inkframe-eta.vercel.app

inkframe-eta.vercel.app

Browser-native Elah video editor for 9:16 and 16:9 exports

live Unverified Productivity & Business Transact tools
87 tools A12 / Act71 / T4 Not yet scored Seen 2026-11-05
get_capabilities list_templates navigate_workspace open_template editor_inspect_video_moments
Inspect tools
agentdesk-demo.vercel.app

agentdesk-demo.vercel.app

Meridian Ops

live Unverified Productivity & Business Transact tools
83 tools A43 / Act24 / T16 Not yet scored Seen 2026-11-05
find_capabilities invoke_capability get_context get_action_status search_customers
Inspect tools
eworker.ca

eworker.ca

E-Worker is business infrastructure powered by AI, with focused apps and connected business work.

live Unverified Productivity & Business
73 tools A10 / Act63 / T0 Not yet scored Seen 2026-11-05
eworker_site_status eworker_list_apps eworker_resolve_app eworker_open_app ewdoc_status
Inspect tools

Related on Influzer