← WebMCP Directory

Tool tree

roomdex.vercel.app

Productivity & BusinessTools verified
Website
A little space, reimagined. Arrange furniture, explore layouts, and make a room your own with RoomDex.
Explore capabilities
    inspect_roomAction

    Inspect room dimensions, derived floor area, architecture, circulation, shared view, revision, and a bounded furniture page with geometry, finish, mounting, support, and art intent.

    View tool JSON
    {
      "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.",
      "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
      }
    }
    review_recent_changesAnswer

    Return up to five newest committed room changes retained locally, with actor, revision, timestamp, and bounded summary, newest first.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    list_furnitureAnswer

    List RoomDex's curated furniture catalog with real-world dimensions, placement type, and support-surface capability.

    View tool JSON
    {
      "name": "list_furniture",
      "kind": "answer",
      "impl": "imperative",
      "description": "List RoomDex's curated furniture catalog with real-world dimensions, placement type, and support-surface capability.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    analyze_layoutAction

    Analyze the current room for furniture collisions, room-boundary errors, tight clearances, blocked wall openings, and circulation obstructions in the walkway or entry landing.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    compare_layoutsAction

    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.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    measure_clearanceAction

    Measure horizontal edge-to-edge clearance in feet between two uniquely named room items.

    View tool JSON
    {
      "name": "measure_clearance",
      "kind": "act",
      "impl": "imperative",
      "description": "Measure horizontal edge-to-edge clearance in feet between two uniquely named room items.",
      "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
      }
    }
    inspect_furnitureAnswer

    Inspect one named item's exact geometry, finish, mounting, support, and artwork direction at the current revision. Does not select or change it.

    View tool JSON
    {
      "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.",
      "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
      }
    }
    preview_furniture_moveAction

    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.

    View tool JSON
    {
      "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.",
      "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"
                  ]
                }
              ]
            }
          }
        ]
      }
    }
    select_furnitureAction

    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.

    View tool JSON
    {
      "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.",
      "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
      }
    }
    move_furniture_groupAction

    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.

    View tool JSON
    {
      "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.",
      "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"
            ]
          }
        ]
      }
    }
    style_furniture_groupAction

    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.

    View tool JSON
    {
      "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.",
      "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"
            ]
          }
        ]
      }
    }
    align_furnitureAction

    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.

    View tool JSON
    {
      "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.",
      "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
      }
    }
    update_wall_artAction

    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.

    View tool JSON
    {
      "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.",
      "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"
            ]
          }
        ]
      }
    }
    restore_roomAction

    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.

    View tool JSON
    {
      "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.",
      "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
      }
    }
    set_room_shellAction

    Change selected room shell fields while preserving all furniture.

    View tool JSON
    {
      "name": "set_room_shell",
      "kind": "act",
      "impl": "imperative",
      "description": "Change selected room shell fields while preserving all furniture.",
      "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"
            ]
          }
        ]
      }
    }
    set_room_briefAction

    Replace the room's intended use, human priorities, or both so later planning works from explicit shared context.

    View tool JSON
    {
      "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.",
      "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"
            ]
          }
        ]
      }
    }
    add_furnitureAction

    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.

    View tool JSON
    {
      "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.",
      "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"
                  ]
                }
              ]
            }
          }
        ]
      }
    }
    move_furnitureAction

    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.

    View tool JSON
    {
      "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.",
      "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"
                  ]
                }
              ]
            }
          }
        ]
      }
    }
    resize_furnitureAction

    Change one named item's physical width, depth, or height in feet.

    View tool JSON
    {
      "name": "resize_furniture",
      "kind": "act",
      "impl": "imperative",
      "description": "Change one named item's physical width, depth, or height in feet.",
      "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"
            ]
          }
        ]
      }
    }
    rotate_furnitureAction

    Set one named item's clockwise rotation in degrees.

    View tool JSON
    {
      "name": "rotate_furniture",
      "kind": "act",
      "impl": "imperative",
      "description": "Set one named item's clockwise rotation in degrees.",
      "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
      }
    }
    style_furnitureAction

    Change one named item's color, material, or both without moving or resizing it.

    View tool JSON
    {
      "name": "style_furniture",
      "kind": "act",
      "impl": "imperative",
      "description": "Change one named item's color, material, or both without moving or resizing it.",
      "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"
            ]
          }
        ]
      }
    }
    rename_furnitureAction

    Give one existing room item a new unique visible name without changing its geometry or finish.

    View tool JSON
    {
      "name": "rename_furniture",
      "kind": "act",
      "impl": "imperative",
      "description": "Give one existing room item a new unique visible name without changing its geometry or finish.",
      "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
      }
    }
    duplicate_furnitureAction

    Copy one named item with an explicit or predictable default offset.

    View tool JSON
    {
      "name": "duplicate_furniture",
      "kind": "act",
      "impl": "imperative",
      "description": "Copy one named item with an explicit or predictable default offset.",
      "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
      }
    }
    remove_furnitureAction

    Remove one explicit, uniquely named furniture item from the room.

    View tool JSON
    {
      "name": "remove_furniture",
      "kind": "act",
      "impl": "imperative",
      "description": "Remove one explicit, uniquely named furniture item from the room.",
      "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
      }
    }
    create_wall_artAction

    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.

    View tool JSON
    {
      "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.",
      "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"
          ]
        }
      }
    }
    apply_layoutAction

    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.

    View tool JSON
    {
      "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.",
      "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
      }
    }
    set_room_viewAction

    Set the shared viewport to perspective, plan, front, or left elevation.

    View tool JSON
    {
      "name": "set_room_view",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the shared viewport to perspective, plan, front, or left elevation.",
      "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
      }
    }
    undo_room_changeAction

    Restore the previous genuine room state as a new, auditable revision.

    View tool JSON
    {
      "name": "undo_room_change",
      "kind": "act",
      "impl": "imperative",
      "description": "Restore the previous genuine room state as a new, auditable revision.",
      "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
      }
    }
    redo_room_changeAction

    Reapply the next genuine room state as a new, auditable revision.

    View tool JSON
    {
      "name": "redo_room_change",
      "kind": "act",
      "impl": "imperative",
      "description": "Reapply the next genuine room state as a new, auditable revision.",
      "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
      }
    }