{"ok":true,"site":{"host":"roomdex.vercel.app","url":"https://roomdex.vercel.app/","type":"live","desc":"A little space, reimagined. Arrange furniture, explore layouts, and make a room your own with RoomDex.","tools":[{"name":"inspect_room","kind":"act","impl":"imperative","description":"Inspect room dimensions, derived floor area, architecture, circulation, shared view, revision, and a bounded furniture page with geometry, finish, mounting, support, and art intent.","title":"Inspect room","annotations":{"readOnlyHint":true,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"inventoryOffset":{"type":"integer","minimum":0,"maximum":120,"description":"Zero-based inventory offset. Follow nextInventoryOffset until hasMore is false."},"inventoryLimit":{"type":"integer","minimum":1,"maximum":20,"description":"Maximum inventory entries requested. The response may return fewer to stay within its output budget."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"review_recent_changes","kind":"answer","impl":"imperative","description":"Return up to five newest committed room changes retained locally, with actor, revision, timestamp, and bounded summary, newest first.","title":"Review recent changes","annotations":{"readOnlyHint":true,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_furniture","kind":"answer","impl":"imperative","description":"List RoomDex's curated furniture catalog with real-world dimensions, placement type, and support-surface capability.","title":"List furniture","annotations":{"readOnlyHint":true,"untrustedContentHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"analyze_layout","kind":"act","impl":"imperative","description":"Analyze the current room for furniture collisions, room-boundary errors, tight clearances, blocked wall openings, and circulation obstructions in the walkway or entry landing.","title":"Analyze layout","annotations":{"readOnlyHint":true,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"compare_layouts","kind":"act","impl":"imperative","description":"Simulate every built-in room arrangement without changing the room. Compare fit, moved catalog pieces, issue counts, chair-to-window distance, chair-to-lamp clearance, and sofa-to-chair clearance before applying one.","title":"Compare layouts","annotations":{"readOnlyHint":true,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"measure_clearance","kind":"act","impl":"imperative","description":"Measure horizontal edge-to-edge clearance in feet between two uniquely named room items.","title":"Measure clearance","annotations":{"readOnlyHint":true,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"first":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"second":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."}},"required":["first","second"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"inspect_furniture","kind":"answer","impl":"imperative","description":"Inspect one named item's exact geometry, finish, mounting, support, and artwork direction at the current revision. Does not select or change it.","title":"Inspect furniture","annotations":{"readOnlyHint":true,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."}},"required":["target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"preview_furniture_move","kind":"act","impl":"imperative","description":"Simulate moving one named item and its supported objects without changing the room or selection. Returns whether the move can apply and the resulting layout issue counts. A valid move may still have clearance or collision concerns; inspect the analysis before committing.","title":"Preview furniture move","annotations":{"readOnlyHint":true,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"x":{"type":"number","minimum":-100,"maximum":100,"description":"Center position across the room in feet."},"y":{"type":"number","minimum":0,"maximum":40,"description":"Base elevation above the floor in feet."},"z":{"type":"number","minimum":-100,"maximum":100,"description":"Center position from back to front in feet."},"relation":{"type":"string","enum":["left_of","right_of","in_front_of","behind","beside","on"],"description":"Relationship to the named anchor."},"anchor":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible name of the anchor item."},"side":{"type":"string","enum":["left","right"],"description":"Preferred side when relation is beside."},"wall":{"type":"string","enum":["back","front","left","right"],"description":"Wall to place the item against."},"offset":{"type":"number","minimum":-100,"maximum":100,"description":"Position along the selected wall, measured from its center."},"gap":{"type":"number","minimum":0,"maximum":20,"description":"Requested edge-to-edge gap in feet."},"elevation":{"type":"number","minimum":0,"maximum":40,"description":"Bottom elevation above the floor for a wall-mounted item."}},"required":["target"],"additionalProperties":false,"oneOf":[{"title":"Coordinates","required":["x","z"],"not":{"anyOf":[{"required":["relation"]},{"required":["anchor"]},{"required":["side"]},{"required":["wall"]},{"required":["offset"]},{"required":["gap"]},{"required":["elevation"]}]}},{"title":"Relative to furniture","required":["relation","anchor"],"not":{"anyOf":[{"required":["x"]},{"required":["y"]},{"required":["z"]},{"required":["wall"]},{"required":["offset"]},{"required":["elevation"]}]}},{"title":"Against a wall","required":["wall"],"not":{"anyOf":[{"required":["x"]},{"required":["y"]},{"required":["z"]},{"required":["relation"]},{"required":["anchor"]},{"required":["side"]}]}}]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"select_furniture","kind":"act","impl":"imperative","description":"Select one named item in the shared canvas and inspector, or use null to clear the selection. Does not alter furniture, create an undo step, or advance the room revision.","title":"Select furniture","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"target":{"anyOf":[{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},{"type":"null"}]},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"move_furniture_group","kind":"act","impl":"imperative","description":"Translate up to twelve named floor pieces together by an offset in feet. Attached surface objects follow automatically. Commits one undoable change or rejects the entire move if affected items overlap, leave the room, block openings, or obstruct circulation.","title":"Move furniture group","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"targets":{"type":"array","minItems":1,"maxItems":12,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"description":"One to twelve distinct, uniquely named room items."},"offsetX":{"type":"number","minimum":-100,"maximum":100,"description":"Horizontal group offset in feet; defaults to zero."},"offsetZ":{"type":"number","minimum":-100,"maximum":100,"description":"Depth group offset in feet; defaults to zero."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["targets"],"additionalProperties":false,"anyOf":[{"required":["offsetX"]},{"required":["offsetZ"]}]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"style_furniture_group","kind":"act","impl":"imperative","description":"Apply a shared color, material, or both to up to twelve named items in one undoable change. Preserves geometry and selection. Every target must resolve before any change is made.","title":"Style furniture group","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"targets":{"type":"array","minItems":1,"maxItems":12,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"description":"One to twelve distinct, uniquely named room items."},"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Shared item color as #RRGGBB."},"material":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Shared material description."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["targets"],"additionalProperties":false,"anyOf":[{"required":["color"]},{"required":["material"]}]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"align_furniture","kind":"act","impl":"imperative","description":"Align the centers of named floor pieces to an anchor's x or z coordinate in one undoable change. Preserves the other coordinate and rotation; supported objects follow. Rejects the whole change if affected items overlap, leave the room, block openings, or obstruct circulation.","title":"Align furniture","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"targets":{"type":"array","minItems":1,"maxItems":12,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"description":"One to twelve distinct, uniquely named room items."},"anchor":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"axis":{"type":"string","enum":["x","z"],"description":"Coordinate to match to the anchor's center."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["targets","anchor","axis"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_wall_art","kind":"act","impl":"imperative","description":"Redesign existing wall art with a new visual direction, palette, or both. Preserves the artwork's name, dimensions, wall, and position. Use create_wall_art to add another piece.","title":"Update wall art","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"style":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Visual direction, such as geometric or layered color fields."},"palette":{"type":"array","minItems":2,"maxItems":6,"items":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Palette color as #RRGGBB."}},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["target"],"additionalProperties":false,"anyOf":[{"required":["style"]},{"required":["palette"]}]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"restore_room","kind":"act","impl":"imperative","description":"Start over in one undoable change. Mode demo restores the original furnished room, shell, and view. Mode empty removes every item while preserving the current shell, brief, and view. Always specify the intended mode.","title":"Restore room","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"mode":{"type":"string","enum":["demo","empty"],"description":"Restore the furnished demo or empty the current room."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["mode"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_room_shell","kind":"act","impl":"imperative","description":"Change selected room shell fields while preserving all furniture.","title":"Set room shell","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Room name."},"width":{"type":"number","minimum":4,"maximum":100,"description":"Interior room width in feet."},"depth":{"type":"number","minimum":4,"maximum":100,"description":"Interior room depth in feet."},"height":{"type":"number","minimum":6,"maximum":40,"description":"Interior room height in feet."},"wallColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Wall color as #RRGGBB."},"floorColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Floor color as #RRGGBB."},"floorFinish":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Floor material or finish."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"additionalProperties":false,"anyOf":[{"required":["name"]},{"required":["width"]},{"required":["depth"]},{"required":["height"]},{"required":["wallColor"]},{"required":["floorColor"]},{"required":["floorFinish"]}]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_room_brief","kind":"act","impl":"imperative","description":"Replace the room's intended use, human priorities, or both so later planning works from explicit shared context.","title":"Set room brief","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"purpose":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"How the person intends to use this room."},"priorities":{"type":"array","maxItems":5,"items":{"type":"string","minLength":1,"maxLength":48,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"One concise room-planning priority."},"description":"Complete replacement list of up to five human priorities. An empty list clears them."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"additionalProperties":false,"anyOf":[{"required":["purpose"]},{"required":["priorities"]}]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_furniture","kind":"act","impl":"imperative","description":"Add one catalog item with optional exact dimensions at coordinates, relative to named furniture, or against a wall. Surface items must use relation on with a supporting piece.","title":"Add furniture","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"catalogItem":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Catalog ID or catalog name."},"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Optional unique visible name for this copy."},"rotation":{"type":"number","minimum":-3600,"maximum":3600,"description":"Clockwise rotation in degrees."},"width":{"type":"number","minimum":0.1,"maximum":100,"description":"Optional exact item width in feet."},"depth":{"type":"number","minimum":0.1,"maximum":100,"description":"Optional exact item depth in feet."},"height":{"type":"number","minimum":0.05,"maximum":100,"description":"Optional exact item height in feet."},"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Optional item color as #RRGGBB."},"material":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Optional material description."},"x":{"type":"number","minimum":-100,"maximum":100,"description":"Center position across the room in feet."},"y":{"type":"number","minimum":0,"maximum":40,"description":"Base elevation above the floor in feet."},"z":{"type":"number","minimum":-100,"maximum":100,"description":"Center position from back to front in feet."},"relation":{"type":"string","enum":["left_of","right_of","in_front_of","behind","beside","on"],"description":"Relationship to the named anchor."},"anchor":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible name of the anchor item."},"side":{"type":"string","enum":["left","right"],"description":"Preferred side when relation is beside."},"wall":{"type":"string","enum":["back","front","left","right"],"description":"Wall to place the item against."},"offset":{"type":"number","minimum":-100,"maximum":100,"description":"Position along the selected wall, measured from its center."},"gap":{"type":"number","minimum":0,"maximum":20,"description":"Requested edge-to-edge gap in feet."},"elevation":{"type":"number","minimum":0,"maximum":40,"description":"Bottom elevation above the floor for a wall-mounted item."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["catalogItem"],"additionalProperties":false,"oneOf":[{"title":"Coordinates","required":["x","z"],"not":{"anyOf":[{"required":["relation"]},{"required":["anchor"]},{"required":["side"]},{"required":["wall"]},{"required":["offset"]},{"required":["gap"]},{"required":["elevation"]}]}},{"title":"Relative to furniture","required":["relation","anchor"],"not":{"anyOf":[{"required":["x"]},{"required":["y"]},{"required":["z"]},{"required":["wall"]},{"required":["offset"]},{"required":["elevation"]}]}},{"title":"Against a wall","required":["wall"],"not":{"anyOf":[{"required":["x"]},{"required":["y"]},{"required":["z"]},{"required":["relation"]},{"required":["anchor"]},{"required":["side"]}]}}]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"move_furniture","kind":"act","impl":"imperative","description":"Move one named item to coordinates, relative to another item, or against a wall without redesigning it. Surface items stay attached; wall items can set bottom elevation.","title":"Move furniture","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"x":{"type":"number","minimum":-100,"maximum":100,"description":"Center position across the room in feet."},"y":{"type":"number","minimum":0,"maximum":40,"description":"Base elevation above the floor in feet."},"z":{"type":"number","minimum":-100,"maximum":100,"description":"Center position from back to front in feet."},"relation":{"type":"string","enum":["left_of","right_of","in_front_of","behind","beside","on"],"description":"Relationship to the named anchor."},"anchor":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible name of the anchor item."},"side":{"type":"string","enum":["left","right"],"description":"Preferred side when relation is beside."},"wall":{"type":"string","enum":["back","front","left","right"],"description":"Wall to place the item against."},"offset":{"type":"number","minimum":-100,"maximum":100,"description":"Position along the selected wall, measured from its center."},"gap":{"type":"number","minimum":0,"maximum":20,"description":"Requested edge-to-edge gap in feet."},"elevation":{"type":"number","minimum":0,"maximum":40,"description":"Bottom elevation above the floor for a wall-mounted item."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["target"],"additionalProperties":false,"oneOf":[{"title":"Coordinates","required":["x","z"],"not":{"anyOf":[{"required":["relation"]},{"required":["anchor"]},{"required":["side"]},{"required":["wall"]},{"required":["offset"]},{"required":["gap"]},{"required":["elevation"]}]}},{"title":"Relative to furniture","required":["relation","anchor"],"not":{"anyOf":[{"required":["x"]},{"required":["y"]},{"required":["z"]},{"required":["wall"]},{"required":["offset"]},{"required":["elevation"]}]}},{"title":"Against a wall","required":["wall"],"not":{"anyOf":[{"required":["x"]},{"required":["y"]},{"required":["z"]},{"required":["relation"]},{"required":["anchor"]},{"required":["side"]}]}}]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"resize_furniture","kind":"act","impl":"imperative","description":"Change one named item's physical width, depth, or height in feet.","title":"Resize furniture","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"width":{"type":"number","minimum":0.1,"maximum":100,"description":"Item width in feet."},"depth":{"type":"number","minimum":0.1,"maximum":100,"description":"Item depth in feet."},"height":{"type":"number","minimum":0.05,"maximum":100,"description":"Item height in feet."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["target"],"additionalProperties":false,"anyOf":[{"required":["width"]},{"required":["depth"]},{"required":["height"]}]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"rotate_furniture","kind":"act","impl":"imperative","description":"Set one named item's clockwise rotation in degrees.","title":"Rotate furniture","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"rotation":{"type":"number","minimum":-3600,"maximum":3600,"description":"Clockwise rotation in degrees."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["target","rotation"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"style_furniture","kind":"act","impl":"imperative","description":"Change one named item's color, material, or both without moving or resizing it.","title":"Style furniture","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Item color as #RRGGBB."},"material":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Material description."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["target"],"additionalProperties":false,"anyOf":[{"required":["color"]},{"required":["material"]}]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"rename_furniture","kind":"act","impl":"imperative","description":"Give one existing room item a new unique visible name without changing its geometry or finish.","title":"Rename furniture","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"New unique visible item name."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["target","name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"duplicate_furniture","kind":"act","impl":"imperative","description":"Copy one named item with an explicit or predictable default offset.","title":"Duplicate furniture","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Optional unique name for the copy."},"offsetX":{"type":"number","minimum":-100,"maximum":100,"description":"Horizontal copy offset in feet."},"offsetY":{"type":"number","minimum":-40,"maximum":40,"description":"Vertical copy offset in feet."},"offsetZ":{"type":"number","minimum":-100,"maximum":100,"description":"Depth copy offset in feet."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"remove_furniture","kind":"act","impl":"imperative","description":"Remove one explicit, uniquely named furniture item from the room.","title":"Remove furniture","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Unique visible furniture name, such as Floor lamp."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_wall_art","kind":"act","impl":"imperative","description":"Create authored procedural wall art from a visual style and a palette of 2 to 6 colors. Omit anchor and offset to use the nearest space that clears openings and other wall art.","title":"Create wall art","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Visible name for the art."},"wall":{"type":"string","enum":["back","front","left","right"],"description":"Wall that receives the art."},"anchor":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Optional furniture name to place the art above."},"style":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[^\\u0000-\\u001F\\u007F]+$","description":"Visual direction, such as geometric or layered color fields."},"palette":{"type":"array","minItems":2,"maxItems":6,"items":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Palette color as #RRGGBB."}},"width":{"type":"number","minimum":0.5,"maximum":20,"description":"Art width in feet."},"height":{"type":"number","minimum":0.5,"maximum":15,"description":"Art height in feet."},"elevation":{"type":"number","minimum":0,"maximum":40,"description":"Bottom elevation above the floor in feet."},"offset":{"type":"number","minimum":-100,"maximum":100,"description":"Position along the selected wall from center."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["wall","style","palette"],"additionalProperties":false,"not":{"required":["anchor","offset"]}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"apply_layout","kind":"act","impl":"imperative","description":"Apply one deterministic room-level arrangement. Reading corner groups the chair and lamp by the back-wall window; conversation faces seating inward; open walkway clears the center path.","title":"Apply layout","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"layout":{"type":"string","enum":["reading-corner","conversation","open-walkway"],"description":"Room-level arrangement to apply."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["layout"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_room_view","kind":"act","impl":"imperative","description":"Set the shared viewport to perspective, plan, front, or left elevation.","title":"Set room view","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"view":{"type":"string","enum":["perspective","plan","front","left"],"description":"Shared room viewport."},"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"required":["view"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"undo_room_change","kind":"act","impl":"imperative","description":"Restore the previous genuine room state as a new, auditable revision.","title":"Undo room change","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"redo_room_change","kind":"act","impl":"imperative","description":"Reapply the next genuine room state as a new, auditable revision.","title":"Redo room change","annotations":{"readOnlyHint":false,"untrustedContentHint":true,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":0,"description":"Optional room revision from a prior read. The write is rejected if the room changed."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"favicon":"/favicons/roomdex.vercel.app.svg","apiSurface":"spec","category":"Productivity & Business","toolCount":29}}