Zero-dependency Flowith canvas control via WebSocket and HTTP. Native CLI for canvas bot operations without npm packages.
Canvas Cowork Bot has 21 tools with basic schemas and descriptions, but significant quality gaps. All tools have descriptions (10-100 chars, mostly 40-80), and input schemas are present with type definitions. However, descriptions are often generic and lack actionable context for LLM selection. Parameter descriptions are minimal (e.g., 'Canvas/conversation ID' without format hints). No output schemas documented. Error handling is absent, no recovery guidance, no categorization of retryable vs fatal errors. Tool naming is mostly verb-noun compliant (create_canvas, delete_node), but some names are ambiguous (recall, clean_failed). No enum constraints on mode/chatMode parameters despite known valid values. No pagination guidance for list_canvases or search_canvases. Destructive tools (delete_node, delete_nodes, clean_failed) lack confirmation patterns or dry-run support.
Clean/remove failed nodes from a canvas
Add a comment to a specific node
Create a new canvas with optional title
Delete a single node from the canvas
Delete multiple nodes from the canvas
Get the currently active canvas, optionally including title
List all available canvases
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, forcing them to guess at downstream field names and risk broken tool chains.
Destructive tools (delete_node, delete_nodes, clean_failed) lack confirmation or dry-run patterns. Agents can irreversibly delete data without safeguards.
No error handling guidance. Tools do not document what errors are retryable, user-fixable, or fatal. LLMs cannot recover from failures intelligently.
Parameter descriptions lack format constraints and valid value enums. 'mode' accepts text|image|video|agent|neo but is documented as free-form string. LLMs will hallucinate invalid modes.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
List available AI models, optionally filtered by chat mode
Send a ping action to verify session connectivity
Poll for newly generated nodes created after a timestamp
Read all nodes from the current canvas
Read a single node by ID
Read canvas nodes with optional filtering and full content retrieval
Recall/search canvas history with optional limit and filters
Recall a specific node by ID from a canvas
Register a new bot session with expiration and secret
Search canvases by query string
Set the canvas mode (text, image, video, agent, neo)
Set the AI model for the canvas
Submit a prompt/value to the canvas with optional files and generation parameters
Switch to a different canvas by conversation ID
Ambiguous tool names: 'recall' and 'recall_node' are too similar; 'clean_failed' is vague (does it delete or repair?). LLMs conflate similar names and pick wrong tools.