{"ok":true,"site":{"host":"archflow-two-xi.vercel.app","url":"https://archflow-two-xi.vercel.app/","type":"live","desc":"ArchFlow is a structured graph diagram editor where you and a browser AI agent collaborate on software architecture and process diagrams.","tools":[{"name":"search_products","kind":"answer","impl":"imperative","description":"Returns the list of WebMCP tools available in ArchFlow","title":"Available Tools","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"archflow_get_diagram","kind":"answer","impl":"imperative","description":"Returns the complete current ArchFlow diagram as structured JSON. Call this before proposing any changes and again after a stale proposal error. Optionally include deterministic validation findings.","title":"Get Diagram","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"archflow_get_selection","kind":"answer","impl":"imperative","description":"Returns the nodes and edges currently selected by the human on the canvas. Useful to understand what the user is focused on. Returns empty arrays if nothing is selected.","title":"Get Selection","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"archflow_get_catalog","kind":"answer","impl":"imperative","description":"Returns the supported node kinds, edge kinds, and data classification values with descriptions and usage guidance. Use this to understand available types before constructing add_node or add_edge operations.","title":"Get Type Catalog","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"archflow_focus_elements","kind":"act","impl":"imperative","description":"Selects specified nodes and/or edges on the canvas and fits them into view. Use this to help the human see elements you are discussing. This changes transient UI state only — it does not modify the diagram.","title":"Focus Elements","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"nodeIds":{"type":"array","items":{"type":"string"},"maxItems":20},"edgeIds":{"type":"array","items":{"type":"string"},"maxItems":20}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"archflow_apply_operations","kind":"act","impl":"imperative","description":"Requests an atomic batch of diagram changes (add/update/remove nodes and edges, set document details). All changes are atomic and require visible human approval before taking effect. The human must click Approve in the confirmation dialog before the diagram is modified. Read the diagram first with archflow_get_diagram.","title":"Apply Diagram Operations","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","required":["reason","operations"],"additionalProperties":false,"properties":{"reason":{"type":"string","minLength":1,"maxLength":300},"operations":{"type":"array","minItems":1,"maxItems":50,"items":{"oneOf":[{"type":"object","required":["type","tempId","node"],"additionalProperties":false,"properties":{"type":{"type":"string","const":"add_node"},"tempId":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,39}$"},"node":{"type":"object","required":["kind","label"],"additionalProperties":false,"properties":{"kind":{"type":"string","enum":["actor","client","service","database","queue","cache","external","boundary","process","decision","start","end","note"]},"label":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":500},"technology":{"type":"string","maxLength":80},"position":{"type":"object","required":["x","y"],"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}}},"parentId":{"type":"string"},"tags":{"type":"array","items":{"type":"string","maxLength":40},"maxItems":20},"metadata":{"type":"object","additionalProperties":{"type":"string"}}}}}},{"type":"object","required":["type","nodeId","patch"],"additionalProperties":false,"properties":{"type":{"type":"string","const":"update_node"},"nodeId":{"type":"string"},"patch":{"type":"object","additionalProperties":false,"properties":{"kind":{"type":"string","enum":["actor","client","service","database","queue","cache","external","boundary","process","decision","start","end","note"]},"label":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":500},"technology":{"type":"string","maxLength":80},"position":{"type":"object","required":["x","y"],"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}}},"parentId":{"type":"string"},"tags":{"type":"array","items":{"type":"string","maxLength":40},"maxItems":20},"metadata":{"type":"object","additionalProperties":{"type":"string"}}}}}},{"type":"object","required":["type","nodeId"],"additionalProperties":false,"properties":{"type":{"type":"string","const":"remove_node"},"nodeId":{"type":"string"}}},{"type":"object","required":["type","tempId","edge"],"additionalProperties":false,"properties":{"type":{"type":"string","const":"add_edge"},"tempId":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,39}$"},"edge":{"type":"object","required":["kind","source","target"],"additionalProperties":false,"properties":{"kind":{"type":"string","enum":["request","event","data","dependency","process-flow","association"]},"source":{"type":"string"},"target":{"type":"string"},"label":{"type":"string","maxLength":80},"protocol":{"type":"string","maxLength":80},"dataClassification":{"type":"string","enum":["none","public","internal","confidential","restricted"]},"description":{"type":"string","maxLength":500},"metadata":{"type":"object","additionalProperties":{"type":"string"}}}}}},{"type":"object","required":["type","edgeId","patch"],"additionalProperties":false,"properties":{"type":{"type":"string","const":"update_edge"},"edgeId":{"type":"string"},"patch":{"type":"object","additionalProperties":false,"properties":{"kind":{"type":"string","enum":["request","event","data","dependency","process-flow","association"]},"source":{"type":"string"},"target":{"type":"string"},"label":{"type":"string","maxLength":80},"protocol":{"type":"string","maxLength":80},"dataClassification":{"type":"string","enum":["none","public","internal","confidential","restricted"]},"description":{"type":"string","maxLength":500},"metadata":{"type":"object","additionalProperties":{"type":"string"}}}}}},{"type":"object","required":["type","edgeId"],"additionalProperties":false,"properties":{"type":{"type":"string","const":"remove_edge"},"edgeId":{"type":"string"}}},{"type":"object","required":["type","patch"],"additionalProperties":false,"properties":{"type":{"type":"string","const":"set_document_details"},"patch":{"type":"object","additionalProperties":false,"properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":500},"kind":{"type":"string","enum":["architecture","process","hybrid"]}}}}}]}}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"archflow_auto_layout","kind":"act","impl":"imperative","description":"Requests automatic Dagre-based layout of the diagram. Requires human confirmation before applying. Use 'automatic' direction to let ArchFlow choose based on diagram kind.","title":"Auto Layout","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"direction":{"type":"string","enum":["automatic","left-to-right","top-to-bottom"]}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"archflow_validate_diagram","kind":"act","impl":"imperative","description":"Runs deterministic structural and design checks against the current diagram. Returns findings by severity. This is advisory — it does not prove correctness. Use to identify reliability gaps, missing connections, or structural issues.","title":"Validate Diagram","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"severity":{"type":"string","enum":["all","error","warning","info"]}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"archflow_export_mermaid","kind":"act","impl":"imperative","description":"Serializes the current diagram as Mermaid flowchart text. Returns the mermaid string and any serialization warnings. Use 'automatic' direction to let ArchFlow choose based on diagram kind.","title":"Export Mermaid","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"direction":{"type":"string","enum":["automatic","LR","TB"]}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"archflow_clear_diagram","kind":"act","impl":"imperative","description":"Removes all nodes and edges from the diagram, leaving a blank canvas. Requires explicit human approval before taking effect. Preserves document title and kind. Use only when the human explicitly asks to start fresh.","title":"Clear Diagram","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","required":["reason"],"additionalProperties":false,"properties":{"reason":{"type":"string","minLength":1,"maxLength":300}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"archflow_annotate_element","kind":"act","impl":"imperative","description":"Attaches a short agent note to a node or edge that is displayed inline on the canvas. Use this to explain your reasoning, flag concerns, or highlight elements during analysis. Does NOT require human approval — it is purely informational. Pass an empty string as 'note' to clear an existing annotation.","title":"Annotate Element","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","required":["elementId","note"],"additionalProperties":false,"properties":{"elementId":{"type":"string","description":"ID of the node or edge to annotate."},"note":{"type":"string","maxLength":400,"description":"The note to attach. Pass an empty string to clear the annotation."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"archflow_get_changes","kind":"answer","impl":"imperative","description":"Returns a diff of what changed in the diagram since the agent's last tool call. Each node and edge shows which fields changed. Use this at the start of a turn to understand what the human did while you were away, instead of re-reading the full diagram with archflow_get_diagram.","title":"Get Changes Since Last Call","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"archflow_request_auto_approve","kind":"act","impl":"imperative","description":"Requests that the human enable 'No Human Approval' (Auto-Approve) mode. When enabled by the human, all subsequent diagram modification tools (apply_operations, auto_layout, clear_diagram) execute immediately without waiting for confirmation dialogs. Use this tool when you have many sequential changes to make and want to explain to the human why auto-approve would be faster.","title":"Request Auto Approve Mode","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","required":["reason"],"additionalProperties":false,"properties":{"reason":{"type":"string","minLength":1,"maxLength":500,"description":"Explain why you need auto-approve mode. The human must explicitly enable it. Example: 'I need to apply 12 sequential layout and labeling operations — requiring approval on each would be slow.'"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Developer Tools","favicon":"/favicons/archflow-two-xi.vercel.app.svg","apiSurface":"spec","toolCount":13}}