Canvas Tools
Use this skill when the user asks to view, create, update, or delete content on the theater canvas (nodes).
Loading this skill activates the following tools:
list_canvas_nodes— List all nodes on the canvasget_canvas_node— Get full details of a specific nodeview_node_media— View actual image/video content of a media nodecreate_canvas_node— Create a new nodeupdate_canvas_node— Update an existing nodedelete_canvas_node— Delete a node
Note: Loading this skill grants access to all node types (text, image, video, storyboard). A theater (canvas) must be active in the current conversation for these tools to work.
Node Types
The canvas supports these node types (available types depend on agent configuration):
text
Text nodes for scripts, copy, ads, and other written content. Supports rich text (Markdown).
Fields:
title(string, required) — Node titlecontent(string, Markdown) — Body text. Supports headings (#/##/###), paragraphs, bold (text), italic (text), code blocks, etc. Required when creating; omit when updating if unchanged.tags(array, optional) — Tags for categorization
image
Image nodes for character designs, scenes, posters, and visual content.
Fields:
name(string) — Image namedescription(string) — Image description (scene, character info, etc.)imageUrl(string) — Image URL path (e.g./media/xxx.jpg), supports JPEG/PNG/JPGfitMode(string) — "cover" (fill) or "contain" (fit)
video
Video nodes for animations, short films, and motion content.
Fields:
name(string) — Video namedescription(string) — Video description (scene, duration, etc.)videoUrl(string) — Video URL path (e.g./media/xxx.mp4), supports MP4fitMode(string) — "cover" (fill) or "contain" (fit)
storyboard
Storyboard nodes for shot breakdowns and multi-dimensional table content.
Fields:
shotNumber(string) — Shot number (e.g. "1-1", "2-3")description(string) — Shot descriptionduration(integer) — Duration in secondspivotConfig(JSON) — Multi-dimensional table config with custom field types
Tool: list_canvas_nodes
List all nodes on the canvas, optionally filtered by type.
Parameters:
node_type(string, optional) — Filter by node type (e.g. "text", "image", "video", "storyboard")
Returns a list of node summaries (id, type, position, key fields).
Tool: get_canvas_node
Get full details of a specific node.
Parameters:
node_id(string, required) — ID of the node to retrieve
Returns complete node data including all fields, position, and metadata.
Tool: create_canvas_node
Create a new node on the canvas.
Parameters:
node_type(string, required) — Type of node to createdata(object, required) — Node data matching the type's field schemaposition_x(number, optional) — X position. Auto-calculated if omitted.position_y(number, optional) — Y position. Auto-calculated if omitted.
Example — create a text node:
create_canvas_node(
node_type="text",
data={
"title": "Chapter 1 Outline",
"content": "# Chapter 1\n\nThe story begins...\n\n## Scene 1\n\nThe protagonist appears.",
"tags": ["outline", "chapter1"]
}
)
Example — create an image node:
create_canvas_node(
node_type="image",
data={
"name": "Hero Portrait",
"description": "Main character, age 18, cheerful personality",
"imageUrl": "/media/generated-image.jpg",
"fitMode": "cover"
}
)
Tool: update_canvas_node
Update an existing node's data.
Parameters:
node_id(string, required) — ID of the node to updatedata(object, required) — Fields to update (partial update supported)
Example:
update_canvas_node(
node_id="node-uuid-here",
data={"title": "Updated Title", "tags": ["revised"]}
)
Tool: delete_canvas_node
Delete a node from the canvas.
Parameters:
node_id(string, required) — ID of the node to delete
Tips
- Always use
list_canvas_nodesfirst to see what exists before creating or modifying. - When creating nodes, omit position to let the system auto-place them.
- Only include fields you want to change in
update_canvas_node. - Node types are restricted by agent configuration — you can only create/access allowed types.