Skip to main content
Glama
CanvasKeep

canvaskeep-mcp

Official

generate_diagram

Create a visual diagram from nodes and edges and save it into an existing CanvasKeep diagram; automatic layout handles positioning.

Instructions

Generate a visual diagram from a structured graph of nodes and edges, and save it to an existing CanvasKeep diagram.

You provide the logical structure (what components exist and how they connect), and CanvasKeep handles all visual layout automatically - do NOT try to compute x/y positions.

NODES: Create one node for every distinct component, actor, system, service, or data store mentioned in the user's request. Give each a short, clear label (under 30 chars). Choose the right type for visual distinction.

EDGES: Create one edge for every meaningful interaction, data flow, API call, or dependency between nodes. Label edges with the nature of the interaction (e.g. 'REST API', 'SQL query', 'WebSocket', 'publishes'). Every important relationship should be an edge.

MODE: Use 'replace' (default) to create a fresh diagram. Use 'append' to add new elements alongside existing content in the diagram.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNo'replace' clears existing content and draws only the new graph. 'append' adds the new graph alongside any existing diagram content.replace
edgesYesConnections between nodes representing interactions, data flows, API calls, or dependencies. Each becomes a labeled arrow.
nodesYesEvery distinct component, actor, system, or data store to show on the diagram. Each becomes a labeled box.
directionNoLayout direction. 'vertical' (default): top-to-bottom flow, best for sequential processes. 'horizontal': left-to-right. 'auto': picks based on max fan-out from any single node.vertical
diagram_idYesThe diagram UUID to write the generated content into. Create one first with create_diagram if needed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.1

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that layout is automatic (do NOT compute x/y), that 'replace' clears existing content while 'append' preserves it (a destructive-behavior disclosure), and that the target must already exist. It stops short of describing failure modes or what the call returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then cleanly sectioned into NODES / EDGES / MODE blocks that map to the parameters. It is somewhat long, and lines like 'Every important relationship should be an edge' echo the preceding sentence, but no section is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description supplies the crucial missing behavioral context (auto-layout, destructive replace semantics, prerequisite that the diagram exists). It does not say what happens on invalid node/edge references or what the agent gets back on success.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so baseline would be 3, but the description adds genuine semantic guidance beyond the schema: how many nodes/edges to create and on what basis (one per distinct component, one per data flow/API call/dependency), plus edge-labeling intent. It largely restates the mode and diagram_id meaning already given in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb (generate) and resource (visual diagram) and states the source (structured graph of nodes/edges) and destination (existing CanvasKeep diagram). It clearly distinguishes itself from create_diagram by requiring an existing diagram_id and pointing to create_diagram for setup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete usage instructions: supply logical structure only, let CanvasKeep handle layout, one node per component, one edge per meaningful interaction, and explains replace vs append. It references create_diagram as a prerequisite for obtaining the diagram_id, but never states when NOT to use this tool versus siblings like save_diagram_scene or update_diagram.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.