Tool tree
gradeNot graded
get_layoutAnswer
Read the current floorplan. Defaults to a compact summary of rooms, areas and adjacency.
View tool JSON
{
"name": "get_layout",
"kind": "answer",
"impl": "imperative",
"description": "Read the current floorplan. Defaults to a compact summary of rooms, areas and adjacency.",
"inputSchema": {
"type": "object",
"properties": {
"detail": {
"type": "string",
"enum": [
"summary",
"full"
],
"default": "summary",
"description": "summary returns rooms, areas and adjacency only; full returns every wall, opening and furniture item."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}get_selectionAnswer
Read what the human currently has selected in the 3D scene.
View tool JSON
{
"name": "get_selection",
"kind": "answer",
"impl": "imperative",
"description": "Read what the human currently has selected in the 3D scene.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}compute_areasAction
Area per room, the total conditioned area, and each room's margin above its minimum.
View tool JSON
{
"name": "compute_areas",
"kind": "act",
"impl": "imperative",
"description": "Area per room, the total conditioned area, and each room's margin above its minimum.",
"inputSchema": {
"type": "object",
"properties": {
"roomIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Omit to measure every room."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}validate_layoutAction
Check the plan against the simplified residential constraints and explain what breaks.
View tool JSON
{
"name": "validate_layout",
"kind": "act",
"impl": "imperative",
"description": "Check the plan against the simplified residential constraints and explain what breaks.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}get_cameraAnswer
Where the camera is and what it is looking at, in plain language.
View tool JSON
{
"name": "get_camera",
"kind": "answer",
"impl": "imperative",
"description": "Where the camera is and what it is looking at, in plain language.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}list_templatesAnswer
The starting templates a design can begin from, with which one is loaded now.
View tool JSON
{
"name": "list_templates",
"kind": "answer",
"impl": "imperative",
"description": "The starting templates a design can begin from, with which one is loaded now.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}start_from_templateAction
Start a design from a template. With floorCount, the first call sizes the house and each call fills the next floor.
View tool JSON
{
"name": "start_from_template",
"kind": "act",
"impl": "imperative",
"description": "Start a design from a template. With floorCount, the first call sizes the house and each call fills the next floor.",
"inputSchema": {
"type": "object",
"properties": {
"templateId": {
"type": "string",
"description": "One of the ids from list_templates."
},
"floorCount": {
"type": "integer",
"minimum": 1,
"maximum": 3,
"description": "Total floors for a brand-new design. Give it on the first call, then call once per floor: each call sets the next floor's template."
}
},
"required": [
"templateId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}set_active_floorAction
Switch which floor of a multi-floor design is being edited, for every tool and the human alike.
View tool JSON
{
"name": "set_active_floor",
"kind": "act",
"impl": "imperative",
"description": "Switch which floor of a multi-floor design is being edited, for every tool and the human alike.",
"inputSchema": {
"type": "object",
"properties": {
"floor": {
"type": "integer",
"minimum": 1,
"description": "1-based floor number to edit; every tool then reads and writes that floor."
}
},
"required": [
"floor"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}add_roomAction
Add a room, optionally attached to an existing one so they share a wall.
View tool JSON
{
"name": "add_room",
"kind": "act",
"impl": "imperative",
"description": "Add a room, optionally attached to an existing one so they share a wall.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Human-facing name, e.g. \"Guest Bedroom\"."
},
"type": {
"type": "string",
"enum": [
"bedroom",
"bathroom",
"kitchen",
"living",
"dining",
"hallway",
"closet",
"utility",
"garage"
]
},
"widthIn": {
"type": "number",
"description": "East-west size in inches; snapped to 6in."
},
"depthIn": {
"type": "number",
"description": "North-south size in inches; snapped to 6in."
},
"attachTo": {
"type": "object",
"properties": {
"roomId": {
"type": "string"
},
"side": {
"type": "string",
"enum": [
"north",
"south",
"east",
"west"
]
}
},
"required": [
"roomId",
"side"
],
"additionalProperties": false,
"description": "Place the room against an existing one, sharing the wall where they line up."
}
},
"required": [
"name",
"type",
"widthIn",
"depthIn"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}move_wallAction
Move a wall perpendicular to itself, resizing every room that shares it.
View tool JSON
{
"name": "move_wall",
"kind": "act",
"impl": "imperative",
"description": "Move a wall perpendicular to itself, resizing every room that shares it.",
"inputSchema": {
"type": "object",
"properties": {
"wallId": {
"type": "string"
},
"distanceIn": {
"type": "number",
"description": "Inches to move, snapped to the 6in grid."
},
"direction": {
"type": "string",
"enum": [
"north",
"south",
"east",
"west"
],
"description": "Must be perpendicular to the wall."
}
},
"required": [
"wallId",
"distanceIn",
"direction"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}resize_roomAction
Set a room's width and/or depth. Convenience wrapper over move_wall.
View tool JSON
{
"name": "resize_room",
"kind": "act",
"impl": "imperative",
"description": "Set a room's width and/or depth. Convenience wrapper over move_wall.",
"inputSchema": {
"type": "object",
"properties": {
"roomId": {
"type": "string"
},
"widthIn": {
"type": "number"
},
"depthIn": {
"type": "number"
}
},
"required": [
"roomId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}add_openingAction
Cut a door, window or archway into a wall.
View tool JSON
{
"name": "add_opening",
"kind": "act",
"impl": "imperative",
"description": "Cut a door, window or archway into a wall.",
"inputSchema": {
"type": "object",
"properties": {
"wallId": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"door",
"window",
"archway"
]
},
"offsetIn": {
"type": "number",
"description": "Inches along the wall from its start point."
},
"widthIn": {
"type": "number"
},
"swing": {
"type": "string",
"enum": [
"in-left",
"in-right",
"out-left",
"out-right",
"sliding",
"none"
]
}
},
"required": [
"wallId",
"kind",
"offsetIn",
"widthIn"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}place_furnitureAction
Place a catalog item in a room; omit position to auto-place against a wall.
View tool JSON
{
"name": "place_furniture",
"kind": "act",
"impl": "imperative",
"description": "Place a catalog item in a room; omit position to auto-place against a wall.",
"inputSchema": {
"type": "object",
"properties": {
"roomId": {
"type": "string"
},
"catalogId": {
"type": "string",
"description": "Catalog key: queen-bed, sofa, tv-stand, table, bookshelf, chair, nightstand, dresser, wardrobe, desk, kitchen-island, counter, range, fridge, toilet, sink, tub, shower, washer, tv-wall (a wall-mounted screen: place just off a wall, rotated to face the room). Other ids render as a plain block."
},
"footprint": {
"type": "object",
"properties": {
"w": {
"type": "number"
},
"d": {
"type": "number"
}
},
"required": [
"w",
"d"
],
"additionalProperties": false,
"description": "Plan footprint in inches."
},
"position": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false,
"description": "Omit to auto-place against the most sensible wall."
},
"rotation": {
"type": "number",
"description": "Degrees a piece's front faces: 0 = south (plan bottom), 90 = west, 180 = north, 270 = east. Face it away from the wall it backs onto. Omitted on placement, it auto-faces into the room from the nearest wall."
},
"clearanceFrontIn": {
"type": "number",
"description": "Approach space required in front of the piece."
},
"color": {
"type": "string",
"description": "Finish for the primary surfaces, any CSS colour; omit for the default look."
}
},
"required": [
"roomId",
"catalogId",
"footprint"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}move_furnitureAction
Move or turn a piece already in the plan; dropping it in another room re-homes it.
View tool JSON
{
"name": "move_furniture",
"kind": "act",
"impl": "imperative",
"description": "Move or turn a piece already in the plan; dropping it in another room re-homes it.",
"inputSchema": {
"type": "object",
"properties": {
"furnitureId": {
"type": "string"
},
"position": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false,
"description": "New centre in plan inches; the room it lands in is inferred."
},
"rotation": {
"type": "number",
"description": "Degrees a piece's front faces: 0 = south (plan bottom), 90 = west, 180 = north, 270 = east. Face it away from the wall it backs onto. Omitted on placement, it auto-faces into the room from the nearest wall."
}
},
"required": [
"furnitureId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}resize_furnitureAction
Change a placed piece's footprint where it stands; position and rotation stay put.
View tool JSON
{
"name": "resize_furniture",
"kind": "act",
"impl": "imperative",
"description": "Change a placed piece's footprint where it stands; position and rotation stay put.",
"inputSchema": {
"type": "object",
"properties": {
"furnitureId": {
"type": "string"
},
"widthIn": {
"type": "number",
"description": "New footprint width in inches; omit to keep the current width."
},
"depthIn": {
"type": "number",
"description": "New footprint depth in inches; omit to keep the current depth."
}
},
"required": [
"furnitureId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}update_openingAction
Change a door, window or archway in place: widen it, convert it, or flip its swing.
View tool JSON
{
"name": "update_opening",
"kind": "act",
"impl": "imperative",
"description": "Change a door, window or archway in place: widen it, convert it, or flip its swing.",
"inputSchema": {
"type": "object",
"properties": {
"openingId": {
"type": "string"
},
"widthIn": {
"type": "number",
"description": "New clear width; rounds up to the 6in grid, grows about the centre."
},
"kind": {
"type": "string",
"enum": [
"door",
"window",
"archway"
]
},
"swing": {
"type": "string",
"enum": [
"in-left",
"in-right",
"out-left",
"out-right",
"sliding",
"none"
]
}
},
"required": [
"openingId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}apply_editsAction
Run several edits in one call -- furnish a whole room in a single round trip.
View tool JSON
{
"name": "apply_edits",
"kind": "act",
"impl": "imperative",
"description": "Run several edits in one call -- furnish a whole room in a single round trip.",
"inputSchema": {
"type": "object",
"properties": {
"edits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"action": {
"type": "string"
}
},
"required": [
"action"
],
"additionalProperties": true
},
"minItems": 1,
"maxItems": 20,
"description": "Each edit is {action, ...params}: the action names another write tool (place_furniture, move_furniture, resize_furniture, update_opening, add_opening, remove_element, move_wall, resize_room, add_room) and the params are that tool's. Runs in order; a failed edit reports its error and the rest continue."
}
},
"required": [
"edits"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}remove_elementAction
Remove a wall, room, opening or furniture item, cascading to what depends on it.
View tool JSON
{
"name": "remove_element",
"kind": "act",
"impl": "imperative",
"description": "Remove a wall, room, opening or furniture item, cascading to what depends on it.",
"inputSchema": {
"type": "object",
"properties": {
"elementId": {
"type": "string",
"description": "A wall, room, opening or furniture id."
}
},
"required": [
"elementId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}set_cameraAction
Move the camera. firstPerson with a target room walks the human through that space.
View tool JSON
{
"name": "set_camera",
"kind": "act",
"impl": "imperative",
"description": "Move the camera. firstPerson with a target room walks the human through that space.",
"inputSchema": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"top",
"iso",
"firstPerson"
]
},
"targetRoomId": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"mode"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}undoAction
Step the plan back through the edit history.
View tool JSON
{
"name": "undo",
"kind": "act",
"impl": "imperative",
"description": "Step the plan back through the edit history.",
"inputSchema": {
"type": "object",
"properties": {
"steps": {
"type": "integer",
"exclusiveMinimum": 0,
"default": 1
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}propose_variantsAction
Offer 2-3 alternative layouts as ghosted overlays for the human to choose between.
View tool JSON
{
"name": "propose_variants",
"kind": "act",
"impl": "imperative",
"description": "Offer 2-3 alternative layouts as ghosted overlays for the human to choose between.",
"inputSchema": {
"type": "object",
"properties": {
"goal": {
"type": "string",
"description": "What the alternatives should optimise for."
},
"variants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"summary": {
"type": "string",
"description": "One line the human will read on the overlay."
},
"edits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"wallId": {
"type": "string"
},
"distanceIn": {
"type": "number"
},
"direction": {
"type": "string",
"enum": [
"north",
"south",
"east",
"west"
]
}
},
"required": [
"wallId",
"distanceIn",
"direction"
],
"additionalProperties": false
},
"description": "Wall moves that define this alternative."
}
},
"required": [
"summary",
"edits"
],
"additionalProperties": false
},
"minItems": 1,
"maxItems": 3
}
},
"required": [
"goal",
"variants"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
}