{"ok":true,"site":{"host":"planner.kitchen.hotelos.ai","url":"https://planner.kitchen.hotelos.ai/","type":"live","desc":"Design commercial kitchens online with dimensioned 2D floor plans, interactive 3D walkthroughs, configurable equipment, and service-flow simulation.","tools":[{"name":"get_workspace_guide","kind":"answer","impl":"imperative","description":"Read compact workspace conventions when the task needs coordinate, revision, workflow, or safety guidance. Request full detail only for operation schemas, recovery codes, tool descriptions, and complete limitations.","title":"Get workspace guide","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"detail":{"type":"string","enum":["compact","full"],"description":"Defaults to compact. Use full for operation schemas, error recovery, and tool descriptions."}},"description":"Returns the coordinate system, workflow, and conventions agents must follow."},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_component_catalog","kind":"answer","impl":"imperative","description":"Search catalog components for add_component operations. Returns a compact, paginated list by default; request full detail only for shortlisted entries. Filter by free text, category, or capability.","title":"Get component catalog","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","description":"Optional free-text search over catalog names, synonyms, and tags."},"category":{"type":"string","description":"Optional category filter such as cooking, cold, prep, washing, landing, storage, hood."},"capability":{"type":"string","description":"Optional station capability filter such as range-cook or dish-wash."},"detail":{"type":"string","enum":["compact","full"],"description":"Defaults to compact. Full includes clearances, placement rules, presets, skins, and footprint."},"offset":{"type":"integer","minimum":0,"maximum":10000,"description":"Zero-based result offset; defaults to 0."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum entries to return; defaults to 5."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_layout","kind":"answer","impl":"imperative","description":"Read the current plan in exact millimetres — the spatial model agents work with instead of screenshots. Views: summary (room, per-component rects and rotations), architecture (polygon, openings, pillars, zones), components (full equipment records), full (everything incl. scenarios and settings). Defaults to the active variant.","title":"Get current layout","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"view":{"type":"string","enum":["summary","architecture","components","full"],"description":"Detail level; defaults to summary."},"variantId":{"type":"string","description":"Optional layout variant ID; defaults to the active variant."},"componentIds":{"type":"array","items":{"type":"string"},"description":"Optional component ID filter for the components view."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"analyze_layout","kind":"act","impl":"imperative","description":"Structured diagnostics for a layout revision: outside-room, equipment-overlap, pillar-overlap, and clearance-obstructed findings with severity, affected component IDs, and remediation. Advisory only — not regulatory certification.","title":"Analyze layout diagnostics","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"variantId":{"type":"string","description":"Optional layout variant ID; defaults to the active variant."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"suggest_component_placement","kind":"act","impl":"imperative","description":"Ask the workspace for a collision-free anchor position for a catalog component, optionally near a preferred millimetre point. Useful before add_component when you do not care to compute free space yourself.","title":"Suggest component placement","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["catalogId"],"properties":{"catalogId":{"type":"string","description":"Catalog entry ID from get_component_catalog."},"variantId":{"type":"string","description":"Optional layout variant ID; defaults to the active variant."},"preferredPoint":{"type":"object","additionalProperties":false,"required":["xMm","yMm"],"properties":{"xMm":{"type":"number","description":"Millimetres from the room origin along +x."},"yMm":{"type":"number","description":"Millimetres from the room origin along +y."}},"description":"Optional preferred millimetre point to place near."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_simulation_guide","kind":"answer","impl":"imperative","description":"Read the service-simulation contract: scenario list with parameters, editable fields with constraints, staff roles, and the meaning of each result metric. Scenario edits are applied as update_scenario operations through preview_layout_changes; runs execute with run_simulation.","title":"Get simulation guide","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{},"description":"No parameters."},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_app_state","kind":"answer","impl":"imperative","description":"Read the current visible workflow stage, plan/3D and simulation views, 3D scene controls, overlays, panels, open dialogs, source reference visibility, active layout and scenario, component selection, simulation-result availability, and undo/redo availability. This does not change the workspace.","title":"Get app state","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{},"description":"No parameters."},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_app_view","kind":"act","impl":"imperative","description":"Navigate the visible app by setting its workflow stage, plan/3D or simulation view, 3D scene controls, overlay, panels, or source reference visibility. Omitted fields remain unchanged; pass overlay null to close an overlay. Open dialogs are reported but cannot be controlled by agents. This does not change the document revision.","title":"Set app view","inputSchema":{"type":"object","additionalProperties":false,"properties":{"stage":{"type":"string","enum":["space","equipment","simulate"],"description":"Optional workflow stage to display."},"view":{"type":"string","enum":["plan","scene","split"],"description":"Optional workspace view to display."},"overlay":{"type":["string","null"],"enum":["compare","auto-layout",null],"description":"Optional workspace overlay. Pass null to close the active overlay."},"walkMode":{"type":"boolean","description":"Enter or exit kitchen walk mode."},"walkView":{"type":"string","enum":["first-person","third-person"],"description":"Set the kitchen walk camera to first-person or third-person."},"cameraMode":{"type":"string","enum":["perspective","top"],"description":"Set the 3D camera projection preset."},"showClearances":{"type":"boolean","description":"Show or hide equipment and opening clearance overlays in the 3D scene."},"wallsTransparent":{"type":"boolean","description":"Render the 3D room walls as transparent or opaque."},"showLabels":{"type":"boolean","description":"Show or hide labels in the 3D scene."},"simulationView":{"type":"string","enum":["operations-2d","overview-3d","walk"],"description":"Set the simulation result view to 2D operations, 3D overview, or first-person walk mode."},"panels":{"type":"object","additionalProperties":false,"properties":{"catalog":{"type":"boolean","description":"Show or hide the component catalog."},"inspector":{"type":"boolean","description":"Show or hide the inspector."},"essentials":{"type":"boolean","description":"Show or hide operational essentials in the inspector."},"revisions":{"type":"boolean","description":"Show or hide revision history in the inspector."}},"description":"Patch one or more panel visibility flags. Omitted flags remain unchanged."},"showReference":{"type":"boolean","description":"Show or hide the source reference overlay in the plan."}},"description":"Provide at least one field. Omitted fields keep their current values."},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"select_components","kind":"act","impl":"imperative","description":"Replace, add to, toggle, or clear the current component selection using IDs from the active layout. Optionally reveal the result in the plan, 3D scene, or split view. Selection does not change the document revision.","title":"Select components","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"componentIds":{"type":"array","items":{"type":"string"},"description":"Component IDs in the active layout. Required and non-empty except when mode is clear."},"mode":{"type":"string","enum":["replace","add","toggle","clear"],"description":"Selection operation. Defaults to replace."},"reveal":{"type":"string","enum":["plan","scene","both"],"description":"Optionally switch to the equipment stage and reveal the selection in plan, 3D, or split view."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"focus_camera","kind":"act","impl":"imperative","description":"Move the visible 3D camera to fit the room, frame a component, or inspect an exact millimetre point. Optionally switches between perspective and top view without changing the project revision.","title":"Focus camera","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["target"],"properties":{"target":{"type":"string","enum":["fit","component","point"],"description":"Camera target type."},"componentId":{"type":"string","description":"Required component ID when target is component."},"point":{"type":"object","additionalProperties":false,"required":["xMm","yMm"],"properties":{"xMm":{"type":"number","description":"Horizontal millimetres from the room origin."},"yMm":{"type":"number","description":"Vertical millimetres from the room origin."}},"description":"Required exact plan point when target is point."},"cameraMode":{"type":"string","enum":["perspective","top"],"description":"Optional camera preset."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"check_operational_essentials","kind":"answer","impl":"imperative","description":"Check scenario-based operational readiness for a layout: required stations, service flows, staffing, capacities, circulation, clearances, and professional-review reminders. Advisory planning guidance only, not regulatory certification.","title":"Check operational essentials","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"variantId":{"type":"string","description":"Optional layout variant ID; defaults to the active variant."},"scenarioId":{"type":"string","description":"Optional scenario ID; defaults to the active scenario."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"preview_layout_changes","kind":"act","impl":"imperative","description":"Validate an operation batch and return a single-use token, changes, warnings, and diagnostics.","title":"Preview layout changes","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"$defs":{"i":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"n":{"type":"string","minLength":1,"maxLength":160},"x":{"type":"number","minimum":-1000000,"maximum":1000000},"a":{"type":"number","minimum":0,"maximum":1000000},"k":{"type":"number","minimum":0,"maximum":100000},"h":{"type":"number","minimum":0,"maximum":20000},"d":{"type":"number","exclusiveMinimum":0,"maximum":100000},"r":{"type":"number","minimum":-1000000,"maximum":1000000},"p":{"type":"object","additionalProperties":false,"required":["xMm","yMm"],"properties":{"xMm":{"$ref":"#/$defs/x"},"yMm":{"$ref":"#/$defs/x"}}},"z":{"type":"object","additionalProperties":false,"required":["widthMm","depthMm"],"properties":{"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"},"heightMm":{"$ref":"#/$defs/d"}}},"c":{"type":"string","enum":["flat-top-cook","fryer-cook","range-cook","tandoor-cook","cold-retrieval","food-prep","finish-plate","clean-window","dirty-window","dirty-landing","dish-pre-rinse","dish-wash","clean-landing","hand-wash","mix"]},"l":{"type":"object","additionalProperties":false,"required":["frontMm","kind"],"properties":{"frontMm":{"$ref":"#/$defs/k"},"leftMm":{"$ref":"#/$defs/k"},"rightMm":{"$ref":"#/$defs/k"},"backMm":{"$ref":"#/$defs/k"},"kind":{"enum":["work","door-swing","heat","service"]}}},"D":{"type":"object","additionalProperties":false,"required":["inputFace","outputFace"],"properties":{"inputFace":{"enum":["front","back","left","right"]},"outputFace":{"enum":["front","back","left","right"]}}},"o":{"type":"object","additionalProperties":false,"required":["id","label","kind","wall","offsetMm","widthMm"],"properties":{"id":{"$ref":"#/$defs/i"},"label":{"$ref":"#/$defs/n"},"kind":{"enum":["door","window","service-window","sealed-opening"]},"wall":{"enum":["top","right","bottom","left"]},"segmentIndex":{"type":"integer","minimum":0,"maximum":999},"offsetMm":{"$ref":"#/$defs/a"},"widthMm":{"$ref":"#/$defs/d"},"sillHeightMm":{"$ref":"#/$defs/k"},"heightMm":{"$ref":"#/$defs/d"},"flow":{"enum":["entry","clean-out","dirty-in","closed"]},"doorType":{"enum":["hinged","double-hinged","sliding","double-sliding"]},"swingDepthMm":{"$ref":"#/$defs/k"},"swingHinge":{"enum":["start","end"]},"swingDirection":{"enum":["inward","outward"]}}},"q":{"type":"object","additionalProperties":false,"required":["id","xMm","yMm","widthMm","depthMm"],"properties":{"id":{"$ref":"#/$defs/i"},"xMm":{"$ref":"#/$defs/x"},"yMm":{"$ref":"#/$defs/x"},"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"},"shape":{"const":"round"}}},"Q":{"type":"object","additionalProperties":false,"required":["id","xMm","yMm","widthMm","depthMm"],"properties":{"id":{"$ref":"#/$defs/i"},"xMm":{"$ref":"#/$defs/a"},"yMm":{"$ref":"#/$defs/a"},"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"}}},"g":{"type":"object","additionalProperties":false,"required":["id","xMm","yMm","widthMm","depthMm","label","adjacent"],"properties":{"id":{"$ref":"#/$defs/i"},"xMm":{"$ref":"#/$defs/x"},"yMm":{"$ref":"#/$defs/x"},"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"},"label":{"$ref":"#/$defs/n"},"adjacent":{"type":"boolean"}}},"H":{"type":"object","additionalProperties":false,"required":["id","xMm","yMm","widthMm","depthMm","label","adjacent"],"properties":{"id":{"$ref":"#/$defs/i"},"xMm":{"$ref":"#/$defs/a"},"yMm":{"$ref":"#/$defs/a"},"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"},"label":{"$ref":"#/$defs/n"},"adjacent":{"type":"boolean"}}},"u":{"type":"object","additionalProperties":false,"required":["componentId","duplicateId"],"properties":{"componentId":{"$ref":"#/$defs/i"},"duplicateId":{"$ref":"#/$defs/i"}}},"f":{"type":"object","additionalProperties":false,"required":["role","count"],"properties":{"role":{"enum":["head-chef","sous-chef","cdp","busser-washer"]},"count":{"type":"integer","minimum":0,"maximum":100}}},"v":{"type":"object","additionalProperties":false,"required":["role","count"],"properties":{"role":{"enum":["head-chef","sous-chef","cdp","busser-washer"]},"count":{"type":"integer","minimum":0}}},"t":{"type":"object","additionalProperties":false,"required":["minSeconds","maxSeconds"],"properties":{"minSeconds":{"type":"number","exclusiveMinimum":0,"maximum":86400},"maxSeconds":{"type":"number","exclusiveMinimum":0,"maximum":86400}}},"m":{"type":"object","additionalProperties":false,"required":["label","capability","activeSeconds"],"properties":{"label":{"$ref":"#/$defs/n"},"capability":{"$ref":"#/$defs/c"},"activeSeconds":{"type":"number","exclusiveMinimum":0,"maximum":86400},"passiveSeconds":{"$ref":"#/$defs/t"}}},"e":{"type":"object","additionalProperties":false,"required":["id","name","sharePct","source","steps"],"properties":{"id":{"$ref":"#/$defs/i"},"name":{"$ref":"#/$defs/n"},"sharePct":{"type":"number","minimum":0,"maximum":100},"source":{"enum":["user-provided","imported","template-estimate","system-inferred"]},"steps":{"type":"array","minItems":1,"maxItems":24,"items":{"$ref":"#/$defs/m"}}}},"C":{"type":"object","additionalProperties":false,"properties":{"label":{"$ref":"#/$defs/n"},"xMm":{"$ref":"#/$defs/x"},"yMm":{"$ref":"#/$defs/x"},"category":{"enum":["cooking","cold","prep","washing","landing","storage","hood","custom"]},"heightMm":{"$ref":"#/$defs/d"},"capabilities":{"type":"array","maxItems":100,"items":{"$ref":"#/$defs/c"}},"clearance":{"$ref":"#/$defs/l"},"accessFlow":{"$ref":"#/$defs/D"},"approximate":{"type":"boolean"},"notes":{"type":"string"},"planLayerOrder":{"type":"integer"},"baseElevationMm":{"$ref":"#/$defs/h"},"shelfElevationsMm":{"type":"array","maxItems":100,"items":{"$ref":"#/$defs/h"}}},"minProperties":1},"O":{"type":"object","additionalProperties":false,"properties":{"label":{"$ref":"#/$defs/n"},"kind":{"enum":["door","window","service-window","sealed-opening"]},"wall":{"enum":["top","right","bottom","left"]},"segmentIndex":{"anyOf":[{"type":"integer","minimum":0,"maximum":999},{"type":"null"}]},"offsetMm":{"$ref":"#/$defs/a"},"widthMm":{"$ref":"#/$defs/d"},"sillHeightMm":{"anyOf":[{"$ref":"#/$defs/a"},{"type":"null"}]},"heightMm":{"anyOf":[{"$ref":"#/$defs/d"},{"type":"null"}]},"flow":{"anyOf":[{"enum":["entry","clean-out","dirty-in","closed"]},{"type":"null"}]},"doorType":{"anyOf":[{"enum":["hinged","double-hinged","sliding","double-sliding"]},{"type":"null"}]},"swingDepthMm":{"anyOf":[{"$ref":"#/$defs/a"},{"type":"null"}]},"swingHinge":{"anyOf":[{"enum":["start","end"]},{"type":"null"}]},"swingDirection":{"anyOf":[{"enum":["inward","outward"]},{"type":"null"}]}},"minProperties":1},"P":{"type":"object","additionalProperties":false,"properties":{"xMm":{"$ref":"#/$defs/a"},"yMm":{"$ref":"#/$defs/a"},"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"}},"minProperties":1},"G":{"type":"object","additionalProperties":false,"properties":{"xMm":{"$ref":"#/$defs/a"},"yMm":{"$ref":"#/$defs/a"},"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"},"label":{"$ref":"#/$defs/n"},"adjacent":{"type":"boolean"}},"minProperties":1},"A":{"type":"object","additionalProperties":false,"properties":{"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"},"wallHeightMm":{"$ref":"#/$defs/d"},"roomPolygon":{"type":"array","minItems":3,"maxItems":1000,"items":{"$ref":"#/$defs/p"}},"openings":{"type":"array","maxItems":1000,"items":{"$ref":"#/$defs/o"}},"pillars":{"type":"array","maxItems":1000,"items":{"$ref":"#/$defs/q"}},"storageZones":{"type":"array","maxItems":1000,"items":{"$ref":"#/$defs/g"}},"locked":{"type":"boolean"}},"minProperties":1},"F":{"type":"object","additionalProperties":false,"properties":{"covers":{"type":"integer","exclusiveMinimum":0},"peakDurationMinutes":{"type":"number","exclusiveMinimum":0},"arrivalPattern":{"enum":["seating-wave","steady","two-waves"]},"serviceStyle":{"type":"string","minLength":1},"menuAssumptions":{"type":"array","items":{"type":"string","minLength":1}},"staff":{"type":"array","items":{"$ref":"#/$defs/v"}},"targetCapacityPerHour":{"type":"number","exclusiveMinimum":0}},"minProperties":1},"W":{"type":"object","additionalProperties":false,"properties":{"displayUnit":{"enum":["mm","cm","in","ft"]},"snapMm":{"$ref":"#/$defs/d"}},"minProperties":1},"S":{"type":"object","additionalProperties":false,"properties":{"name":{"$ref":"#/$defs/n"},"covers":{"type":"integer","minimum":1,"maximum":100000},"durationMinutes":{"type":"number","exclusiveMinimum":0,"maximum":10080},"arrivalPattern":{"enum":["seating-wave","steady","two-waves"]},"cookToOrderRatio":{"type":"number","minimum":0,"maximum":1},"seed":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"staff":{"type":"array","minItems":1,"maxItems":100,"items":{"$ref":"#/$defs/f"}},"checks":{"type":"object","additionalProperties":false,"properties":{"collisions":{"type":"boolean"},"doorSwings":{"type":"boolean"},"dirtyCleanCrossings":{"type":"boolean"}},"minProperties":1},"taskDurations":{"type":"object","propertyNames":{"enum":["flat-top-cook","fryer-cook","range-cook","tandoor-cook","cold-retrieval","food-prep","finish-plate","clean-window","dirty-window","dirty-landing","dish-pre-rinse","dish-wash","clean-landing","hand-wash","mix"]},"additionalProperties":{"$ref":"#/$defs/t"}},"stationCapacities":{"type":"object","propertyNames":{"$ref":"#/$defs/i"},"additionalProperties":{"type":"integer","minimum":1,"maximum":100}},"serviceStyle":{"$ref":"#/$defs/n"},"variability":{"enum":["low","typical","high"]},"menuItems":{"type":"array","maxItems":200,"items":{"$ref":"#/$defs/e"}}},"minProperties":1}},"required":["expectedRevision","operations"],"properties":{"expectedRevision":{"type":"integer","minimum":0},"operations":{"type":"array","minItems":1,"maxItems":200,"items":{"type":"object","additionalProperties":false,"required":["type","variantId"],"properties":{"type":{"type":"string"},"variantId":{"$ref":"#/$defs/i"},"name":{"$ref":"#/$defs/n"},"parentVariantId":{"$ref":"#/$defs/i"},"equipmentMode":{"enum":["duplicate","empty"]},"componentId":{"$ref":"#/$defs/i"},"catalogId":{"$ref":"#/$defs/i"},"position":{"$ref":"#/$defs/p"},"dimensions":{"$ref":"#/$defs/z"},"rotationDeg":{"$ref":"#/$defs/r"},"configurationId":{"$ref":"#/$defs/i"},"skinId":{"$ref":"#/$defs/i"},"label":{"$ref":"#/$defs/n"},"capabilities":{"type":"array","maxItems":100,"items":{"$ref":"#/$defs/i"}},"patch":{"type":"object"},"componentIds":{"type":"array","minItems":1,"maxItems":500,"uniqueItems":true,"items":{"$ref":"#/$defs/i"}},"anchor":{"$ref":"#/$defs/p"},"delta":{"$ref":"#/$defs/p"},"deltaDeg":{"$ref":"#/$defs/r"},"locked":{"type":"boolean"},"components":{"type":"array","minItems":1,"maxItems":500,"items":{"$ref":"#/$defs/u"}},"offset":{"$ref":"#/$defs/p"},"opening":{"$ref":"#/$defs/o"},"pillar":{"$ref":"#/$defs/Q"},"storageZone":{"$ref":"#/$defs/H"},"id":{"$ref":"#/$defs/i"},"scenarioId":{"$ref":"#/$defs/i"},"runId":{"$ref":"#/$defs/i"},"resultId":{"$ref":"#/$defs/i"},"newVariantId":{"$ref":"#/$defs/i"}},"oneOf":[{"properties":{"type":{"const":"create_layout"}},"required":["name","equipmentMode"],"propertyNames":{"enum":["type","variantId","name","parentVariantId","equipmentMode"]}},{"properties":{"type":{"enum":["activate_layout","remove_layout"]}},"propertyNames":{"enum":["type","variantId"]}},{"properties":{"type":{"const":"rename_layout"}},"required":["name"],"propertyNames":{"enum":["type","variantId","name"]}},{"properties":{"type":{"const":"add_component"}},"required":["componentId","catalogId","position"],"propertyNames":{"enum":["type","variantId","componentId","catalogId","position","dimensions","rotationDeg","configurationId","skinId"]}},{"properties":{"type":{"const":"add_custom_component"}},"required":["componentId","label","position","dimensions"],"propertyNames":{"enum":["type","variantId","componentId","label","position","dimensions","rotationDeg","capabilities"]}},{"properties":{"type":{"const":"configure_component"}},"required":["componentId","configurationId"],"propertyNames":{"enum":["type","variantId","componentId","configurationId"]}},{"properties":{"type":{"const":"skin_component"}},"required":["componentId","skinId"],"propertyNames":{"enum":["type","variantId","componentId","skinId"]}},{"properties":{"type":{"const":"update_component"}},"required":["componentId","patch"],"propertyNames":{"enum":["type","variantId","componentId","patch"]}},{"properties":{"type":{"const":"move_components"}},"required":["componentIds","anchor"],"propertyNames":{"enum":["type","variantId","componentIds","anchor"]}},{"properties":{"type":{"const":"nudge_components"}},"required":["componentIds","delta"],"propertyNames":{"enum":["type","variantId","componentIds","delta"]}},{"properties":{"type":{"const":"rotate_components"}},"required":["componentIds","deltaDeg"],"propertyNames":{"enum":["type","variantId","componentIds","deltaDeg"]}},{"properties":{"type":{"const":"resize_component"}},"required":["componentId","dimensions"],"propertyNames":{"enum":["type","variantId","componentId","dimensions"]}},{"properties":{"type":{"const":"set_component_dimensions_lock"}},"required":["componentId","locked"],"propertyNames":{"enum":["type","variantId","componentId","locked"]}},{"properties":{"type":{"const":"duplicate_components"}},"required":["components"],"propertyNames":{"enum":["type","variantId","components","offset"]}},{"properties":{"type":{"const":"lock_components"}},"required":["componentIds","locked"],"propertyNames":{"enum":["type","variantId","componentIds","locked"]}},{"properties":{"type":{"const":"remove_components"}},"required":["componentIds"],"propertyNames":{"enum":["type","variantId","componentIds"]}},{"properties":{"type":{"const":"add_opening"}},"required":["opening"],"propertyNames":{"enum":["type","variantId","opening"]}},{"properties":{"type":{"const":"add_pillar"}},"required":["pillar"],"propertyNames":{"enum":["type","variantId","pillar"]}},{"properties":{"type":{"const":"add_storage_zone"}},"required":["storageZone"],"propertyNames":{"enum":["type","variantId","storageZone"]}},{"properties":{"type":{"enum":["update_opening","update_pillar","update_storage_zone"]}},"required":["id","patch"],"propertyNames":{"enum":["type","variantId","id","patch"]}},{"properties":{"type":{"enum":["remove_opening","remove_pillar","remove_storage_zone"]}},"required":["id"],"propertyNames":{"enum":["type","variantId","id"]}},{"properties":{"type":{"const":"update_architecture"}},"required":["patch"],"propertyNames":{"enum":["type","variantId","patch"]}},{"properties":{"type":{"const":"update_operational_profile"}},"required":["patch"],"propertyNames":{"enum":["type","variantId","patch"]}},{"properties":{"type":{"const":"update_workspace_settings"}},"required":["patch"],"propertyNames":{"enum":["type","variantId","patch"]}},{"properties":{"type":{"const":"update_scenario"}},"required":["scenarioId","patch"],"propertyNames":{"enum":["type","variantId","scenarioId","patch"]}},{"properties":{"type":{"const":"adopt_auto_layout_result"}},"required":["runId","resultId","newVariantId","name"],"propertyNames":{"enum":["type","variantId","runId","resultId","newVariantId","name"]}}],"allOf":[{"if":{"properties":{"type":{"const":"update_component"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/C"}}}},{"if":{"properties":{"type":{"const":"update_opening"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/O"}}}},{"if":{"properties":{"type":{"const":"update_pillar"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/P"}}}},{"if":{"properties":{"type":{"const":"update_storage_zone"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/G"}}}},{"if":{"properties":{"type":{"const":"update_architecture"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/A"}}}},{"if":{"properties":{"type":{"const":"update_operational_profile"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/F"}}}},{"if":{"properties":{"type":{"const":"update_workspace_settings"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/W"}}}},{"if":{"properties":{"type":{"const":"update_scenario"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/S"}}}}]}},"intent":{"type":"string","maxLength":2000}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"apply_layout_changes","kind":"act","impl":"imperative","description":"Commit live workspace: previewToken or expectedRevision + operations; idempotencyKey makes retries safe.","title":"Apply","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"$defs":{"i":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"n":{"type":"string","minLength":1,"maxLength":160},"x":{"type":"number","minimum":-1000000,"maximum":1000000},"a":{"type":"number","minimum":0,"maximum":1000000},"k":{"type":"number","minimum":0,"maximum":100000},"h":{"type":"number","minimum":0,"maximum":20000},"d":{"type":"number","exclusiveMinimum":0,"maximum":100000},"r":{"type":"number","minimum":-1000000,"maximum":1000000},"p":{"type":"object","additionalProperties":false,"required":["xMm","yMm"],"properties":{"xMm":{"$ref":"#/$defs/x"},"yMm":{"$ref":"#/$defs/x"}}},"z":{"type":"object","additionalProperties":false,"required":["widthMm","depthMm"],"properties":{"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"},"heightMm":{"$ref":"#/$defs/d"}}},"c":{"type":"string","enum":["flat-top-cook","fryer-cook","range-cook","tandoor-cook","cold-retrieval","food-prep","finish-plate","clean-window","dirty-window","dirty-landing","dish-pre-rinse","dish-wash","clean-landing","hand-wash","mix"]},"l":{"type":"object","additionalProperties":false,"required":["frontMm","kind"],"properties":{"frontMm":{"$ref":"#/$defs/k"},"leftMm":{"$ref":"#/$defs/k"},"rightMm":{"$ref":"#/$defs/k"},"backMm":{"$ref":"#/$defs/k"},"kind":{"enum":["work","door-swing","heat","service"]}}},"D":{"type":"object","additionalProperties":false,"required":["inputFace","outputFace"],"properties":{"inputFace":{"enum":["front","back","left","right"]},"outputFace":{"enum":["front","back","left","right"]}}},"o":{"type":"object","additionalProperties":false,"required":["id","label","kind","wall","offsetMm","widthMm"],"properties":{"id":{"$ref":"#/$defs/i"},"label":{"$ref":"#/$defs/n"},"kind":{"enum":["door","window","service-window","sealed-opening"]},"wall":{"enum":["top","right","bottom","left"]},"segmentIndex":{"type":"integer","minimum":0,"maximum":999},"offsetMm":{"$ref":"#/$defs/a"},"widthMm":{"$ref":"#/$defs/d"},"sillHeightMm":{"$ref":"#/$defs/k"},"heightMm":{"$ref":"#/$defs/d"},"flow":{"enum":["entry","clean-out","dirty-in","closed"]},"doorType":{"enum":["hinged","double-hinged","sliding","double-sliding"]},"swingDepthMm":{"$ref":"#/$defs/k"},"swingHinge":{"enum":["start","end"]},"swingDirection":{"enum":["inward","outward"]}}},"q":{"type":"object","additionalProperties":false,"required":["id","xMm","yMm","widthMm","depthMm"],"properties":{"id":{"$ref":"#/$defs/i"},"xMm":{"$ref":"#/$defs/x"},"yMm":{"$ref":"#/$defs/x"},"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"},"shape":{"const":"round"}}},"Q":{"type":"object","additionalProperties":false,"required":["id","xMm","yMm","widthMm","depthMm"],"properties":{"id":{"$ref":"#/$defs/i"},"xMm":{"$ref":"#/$defs/a"},"yMm":{"$ref":"#/$defs/a"},"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"}}},"g":{"type":"object","additionalProperties":false,"required":["id","xMm","yMm","widthMm","depthMm","label","adjacent"],"properties":{"id":{"$ref":"#/$defs/i"},"xMm":{"$ref":"#/$defs/x"},"yMm":{"$ref":"#/$defs/x"},"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"},"label":{"$ref":"#/$defs/n"},"adjacent":{"type":"boolean"}}},"H":{"type":"object","additionalProperties":false,"required":["id","xMm","yMm","widthMm","depthMm","label","adjacent"],"properties":{"id":{"$ref":"#/$defs/i"},"xMm":{"$ref":"#/$defs/a"},"yMm":{"$ref":"#/$defs/a"},"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"},"label":{"$ref":"#/$defs/n"},"adjacent":{"type":"boolean"}}},"u":{"type":"object","additionalProperties":false,"required":["componentId","duplicateId"],"properties":{"componentId":{"$ref":"#/$defs/i"},"duplicateId":{"$ref":"#/$defs/i"}}},"f":{"type":"object","additionalProperties":false,"required":["role","count"],"properties":{"role":{"enum":["head-chef","sous-chef","cdp","busser-washer"]},"count":{"type":"integer","minimum":0,"maximum":100}}},"v":{"type":"object","additionalProperties":false,"required":["role","count"],"properties":{"role":{"enum":["head-chef","sous-chef","cdp","busser-washer"]},"count":{"type":"integer","minimum":0}}},"t":{"type":"object","additionalProperties":false,"required":["minSeconds","maxSeconds"],"properties":{"minSeconds":{"type":"number","exclusiveMinimum":0,"maximum":86400},"maxSeconds":{"type":"number","exclusiveMinimum":0,"maximum":86400}}},"m":{"type":"object","additionalProperties":false,"required":["label","capability","activeSeconds"],"properties":{"label":{"$ref":"#/$defs/n"},"capability":{"$ref":"#/$defs/c"},"activeSeconds":{"type":"number","exclusiveMinimum":0,"maximum":86400},"passiveSeconds":{"$ref":"#/$defs/t"}}},"e":{"type":"object","additionalProperties":false,"required":["id","name","sharePct","source","steps"],"properties":{"id":{"$ref":"#/$defs/i"},"name":{"$ref":"#/$defs/n"},"sharePct":{"type":"number","minimum":0,"maximum":100},"source":{"enum":["user-provided","imported","template-estimate","system-inferred"]},"steps":{"type":"array","minItems":1,"maxItems":24,"items":{"$ref":"#/$defs/m"}}}},"C":{"type":"object","additionalProperties":false,"properties":{"label":{"$ref":"#/$defs/n"},"xMm":{"$ref":"#/$defs/x"},"yMm":{"$ref":"#/$defs/x"},"category":{"enum":["cooking","cold","prep","washing","landing","storage","hood","custom"]},"heightMm":{"$ref":"#/$defs/d"},"capabilities":{"type":"array","maxItems":100,"items":{"$ref":"#/$defs/c"}},"clearance":{"$ref":"#/$defs/l"},"accessFlow":{"$ref":"#/$defs/D"},"approximate":{"type":"boolean"},"notes":{"type":"string"},"planLayerOrder":{"type":"integer"},"baseElevationMm":{"$ref":"#/$defs/h"},"shelfElevationsMm":{"type":"array","maxItems":100,"items":{"$ref":"#/$defs/h"}}},"minProperties":1},"O":{"type":"object","additionalProperties":false,"properties":{"label":{"$ref":"#/$defs/n"},"kind":{"enum":["door","window","service-window","sealed-opening"]},"wall":{"enum":["top","right","bottom","left"]},"segmentIndex":{"anyOf":[{"type":"integer","minimum":0,"maximum":999},{"type":"null"}]},"offsetMm":{"$ref":"#/$defs/a"},"widthMm":{"$ref":"#/$defs/d"},"sillHeightMm":{"anyOf":[{"$ref":"#/$defs/a"},{"type":"null"}]},"heightMm":{"anyOf":[{"$ref":"#/$defs/d"},{"type":"null"}]},"flow":{"anyOf":[{"enum":["entry","clean-out","dirty-in","closed"]},{"type":"null"}]},"doorType":{"anyOf":[{"enum":["hinged","double-hinged","sliding","double-sliding"]},{"type":"null"}]},"swingDepthMm":{"anyOf":[{"$ref":"#/$defs/a"},{"type":"null"}]},"swingHinge":{"anyOf":[{"enum":["start","end"]},{"type":"null"}]},"swingDirection":{"anyOf":[{"enum":["inward","outward"]},{"type":"null"}]}},"minProperties":1},"P":{"type":"object","additionalProperties":false,"properties":{"xMm":{"$ref":"#/$defs/a"},"yMm":{"$ref":"#/$defs/a"},"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"}},"minProperties":1},"G":{"type":"object","additionalProperties":false,"properties":{"xMm":{"$ref":"#/$defs/a"},"yMm":{"$ref":"#/$defs/a"},"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"},"label":{"$ref":"#/$defs/n"},"adjacent":{"type":"boolean"}},"minProperties":1},"A":{"type":"object","additionalProperties":false,"properties":{"widthMm":{"$ref":"#/$defs/d"},"depthMm":{"$ref":"#/$defs/d"},"wallHeightMm":{"$ref":"#/$defs/d"},"roomPolygon":{"type":"array","minItems":3,"maxItems":1000,"items":{"$ref":"#/$defs/p"}},"openings":{"type":"array","maxItems":1000,"items":{"$ref":"#/$defs/o"}},"pillars":{"type":"array","maxItems":1000,"items":{"$ref":"#/$defs/q"}},"storageZones":{"type":"array","maxItems":1000,"items":{"$ref":"#/$defs/g"}},"locked":{"type":"boolean"}},"minProperties":1},"F":{"type":"object","additionalProperties":false,"properties":{"covers":{"type":"integer","exclusiveMinimum":0},"peakDurationMinutes":{"type":"number","exclusiveMinimum":0},"arrivalPattern":{"enum":["seating-wave","steady","two-waves"]},"serviceStyle":{"type":"string","minLength":1},"menuAssumptions":{"type":"array","items":{"type":"string","minLength":1}},"staff":{"type":"array","items":{"$ref":"#/$defs/v"}},"targetCapacityPerHour":{"type":"number","exclusiveMinimum":0}},"minProperties":1},"W":{"type":"object","additionalProperties":false,"properties":{"displayUnit":{"enum":["mm","cm","in","ft"]},"snapMm":{"$ref":"#/$defs/d"}},"minProperties":1},"S":{"type":"object","additionalProperties":false,"properties":{"name":{"$ref":"#/$defs/n"},"covers":{"type":"integer","minimum":1,"maximum":100000},"durationMinutes":{"type":"number","exclusiveMinimum":0,"maximum":10080},"arrivalPattern":{"enum":["seating-wave","steady","two-waves"]},"cookToOrderRatio":{"type":"number","minimum":0,"maximum":1},"seed":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"staff":{"type":"array","minItems":1,"maxItems":100,"items":{"$ref":"#/$defs/f"}},"checks":{"type":"object","additionalProperties":false,"properties":{"collisions":{"type":"boolean"},"doorSwings":{"type":"boolean"},"dirtyCleanCrossings":{"type":"boolean"}},"minProperties":1},"taskDurations":{"type":"object","propertyNames":{"enum":["flat-top-cook","fryer-cook","range-cook","tandoor-cook","cold-retrieval","food-prep","finish-plate","clean-window","dirty-window","dirty-landing","dish-pre-rinse","dish-wash","clean-landing","hand-wash","mix"]},"additionalProperties":{"$ref":"#/$defs/t"}},"stationCapacities":{"type":"object","propertyNames":{"$ref":"#/$defs/i"},"additionalProperties":{"type":"integer","minimum":1,"maximum":100}},"serviceStyle":{"$ref":"#/$defs/n"},"variability":{"enum":["low","typical","high"]},"menuItems":{"type":"array","maxItems":200,"items":{"$ref":"#/$defs/e"}}},"minProperties":1}},"oneOf":[{"required":["previewToken"]},{"required":["expectedRevision","operations"]}],"properties":{"previewToken":{"type":"string"},"expectedRevision":{"type":"integer"},"operations":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","variantId"],"properties":{"type":{"type":"string"},"variantId":{"$ref":"#/$defs/i"},"name":{"$ref":"#/$defs/n"},"parentVariantId":{"$ref":"#/$defs/i"},"equipmentMode":{"enum":["duplicate","empty"]},"componentId":{"$ref":"#/$defs/i"},"catalogId":{"$ref":"#/$defs/i"},"position":{"$ref":"#/$defs/p"},"dimensions":{"$ref":"#/$defs/z"},"rotationDeg":{"$ref":"#/$defs/r"},"configurationId":{"$ref":"#/$defs/i"},"skinId":{"$ref":"#/$defs/i"},"label":{"$ref":"#/$defs/n"},"capabilities":{"type":"array","maxItems":100,"items":{"$ref":"#/$defs/i"}},"patch":{"type":"object"},"componentIds":{"type":"array","minItems":1,"maxItems":500,"uniqueItems":true,"items":{"$ref":"#/$defs/i"}},"anchor":{"$ref":"#/$defs/p"},"delta":{"$ref":"#/$defs/p"},"deltaDeg":{"$ref":"#/$defs/r"},"locked":{"type":"boolean"},"components":{"type":"array","minItems":1,"maxItems":500,"items":{"$ref":"#/$defs/u"}},"offset":{"$ref":"#/$defs/p"},"opening":{"$ref":"#/$defs/o"},"pillar":{"$ref":"#/$defs/Q"},"storageZone":{"$ref":"#/$defs/H"},"id":{"$ref":"#/$defs/i"},"scenarioId":{"$ref":"#/$defs/i"},"runId":{"$ref":"#/$defs/i"},"resultId":{"$ref":"#/$defs/i"},"newVariantId":{"$ref":"#/$defs/i"}},"oneOf":[{"properties":{"type":{"const":"create_layout"}},"required":["name","equipmentMode"],"propertyNames":{"enum":["type","variantId","name","parentVariantId","equipmentMode"]}},{"properties":{"type":{"enum":["activate_layout","remove_layout"]}},"propertyNames":{"enum":["type","variantId"]}},{"properties":{"type":{"const":"rename_layout"}},"required":["name"],"propertyNames":{"enum":["type","variantId","name"]}},{"properties":{"type":{"const":"add_component"}},"required":["componentId","catalogId","position"],"propertyNames":{"enum":["type","variantId","componentId","catalogId","position","dimensions","rotationDeg","configurationId","skinId"]}},{"properties":{"type":{"const":"add_custom_component"}},"required":["componentId","label","position","dimensions"],"propertyNames":{"enum":["type","variantId","componentId","label","position","dimensions","rotationDeg","capabilities"]}},{"properties":{"type":{"const":"configure_component"}},"required":["componentId","configurationId"],"propertyNames":{"enum":["type","variantId","componentId","configurationId"]}},{"properties":{"type":{"const":"skin_component"}},"required":["componentId","skinId"],"propertyNames":{"enum":["type","variantId","componentId","skinId"]}},{"properties":{"type":{"const":"update_component"}},"required":["componentId","patch"],"propertyNames":{"enum":["type","variantId","componentId","patch"]}},{"properties":{"type":{"const":"move_components"}},"required":["componentIds","anchor"],"propertyNames":{"enum":["type","variantId","componentIds","anchor"]}},{"properties":{"type":{"const":"nudge_components"}},"required":["componentIds","delta"],"propertyNames":{"enum":["type","variantId","componentIds","delta"]}},{"properties":{"type":{"const":"rotate_components"}},"required":["componentIds","deltaDeg"],"propertyNames":{"enum":["type","variantId","componentIds","deltaDeg"]}},{"properties":{"type":{"const":"resize_component"}},"required":["componentId","dimensions"],"propertyNames":{"enum":["type","variantId","componentId","dimensions"]}},{"properties":{"type":{"const":"set_component_dimensions_lock"}},"required":["componentId","locked"],"propertyNames":{"enum":["type","variantId","componentId","locked"]}},{"properties":{"type":{"const":"duplicate_components"}},"required":["components"],"propertyNames":{"enum":["type","variantId","components","offset"]}},{"properties":{"type":{"const":"lock_components"}},"required":["componentIds","locked"],"propertyNames":{"enum":["type","variantId","componentIds","locked"]}},{"properties":{"type":{"const":"remove_components"}},"required":["componentIds"],"propertyNames":{"enum":["type","variantId","componentIds"]}},{"properties":{"type":{"const":"add_opening"}},"required":["opening"],"propertyNames":{"enum":["type","variantId","opening"]}},{"properties":{"type":{"const":"add_pillar"}},"required":["pillar"],"propertyNames":{"enum":["type","variantId","pillar"]}},{"properties":{"type":{"const":"add_storage_zone"}},"required":["storageZone"],"propertyNames":{"enum":["type","variantId","storageZone"]}},{"properties":{"type":{"enum":["update_opening","update_pillar","update_storage_zone"]}},"required":["id","patch"],"propertyNames":{"enum":["type","variantId","id","patch"]}},{"properties":{"type":{"enum":["remove_opening","remove_pillar","remove_storage_zone"]}},"required":["id"],"propertyNames":{"enum":["type","variantId","id"]}},{"properties":{"type":{"const":"update_architecture"}},"required":["patch"],"propertyNames":{"enum":["type","variantId","patch"]}},{"properties":{"type":{"const":"update_operational_profile"}},"required":["patch"],"propertyNames":{"enum":["type","variantId","patch"]}},{"properties":{"type":{"const":"update_workspace_settings"}},"required":["patch"],"propertyNames":{"enum":["type","variantId","patch"]}},{"properties":{"type":{"const":"update_scenario"}},"required":["scenarioId","patch"],"propertyNames":{"enum":["type","variantId","scenarioId","patch"]}},{"properties":{"type":{"const":"adopt_auto_layout_result"}},"required":["runId","resultId","newVariantId","name"],"propertyNames":{"enum":["type","variantId","runId","resultId","newVariantId","name"]}}],"allOf":[{"if":{"properties":{"type":{"const":"update_component"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/C"}}}},{"if":{"properties":{"type":{"const":"update_opening"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/O"}}}},{"if":{"properties":{"type":{"const":"update_pillar"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/P"}}}},{"if":{"properties":{"type":{"const":"update_storage_zone"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/G"}}}},{"if":{"properties":{"type":{"const":"update_architecture"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/A"}}}},{"if":{"properties":{"type":{"const":"update_operational_profile"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/F"}}}},{"if":{"properties":{"type":{"const":"update_workspace_settings"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/W"}}}},{"if":{"properties":{"type":{"const":"update_scenario"}}},"then":{"properties":{"patch":{"$ref":"#/$defs/S"}}}}]}},"intent":{"type":"string"},"idempotencyKey":{"type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"step_workspace_history","kind":"act","impl":"imperative","description":"Undo or redo the last workspace step (human or agent edit alike). Each step consumes one undo/redo entry and increments the revision.","title":"Undo or redo","inputSchema":{"type":"object","additionalProperties":false,"required":["direction"],"properties":{"direction":{"type":"string","enum":["undo","redo"],"description":"Whether to undo or redo one step."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"run_simulation","kind":"act","impl":"imperative","description":"Run and retain one deterministic service simulation for a scenario and layout. The exact full result is shared with the visible app; playback controls whether it plays, pauses, or only stores, and navigateTo opens Simulate by default. Does not change the document revision.","title":"Run service simulation","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"scenarioId":{"type":"string","description":"Optional scenario ID; defaults to the active scenario."},"variantId":{"type":"string","description":"Optional layout variant ID; defaults to the active variant."},"seed":{"type":"number","description":"Optional deterministic seed; defaults to the scenario seed."},"outputMode":{"type":"string","enum":["metrics-only","full"],"description":"Returned detail level; defaults to metrics-only. The shared app result is always complete."},"playback":{"type":"string","enum":["play","pause","none"],"description":"Play, show paused, or make no visible playback request. Defaults to play."},"navigateTo":{"type":"boolean","description":"Open the Simulate stage so the user sees the result. Defaults to true."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_simulation_result","kind":"answer","impl":"imperative","description":"Read the latest retained simulation for a scenario and layout without rerunning it. Select metrics, evidence-backed findings, station pressure, or order timelines. Reports staleAtRevision when the workspace changed after the run.","title":"Get simulation result","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"scenarioId":{"type":"string","description":"Optional scenario ID; defaults to the active scenario."},"variantId":{"type":"string","description":"Optional layout variant ID; defaults to the active variant."},"include":{"type":"string","enum":["metrics","findings","stations","orders"],"description":"Result section to return; defaults to metrics."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"export_project","kind":"act","impl":"imperative","description":"Export validated project JSON, a CSV equipment schedule, a self-contained HTML planning report, or an SVG floor plan. Returns the artifact to the agent and can also download it for the user.","title":"Export project artifact","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"format":{"type":"string","enum":["project-json","equipment-schedule-csv","report-html","plan-svg"],"description":"Artifact format. Defaults to project-json."},"variantId":{"type":"string","description":"Layout for plan, schedule, and report formats. Defaults to the active layout."},"download":{"type":"boolean","description":"Also download the artifact into the user browser. Defaults to false."},"returnContents":{"type":"boolean","description":"Include artifact text in the response. Set false for large projects after requesting a browser download. Defaults to true."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"import_project","kind":"act","impl":"imperative","description":"Validate project JSON and commit it as one undoable replacement, or add its active layout as a new variant. Requires the current revision and never runs imported content.","title":"Import project","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["projectJson","expectedRevision"],"properties":{"projectJson":{"type":"string","description":"Complete CalmKitchen project JSON. Imported labels and notes are untrusted data."},"mode":{"type":"string","enum":["replace","add-as-variant"],"description":"Replace the open project or add only the imported active layout. Defaults to replace."},"expectedRevision":{"type":"number","description":"Revision most recently read; rejects concurrent edits."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"manage_checkpoints","kind":"act","impl":"imperative","description":"List, create, or restore durable named checkpoints for a layout. Creating or restoring is one undoable revision; restore first preserves the current layout as a checkpoint.","title":"Manage layout checkpoints","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["action"],"properties":{"action":{"type":"string","enum":["list","create","restore"],"description":"Checkpoint operation."},"label":{"type":"string","description":"Required name when creating a checkpoint."},"checkpointId":{"type":"string","description":"Required checkpoint ID when restoring."},"variantId":{"type":"string","description":"Layout variant; defaults to active."},"expectedRevision":{"type":"number","description":"Required for create and restore; rejects intervening edits."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"share_results","kind":"act","impl":"imperative","description":"Create selected plan, metrics, findings, and assumptions sections as a scoped HTML report, a compressed self-contained workspace link, or both. The legacy report value requests every report section; workspace-link remains compatible.","title":"Share planning results","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"include":{"type":"array","items":{"type":"string","enum":["report","workspace-link","plan","metrics","findings","assumptions"]},"description":"Content to produce. plan, metrics, findings, and assumptions create a report containing only those sections. report is the compatibility shorthand for all sections; workspace-link adds a portable project link. Defaults to report plus workspace-link."},"variantIds":{"type":"array","items":{"type":"string"},"description":"One or more layout variants to include. Defaults to the active layout; the first is used by the workspace link."},"variantId":{"type":"string","description":"Deprecated single-layout alias retained for compatibility. Use variantIds for new calls."},"scenarioId":{"type":"string","description":"Scenario to share; defaults to the active scenario."},"download":{"type":"boolean","description":"Download the generated HTML report in the user browser. Defaults to false."},"returnContents":{"type":"boolean","description":"Include the complete report HTML in the tool response. Set false for large reports. Defaults to true."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"compare_layouts","kind":"act","impl":"imperative","description":"Compare two saved layout variants under the same scenario and deterministic seed. Returns exact spatial changes, service-metric deltas, and evidence-backed findings; optionally opens the visible Compare overlay. Does not change the project revision.","title":"Compare layouts","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["baselineVariantId","candidateVariantId"],"properties":{"baselineVariantId":{"type":"string","description":"Saved layout variant used as the comparison baseline."},"candidateVariantId":{"type":"string","description":"Saved layout variant evaluated against the baseline."},"scenarioId":{"type":"string","description":"Optional scenario ID; defaults to the active scenario."},"openOverlay":{"type":"boolean","description":"Open the visible Compare overlay after a successful comparison. Defaults to false."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"run_auto_layout","kind":"act","impl":"imperative","description":"Use only when the user explicitly requests an automated multi-candidate search; do not use for routine improvements that a focused preview/apply edit can solve. Starts a computationally expensive, deterministic, revision-bound search without changing the project. Poll get_auto_layout_run, then adopt only a user-chosen confirmed finalist.","title":"Run auto-layout","inputSchema":{"type":"object","additionalProperties":false,"properties":{"variantId":{"type":"string","description":"Optional baseline variant ID; defaults to the active variant."},"scenarioId":{"type":"string","description":"Optional scenario ID; defaults to the active scenario."},"objective":{"type":"string","enum":["balanced","service","travel","minimal-change"],"description":"Optimization priority; defaults to balanced."},"seed":{"type":"number","description":"Deterministic non-negative integer seed. Defaults to a normalized form of the scenario seed."},"maxCandidates":{"type":"number","description":"Maximum candidate evaluations, 1–200. Defaults to 60."},"maxDurationMs":{"type":"number","description":"Time budget in milliseconds, 100–120000. Defaults to 30000."},"targetP90WaitSeconds":{"type":"number","description":"Optional target P90 order wait in seconds."},"minimumAisleMm":{"type":"number","description":"Optional minimum aisle rule in millimetres; defaults to the layout constraint."},"permissions":{"type":"object","additionalProperties":false,"required":["placement","equipmentRedesign","architecture"],"properties":{"placement":{"type":"boolean"},"equipmentRedesign":{"type":"boolean"},"architecture":{"type":"boolean"}}},"openOverlay":{"type":"boolean","description":"Open manual Auto-layout controls. Agent-run progress is returned by get_auto_layout_run; defaults to false."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_auto_layout_run","kind":"answer","impl":"imperative","description":"Read status, progress, and compact confirmed-finalist and candidate summaries from a run started by run_auto_layout. Page candidates with offset and limit; pass a confirmed finalist resultId to retrieve its complete layout. Reports when its source project revision has become stale; never changes or adopts a layout.","title":"Get auto-layout run","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["runId"],"properties":{"runId":{"type":"string","minLength":1,"maxLength":160,"description":"Run ID returned by run_auto_layout."},"resultId":{"type":"string","minLength":1,"maxLength":160,"description":"Optional confirmed finalist ID. When present, finalist contains its complete saved-layout candidate."},"offset":{"type":"integer","minimum":0,"description":"Zero-based candidate-summary offset. Defaults to 0."},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"Maximum candidate summaries to return. Defaults to 20."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"cancel_auto_layout_run","kind":"transact","impl":"imperative","description":"Cancel one active auto-layout run by ID. This affects transient optimizer work only and never changes the project revision.","title":"Cancel auto-layout run","inputSchema":{"type":"object","additionalProperties":false,"required":["runId"],"properties":{"runId":{"type":"string","description":"Active run ID returned by run_auto_layout."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"adopt_auto_layout_candidate","kind":"act","impl":"imperative","description":"Save one confirmed finalist from a completed auto-layout run as a new child layout. Requires the unchanged source revision and commits through the same atomic adoption operation as the human Auto-layout workspace.","title":"Adopt auto-layout candidate","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["runId","resultId","expectedRevision","newVariantId","name"],"properties":{"runId":{"type":"string","description":"Completed run ID returned by run_auto_layout."},"resultId":{"type":"string","description":"Confirmed finalist ID returned by get_auto_layout_run."},"expectedRevision":{"type":"number","description":"Source revision returned by run_auto_layout; adoption fails if the project changed."},"newVariantId":{"type":"string","description":"Unique ID for the saved layout variant."},"name":{"type":"string","description":"Human-readable name for the saved layout."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"edit_architecture","kind":"act","impl":"imperative","description":"Directly edit room dimensions, openings, pillars, and storage zones. All ordered edits are validated and committed atomically as one revision and one undo step. Honors architecture locks and requires expectedRevision.","title":"Edit room architecture","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["expectedRevision","operations"],"properties":{"expectedRevision":{"type":"number","description":"Revision returned by the latest read; a mismatch rejects the whole edit."},"variantId":{"type":"string","description":"Layout to edit; defaults to the active layout."},"intent":{"type":"string","description":"Short human-readable reason for the edit."},"operations":{"type":"array","minItems":1,"maxItems":200,"description":"Granular architecture edits, applied in order and committed together.","items":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","patch"],"properties":{"type":{"type":"string","enum":["update_room"]},"patch":{"type":"object","additionalProperties":false,"required":[],"properties":{"widthMm":{"type":"number"},"depthMm":{"type":"number"},"wallHeightMm":{"type":"number"},"roomPolygon":{"type":"array","minItems":3,"items":{"type":"object","additionalProperties":false,"required":["xMm","yMm"],"properties":{"xMm":{"type":"number"},"yMm":{"type":"number"}}}}}}}},{"type":"object","additionalProperties":false,"required":["type","opening"],"properties":{"type":{"type":"string","enum":["add_opening"]},"opening":{"type":"object","additionalProperties":false,"required":["id","label","kind","wall","offsetMm","widthMm"],"properties":{"id":{"type":"string"},"label":{"type":"string"},"kind":{"type":"string","enum":["door","window","service-window","sealed-opening"]},"wall":{"type":"string","enum":["top","right","bottom","left"]},"segmentIndex":{"type":"number"},"offsetMm":{"type":"number"},"widthMm":{"type":"number"},"sillHeightMm":{"type":"number"},"heightMm":{"type":"number"},"flow":{"type":"string","enum":["entry","clean-out","dirty-in","closed"]},"doorType":{"type":"string","enum":["hinged","double-hinged","sliding","double-sliding"]},"swingDepthMm":{"type":"number"},"swingHinge":{"type":"string","enum":["start","end"]},"swingDirection":{"type":"string","enum":["inward","outward"]}}}}},{"type":"object","additionalProperties":false,"required":["type","id","patch"],"properties":{"type":{"type":"string","enum":["update_opening"]},"id":{"type":"string"},"patch":{"type":"object","additionalProperties":false,"required":[],"properties":{"label":{"type":"string"},"kind":{"type":"string","enum":["door","window","service-window","sealed-opening"]},"wall":{"type":"string","enum":["top","right","bottom","left"]},"segmentIndex":{"type":["number","null"]},"offsetMm":{"type":"number"},"widthMm":{"type":"number"},"sillHeightMm":{"type":["number","null"]},"heightMm":{"type":["number","null"]},"flow":{"type":["string","null"],"enum":["entry","clean-out","dirty-in","closed",null]},"doorType":{"type":["string","null"],"enum":["hinged","double-hinged","sliding","double-sliding",null]},"swingDepthMm":{"type":["number","null"]},"swingHinge":{"type":["string","null"],"enum":["start","end",null]},"swingDirection":{"type":["string","null"],"enum":["inward","outward",null]}}}}},{"type":"object","additionalProperties":false,"required":["type","id"],"properties":{"type":{"type":"string","enum":["remove_opening"]},"id":{"type":"string"}}},{"type":"object","additionalProperties":false,"required":["type","pillar"],"properties":{"type":{"type":"string","enum":["add_pillar"]},"pillar":{"type":"object","additionalProperties":false,"required":["id","xMm","yMm","widthMm","depthMm"],"properties":{"id":{"type":"string"},"xMm":{"type":"number"},"yMm":{"type":"number"},"widthMm":{"type":"number"},"depthMm":{"type":"number"}}}}},{"type":"object","additionalProperties":false,"required":["type","id","patch"],"properties":{"type":{"type":"string","enum":["update_pillar"]},"id":{"type":"string"},"patch":{"type":"object","additionalProperties":false,"required":[],"properties":{"xMm":{"type":"number"},"yMm":{"type":"number"},"widthMm":{"type":"number"},"depthMm":{"type":"number"}}}}},{"type":"object","additionalProperties":false,"required":["type","id"],"properties":{"type":{"type":"string","enum":["remove_pillar"]},"id":{"type":"string"}}},{"type":"object","additionalProperties":false,"required":["type","storageZone"],"properties":{"type":{"type":"string","enum":["add_storage_zone"]},"storageZone":{"type":"object","additionalProperties":false,"required":["id","label","xMm","yMm","widthMm","depthMm","adjacent"],"properties":{"id":{"type":"string"},"xMm":{"type":"number"},"yMm":{"type":"number"},"widthMm":{"type":"number"},"depthMm":{"type":"number"},"label":{"type":"string"},"adjacent":{"type":"boolean"}}}}},{"type":"object","additionalProperties":false,"required":["type","id","patch"],"properties":{"type":{"type":"string","enum":["update_storage_zone"]},"id":{"type":"string"},"patch":{"type":"object","additionalProperties":false,"required":[],"properties":{"xMm":{"type":"number"},"yMm":{"type":"number"},"widthMm":{"type":"number"},"depthMm":{"type":"number"},"label":{"type":"string"},"adjacent":{"type":"boolean"}}}}},{"type":"object","additionalProperties":false,"required":["type","id"],"properties":{"type":{"type":"string","enum":["remove_storage_zone"]},"id":{"type":"string"}}}]}}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Productivity & Business","favicon":"/favicons/planner.kitchen.hotelos.ai.png","apiSurface":"spec","toolCount":26}}