{"ok":true,"site":{"host":"puppo.github.io","url":"https://puppo.github.io/DOMus/","type":"live","desc":"DOMus","tools":[{"name":"list_room_styles","kind":"answer","impl":"imperative","description":"List the bedroom design styles available in DOMus, each with a one-line tagline. Call this first when the user wants a designed room without naming a style.","inputSchema":{},"outputSchema":{"type":"object","properties":{"styles":{"type":"string"}},"required":["styles"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"get_style_guide","kind":"answer","impl":"imperative","description":"Get the full design guide for one bedroom style — palette, rules, recommended furniture composition, and placement hints. Pass one of: scandinavian, japandi, boho, industrial, minimalist.","inputSchema":{"type":"object","properties":{"style":{"type":"string"}},"required":["style"]},"outputSchema":{"type":"object","properties":{"guide":{"type":"string"}},"required":["guide"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"suggest_color_palette","kind":"act","impl":"imperative","description":"Return a 5-color coordinated palette (hex codes) for a given style. The keys are primary/secondary/accent/wall/floor and can be passed straight to set_room_colors and set_furniture_color.","inputSchema":{"type":"object","properties":{"style":{"type":"string"},"baseHex":{"anyOf":[{"not":{}},{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}],"description":"Optional anchor hex color; the palette stays style-faithful either way."}},"required":["style"]},"outputSchema":{"type":"object","properties":{"palette_json":{"type":"string"}},"required":["palette_json"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"suggest_layout","kind":"act","impl":"imperative","description":"Suggest an arrangement plan (in plain text with sample coordinates) tailored to a given style and the current room dimensions. Always call get_room_state first to read the current dimensions.","inputSchema":{"type":"object","properties":{"style":{"type":"string"},"room":{"type":"object","properties":{"width":{"type":"number"},"length":{"type":"number"}},"required":["width","length"],"additionalProperties":false}},"required":["style","room"]},"outputSchema":{"type":"object","properties":{"layout":{"type":"string"}},"required":["layout"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"furniture_combo_for_style","kind":"answer","impl":"imperative","description":"Return a list of recommended furniture pieces (kind, target placement notes, palette) for a given style. Use this to plan the sequence of add_furniture calls.","inputSchema":{"type":"object","properties":{"style":{"type":"string"}},"required":["style"]},"outputSchema":{"type":"object","properties":{"combo_json":{"type":"string"}},"required":["combo_json"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"get_design_principles","kind":"answer","impl":"imperative","description":"Return a short text on a single design principle. Useful for deepening a specific aspect (balance, rhythm, focal_point, lighting, proportion).","inputSchema":{"type":"object","properties":{"topic":{"type":"string","enum":["balance","rhythm","focal_point","lighting","proportion"]}},"required":["topic"]},"outputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"get_room_state","kind":"answer","impl":"imperative","description":"Return the full current room state — dimensions, colors, every furniture item with id/position/colors. Call this before mutating anything to read current values.","inputSchema":{},"outputSchema":{"type":"object","properties":{"state_json":{"type":"string"}},"required":["state_json"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"set_room_dimensions","kind":"act","impl":"imperative","description":"Set the bedroom dimensions in meters. Width and length 2-20, height 2-4.","inputSchema":{"type":"object","properties":{"width":{"type":"number","minimum":2,"maximum":20},"length":{"type":"number","minimum":2,"maximum":20},"height":{"type":"number","minimum":2,"maximum":4}},"required":["width","length","height"]},"outputSchema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"set_room_colors","kind":"act","impl":"imperative","description":"Set the wall and/or floor color of the room. Both args are optional 6-digit hex (#RRGGBB).","inputSchema":{"type":"object","properties":{"wallColor":{"anyOf":[{"not":{}},{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}]},"floorColor":{"anyOf":[{"not":{}},{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}]}}},"outputSchema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"add_furniture","kind":"act","impl":"imperative","description":"Add a furniture item at exact room-local coordinates (meters). Room origin is at the (0,0,0) floor corner; x along room width, z along room length, y up. The store clamps the footprint to the room bounds — out-of-bounds placements are clamped silently. Returns the new item id, which you need for any later set_furniture_color / move_furniture / rotate_furniture calls.","inputSchema":{"type":"object","properties":{"kind":{"type":"string","enum":["bed","nightstand","wardrobe","dresser","lamp"]},"position":{"type":"object","properties":{"x":{"type":"number","description":"meters along room width (X) axis"},"y":{"type":"number","description":"meters above the floor; 0 = on the floor"},"z":{"type":"number","description":"meters along room length (Z) axis"}},"required":["x","y","z"],"additionalProperties":false},"rotationY":{"anyOf":[{"not":{}},{"type":"number","minimum":0,"maximum":6.283185307179586}],"description":"Rotation around the vertical axis, in radians. 0 = facing +Z, PI/2 = facing +X."},"scale":{"anyOf":[{"not":{}},{"type":"object","properties":{"x":{"type":"number","exclusiveMinimum":0},"y":{"type":"number","exclusiveMinimum":0},"z":{"type":"number","exclusiveMinimum":0}},"required":["x","y","z"],"additionalProperties":false}]},"colors":{"anyOf":[{"not":{}},{"type":"object","properties":{"primary":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"secondary":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"accent":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}},"additionalProperties":false}]}},"required":["kind","position"]},"outputSchema":{"type":"object","properties":{"id":{"type":"string"},"message":{"type":"string"}},"required":["id","message"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"remove_furniture","kind":"act","impl":"imperative","description":"Remove a furniture item by id. Call list_furniture first if you need the id.","inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"]},"outputSchema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"list_furniture","kind":"answer","impl":"imperative","description":"Return a one-line-per-item summary table (id, kind, position, colors). Use this to discover ids before mutating them.","inputSchema":{},"outputSchema":{"type":"object","properties":{"items_json":{"type":"string"}},"required":["items_json"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"set_furniture_color","kind":"act","impl":"imperative","description":"Set one color slot of a furniture item. The slot depends on the kind: bed/nightstand/wardrobe/dresser/lamp all accept primary, secondary, accent (some slots may be unused).","inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slot":{"type":"string","enum":["primary","secondary","accent"]},"hex":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}},"required":["id","slot","hex"]},"outputSchema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"set_furniture_scale","kind":"act","impl":"imperative","description":"Set per-axis scale multipliers for a furniture item. Each axis is clamped to the kind-specific range.","inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"x":{"anyOf":[{"not":{}},{"type":"number","exclusiveMinimum":0}]},"y":{"anyOf":[{"not":{}},{"type":"number","exclusiveMinimum":0}]},"z":{"anyOf":[{"not":{}},{"type":"number","exclusiveMinimum":0}]}},"required":["id"]},"outputSchema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"move_furniture","kind":"act","impl":"imperative","description":"Move a furniture item to new (x, z) coordinates. Y is preserved. Position is clamped to room bounds.","inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"x":{"type":"number","description":"meters"},"z":{"type":"number","description":"meters"}},"required":["id","x","z"]},"outputSchema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"rotate_furniture","kind":"act","impl":"imperative","description":"Rotate a furniture item around the vertical axis. rotationY is in radians [0, 2π).","inputSchema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"rotationY":{"type":"number","minimum":0,"maximum":6.283185307179586}},"required":["id","rotationY"]},"outputSchema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"undo","kind":"act","impl":"imperative","description":"Undo the last mutation. Reverts to the previous state of the scene.","inputSchema":{},"outputSchema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"redo","kind":"act","impl":"imperative","description":"Redo the last undone mutation.","inputSchema":{},"outputSchema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"},{"name":"reset_room","kind":"act","impl":"imperative","description":"Reset the room to default dimensions and remove all furniture. Cannot be undone except via the global undo stack.","inputSchema":{},"outputSchema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/DOMus/"}],"apiSurface":"spec","category":"AI & Agents","toolCount":19}}