Tool tree
gradeNot graded
get_atlas_guideAnswer
Use only when you need help choosing or sequencing Atlas tools for a multi-step task. Returns app-authored workflows and safety rules; it does not inspect the diagram, change the canvas, or contain user-provided instructions. Skip it when one specific tool clearly answers the request.
View tool JSON
{
"name": "get_atlas_guide",
"kind": "answer",
"impl": "imperative",
"description": "Use only when you need help choosing or sequencing Atlas tools for a multi-step task. Returns app-authored workflows and safety rules; it does not inspect the diagram, change the canvas, or contain user-provided instructions. Skip it when one specific tool clearly answers the request.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}list_diagramsAnswer
Use to discover saved diagrams or check current state. This does not change anything. active describes the rendered canvas; active.editor describes the editor source; active.editorIsRendered says whether graph queries reflect that source. kind='library' includes an exact saved id, while kind='editor' means custom/modified source. Do not call open_diagram merely to inspect the current canvas.
View tool JSON
{
"name": "list_diagrams",
"kind": "answer",
"impl": "imperative",
"description": "Use to discover saved diagrams or check current state. This does not change anything. active describes the rendered canvas; active.editor describes the editor source; active.editorIsRendered says whether graph queries reflect that source. kind='library' includes an exact saved id, while kind='editor' means custom/modified source. Do not call open_diagram merely to inspect the current canvas.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"description": "Maximum diagrams in this page (default 8)."
},
"cursor": {
"type": "integer",
"minimum": 0,
"description": "Zero-based cursor returned by the previous page (default 0)."
}
},
"additionalProperties": false
}
}open_diagramAction
Use only to replace the current canvas with a different saved diagram chosen from list_diagrams. This changes editor/canvas state and closes any walkthrough. It refuses to overwrite unrendered editor changes unless explicitly authorized. Do not call when the user means the current canvas; graph query tools already operate on it. Returns both previous and new identities, and reports success only after the exact editor source is rendered (active.editorIsRendered=true).
View tool JSON
{
"name": "open_diagram",
"kind": "act",
"impl": "imperative",
"description": "Use only to replace the current canvas with a different saved diagram chosen from list_diagrams. This changes editor/canvas state and closes any walkthrough. It refuses to overwrite unrendered editor changes unless explicitly authorized. Do not call when the user means the current canvas; graph query tools already operate on it. Returns both previous and new identities, and reports success only after the exact editor source is rendered (active.editorIsRendered=true).",
"inputSchema": {
"type": "object",
"properties": {
"diagramId": {
"type": "string",
"description": "Diagram id from list_diagrams."
},
"discardUnrenderedEditorChanges": {
"type": "boolean",
"description": "Set true only with user authorization to replace editor source that has not been rendered (default false)."
}
},
"required": [
"diagramId"
],
"additionalProperties": false
}
}search_graphAnswer
Use first when a node id is unknown or a human names a component naturally. Searches only the current visible canvas and does not change it. Returns ranked exact node ids and source lines for get_neighborhood, trace_path, create_walkthrough, or apply_patch. Do not use to search saved diagram titles; use list_diagrams for that.
View tool JSON
{
"name": "search_graph",
"kind": "answer",
"impl": "imperative",
"description": "Use first when a node id is unknown or a human names a component naturally. Searches only the current visible canvas and does not change it. Returns ranked exact node ids and source lines for get_neighborhood, trace_path, create_walkthrough, or apply_patch. Do not use to search saved diagram titles; use list_diagrams for that.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free text matched against node labels, ids, and subgroup names."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Maximum results (default 20)."
}
},
"required": [
"query"
],
"additionalProperties": false
}
}get_neighborhoodAnswer
Use for local dependencies, dependents, or blast radius around one node on the current canvas. outgoing means dependencies; incoming means dependents/blast radius. It selects the root node visually but never edits Mermaid source. For a route between two known endpoints use trace_path instead.
View tool JSON
{
"name": "get_neighborhood",
"kind": "answer",
"impl": "imperative",
"description": "Use for local dependencies, dependents, or blast radius around one node on the current canvas. outgoing means dependencies; incoming means dependents/blast radius. It selects the root node visually but never edits Mermaid source. For a route between two known endpoints use trace_path instead.",
"inputSchema": {
"type": "object",
"properties": {
"nodeId": {
"type": "string",
"description": "Node id or label. Get exact ids from search_graph."
},
"direction": {
"type": "string",
"enum": [
"incoming",
"outgoing",
"both"
],
"description": "outgoing = dependencies, incoming = dependents/blast radius. Default both."
},
"depth": {
"type": "integer",
"minimum": 1,
"maximum": 6,
"description": "How many hops to expand (default 1)."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Maximum nodes returned (default 40)."
}
},
"required": [
"nodeId"
],
"additionalProperties": false
}
}trace_pathAnswer
Use only for an end-to-end route between two nodes on the current canvas. Returns shortest routes and every intermediate hop without changing source or selection. Resolve uncertain endpoints with search_graph first. Pass one returned nodes sequence to create_walkthrough; use get_neighborhood instead for one-node impact analysis.
View tool JSON
{
"name": "trace_path",
"kind": "answer",
"impl": "imperative",
"description": "Use only for an end-to-end route between two nodes on the current canvas. Returns shortest routes and every intermediate hop without changing source or selection. Resolve uncertain endpoints with search_graph first. Pass one returned nodes sequence to create_walkthrough; use get_neighborhood instead for one-node impact analysis.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"description": "Starting node id or label."
},
"to": {
"type": "string",
"description": "Destination node id or label."
},
"direction": {
"type": "string",
"enum": [
"outgoing",
"both"
],
"description": "outgoing follows edge direction (default); both ignores direction."
},
"maxPaths": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"description": "How many routes to return (default 3)."
}
},
"required": [
"from",
"to"
],
"additionalProperties": false
}
}create_walkthroughAction
Use after finding an ordered route to show a human-driven Back/Next tour on the current canvas. This changes only walkthrough UI, never Mermaid source. Prefer a node sequence returned by trace_path. Connected steps are required by default; set requireConnected=false only for an intentional conceptual tour with jumps.
View tool JSON
{
"name": "create_walkthrough",
"kind": "act",
"impl": "imperative",
"description": "Use after finding an ordered route to show a human-driven Back/Next tour on the current canvas. This changes only walkthrough UI, never Mermaid source. Prefer a node sequence returned by trace_path. Connected steps are required by default; set requireConnected=false only for an intentional conceptual tour with jumps.",
"inputSchema": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Short title for the tour, e.g. 'Checkout request to payment database'."
},
"steps": {
"type": "array",
"minItems": 1,
"maxItems": 24,
"description": "Ordered steps. Consecutive nodes should be connected for the edge highlight to appear.",
"items": {
"type": "object",
"properties": {
"nodeId": {
"type": "string",
"description": "Exact node id."
},
"caption": {
"type": "string",
"description": "One or two sentences explaining what happens at this node and why the next hop follows."
}
},
"required": [
"nodeId",
"caption"
],
"additionalProperties": false
}
},
"requireConnected": {
"type": "boolean",
"description": "Reject the tour if any consecutive nodes lack a graph edge (default true). Set false only for intentional jumps."
}
},
"required": [
"title",
"steps"
],
"additionalProperties": false
}
}apply_patchAction
Use only when the user asks to modify Mermaid source on the current canvas. Applies exact line/text operations, validates before commit, and re-renders; invalid patches change nothing. This is not needed for explanations, reviews, selection, or walkthroughs. Use sourceLine from graph results and keep patches small. A successful patch can be reverted with undo_last_change.
View tool JSON
{
"name": "apply_patch",
"kind": "act",
"impl": "imperative",
"description": "Use only when the user asks to modify Mermaid source on the current canvas. Applies exact line/text operations, validates before commit, and re-renders; invalid patches change nothing. This is not needed for explanations, reviews, selection, or walkthroughs. Use sourceLine from graph results and keep patches small. A successful patch can be reverted with undo_last_change.",
"inputSchema": {
"type": "object",
"properties": {
"operations": {
"type": "array",
"minItems": 1,
"maxItems": 40,
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"insert_after_line",
"replace_line",
"delete_line",
"replace_text"
]
},
"line": {
"type": "integer",
"minimum": 0,
"description": "Zero-based source line, as returned in a node's sourceLine. Required for line operations."
},
"text": {
"type": "string",
"description": "Replacement or inserted text. Required except for delete_line."
},
"find": {
"type": "string",
"description": "Exact text to replace, for replace_text."
}
},
"required": [
"type"
],
"additionalProperties": false
}
},
"description": {
"type": "string",
"description": "Short human-readable summary of the change, shown in the activity log."
}
},
"required": [
"operations"
],
"additionalProperties": false
}
}undo_last_changeAction
Use only to revert the latest successful apply_patch on the current diagram, typically when the user rejects it or asks to undo it. It never undoes human edits or open_diagram switches, and refuses if the source changed after the patch.
View tool JSON
{
"name": "undo_last_change",
"kind": "act",
"impl": "imperative",
"description": "Use only to revert the latest successful apply_patch on the current diagram, typically when the user rejects it or asks to undo it. It never undoes human edits or open_diagram switches, and refuses if the source changed after the patch.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}analyze_structureAnswer
Use for a whole-current-canvas structural audit: cycles, orphans, entry points, and dead ends. It does not change canvas or source. Do not use for a named component's local dependencies (get_neighborhood) or a route between endpoints (trace_path).
View tool JSON
{
"name": "analyze_structure",
"kind": "answer",
"impl": "imperative",
"description": "Use for a whole-current-canvas structural audit: cycles, orphans, entry points, and dead ends. It does not change canvas or source. Do not use for a named component's local dependencies (get_neighborhood) or a route between endpoints (trace_path).",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Maximum items per category (default 20)."
}
},
"additionalProperties": false
}
}