Tool tree
gradeNot graded
get_room_stateAnswer
Read the current room: dimensions, settings, doors and windows, room-local custom items, placed furniture, saved variants and (optionally) validation issues.
View tool JSON
{
"name": "get_room_state",
"kind": "answer",
"impl": "imperative",
"description": "Read the current room: dimensions, settings, doors and windows, room-local custom items, placed furniture, saved variants and (optionally) validation issues.",
"inputSchema": {
"type": "object",
"properties": {
"includeIssues": {
"type": "boolean",
"description": "Include the validation report alongside the layout."
}
},
"additionalProperties": false
}
}set_room_dimensionsAction
Resize the room. Dimensions are interior measurements in centimetres; existing furniture and openings are pulled back inside.
View tool JSON
{
"name": "set_room_dimensions",
"kind": "act",
"impl": "imperative",
"description": "Resize the room. Dimensions are interior measurements in centimetres; existing furniture and openings are pulled back inside.",
"inputSchema": {
"type": "object",
"properties": {
"widthCm": {
"type": "number",
"minimum": 150,
"maximum": 2000,
"description": "Interior width in cm."
},
"depthCm": {
"type": "number",
"minimum": 150,
"maximum": 2000,
"description": "Interior depth in cm."
},
"wallThicknessCm": {
"type": "number",
"minimum": 5,
"maximum": 60
}
},
"additionalProperties": false
}
}set_room_settingsAction
Update the room name, walkway-clearance target, placement grid size, or snap-to-grid behavior as one undoable change.
View tool JSON
{
"name": "set_room_settings",
"kind": "act",
"impl": "imperative",
"description": "Update the room name, walkway-clearance target, placement grid size, or snap-to-grid behavior as one undoable change.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"clearanceCm": {
"type": "number",
"minimum": 0,
"maximum": 300
},
"gridCm": {
"type": "number",
"minimum": 1,
"maximum": 100
},
"snapToGrid": {
"type": "boolean"
}
},
"additionalProperties": false
}
}add_openingAction
Add a door or window to a wall. offsetCm is measured along the wall from its start corner (north/south from the west end, east/west from the north end).
View tool JSON
{
"name": "add_opening",
"kind": "act",
"impl": "imperative",
"description": "Add a door or window to a wall. offsetCm is measured along the wall from its start corner (north/south from the west end, east/west from the north end).",
"inputSchema": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"door",
"window"
]
},
"wall": {
"type": "string",
"enum": [
"north",
"east",
"south",
"west"
]
},
"offsetCm": {
"type": "number",
"minimum": 0
},
"widthCm": {
"type": "number",
"minimum": 30,
"maximum": 400
},
"swing": {
"type": "string",
"enum": [
"inward-left",
"inward-right",
"outward-left",
"outward-right"
],
"description": "Doors only."
},
"sillHeightCm": {
"type": "number",
"minimum": 0,
"description": "Windows only."
}
},
"required": [
"kind",
"wall",
"offsetCm",
"widthCm"
],
"additionalProperties": false
}
}update_openingAction
Move, resize or reorient an existing door or window. Use the opening id returned by add_opening or get_room_state.
View tool JSON
{
"name": "update_opening",
"kind": "act",
"impl": "imperative",
"description": "Move, resize or reorient an existing door or window. Use the opening id returned by add_opening or get_room_state.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"wall": {
"type": "string",
"enum": [
"north",
"east",
"south",
"west"
]
},
"offsetCm": {
"type": "number",
"minimum": 0
},
"widthCm": {
"type": "number",
"minimum": 30,
"maximum": 400
},
"swing": {
"type": "string",
"enum": [
"inward-left",
"inward-right",
"outward-left",
"outward-right"
],
"description": "Doors only."
},
"sillHeightCm": {
"type": "number",
"minimum": 0,
"description": "Windows only."
}
},
"required": [
"id"
],
"additionalProperties": false
}
}remove_openingAction
Delete an existing door or window by opening id as one undoable change.
View tool JSON
{
"name": "remove_opening",
"kind": "act",
"impl": "imperative",
"description": "Delete an existing door or window by opening id as one undoable change.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
],
"additionalProperties": false
}
}search_furnitureAnswer
Search built-in fictional furniture and room-local custom items by keywords, category, style, footprint or USD price. Returns item ids to pass to place_furniture.
View tool JSON
{
"name": "search_furniture",
"kind": "answer",
"impl": "imperative",
"description": "Search built-in fictional furniture and room-local custom items by keywords, category, style, footprint or USD price. Returns item ids to pass to place_furniture.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free text matched against name and tags."
},
"source": {
"type": "string",
"enum": [
"built-in",
"custom"
],
"description": "Restrict results to one source; omit to search both."
},
"category": {
"type": "string",
"enum": [
"seating",
"tables",
"storage",
"beds",
"workspace",
"lighting",
"rugs",
"decor"
]
},
"style": {
"type": "string",
"enum": [
"modern",
"minimal",
"classic",
"cozy",
"industrial"
]
},
"maxWidthCm": {
"type": "number",
"minimum": 1
},
"maxDepthCm": {
"type": "number",
"minimum": 1
},
"maxPriceUsdCents": {
"type": "integer",
"minimum": 0
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 40
}
},
"additionalProperties": false
}
}create_custom_itemAction
Store a room-local custom item from supplied data. Source URLs are kept as metadata only and are never fetched. Set place to true to place it in the same undoable change.
View tool JSON
{
"name": "create_custom_item",
"kind": "act",
"impl": "imperative",
"description": "Store a room-local custom item from supplied data. Source URLs are kept as metadata only and are never fetched. Set place to true to place it in the same undoable change.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^custom-[a-z0-9][a-z0-9-]*$",
"description": "Optional stable id beginning with custom-. Omit to generate one."
},
"name": {
"type": "string",
"minLength": 1
},
"widthCm": {
"type": "number",
"minimum": 1,
"maximum": 2000
},
"depthCm": {
"type": "number",
"minimum": 1,
"maximum": 2000
},
"heightCm": {
"type": "number",
"minimum": 1,
"maximum": 2000
},
"priceUsdCents": {
"type": "integer",
"minimum": 0,
"maximum": 100000000
},
"category": {
"type": "string",
"enum": [
"seating",
"tables",
"storage",
"beds",
"workspace",
"lighting",
"rugs",
"decor"
]
},
"style": {
"type": "string",
"enum": [
"modern",
"minimal",
"classic",
"cozy",
"industrial"
]
},
"color": {
"type": "string",
"pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
"description": "Hex colour such as #6f8073."
},
"sourceUrl": {
"type": "string",
"format": "uri"
},
"sourceLabel": {
"type": "string"
},
"rawText": {
"type": "string",
"description": "Optional user-supplied listing notes."
},
"place": {
"type": "boolean",
"description": "Place the new item immediately."
},
"xCm": {
"type": "number"
},
"yCm": {
"type": "number"
},
"rotationDeg": {
"type": "number"
},
"label": {
"type": "string"
}
},
"required": [
"name",
"widthCm",
"depthCm",
"heightCm",
"priceUsdCents",
"category",
"style",
"color"
],
"additionalProperties": false
}
}place_furnitureAction
Place a built-in or custom item in the room. Coordinates are the item's centre in centimetres from the room's top-left corner; omitted coordinates default to the room centre and collisions are nudged to a free spot.
View tool JSON
{
"name": "place_furniture",
"kind": "act",
"impl": "imperative",
"description": "Place a built-in or custom item in the room. Coordinates are the item's centre in centimetres from the room's top-left corner; omitted coordinates default to the room centre and collisions are nudged to a free spot.",
"inputSchema": {
"type": "object",
"properties": {
"catalogId": {
"type": "string",
"description": "Built-in or custom item id from search_furniture."
},
"xCm": {
"type": "number"
},
"yCm": {
"type": "number"
},
"rotationDeg": {
"type": "number",
"description": "Clockwise degrees; 0 faces the south wall."
},
"colorId": {
"type": "string"
},
"label": {
"type": "string"
}
},
"required": [
"catalogId"
],
"additionalProperties": false
}
}update_furnitureAction
Move, rotate, relabel or recolour one placed item. Only the supplied fields change.
View tool JSON
{
"name": "update_furniture",
"kind": "act",
"impl": "imperative",
"description": "Move, rotate, relabel or recolour one placed item. Only the supplied fields change.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Instance id from get_room_state."
},
"xCm": {
"type": "number"
},
"yCm": {
"type": "number"
},
"rotationDeg": {
"type": "number"
},
"colorId": {
"type": "string"
},
"label": {
"type": "string"
}
},
"required": [
"id"
],
"additionalProperties": false
}
}remove_furnitureAction
Remove one or more placed items by instance id.
View tool JSON
{
"name": "remove_furniture",
"kind": "act",
"impl": "imperative",
"description": "Remove one or more placed items by instance id.",
"inputSchema": {
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
}
},
"required": [
"ids"
],
"additionalProperties": false
}
}apply_layoutAction
Place a whole layout at once. mode 'replace' clears existing furniture first, 'merge' adds to it.
View tool JSON
{
"name": "apply_layout",
"kind": "act",
"impl": "imperative",
"description": "Place a whole layout at once. mode 'replace' clears existing furniture first, 'merge' adds to it.",
"inputSchema": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"replace",
"merge"
]
},
"items": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"catalogId": {
"type": "string"
},
"xCm": {
"type": "number"
},
"yCm": {
"type": "number"
},
"rotationDeg": {
"type": "number"
},
"colorId": {
"type": "string"
},
"label": {
"type": "string"
}
},
"required": [
"catalogId",
"xCm",
"yCm"
],
"additionalProperties": false
}
}
},
"required": [
"items"
],
"additionalProperties": false
}
}validate_layoutAction
Check the layout for furniture outside the room, overlaps, blocked doors and walkways narrower than the configured clearance.
View tool JSON
{
"name": "validate_layout",
"kind": "act",
"impl": "imperative",
"description": "Check the layout for furniture outside the room, overlaps, blocked doors and walkways narrower than the configured clearance.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}save_layout_variantAction
Save the current layout under a name, stored locally in this browser. Saving with an existing name overwrites that variant.
View tool JSON
{
"name": "save_layout_variant",
"kind": "act",
"impl": "imperative",
"description": "Save the current layout under a name, stored locally in this browser. Saving with an existing name overwrites that variant.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
}
},
"required": [
"name"
],
"additionalProperties": false
}
}activate_layout_variantAction
Load a saved variant into the editor as an undoable change. Identify it by id or by name.
View tool JSON
{
"name": "activate_layout_variant",
"kind": "act",
"impl": "imperative",
"description": "Load a saved variant into the editor as an undoable change. Identify it by id or by name.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"additionalProperties": false
}
}reset_current_layoutAction
Reset the current room to a fresh default layout as one undoable change. Saved layout variants remain available.
View tool JSON
{
"name": "reset_current_layout",
"kind": "act",
"impl": "imperative",
"description": "Reset the current room to a fresh default layout as one undoable change. Saved layout variants remain available.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}undo_last_changeAction
Undo the most recent change, whether it came from this agent or from direct canvas editing.
View tool JSON
{
"name": "undo_last_change",
"kind": "act",
"impl": "imperative",
"description": "Undo the most recent change, whether it came from this agent or from direct canvas editing.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}