add_furniture
Add a labeled furniture block inside a room. x/y are relative to the room origin, not the plot.
id: string?, roomId: string, name: string, kind: string, x: number, y: number, width: number, height: number, … (list cut; the site may define more)
add_opening
Add a door or window on a room edge. offset is meters from the start of that edge (west end for north/south, north end for east/west).
id: string?, kind: string, roomId: string, edge: string, offset: number, width: number
add_room
Add a single axis-aligned room rectangle. Coordinates are meters from the plot origin (top-left).
id: string?, name: string, type: string, x: number, y: number, width: number, height: number
apply_layout
Replace rooms, openings, furniture, and the frontage street in one shot. Prefer this for the first draft. Include an entrance porch, a stairs area, and street.edge on the same side as the main door unless the user…
plot: object?, street?, rooms: array, openings: array?, furniture: array?
ask_userread-only
Ask the human one to six structured follow-up questions before drawing. Opens a modal on the OpenArchitect page and WAITS until they click Send answers. The questions are also in this tool's arguments for ChatGPT to…
questions: array
export_pdf
Download the current floor plan as a PDF in the user's browser. Optional filename (extension added automatically).
filename: string?
export_png
Download the current floor plan as a PNG image in the user's browser. Optional filename (extension added automatically).
filename: string?
export_project
Download the current brief + floor plan as an OpenArchitect JSON project file the user can re-import later. Optional filename.
filename: string?
generate_3d
Build an interactive 3D dollhouse from the current floor plan (extruded rooms, walls, doors, windows, furniture). Opens the 3D viewer so the user can orbit it and download a GLB. Optional filename for the GLB. Call…
filename: string?
get_briefread-only
Read the current project brief: description, plot size, bedroom/bathroom counts, notes, and answers already collected.
get_design_rulesread-only
Return the house-making standards this studio enforces: NBC-aligned room sizes, doors, windows, and adjacency rules for living, dining, bedrooms, kitchen, bathrooms, and hallways.
get_floor_planread-only
Return the full floor plan JSON plus validation issues (overlaps, NBC size minima, missing exterior windows, awkward adjacencies).
get_standards_checkread-only
Return only the current standards-check issues (errors and warnings): room size minima, overlaps, openings, adjacency, missing porch/stairs/street, etc. Prefer this over get_floor_plan when you only need to know what…
import_project
Replace the canvas with a project JSON payload (plan required; brief optional). Accepts OpenArchitect exports or a bare plan object.
version: number?, kind: string?, brief: object?, plan: object
move_furniture
Move furniture inside its room. x/y are meters from the room's top-left, not the plot.
id: string, x: number, y: number
move_opening
Slide a door or window along its wall, or onto another wall of the same room. offset is meters from the start of that edge (west for N/S, north for E/W).
id: string, offset: number, edge: string?
remove_furniture
Remove a furniture item by id.
id: string
remove_opening
Remove a door or window by id.
id: string
remove_room
Remove a room and any openings or furniture attached to it.
id: string
replace_furniture
Swap an existing furniture piece for a catalog object (bed, sofa, table, desk, wardrobe, counter, stove, sink, fridge, toilet, chair). Keeps the same id and recenters in place.
id: string, kind: string
replace_opening
Change an existing opening between door and window without moving it.
id: string, kind: string
resize_furniture
Change a furniture block's width and height in meters.
id: string, width: number, height: number
resize_opening
Change a door or window width in meters along the wall.
id: string, width: number
resize_wall
Move one wall of a room. Neighbors that share that wall move with it. Prefer this over update_room when stretching a room against another. Provide position (plot meters) or delta (positive = east/south).
roomId: string, edge: string, position: number?, delta: number?
set_display_layers
Toggle canvas display layers: roomColors (fill colors), doors (door openings), and objects (furniture/fixtures). Pass only the layers you want to change. Does not modify the floor plan data.
roomColors: boolean?, doors: boolean?, objects: boolean?
set_plot
Set the overall rectangular plot size in meters. Origin is the top-left (northwest) corner. x increases east, y increases south.
width: number, height: number
update_brief
Patch the project brief. Use this to store requirements from the conversation. If plotWidthM and plotHeightM are set, the canvas plot is resized to match.
description: string?, plotWidthM: number?, plotHeightM: number?, bedroomCount: integer?, bathroomCount: integer?, notes: array?, answers: object?
update_room
Move or resize one room by id. Does not push shared walls into neighbors — use resize_wall for that.
id: string, name: string?, type: string?, x: number?, y: number?, width: number?, height: number?