{"ok":true,"site":{"host":"make-layout.vercel.app","url":"https://make-layout.vercel.app/","type":"live","desc":"AI Layout Engine Architect","tools":[{"name":"list_tools","kind":"answer","impl":"imperative","description":"Lists the design tools available on this page with their read, write, and deprecation status.","title":"List design tools","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"describe_tools","kind":"answer","impl":"imperative","description":"Returns complete schemas and annotations for one or more exact tool names from list_tools.","title":"Describe design tools","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["names"],"properties":{"names":{"description":"One tool name or an array of tool names returned by list_tools. At most 10 are described.","oneOf":[{"type":"string","enum":["list_tools","describe_tools","get_canvas_text","capture_canvas","list_boards","inspect_board","list_layout_templates","get_layout_template","load_layout_template","set_layout_slot_role","set_ui_lock","add_page","configure_canvas","zoom_canvas","search_internet_images","add_board","add_element","add_table","add_math","remove_element","generate_layout","analyze_current_layout","suggest_improvements","generate_diagram","generate_mind_map"]},{"type":"array","minItems":1,"items":{"type":"string","enum":["list_tools","describe_tools","get_canvas_text","capture_canvas","list_boards","inspect_board","list_layout_templates","get_layout_template","load_layout_template","set_layout_slot_role","set_ui_lock","add_page","configure_canvas","zoom_canvas","search_internet_images","add_board","add_element","add_table","add_math","remove_element","generate_layout","analyze_current_layout","suggest_improvements","generate_diagram","generate_mind_map"]}}]}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_canvas_text","kind":"answer","impl":"imperative","description":"Reads bounded plain-text previews and typography metadata from text elements on the active canvas page.","title":"Read canvas text","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"offset":{"type":"integer","minimum":0,"default":0,"description":"Zero-based text element offset."},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5,"description":"Maximum text elements returned."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"capture_canvas","kind":"answer","impl":"imperative","description":"Returns a bounded semantic snapshot of the active canvas page, including revision, dimensions, selection, and element metadata.","title":"Capture semantic canvas","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"offset":{"type":"integer","minimum":0,"default":0,"description":"Zero-based element offset."},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5,"description":"Maximum elements returned."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_boards","kind":"answer","impl":"imperative","description":"Lists the main board and secondary boards on the active page with bounded geometry, configuration, active state, and object counts.","title":"List canvas boards","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"offset":{"type":"integer","minimum":0,"default":0,"description":"Zero-based board offset."},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5,"description":"Maximum boards returned."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"inspect_board","kind":"answer","impl":"imperative","description":"Returns bounded semantic details for objects owned by one board. Use list_boards to obtain a board id.","title":"Inspect canvas board","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["boardId"],"properties":{"boardId":{"type":"string","minLength":1,"maxLength":160,"description":"Board id returned by list_boards. Use primary for the main board."},"offset":{"type":"integer","minimum":0,"default":0,"description":"Zero-based object offset."},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5,"description":"Maximum objects returned."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_layout_templates","kind":"answer","impl":"imperative","description":"Lists reusable layout templates with slot counts and compatibility for the active board. Use get_layout_template before loading a candidate.","title":"List reusable layouts","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"offset":{"type":"integer","minimum":0,"default":0,"description":"Zero-based template offset."},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5,"description":"Maximum templates returned."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_layout_template","kind":"answer","impl":"imperative","description":"Returns normalized slot geometry and active-board compatibility for one reusable layout without changing the canvas.","title":"Inspect reusable layout","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["templateId"],"properties":{"templateId":{"type":"string","minLength":1,"maxLength":160,"description":"Template id returned by list_layout_templates."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"load_layout_template","kind":"act","impl":"imperative","description":"Adds empty slots from a compatible template to the selected board, or the main board when no secondary board is selected. Existing boards and canvas objects are preserved. Requires the UI lock and current revision.","title":"Load reusable layout","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["templateId","expectedRevision"],"properties":{"templateId":{"type":"string","minLength":1,"maxLength":160,"description":"Template id returned by list_layout_templates."},"expectedRevision":{"type":"integer","minimum":0,"description":"Revision returned by capture_canvas. The write is rejected if the canvas changed."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_layout_slot_role","kind":"act","impl":"imperative","description":"Assigns text, image, table, math, or diagram content to a loaded layout slot while preserving its id and bounds. Set replaceContent only after the human explicitly approves replacing an assigned role.","title":"Assign layout slot role","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["elementId","role","expectedRevision"],"properties":{"elementId":{"type":"string","minLength":1,"maxLength":160,"description":"Slot element id returned by capture_canvas."},"role":{"type":"string","enum":["text","image","table","math","diagram"],"description":"Content role to assign."},"replaceContent":{"type":"boolean","default":false,"description":"True only after explicit human approval to discard the current slot content."},"expectedRevision":{"type":"integer","minimum":0,"description":"Revision returned by capture_canvas. The write is rejected if the canvas changed."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_ui_lock","kind":"act","impl":"imperative","description":"Locks human editing while an agent works, or unlocks it. The page always shows a manual unlock control and auto-unlocks fallback: after five minutes.","title":"Lock or unlock editor UI","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["locked"],"properties":{"locked":{"type":"boolean","description":"True to lock human editing; false to unlock it."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_page","kind":"act","impl":"imperative","description":"Adds one blank workspace page and makes it active. Lock the UI and capture the canvas first.","title":"Add workspace page","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["expectedRevision"],"properties":{"expectedRevision":{"type":"integer","minimum":0,"description":"Revision returned by capture_canvas. The write is rejected if the canvas changed."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"configure_canvas","kind":"act","impl":"imperative","description":"Atomically updates supplied shared canvas settings for every workspace page. Lock the UI and capture first.","title":"Configure shared canvas","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["expectedRevision"],"properties":{"expectedRevision":{"type":"integer","minimum":0,"description":"Revision returned by capture_canvas. The write is rejected if the canvas changed."},"width":{"type":"number","exclusiveMinimum":0,"maximum":100000,"description":"Canvas width in points."},"height":{"type":"number","exclusiveMinimum":0,"maximum":100000,"description":"Canvas height in points."},"mode":{"type":"string","enum":["page","slide","custom"],"description":"Canvas aspect-ratio mode."},"presetName":{"type":"string","minLength":1,"maxLength":120,"description":"Human-readable preset name."},"isFlipbook":{"type":"boolean","description":"Whether the canvas displays a two-page spread."},"borderRadius":{"type":"number","minimum":0,"maximum":100000,"description":"Canvas corner radius."},"backgroundColor":{"type":"string","minLength":1,"maxLength":64,"description":"CSS canvas background color."},"bleed":{"type":"number","minimum":0,"maximum":100000,"description":"Bleed size in points."},"showGuides":{"type":"boolean","description":"Whether safe-area guides are visible."},"gridRows":{"type":"integer","minimum":1,"maximum":1000,"description":"Grid row count."},"gridCols":{"type":"integer","minimum":1,"maximum":1000,"description":"Grid column count."},"showGrid":{"type":"boolean","description":"Whether the canvas grid is visible."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"zoom_canvas","kind":"act","impl":"imperative","description":"Zooms the editing viewport in constant 0.1 scale steps, centered on the canvas. Does not change canvas content or revision. Lock the UI first.","title":"Zoom the viewport","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","additionalProperties":false,"required":["direction"],"properties":{"direction":{"type":"string","enum":["in","out","reset"],"description":"Zoom in, zoom out, or reset to scale 1."},"steps":{"type":"integer","minimum":1,"maximum":10,"description":"Number of constant 0.1 steps. Defaults to 1. Ignored for reset."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"search_internet_images","kind":"answer","impl":"imperative","description":"Searches the configured image provider and displays the results in the editor chat for the human and agent to review.","title":"Search licensed images","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["query"],"properties":{"query":{"type":"string","minLength":1,"maxLength":200,"description":"Concrete image search phrase."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_board","kind":"act","impl":"imperative","description":"Adds and selects one secondary board using optional absolute geometry or safe defaults. Lock the UI and capture the canvas first.","title":"Add canvas board","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["expectedRevision"],"properties":{"expectedRevision":{"type":"integer","minimum":0,"description":"Revision returned by capture_canvas. The write is rejected if the canvas changed."},"name":{"type":"string","minLength":1,"maxLength":120,"description":"Optional board name. Defaults to the next Board N name."},"x":{"type":"number","minimum":-100000,"maximum":100000,"description":"Optional absolute left position. Defaults to a safe position right of existing content."},"y":{"type":"number","minimum":-100000,"maximum":100000,"description":"Optional absolute top position. Defaults to zero."},"width":{"type":"number","exclusiveMinimum":0,"maximum":100000,"description":"Optional board width. Defaults to the effective main-canvas width."},"height":{"type":"number","exclusiveMinimum":0,"maximum":100000,"description":"Optional board height. Defaults to the main-canvas height."},"backgroundColor":{"type":"string","minLength":1,"maxLength":64,"description":"Optional CSS background color. Defaults to white."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_element","kind":"act","impl":"imperative","description":"Adds one text, shape, or HTTPS image element at absolute canvas coordinates. Lock the UI and capture the canvas first.","title":"Add canvas element","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["expectedRevision","elementType","name","x","y","width","height"],"properties":{"expectedRevision":{"type":"integer","minimum":0,"description":"Revision returned by capture_canvas. The write is rejected if the canvas changed."},"elementType":{"type":"string","enum":["text","shape","image"],"description":"Element kind to create."},"name":{"type":"string","minLength":1,"maxLength":120,"description":"Short unique human-readable name."},"x":{"type":"number","minimum":-100000,"maximum":100000,"description":"Absolute left position in canvas points."},"y":{"type":"number","minimum":-100000,"maximum":100000,"description":"Absolute top position in canvas points."},"width":{"type":"number","exclusiveMinimum":0,"maximum":100000,"description":"Element width in canvas points."},"height":{"type":"number","exclusiveMinimum":0,"maximum":100000,"description":"Element height in canvas points."},"content":{"type":"string","maxLength":4000,"description":"Text-element content only. Label shapes by adding a separate text element. Unsafe markup is removed."},"src":{"type":"string","maxLength":2048,"description":"HTTPS image URL. Other URL schemes are rejected."},"color":{"type":"string","maxLength":64,"description":"Element fill or background color. For rendered text color, use textStyle.color."},"textStyle":{"type":"object","additionalProperties":false,"minProperties":1,"description":"Optional typography for text elements. textStyle.color controls rendered text color.","properties":{"fontSize":{"type":"number","minimum":8,"maximum":200,"description":"Font size in pixels."},"fontWeight":{"type":"string","minLength":1,"maxLength":40,"description":"CSS font weight such as normal, bold, or 700."},"fontFamily":{"type":"string","minLength":1,"maxLength":80,"description":"CSS font family."},"fontStyle":{"type":"string","enum":["normal","italic"],"description":"Normal or italic text."},"textAlign":{"type":"string","enum":["left","center","right","justify"],"description":"Horizontal text alignment."},"color":{"type":"string","minLength":1,"maxLength":64,"description":"CSS text color."},"lineHeight":{"type":"number","minimum":0.1,"maximum":10,"description":"Unitless line-height multiplier."}}},"shapeType":{"type":"string","maxLength":64,"description":"Existing shape identifier such as rectangle or circle."},"vertices":{"type":"array","maxItems":100,"description":"Custom polygon vertices.","items":{"type":"object","additionalProperties":false,"required":["x","y"],"properties":{"x":{"type":"number","minimum":-100000,"maximum":100000,"description":"Vertex X."},"y":{"type":"number","minimum":-100000,"maximum":100000,"description":"Vertex Y."}}}}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_table","kind":"act","impl":"imperative","description":"Adds a bounded table to the visible canvas at absolute coordinates. Lock the UI and capture the canvas first.","title":"Add table","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["expectedRevision","name","x","y","width","height","rows","cols","headers","data"],"properties":{"expectedRevision":{"type":"integer","minimum":0,"description":"Revision returned by capture_canvas. The write is rejected if the canvas changed."},"name":{"type":"string","minLength":1,"maxLength":120,"description":"Short table name."},"x":{"type":"number","minimum":-100000,"maximum":100000,"description":"Absolute left position."},"y":{"type":"number","minimum":-100000,"maximum":100000,"description":"Absolute top position."},"width":{"type":"number","exclusiveMinimum":0,"maximum":100000,"description":"Table width."},"height":{"type":"number","exclusiveMinimum":0,"maximum":100000,"description":"Table height."},"rows":{"type":"integer","minimum":1,"maximum":30,"description":"Total rows including the header."},"cols":{"type":"integer","minimum":1,"maximum":20,"description":"Column count."},"headers":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":200},"description":"One header per column."},"data":{"type":"array","maxItems":29,"items":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":500}},"description":"Body rows matching cols."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_math","kind":"act","impl":"imperative","description":"Adds a KaTeX formula to the visible canvas. Trusted HTML commands are disabled. Lock the UI and capture first.","title":"Add math formula","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["expectedRevision","name","x","y","width","height","formula"],"properties":{"expectedRevision":{"type":"integer","minimum":0,"description":"Revision returned by capture_canvas. The write is rejected if the canvas changed."},"name":{"type":"string","minLength":1,"maxLength":120,"description":"Short formula name."},"x":{"type":"number","minimum":-100000,"maximum":100000,"description":"Absolute left position."},"y":{"type":"number","minimum":-100000,"maximum":100000,"description":"Absolute top position."},"width":{"type":"number","exclusiveMinimum":0,"maximum":100000,"description":"Formula width."},"height":{"type":"number","exclusiveMinimum":0,"maximum":100000,"description":"Formula height."},"formula":{"type":"string","minLength":1,"maxLength":2000,"description":"LaTeX formula."},"fontSize":{"type":"number","minimum":8,"maximum":200,"description":"Optional font size in pixels."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"remove_element","kind":"act","impl":"imperative","description":"Requests human confirmation, then removes one current element by ID or unambiguous name. Lock the UI and capture first.","title":"Remove canvas element","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["expectedRevision"],"properties":{"expectedRevision":{"type":"integer","minimum":0,"description":"Revision returned by capture_canvas. The write is rejected if the canvas changed."},"elementId":{"type":"string","maxLength":120,"description":"Preferred exact ID from capture_canvas."},"elementName":{"type":"string","maxLength":120,"description":"Fallback name; duplicates are rejected."},"reason":{"type":"string","maxLength":300,"description":"Short reason shown in confirmation."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"generate_layout","kind":"act","impl":"imperative","description":"Generates a complete layout plan for the current revision and opens the existing human review card without applying it.","title":"Generate layout plan","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["expectedRevision","layoutDescription","layoutStyle"],"properties":{"expectedRevision":{"type":"integer","minimum":0,"description":"Revision returned by capture_canvas. The write is rejected if the canvas changed."},"layoutDescription":{"type":"string","minLength":1,"maxLength":2000,"description":"Desired layout and content."},"layoutStyle":{"type":"string","minLength":1,"maxLength":200,"description":"Visual style direction."},"primaryElement":{"type":"string","maxLength":200,"description":"Optional main visual or content element."},"elementCount":{"type":"integer","minimum":1,"maximum":100,"description":"Optional approximate element count."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"analyze_current_layout","kind":"answer","impl":"imperative","description":"Checks current element bounds, spacing, overlaps, and text widths without changing the canvas.","title":"Analyze current layout","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["focusArea"],"properties":{"focusArea":{"type":"string","enum":["overlaps","spacing","balance","readability","all"],"description":"Layout concern to emphasize."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"suggest_improvements","kind":"act","impl":"imperative","description":"Returns bounded actionable suggestions based on current deterministic layout checks without changing the canvas.","title":"Suggest layout improvements","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["improvementType"],"properties":{"improvementType":{"type":"string","enum":["spacing","alignment","hierarchy","balance","typography"],"description":"Improvement category."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"generate_diagram","kind":"act","impl":"imperative","description":"Generates a safe Mermaid diagram and places it inside the active board. Lock the UI and capture the canvas first. The async auto-resizer may expand the diagram and bump the revision afterward; capture again for final geometry.","title":"Generate Mermaid diagram","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["expectedRevision","prompt","diagramType"],"properties":{"expectedRevision":{"type":"integer","minimum":0,"description":"Revision returned by capture_canvas. The write is rejected if the canvas changed."},"prompt":{"type":"string","minLength":1,"maxLength":2000,"description":"What to visualize."},"diagramType":{"type":"string","enum":["mindmap","flowchart","sequenceDiagram","classDiagram","erDiagram","pie","requirementDiagram","auto"],"description":"Mermaid diagram type."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"generate_mind_map","kind":"act","impl":"imperative","description":"Deprecated compatibility alias that generates and inserts a Mermaid mind map. Prefer generate_diagram.","title":"Generate mind map (deprecated)","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["expectedRevision","topic"],"properties":{"expectedRevision":{"type":"integer","minimum":0,"description":"Revision returned by capture_canvas. The write is rejected if the canvas changed."},"topic":{"type":"string","minLength":1,"maxLength":2000,"description":"Mind-map topic."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Productivity & Business","favicon":"/favicons/make-layout.vercel.app.ico","apiSurface":"spec","toolCount":25}}