Tool tree
gradeNot graded
createDiagramAction
Replace the canvas with a clean diagram. Every node is rendered as a native Excalidraw circle; use labels and semantic colors to distinguish roles. For a flow, connect each earlier step to the next step (from → to), so the canvas orders it correctly. For a concept map, connect related concepts and label each arrow with the relationship, such as 'causes', 'uses', 'depends on', or 'is part of'. When a concept benefits from a visual, call searchImages first and put the selected HTTPS result in that node's image.src with a concise alt or caption. Connectors are automatically given spaced anchor slots and routed with right-angle waypoints so they do not touch node frames. Use fromPosition and toPosition when a connector must leave or land on a specific node side.
View tool JSON
{
"name": "createDiagram",
"kind": "act",
"impl": "imperative",
"description": "Replace the canvas with a clean diagram. Every node is rendered as a native Excalidraw circle; use labels and semantic colors to distinguish roles. For a flow, connect each earlier step to the next step (from → to), so the canvas orders it correctly. For a concept map, connect related concepts and label each arrow with the relationship, such as 'causes', 'uses', 'depends on', or 'is part of'. When a concept benefits from a visual, call searchImages first and put the selected HTTPS result in that node's image.src with a concise alt or caption. Connectors are automatically given spaced anchor slots and routed with right-angle waypoints so they do not touch node frames. Use fromPosition and toPosition when a connector must leave or land on a specific node side.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"nodes",
"connections"
],
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"nodes": {
"type": "array",
"maxItems": 24,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"shape",
"label"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9_-]+$",
"maxLength": 48
},
"shape": {
"type": "string",
"enum": [
"rectangle",
"circle",
"diamond"
]
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"color": {
"type": "string",
"maxLength": 32,
"description": "Optional semantic color (e.g. blue, green, amber, orange, purple, red, gray)"
},
"image": {
"type": "object",
"additionalProperties": false,
"required": [
"src"
],
"description": "Optional supporting image rendered next to this circular node. Use a public HTTPS image URL or data:image URL only when it adds teaching value.",
"properties": {
"src": {
"type": "string",
"minLength": 1,
"maxLength": 2000000,
"description": "Public HTTPS image URL or data:image/* URL. Do not use arbitrary local paths."
},
"alt": {
"type": "string",
"minLength": 1,
"maxLength": 140,
"description": "Short accessibility description for the image."
},
"caption": {
"type": "string",
"minLength": 1,
"maxLength": 140,
"description": "Optional teaching caption shown below the image."
}
}
}
}
}
},
"connections": {
"type": "array",
"maxItems": 40,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"from",
"to"
],
"properties": {
"from": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z0-9_-]+$"
},
"to": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z0-9_-]+$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"description": "Optional relationship label, such as 'causes', 'depends on', 'then', or 'is part of'."
},
"fromPosition": {
"type": "string",
"enum": [
"auto",
"top",
"right",
"bottom",
"left"
],
"description": "Where the connector leaves the source: auto, top, right, bottom, or left."
},
"toPosition": {
"type": "string",
"enum": [
"auto",
"top",
"right",
"bottom",
"left"
],
"description": "Where the connector lands on the target: auto, top, right, bottom, or left."
}
}
}
}
}
}
}updateDiagramAction
Replace the current structured diagram with a complete revised diagram. Preserve node IDs when updating existing concepts. Every node renders as a native Excalidraw circle, while labels and semantic colors communicate meaning. Keep flow arrows directed from the earlier step to the later step, add labels to show meaningful concept relationships, and specify connector sides when the visual landing point matters. Use searchImages before adding a supporting visual and attach the selected HTTPS result through node.image. Connectors use spaced anchor slots and clean right-angle routes with whitespace around circles.
View tool JSON
{
"name": "updateDiagram",
"kind": "act",
"impl": "imperative",
"description": "Replace the current structured diagram with a complete revised diagram. Preserve node IDs when updating existing concepts. Every node renders as a native Excalidraw circle, while labels and semantic colors communicate meaning. Keep flow arrows directed from the earlier step to the later step, add labels to show meaningful concept relationships, and specify connector sides when the visual landing point matters. Use searchImages before adding a supporting visual and attach the selected HTTPS result through node.image. Connectors use spaced anchor slots and clean right-angle routes with whitespace around circles.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"nodes",
"connections"
],
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"nodes": {
"type": "array",
"maxItems": 24,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"shape",
"label"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9_-]+$",
"maxLength": 48
},
"shape": {
"type": "string",
"enum": [
"rectangle",
"circle",
"diamond"
]
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"color": {
"type": "string",
"maxLength": 32,
"description": "Optional semantic color (e.g. blue, green, amber, orange, purple, red, gray)"
},
"image": {
"type": "object",
"additionalProperties": false,
"required": [
"src"
],
"description": "Optional supporting image rendered next to this circular node. Use a public HTTPS image URL or data:image URL only when it adds teaching value.",
"properties": {
"src": {
"type": "string",
"minLength": 1,
"maxLength": 2000000,
"description": "Public HTTPS image URL or data:image/* URL. Do not use arbitrary local paths."
},
"alt": {
"type": "string",
"minLength": 1,
"maxLength": 140,
"description": "Short accessibility description for the image."
},
"caption": {
"type": "string",
"minLength": 1,
"maxLength": 140,
"description": "Optional teaching caption shown below the image."
}
}
}
}
}
},
"connections": {
"type": "array",
"maxItems": 40,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"from",
"to"
],
"properties": {
"from": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z0-9_-]+$"
},
"to": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z0-9_-]+$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"description": "Optional relationship label, such as 'causes', 'depends on', 'then', or 'is part of'."
},
"fromPosition": {
"type": "string",
"enum": [
"auto",
"top",
"right",
"bottom",
"left"
],
"description": "Where the connector leaves the source: auto, top, right, bottom, or left."
},
"toPosition": {
"type": "string",
"enum": [
"auto",
"top",
"right",
"bottom",
"left"
],
"description": "Where the connector lands on the target: auto, top, right, bottom, or left."
}
}
}
}
}
}
}addNodeAction
Add one labeled node to the current diagram. The renderer uses a native Excalidraw circle for every node; use the label and color to communicate whether it is a process, entity, decision, or outcome.
View tool JSON
{
"name": "addNode",
"kind": "act",
"impl": "imperative",
"description": "Add one labeled node to the current diagram. The renderer uses a native Excalidraw circle for every node; use the label and color to communicate whether it is a process, entity, decision, or outcome.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"shape",
"label"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"pattern": "^[a-zA-Z0-9_-]+$",
"maxLength": 48
},
"shape": {
"type": "string",
"enum": [
"rectangle",
"circle",
"diamond"
]
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"color": {
"type": "string",
"maxLength": 32,
"description": "Optional semantic color for the circle."
},
"image": {
"type": "object",
"additionalProperties": false,
"required": [
"src"
],
"properties": {
"src": {
"type": "string",
"minLength": 1,
"maxLength": 2000000,
"description": "Public HTTPS image URL or data:image/* URL."
},
"alt": {
"type": "string",
"minLength": 1,
"maxLength": 140,
"description": "Short accessibility description."
},
"caption": {
"type": "string",
"minLength": 1,
"maxLength": 140,
"description": "Optional teaching caption shown below the image."
}
}
}
}
}
}searchImagesAnswer
Search Wikimedia Commons for a relevant, reusable teaching visual. Call this before createDiagram, updateDiagram, or addNode when an image would make the explanation easier to understand. Use a concise subject query, then attach one returned HTTPS url to node.image.src. If no result is useful, continue without an image.
View tool JSON
{
"name": "searchImages",
"kind": "answer",
"impl": "imperative",
"description": "Search Wikimedia Commons for a relevant, reusable teaching visual. Call this before createDiagram, updateDiagram, or addNode when an image would make the explanation easier to understand. Use a concise subject query, then attach one returned HTTPS url to node.image.src. If no result is useful, continue without an image.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Concise subject query, for example 'neural network diagram' or 'water cycle illustration'."
}
}
}
}connectNodesAction
Add a directed arrow between two existing diagram nodes. Use from → to for sequence or dependency direction: 'from' happens first or influences 'to'. Add a concise label to explain the relationship when useful. Connectors are routed with clean right-angle waypoints and spaced anchor slots so they stay away from circle frames. Choose fromPosition and toPosition (top, right, bottom, or left) for exact connector landing sides; omit them for automatic routing.
View tool JSON
{
"name": "connectNodes",
"kind": "act",
"impl": "imperative",
"description": "Add a directed arrow between two existing diagram nodes. Use from → to for sequence or dependency direction: 'from' happens first or influences 'to'. Add a concise label to explain the relationship when useful. Connectors are routed with clean right-angle waypoints and spaced anchor slots so they stay away from circle frames. Choose fromPosition and toPosition (top, right, bottom, or left) for exact connector landing sides; omit them for automatic routing.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"from",
"to"
],
"properties": {
"from": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z0-9_-]+$"
},
"to": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"pattern": "^[a-zA-Z0-9_-]+$"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 48,
"description": "Relationship label, for example 'then', 'causes', 'uses', or 'depends on'."
},
"fromPosition": {
"type": "string",
"enum": [
"auto",
"top",
"right",
"bottom",
"left"
],
"description": "Side where the arrow leaves the source node."
},
"toPosition": {
"type": "string",
"enum": [
"auto",
"top",
"right",
"bottom",
"left"
],
"description": "Side where the arrow lands on the target node."
}
}
}
}clearCanvasAction
Remove all generated concepts and connections from the canvas.
View tool JSON
{
"name": "clearCanvas",
"kind": "act",
"impl": "imperative",
"description": "Remove all generated concepts and connections from the canvas.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {}
}
}exportDiagramAction
Download the current Excalidraw scene as a PNG or SVG file.
View tool JSON
{
"name": "exportDiagram",
"kind": "act",
"impl": "imperative",
"description": "Download the current Excalidraw scene as a PNG or SVG file.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"format"
],
"properties": {
"format": {
"type": "string",
"enum": [
"png",
"svg"
]
}
}
}
}listDiagramsAnswer
List the user's most recently saved visual diagrams.
View tool JSON
{
"name": "listDiagrams",
"kind": "answer",
"impl": "imperative",
"description": "List the user's most recently saved visual diagrams.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"properties": {}
}
}