roomwright_add_item
Place a piece in the room. Give product_id (from list_catalog). Optional: variant_id, x and z in metres, rotation_degrees. With no position the piece is auto-placed — wall-hugging pieces against the emptiest wall…
product_id: string, variant_id: string?, x: number?, z: number?, rotation_degrees: number?
roomwright_check_layout
Evaluate the current arrangement: overlapping pieces, pieces that block a door or window, pieces that do not have their required free space, and walkways under 0.75 m. Returns an overall status (ok, warn, bad), each…
roomwright_create_custom_item
Make a custom piece from a primitive and place it in the room. shape is box (cabinet, built-in, block), cylinder (column, round pouffe), panel (a thin room divider), or platform (a low step or podium).…
shape: string, width: number, depth: number?, height: number, name: string?, color: string?, x: number?, z: number?, … (list cut; the site may define more)
roomwright_duplicate_item
Add another copy of a placed piece — same product and variant. By default the copy is nudged clear of the original. Pass mirror to place it as a mirror image across the room's centre line instead: "east-west" for a…
placement_id: string, mirror: string?
roomwright_get_room
Return the room's dimensions and openings plus every placed piece with its id, product, variant, position (metres, origin at the near-left corner), and rotation. Call this first to learn what is in the room and to get…
roomwright_get_shopping_list
The pieces currently in the room as a shopping list — each product with quantity, unit price, and line total, plus the grand total in USD.
roomwright_list_catalog
List the furniture catalogue. Optionally filter by category. Each entry has product_id, dimensions (metres), colour/finish variants, price (USD), and the free space the piece needs in front of it.
category: string?
roomwright_move_item
Move a placed piece to a new centre position in metres. The position is clamped so the piece stays fully inside the room. Returns whether it was clamped and any clearance issues at the new spot.
placement_id: string, x: number, z: number
roomwright_remove_item
Remove a placed piece from the room by its placement_id.
placement_id: string
roomwright_remove_opening
Remove a door or window by its opening_id.
opening_id: string
roomwright_reset_layout
Clear everything and start over: removes every placed piece, every custom piece, and every opening you added, and restores the default room size and its original door and window. Undoable in the app. Use this when the…
roomwright_resize_item
Override a placed piece's size — width (along its own left-right), depth (front-back), height, in metres. Give any subset; each is clamped to 0.15-8 m. The piece re-renders at the new size and its clearance is…
placement_id: string, width: number?, depth: number?, height: number?
roomwright_rotate_item
Rotate a placed piece about the vertical axis. degrees is relative by default; set absolute true to set the heading directly. Angles snap to 15-degree steps.
placement_id: string, degrees: number, absolute: boolean?
roomwright_select_item
Highlight a placed piece in the 3D view and open its Inspector panel, so the user can see which piece you are talking about or about to change. Pass no placement_id to clear the selection.
placement_id: string?
roomwright_set_opening
Add or change a door or window. Omit opening_id to ADD one — give kind (door or window) and wall (north, south, east, west); it starts centred, and you may also pass offset_m, width_m, sill_m or height_m to place it…
opening_id: string?, kind: string?, wall: string?, offset_m: number?, width_m: number?, sill_m: number?, height_m: number?
roomwright_set_room_dimensions
Resize the room. Any of width, length, height in metres (width 1.5-20, length 1.5-20, height 2.2-4.5). Pieces that fall outside the new bounds are pulled back inside and reported.
width: number?, length: number?, height: number?
roomwright_set_variant
Change a placed piece's colour or material. variant_id comes from list_catalog's variants list for that product.
placement_id: string, variant_id: string
roomwright_set_view
Switch the camera between 'orbit' (an angled 3D view of the room) and 'plan' (looking straight down at the floor plan). Use plan to let the user judge the layout, orbit to show the room.
view: string
roomwright_suggest_spot
Ask where a piece could go. Optionally pass product_id (so the spots actually fit that piece) and near (a wall, the centre, the window, or the door) to bias the result. Returns the total open floor, the longest clear…
product_id: string?, near: string?