Tool tree
gradeNot graded
reviewAction
Review a canvas region and schedule a follow-up turn when more work may be needed.
View tool JSON
{
"name": "review",
"kind": "act",
"impl": "imperative",
"description": "Review a canvas region and schedule a follow-up turn when more work may be needed.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}createAction
Create one new canvas shape from the app's existing simple-shape format.
View tool JSON
{
"name": "create",
"kind": "act",
"impl": "imperative",
"description": "Create one new canvas shape from the app's existing simple-shape format.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}createHtmlPreviewAction
Create a visible interactive HTML preview shape in the current canvas view.
View tool JSON
{
"name": "createHtmlPreview",
"kind": "act",
"impl": "imperative",
"description": "Create a visible interactive HTML preview shape in the current canvas view.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}deleteSensitive Action
Delete one existing canvas shape by its simple shape ID. WebMCP requires confirm: true after user approval.
View tool JSON
{
"name": "delete",
"kind": "transact",
"impl": "imperative",
"description": "Delete one existing canvas shape by its simple shape ID. WebMCP requires confirm: true after user approval.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}updateAction
Update the properties of one existing canvas shape.
View tool JSON
{
"name": "update",
"kind": "act",
"impl": "imperative",
"description": "Update the properties of one existing canvas shape.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}labelAction
Replace the visible text on one existing canvas shape.
View tool JSON
{
"name": "label",
"kind": "act",
"impl": "imperative",
"description": "Replace the visible text on one existing canvas shape.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}moveAction
Move one existing shape so its page bounds begin at the requested coordinates.
View tool JSON
{
"name": "move",
"kind": "act",
"impl": "imperative",
"description": "Move one existing shape so its page bounds begin at the requested coordinates.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}placeAction
Place one shape on a chosen side of another shape with alignment and offsets.
View tool JSON
{
"name": "place",
"kind": "act",
"impl": "imperative",
"description": "Place one shape on a chosen side of another shape with alignment and offsets.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}bringToFrontAction
Bring one or more existing shapes in front of the other canvas content.
View tool JSON
{
"name": "bringToFront",
"kind": "act",
"impl": "imperative",
"description": "Bring one or more existing shapes in front of the other canvas content.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}sendToBackSensitive Action
Send one or more existing shapes behind the other canvas content.
View tool JSON
{
"name": "sendToBack",
"kind": "transact",
"impl": "imperative",
"description": "Send one or more existing shapes behind the other canvas content.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}rotateAction
Rotate one or more existing shapes around a supplied canvas origin.
View tool JSON
{
"name": "rotate",
"kind": "act",
"impl": "imperative",
"description": "Rotate one or more existing shapes around a supplied canvas origin.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}resizeAction
Scale one or more existing shapes around a supplied canvas origin.
View tool JSON
{
"name": "resize",
"kind": "act",
"impl": "imperative",
"description": "Scale one or more existing shapes around a supplied canvas origin.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}alignAction
Align existing shapes to one shared edge or center axis.
View tool JSON
{
"name": "align",
"kind": "act",
"impl": "imperative",
"description": "Align existing shapes to one shared edge or center axis.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}distributeAction
Distribute existing shapes evenly on the horizontal or vertical axis.
View tool JSON
{
"name": "distribute",
"kind": "act",
"impl": "imperative",
"description": "Distribute existing shapes evenly on the horizontal or vertical axis.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}stackAction
Pack existing shapes along the horizontal or vertical axis with a requested gap, without aligning them.
View tool JSON
{
"name": "stack",
"kind": "act",
"impl": "imperative",
"description": "Pack existing shapes along the horizontal or vertical axis with a requested gap, without aligning them.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}clearAction
Delete all shapes on the current page, leaving other pages unchanged. WebMCP requires confirm: true after user approval.
View tool JSON
{
"name": "clear",
"kind": "act",
"impl": "imperative",
"description": "Delete all shapes on the current page, leaving other pages unchanged. WebMCP requires confirm: true after user approval.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}penAction
Draw a visible freehand or straight-point path, optionally closed and filled.
View tool JSON
{
"name": "pen",
"kind": "act",
"impl": "imperative",
"description": "Draw a visible freehand or straight-point path, optionally closed and filled.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}getInspirationAnswer
Fetch a random Wikipedia article and schedule it as inspiration for a follow-up turn.
View tool JSON
{
"name": "getInspiration",
"kind": "answer",
"impl": "imperative",
"description": "Fetch a random Wikipedia article and schedule it as inspiration for a follow-up turn.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}countAnswer
Count the current page shapes and schedule the answer for a follow-up turn.
View tool JSON
{
"name": "count",
"kind": "answer",
"impl": "imperative",
"description": "Count the current page shapes and schedule the answer for a follow-up turn.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}search_commons_imagesAnswer
Search Wikimedia Commons for up to six verified CC0 or public-domain images before choosing one to add.
View tool JSON
{
"name": "search_commons_images",
"kind": "answer",
"impl": "imperative",
"description": "Search Wikimedia Commons for up to six verified CC0 or public-domain images before choosing one to add.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}add_commons_imageAction
Re-verify and add one Commons image at exact canvas coordinates with a grouped visible credit.
View tool JSON
{
"name": "add_commons_image",
"kind": "act",
"impl": "imperative",
"description": "Re-verify and add one Commons image at exact canvas coordinates with a grouped visible credit.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}create_mermaid_diagramAction
Render Mermaid source in the top preview panel so the user can inspect or edit it and choose whether to add it to the canvas. Follow the new-drawing page workflow first.
View tool JSON
{
"name": "create_mermaid_diagram",
"kind": "act",
"impl": "imperative",
"description": "Render Mermaid source in the top preview panel so the user can inspect or edit it and choose whether to add it to the canvas. Follow the new-drawing page workflow first.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}create_pageAction
Create and switch to a new automatically named canvas page. Before starting a new drawing, call inspect_pages. If the current page contains objects, call create_page and draw on the new page. If it is empty, reuse the current page.
View tool JSON
{
"name": "create_page",
"kind": "act",
"impl": "imperative",
"description": "Create and switch to a new automatically named canvas page. Before starting a new drawing, call inspect_pages. If the current page contains objects, call create_page and draw on the new page. If it is empty, reuse the current page.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}inspect_pagesAction
List current and all canvas pages with object counts, or inspect object IDs and types for one 1-based page number. Before starting a new drawing, call inspect_pages. If the current page contains objects, call create_page and draw on the new page. If it is empty, reuse the current page.
View tool JSON
{
"name": "inspect_pages",
"kind": "act",
"impl": "imperative",
"description": "List current and all canvas pages with object counts, or inspect object IDs and types for one 1-based page number. Before starting a new drawing, call inspect_pages. If the current page contains objects, call create_page and draw on the new page. If it is empty, reuse the current page.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}inspect_embedsAnswer
Return source URLs of tldraw embed shapes on a canvas page (YouTube, Figma, and other Insert-embed providers) so the agent can research the inserted content into canvas.
View tool JSON
{
"name": "inspect_embeds",
"kind": "answer",
"impl": "imperative",
"description": "Return source URLs of tldraw embed shapes on a canvas page (YouTube, Figma, and other Insert-embed providers) so the agent can research the inserted content into canvas.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}zoom_outAction
Zoom the current page camera so more of the canvas is visible. With no arguments, fit all shapes in the viewport. With steps, zoom out that many navigation-panel increments.
View tool JSON
{
"name": "zoom_out",
"kind": "act",
"impl": "imperative",
"description": "Zoom the current page camera so more of the canvas is visible. With no arguments, fit all shapes in the viewport. With steps, zoom out that many navigation-panel increments.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}arrange_gridAction
Normalize rotation and size for selected top-level shapes, arrange them in a row-major grid, and optionally fit the camera. Automatically adapts to aspect locks and provider minimum sizes.
View tool JSON
{
"name": "arrange_grid",
"kind": "act",
"impl": "imperative",
"description": "Normalize rotation and size for selected top-level shapes, arrange them in a row-major grid, and optionally fit the camera. Automatically adapts to aspect locks and provider minimum sizes.",
"inputSchema": {
"type": "object",
"description": "Full args: describe_tools({names}).",
"additionalProperties": true,
"properties": {}
}
}list_toolsAnswer
List every registered draw-app tool with a one-line summary and the required new-drawing page workflow; call this first to choose tools.
View tool JSON
{
"name": "list_tools",
"kind": "answer",
"impl": "imperative",
"description": "List every registered draw-app tool with a one-line summary and the required new-drawing page workflow; call this first to choose tools.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {}
}
}describe_toolsAnswer
Return full argument schemas for 1–10 unique tools before calling those compactly registered tools.
View tool JSON
{
"name": "describe_tools",
"kind": "answer",
"impl": "imperative",
"description": "Return full argument schemas for 1–10 unique tools before calling those compactly registered tools.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"names"
],
"properties": {
"names": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"uniqueItems": true,
"description": "Unique registered tool names to describe, returned in this order.",
"items": {
"type": "string",
"enum": [
"review",
"create",
"createHtmlPreview",
"delete",
"update",
"label",
"move",
"place",
"bringToFront",
"sendToBack",
"rotate",
"resize",
"align",
"distribute",
"stack",
"clear",
"pen",
"getInspiration",
"count",
"search_commons_images",
"add_commons_image",
"create_mermaid_diagram",
"create_page",
"inspect_pages",
"inspect_embeds",
"zoom_out",
"arrange_grid",
"list_tools",
"describe_tools"
]
}
}
}
}
}