{"ok":true,"site":{"host":"mermaid-atlas.vercel.app","url":"https://mermaid-atlas.vercel.app/","type":"live","desc":"A local workbench for navigating very large Mermaid diagrams.","tools":[{"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.","title":"Get the Atlas agent guide","annotations":{"openWorldHint":false,"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Whether the tool completed successfully."},"summary":{"type":"string","description":"Concise human-readable outcome."},"data":{"type":"object","description":"Machine-readable result payload."},"error":{"type":"object","properties":{"message":{"type":"string"},"details":{"type":"object"}},"required":["message"],"additionalProperties":false}},"required":["ok","summary","data"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"List saved diagrams and canvas state","annotations":{"openWorldHint":false,"readOnlyHint":true,"untrustedContentHint":true},"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},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Whether the tool completed successfully."},"summary":{"type":"string","description":"Concise human-readable outcome."},"data":{"type":"object","description":"Machine-readable result payload."},"error":{"type":"object","properties":{"message":{"type":"string"},"details":{"type":"object"}},"required":["message"],"additionalProperties":false}},"required":["ok","summary","data"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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).","title":"Switch to a saved diagram","annotations":{"openWorldHint":false,"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"untrustedContentHint":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},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Whether the tool completed successfully."},"summary":{"type":"string","description":"Concise human-readable outcome."},"data":{"type":"object","description":"Machine-readable result payload."},"error":{"type":"object","properties":{"message":{"type":"string"},"details":{"type":"object"}},"required":["message"],"additionalProperties":false}},"required":["ok","summary","data"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Search graph","annotations":{"openWorldHint":false,"readOnlyHint":true,"untrustedContentHint":true},"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},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Whether the tool completed successfully."},"summary":{"type":"string","description":"Concise human-readable outcome."},"data":{"type":"object","description":"Machine-readable result payload."},"error":{"type":"object","properties":{"message":{"type":"string"},"details":{"type":"object"}},"required":["message"],"additionalProperties":false}},"required":["ok","summary","data"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Inspect neighborhood","annotations":{"openWorldHint":false,"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"untrustedContentHint":true},"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},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Whether the tool completed successfully."},"summary":{"type":"string","description":"Concise human-readable outcome."},"data":{"type":"object","description":"Machine-readable result payload."},"error":{"type":"object","properties":{"message":{"type":"string"},"details":{"type":"object"}},"required":["message"],"additionalProperties":false}},"required":["ok","summary","data"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Trace path","annotations":{"openWorldHint":false,"readOnlyHint":true,"untrustedContentHint":true},"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},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Whether the tool completed successfully."},"summary":{"type":"string","description":"Concise human-readable outcome."},"data":{"type":"object","description":"Machine-readable result payload."},"error":{"type":"object","properties":{"message":{"type":"string"},"details":{"type":"object"}},"required":["message"],"additionalProperties":false}},"required":["ok","summary","data"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Create walkthrough","annotations":{"openWorldHint":false,"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"untrustedContentHint":true},"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},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Whether the tool completed successfully."},"summary":{"type":"string","description":"Concise human-readable outcome."},"data":{"type":"object","description":"Machine-readable result payload."},"error":{"type":"object","properties":{"message":{"type":"string"},"details":{"type":"object"}},"required":["message"],"additionalProperties":false}},"required":["ok","summary","data"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Apply diagram patch","annotations":{"openWorldHint":false,"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"untrustedContentHint":true},"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},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Whether the tool completed successfully."},"summary":{"type":"string","description":"Concise human-readable outcome."},"data":{"type":"object","description":"Machine-readable result payload."},"error":{"type":"object","properties":{"message":{"type":"string"},"details":{"type":"object"}},"required":["message"],"additionalProperties":false}},"required":["ok","summary","data"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Undo last agent change","annotations":{"openWorldHint":false,"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Whether the tool completed successfully."},"summary":{"type":"string","description":"Concise human-readable outcome."},"data":{"type":"object","description":"Machine-readable result payload."},"error":{"type":"object","properties":{"message":{"type":"string"},"details":{"type":"object"}},"required":["message"],"additionalProperties":false}},"required":["ok","summary","data"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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).","title":"Analyze structure","annotations":{"openWorldHint":false,"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":50,"description":"Maximum items per category (default 20)."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Whether the tool completed successfully."},"summary":{"type":"string","description":"Concise human-readable outcome."},"data":{"type":"object","description":"Machine-readable result payload."},"error":{"type":"object","properties":{"message":{"type":"string"},"details":{"type":"object"}},"required":["message"],"additionalProperties":false}},"required":["ok","summary","data"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Developer Tools","favicon":"/favicons/mermaid-atlas.vercel.app.svg","apiSurface":"spec","toolCount":10}}