{"ok":true,"site":{"host":"hearth.yadneshsalvi.com","url":"https://hearth.yadneshsalvi.com/","type":"live","desc":"","tools":[{"name":"apply_palette","kind":"act","impl":"imperative","description":"Applies a palette preset to a room or the whole home: wall colour, floor material and the textile family used for re-tinted fabrics. Presets: warm-clay, sage-linen, dusk, nordic, terrazzo, ochre-sun.","title":"Apply palette","annotations":{},"inputSchema":{"type":"object","properties":{"palette":{"type":"string","enum":["warm-clay","sage-linen","dusk","nordic","terrazzo","ochre-sun"],"description":"Palette preset id."},"room":{"type":"string","minLength":1,"description":"Room id or name, e.g. living or Living Room. Defaults to the active room."},"scope":{"default":"room","description":"Apply to one room or the whole home; default room.","type":"string","enum":["room","home"]}},"required":["palette"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"arrange_room","kind":"act","impl":"imperative","description":"Re-arranges all unlocked furniture in a room in one animated pass. Styles: conversation (seating faces each other around a focal point), media (seating faces the TV or media wall), open (maximum clear floor and walkways), work (desk by the window, storage on the walls). Keeps door swings and clearances free and reports what moved with the conflict count before and after.","title":"Arrange room","annotations":{},"inputSchema":{"type":"object","properties":{"room":{"type":"string","minLength":1,"description":"Room id or name, e.g. living or Living Room. Defaults to the active room."},"style":{"type":"string","enum":["conversation","media","open","work"],"description":"Arrangement style: conversation, media, open or work."},"keep_locked":{"default":true,"description":"Keep locked furniture in place; default true.","type":"boolean"},"focus":{"description":"Optional focal point: an item id or name (e.g. the fireplace or TV) or window:<id>.","type":"string","minLength":1}},"required":["style"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"clear_home","kind":"act","impl":"imperative","description":"Removes every item from every room after the human confirms in a dialog on the page. The removed layout is kept so restore_furniture (or undo) can bring it back. Returns cancelled if the human declines.","title":"Clear all furniture","annotations":{},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"clear_room","kind":"act","impl":"imperative","description":"Removes every item from a room after the human confirms in a dialog on the page. The removed layout is kept so restore_furniture (or undo) can bring it back. Returns cancelled if the human declines.","title":"Clear room","annotations":{},"inputSchema":{"type":"object","properties":{"room":{"type":"string","minLength":1,"description":"Room id or name, e.g. living or Living Room. Defaults to the active room."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"export_design_board","kind":"act","impl":"imperative","description":"Creates a design board PNG for a room: dollhouse render, plan view, palette swatches and an itemised list with prices and the total, then starts the download in the page. Use it to present or share a finished layout.","title":"Export design board","annotations":{},"inputSchema":{"type":"object","properties":{"room":{"type":"string","minLength":1,"description":"Room id or name, e.g. living or Living Room. Defaults to the active room."},"title":{"description":"Board title (default the room name).","type":"string","maxLength":100}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_cart","kind":"answer","impl":"imperative","description":"The shopping cart: each line with product, colorway, quantity, unit and line price in USD, the subtotal, the design budget and how much of it remains, and whether checkout is available. Lines note which placed item they belong to.","title":"Cart","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_conflicts","kind":"answer","impl":"imperative","description":"Lists layout problems in a room or the whole home: overlapping items, items outside the room, missing clearance in front of seating, beds and desks, blocked door swings, pinched traffic paths and, when accessibility mode is on, paths under 90 cm and missing 150 cm turning circles. Each conflict names the items involved and a concrete fix in cm.","title":"Layout conflicts","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"room":{"description":"Room id or name, or all for the whole home. Defaults to the active room.","type":"string","minLength":1}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_design_report","kind":"answer","impl":"imperative","description":"Design critique of a room scored 0–10 on balance, focal point, conversation seating, lighting coverage, storage and traffic flow, with an overall score out of 100 and the top three improvements. Use it to review a layout or to explain why a room feels off.","title":"Design report","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"room":{"type":"string","minLength":1,"description":"Room id or name, e.g. living or Living Room. Defaults to the active room."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_product","kind":"answer","impl":"imperative","description":"Full details of one catalog product: dimensions in cm, price in USD, colorways, front clearance needed, seat count, style tags and which walls of a room it fits with the spare cm. Pass compare_to (a placed item) to learn whether the product matches that item's size exactly, closely or not. Use it to confirm a product before placing, previewing or adding it to the cart.","title":"Product details","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"product":{"type":"string","minLength":1,"description":"Catalog product id (e.g. sofa-endre) or product name from search_catalog."},"room":{"type":"string","minLength":1,"description":"Room id or name, e.g. living or Living Room. Defaults to the active room."},"compare_to":{"description":"Placed item id or name (or selected) to compare sizes with; adds size_match with the cm difference per side.","type":"string","minLength":1}},"required":["product"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_room_details","kind":"answer","impl":"imperative","description":"Details of one room: walls (id, side, length in cm and the free spans where furniture can go), openings (doors, windows, arches with wall, offset, width and swing) and every placed item with id, name, position, rotation, footprint and colorway. Coordinates are room-local in cm: origin at the north-west corner, x east, y south. Use it before placing or moving furniture in that room.","title":"Room details","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"room":{"type":"string","minLength":1,"description":"Room id or name, e.g. living or Living Room. Defaults to the active room."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_scene_summary","kind":"answer","impl":"imperative","description":"Overview of the whole home: every room with id, name, type, size in m², wall sides with lengths in cm, item count and conflict count; plus the current mode, view, time of day, accessibility flag, active room, the human's selection, cart subtotal and design budget in USD. Call it first to learn room and item ids before reading details or placing furniture.","title":"Scene summary","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_selection","kind":"answer","impl":"imperative","description":"What the human is pointing at right now: the selected item, hovered item, last moved item (and whether the human or the agent moved it), the selected room and the camera focus. Use it to resolve words like this, that, here or the one I clicked before acting.","title":"Human selection","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"load_variant","kind":"act","impl":"imperative","description":"Restores a previously saved layout variant of a room by name, replacing the room's current furniture. Save the current layout first if you want to keep it.","title":"Load variant","annotations":{},"inputSchema":{"type":"object","properties":{"variant":{"type":"string","minLength":1,"description":"Saved variant name (see save_variant)."},"room":{"type":"string","minLength":1,"description":"Room id or name, e.g. living or Living Room. Defaults to the active room."}},"required":["variant"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"measure","kind":"answer","impl":"imperative","description":"Measures in cm: a wall's length and free spans, an item's footprint, the gap between two items, or the distance from an item to a wall or opening. Subjects are wall sides (north, east, south, west), wall ids (w0…), item ids or names, or opening ids. Use it to check fit before placing or moving.","title":"Measure","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"description":"What to measure: a wall side or id, an item id or name, or an opening id."},"to":{"description":"Optional second thing (wall, item or opening) to measure the gap or distance to.","type":"string","minLength":1},"room":{"type":"string","minLength":1,"description":"Room id or name, e.g. living or Living Room. Defaults to the active room."}},"required":["subject"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"move_furniture","kind":"act","impl":"imperative","description":"Moves and/or rotates a placed item. Give an anchor in words (wall + along, facing, next_to, centered, under), a raw pos in cm, a delta in cm, a rotation (0, 90, 180 or 270 clockwise; 0 faces south) or rotate_by, and optionally another room. Snaps and nudges like place_furniture and returns the resolved position and any conflicts.","title":"Move furniture","annotations":{},"inputSchema":{"type":"object","properties":{"item":{"type":"string","minLength":1,"description":"Placed item id (e.g. sofa-1) or its name. Use selected for the human's current selection."},"anchor":{"type":"object","properties":{"wall":{"description":"Wall the back goes against: north, east, south, west, or a wall id such as w2.","type":"string","minLength":1},"along":{"description":"Position along that wall: start, center, end, or a number of cm from the wall's start (clockwise).","anyOf":[{"type":"string","enum":["start","center","end"]},{"type":"number"}]},"facing":{"description":"What the front faces: an item id or name, room_center, wall:<side>, or window:<id>.","type":"string","minLength":1},"next_to":{"description":"Item id or name to sit beside.","type":"string","minLength":1},"side":{"description":"Side of next_to to use: left, right, front or behind (from that item's point of view).","type":"string","enum":["left","right","front","behind"]},"gap_cm":{"description":"Gap in cm between the two items (default 10).","type":"number","minimum":0},"centered":{"description":"true to centre the item in the room.","type":"boolean"},"under":{"description":"window:<id> to centre the item under that window with its back to the wall.","type":"string","minLength":1}},"additionalProperties":false,"description":"Where to put it, in words: wall + along, facing, next_to + side + gap_cm, centered, or under a window. Preferred over pos."},"pos":{"type":"object","properties":{"x":{"type":"number","description":"Footprint centre x in cm; positive points east."},"y":{"type":"number","description":"Footprint centre y in cm; positive points south."}},"required":["x","y"],"additionalProperties":false,"description":"Raw footprint centre in cm, room-local (origin north-west corner, x east, y south). Use anchor when possible."},"delta_cm":{"description":"Shift by this many cm: x positive = east, y positive = south.","type":"object","properties":{"x":{"description":"East-west shift in cm; positive is east.","type":"number"},"y":{"description":"North-south shift in cm; positive is south.","type":"number"}},"additionalProperties":false},"rotation":{"type":"number","enum":[0,90,180,270],"description":"0, 90, 180 or 270 degrees clockwise; 0 = front faces south."},"rotate_by":{"description":"Turn by 90 (clockwise), -90 (counter-clockwise) or 180 degrees.","type":"number","enum":[90,-90,180]},"room":{"description":"Move the item into this room (id or name). Defaults to its current room.","type":"string","minLength":1}},"required":["item"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"place_furniture","kind":"act","impl":"imperative","description":"Places a catalog product in a room as a new item. Position it with an anchor in words (back against a wall at start, center, end or N cm along it; facing an item or the room centre; next to an item with a gap; centred; or under a window) or with a raw pos in cm and a rotation. The engine snaps to the wall, nudges up to 60 cm to avoid collisions and reports conflicts. Returns the new item id.","title":"Place furniture","annotations":{},"inputSchema":{"type":"object","properties":{"product":{"type":"string","minLength":1,"description":"Catalog product id (e.g. sofa-endre) or product name from search_catalog."},"room":{"type":"string","minLength":1,"description":"Room id or name, e.g. living or Living Room. Defaults to the active room."},"anchor":{"type":"object","properties":{"wall":{"description":"Wall the back goes against: north, east, south, west, or a wall id such as w2.","type":"string","minLength":1},"along":{"description":"Position along that wall: start, center, end, or a number of cm from the wall's start (clockwise).","anyOf":[{"type":"string","enum":["start","center","end"]},{"type":"number"}]},"facing":{"description":"What the front faces: an item id or name, room_center, wall:<side>, or window:<id>.","type":"string","minLength":1},"next_to":{"description":"Item id or name to sit beside.","type":"string","minLength":1},"side":{"description":"Side of next_to to use: left, right, front or behind (from that item's point of view).","type":"string","enum":["left","right","front","behind"]},"gap_cm":{"description":"Gap in cm between the two items (default 10).","type":"number","minimum":0},"centered":{"description":"true to centre the item in the room.","type":"boolean"},"under":{"description":"window:<id> to centre the item under that window with its back to the wall.","type":"string","minLength":1}},"additionalProperties":false,"description":"Where to put it, in words: wall + along, facing, next_to + side + gap_cm, centered, or under a window. Preferred over pos."},"pos":{"type":"object","properties":{"x":{"type":"number","description":"Footprint centre x in cm; positive points east."},"y":{"type":"number","description":"Footprint centre y in cm; positive points south."}},"required":["x","y"],"additionalProperties":false,"description":"Raw footprint centre in cm, room-local (origin north-west corner, x east, y south). Use anchor when possible."},"rotation":{"type":"number","enum":[0,90,180,270],"description":"0, 90, 180 or 270 degrees clockwise; 0 = front faces south."},"colorway":{"type":"string","minLength":1,"description":"Colorway id or name, e.g. oak, sage, terracotta, dusty-blue."}},"required":["product"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"preview_in_room","kind":"act","impl":"imperative","description":"Try before you buy: shows a translucent ghost of a catalog product at an anchor or position in a room with its price, fit and conflicts, without changing the layout or the cart. One preview at a time; confirm_preview keeps it and cancel_preview discards it.","title":"Preview in room","annotations":{},"inputSchema":{"type":"object","properties":{"product":{"type":"string","minLength":1,"description":"Catalog product id (e.g. sofa-endre) or product name from search_catalog."},"room":{"type":"string","minLength":1,"description":"Room id or name, e.g. living or Living Room. Defaults to the active room."},"anchor":{"type":"object","properties":{"wall":{"description":"Wall the back goes against: north, east, south, west, or a wall id such as w2.","type":"string","minLength":1},"along":{"description":"Position along that wall: start, center, end, or a number of cm from the wall's start (clockwise).","anyOf":[{"type":"string","enum":["start","center","end"]},{"type":"number"}]},"facing":{"description":"What the front faces: an item id or name, room_center, wall:<side>, or window:<id>.","type":"string","minLength":1},"next_to":{"description":"Item id or name to sit beside.","type":"string","minLength":1},"side":{"description":"Side of next_to to use: left, right, front or behind (from that item's point of view).","type":"string","enum":["left","right","front","behind"]},"gap_cm":{"description":"Gap in cm between the two items (default 10).","type":"number","minimum":0},"centered":{"description":"true to centre the item in the room.","type":"boolean"},"under":{"description":"window:<id> to centre the item under that window with its back to the wall.","type":"string","minLength":1}},"additionalProperties":false,"description":"Where to put it, in words: wall + along, facing, next_to + side + gap_cm, centered, or under a window. Preferred over pos."},"pos":{"type":"object","properties":{"x":{"type":"number","description":"Footprint centre x in cm; positive points east."},"y":{"type":"number","description":"Footprint centre y in cm; positive points south."}},"required":["x","y"],"additionalProperties":false,"description":"Raw footprint centre in cm, room-local (origin north-west corner, x east, y south). Use anchor when possible."},"rotation":{"type":"number","enum":[0,90,180,270],"description":"0, 90, 180 or 270 degrees clockwise; 0 = front faces south."},"colorway":{"type":"string","minLength":1,"description":"Colorway id or name, e.g. oak, sage, terracotta, dusty-blue."}},"required":["product"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"remove_furniture","kind":"act","impl":"imperative","description":"Removes one placed item from its room. If the item is linked to a cart line, that line is removed as well and the result says so. Use clear_room to empty a whole room.","title":"Remove furniture","annotations":{},"inputSchema":{"type":"object","properties":{"item":{"type":"string","minLength":1,"description":"Placed item id (e.g. sofa-1) or its name. Use selected for the human's current selection."}},"required":["item"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"resize_furniture","kind":"act","impl":"imperative","description":"Changes a placed item's size in cm: width, depth and height, or scale_percent of its catalog size; reset restores the catalog size. The 3D model stretches to the new size and every rule (overlap, clearance, walls) uses it. Nudges the item up to 60 cm to stay inside the room and reports conflicts. Returns the new and the catalog dimensions and the closest catalog product to the new size.","title":"Resize furniture","annotations":{},"inputSchema":{"type":"object","properties":{"item":{"type":"string","minLength":1,"description":"Placed item id (e.g. sofa-1) or its name. Use selected for the human's current selection."},"width_cm":{"description":"New width in cm (10–1000), left–right facing the front. Sides not given keep their current size.","type":"number","exclusiveMinimum":0},"depth_cm":{"description":"New depth in cm (10–1000), front–back.","type":"number","exclusiveMinimum":0},"height_cm":{"description":"New height in cm (10–1000), floor to top.","type":"number","exclusiveMinimum":0},"scale_percent":{"description":"Scale every side to this percentage of the catalog size, 25–400; 100 restores it.","type":"number","exclusiveMinimum":0},"reset":{"description":"true restores the catalog size.","type":"boolean"}},"required":["item"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"restore_furniture","kind":"act","impl":"imperative","description":"Brings back the furniture removed by the last clear_home or clear_room, into the rooms it came from. Items whose room no longer exists are skipped and listed. Returns not_found when nothing has been cleared.","title":"Restore furniture","annotations":{},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"save_variant","kind":"act","impl":"imperative","description":"Saves the current furniture layout of a room under a name (for example Cosy or Media wall) so it can be restored with load_variant or, once two or more exist, compared side by side with compare_variants.","title":"Save variant","annotations":{},"inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"Short name for this saved room layout."},"room":{"type":"string","minLength":1,"description":"Room id or name, e.g. living or Living Room. Defaults to the active room."}},"required":["name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"search_catalog","kind":"answer","impl":"imperative","description":"Searches Hearth Studio's furniture catalog (Shopify). Filter by category, maximum price in USD, maximum width and depth in cm, style, colorway, or the wall it must fit (fits_wall) in a room. Give target dimensions (width_cm, depth_cm, height_cm) or like_item to rank by closest size: each result then says exact, close or off with the cm difference. Returns up to 6 products with id, price, dimensions, colorways and a fit note. Ids feed place_furniture, preview_in_room and update_cart.","title":"Search catalog","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"query":{"description":"Free-text search, e.g. small oak desk.","type":"string"},"category":{"description":"Furniture category.","type":"string","enum":["sofa","armchair","bed","wardrobe","table","desk","chair","shelf","tv-unit","rug","floor-lamp","table-lamp","plant","decor"]},"max_price_usd":{"description":"Maximum product price in USD.","type":"number","minimum":0},"max_width_cm":{"description":"Maximum product width in cm.","type":"number","exclusiveMinimum":0},"max_depth_cm":{"description":"Maximum product depth in cm.","type":"number","exclusiveMinimum":0},"fits_wall":{"description":"Only products whose width fits a free span on this wall (north, east, south, west or wall id) of the room.","type":"string","minLength":1},"room":{"type":"string","minLength":1,"description":"Room id or name, e.g. living or Living Room. Defaults to the active room."},"style":{"description":"Style tag such as scandinavian, japandi, mid-century, rustic, modern.","type":"string","minLength":1},"colorway":{"type":"string","minLength":1,"description":"Colorway id or name, e.g. oak, sage, terracotta, dusty-blue."},"limit":{"default":6,"description":"Maximum results, from 1 to 6; default 6.","type":"integer","minimum":1,"maximum":6},"width_cm":{"description":"Target width in cm; results are ranked by how close their size is (see dims_match).","type":"number","exclusiveMinimum":0},"depth_cm":{"description":"Target depth in cm; results are ranked by how close their size is (see dims_match).","type":"number","exclusiveMinimum":0},"height_cm":{"description":"Target height in cm; results are ranked by how close their size is (see dims_match).","type":"number","exclusiveMinimum":0},"like_item":{"description":"Placed item id or name (or selected) whose current size is the target; its category is used unless category is given.","type":"string","minLength":1},"tolerance_cm":{"description":"How many cm per side still count as close (default 10). exact = every side within 1 cm.","type":"number","minimum":0,"maximum":200}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_accessibility_mode","kind":"act","impl":"imperative","description":"Turns accessibility mode on or off. On: paths must be at least 90 cm wide, a 150 cm turning circle is required beside the bed, desk and sofa, reach zones are shown, and get_conflicts and the overlays report these rules. Off: standard 60 cm walkways.","title":"Accessibility mode","annotations":{},"inputSchema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"true enables accessibility layout rules; false restores standard rules."}},"required":["enabled"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_colorway","kind":"act","impl":"imperative","description":"Changes a placed item's colorway (for example oak, sage, terracotta or dusty-blue). If the product is in the cart, the cart line switches to the matching variant. Lists the available colorways when the requested one is unknown.","title":"Set colorway","annotations":{},"inputSchema":{"type":"object","properties":{"item":{"type":"string","minLength":1,"description":"Placed item id (e.g. sofa-1) or its name. Use selected for the human's current selection."},"colorway":{"type":"string","minLength":1,"description":"Colorway id or name, e.g. oak, sage, terracotta, dusty-blue."}},"required":["item","colorway"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_mode","kind":"act","impl":"imperative","description":"Switches the studio mode. build: edit rooms and openings (enables apply_template, create_room, update_room, add_opening, move_opening and remove_opening). design: place and arrange furniture. shop: browse products and manage the cart with prices shown; enables get_checkout_link. Design and shop tools stay available in every mode.","title":"Switch mode","annotations":{},"inputSchema":{"type":"object","properties":{"mode":{"type":"string","enum":["build","design","shop"],"description":"Studio mode: build, design or shop."}},"required":["mode"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_time_of_day","kind":"act","impl":"imperative","description":"Sets the lighting time of day: morning (cool soft light), noon (bright with short shadows), golden (warm low sun) or evening (dusk, every lamp glows). Changes the look only; the layout stays the same.","title":"Time of day","annotations":{},"inputSchema":{"type":"object","properties":{"time":{"type":"string","enum":["morning","noon","golden","evening"],"description":"Lighting time: morning, noon, golden or evening."}},"required":["time"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_view","kind":"act","impl":"imperative","description":"Changes the camera: plan (top-down) or dollhouse (isometric), optionally focused on the whole home with focus: \"home\", a room, or an item, with the isometric yaw at nw, ne, se or sw. Use it to show the human what you are working on.","title":"Set view","annotations":{},"inputSchema":{"type":"object","properties":{"view":{"description":"Camera view: plan or dollhouse.","type":"string","enum":["plan","dollhouse"]},"focus":{"description":"Use home for the entire home, or give a room/item id or name. Defaults to the active room.","type":"string","minLength":1},"yaw":{"description":"Dollhouse compass yaw: nw, ne, se or sw.","type":"string","enum":["nw","ne","se","sw"]}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"undo","kind":"act","impl":"imperative","description":"Undoes the last change(s) to the scene, whether made by the agent or the human, 1 to 10 steps at a time. Returns what was undone.","title":"Undo","annotations":{},"inputSchema":{"type":"object","properties":{"steps":{"default":1,"description":"Number of scene changes to undo, from 1 to 10; default 1.","type":"integer","minimum":1,"maximum":10}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_cart","kind":"act","impl":"imperative","description":"Changes the Shopify cart. add: adds a product (by product id or a placed item) in a colorway with a quantity; remove: removes that product's line; set_quantity: sets the line's quantity. Returns the new subtotal in USD and the remaining budget. Purchases are completed by the human at checkout.","title":"Update cart","annotations":{},"inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["add","remove","set_quantity"],"description":"Cart action: add, remove or set_quantity."},"product":{"description":"Catalog product id or name. Give either product or item.","type":"string","minLength":1},"item":{"description":"Placed item id or name; its product and colorway are used and the cart line is linked to it.","type":"string","minLength":1},"colorway":{"type":"string","minLength":1,"description":"Colorway id or name, e.g. oak, sage, terracotta, dusty-blue."},"quantity":{"description":"Quantity for add (default 1) or set_quantity.","type":"integer","minimum":0}},"required":["action"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Commerce","favicon":"/favicons/hearth.yadneshsalvi.com.png","apiSurface":"spec","toolCount":29}}