add_item
Place a new item in the room and return it, including its generated id. Position x,y is the TOP-LEFT corner in centimetres. Each type has sensible default dimensions (a round_table is 150x150cm and seats 8; a…
type: string, label: string, x: number?, y: number?, w: number?, h: number?, seats: integer?, shape: string?, … (list cut; the site may define more)
align_items
Align two or more items to their shared average on one axis. axis:'x' lines them up in a vertical column; axis:'y' lines them up in a horizontal row.
ids: array, axis: string
auto_arrange
Push all furniture apart until every gap meets the wheelchair route width and every door clearance zone is clear, keeping everything inside the room. Animates over a few seconds and honours cancellation. Use this when…
minGap: number?, iterations: integer?
check_accessibilityread-only
Run the full accessibility audit on the current layout. Checks for items outside the room, overlapping furniture, blocked door clearance zones (150cm), and — most importantly — whether every item can actually be…
clear_room
Remove every item including doors. Not undoable — confirm with the user first.
describe_selectionread-only
Return the item the HUMAN currently has selected, plus its four nearest neighbours and the exact gap in centimetres to each. Call this when the user says 'this table', 'that one', or 'the selected item' — it is how…
export_image
Download the current floor plan as an image file, with the room name and the accessibility verdict stamped underneath it — so the exported file is a shareable record, not just a screenshot. Use this when the user says…
format: string?
find_itemsread-only
Find items by a case-insensitive substring of their label, by exact type, or both. Use this instead of get_layout when the room is busy and you only need a few items.
query: string?, type: string?
fix_accessibility
Available ONLY while check_accessibility reports problems. Pulls furniture back inside the room, clears door zones, and separates items until every route meets the wheelchair width. Returns what it changed and whether…
strategy: string?
get_layoutread-only
Return the room's name and dimensions, and every item in it with its id, type, label, exact position and size. ALL UNITS ARE CENTIMETRES, with (0,0) at the top-left corner of the room. Call this FIRST before any edit…
measure_gapread-only
Return the exact shortest distance in centimetres between two items, and whether that gap is wide enough for a wheelchair (needs 90cm). Use this to answer questions like "can someone get between these two tables?".…
a: string, b: string
move_item
Move an item so its top-left corner sits at an exact centimetre position. This is precision a vision model cannot achieve from a screenshot.
id: string, x: number, y: number
remove_item
Take an item out of the room permanently, along with the seats it provided. Not undoable, so confirm with the user before removing anything they placed.
id: string
resize_item
Set an item's width and depth in centimetres. Minimum 20cm; the item is kept inside the room. Use this to model real furniture the user owns — a 220cm banquet table, a 60cm-deep bar. Resizing changes clearances, so…
id: string, w: number?, h: number?
rotate_item
Rotate an item by 90 degrees, swapping its width and depth. Position is unchanged.
id: string
set_item_props
Change an item's label and/or its seat count. Position and size are unchanged.
id: string, label: string?, seats: integer?
set_room
Set the room's name and/or its interior dimensions in centimetres. The canvas is drawn at 1 pixel per centimetre, so a 1200x700 room is 12m x 7m. Every field is optional — pass only what you want to change.
name: string?, width: number?, height: number?
show_accessible_route
Toggle the visual overlay on the canvas. Green shows floor a wheelchair can actually reach from a doorway; red shows floor that is wide enough but cut off. Turn this on when explaining an accessibility problem to the…
show: boolean?