{"ok":true,"site":{"host":"openroom-webmcp.pages.dev","url":"https://openroom-webmcp.pages.dev/","type":"live","desc":"AI room planner and furniture shopping","tools":[{"name":"get_scene","kind":"answer","impl":"imperative","description":"Return the current validated Scene; each object includes a derived unit facing vector {x, z} ({x:0,z:1} faces the camera side) and supportedBy, the id of the object it stands on or null.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/demo","/?view=dashboard"]},{"name":"get_selection","kind":"answer","impl":"imperative","description":"Return the currently selected Scene object, including its derived unit facing vector {x, z} ({x:0,z:1} faces the camera side) and supportedBy, the id of the object it stands on or null.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/demo","/?view=dashboard"]},{"name":"search_products","kind":"answer","impl":"imperative","description":"Search the local product catalog in deterministic order.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"category":{"type":"string","enum":["sofa","coffee_table","rug","floor_lamp","chair","plant","side_table","bookshelf"]},"query":{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"},"limit":{"type":"integer","minimum":1,"maximum":3,"default":3}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/demo","/?view=dashboard"]},{"name":"replace_object","kind":"act","impl":"imperative","description":"Replace an explicit or selected Scene object with a catalog product. If the new footprint overlaps furniture or leaves the usable floor, it moves to the nearest open floor position; replacement fails with NO_VALID_PLACEMENT when none exists.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"objectId":{"type":"string","minLength":1,"maxLength":64,"pattern":"\\S"},"productId":{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"},"expectedRevision":{"type":"integer","minimum":1},"expectedStateVersion":{"type":"integer","minimum":1}},"required":["productId","expectedRevision","expectedStateVersion"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/demo","/?view=dashboard"]},{"name":"move_object","kind":"act","impl":"imperative","description":"Move an explicit or selected Scene object; orient it with rotationYDegrees or a facing vector {x, z}. The whole footprint stays on the usable floor and moves to the nearest open position instead of overlapping another non-rug object. A lamp moved onto a table is intentionally supported by it: it rises onto the table and comes back reported with supportedBy set to that table's id.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"objectId":{"type":"string","minLength":1,"maxLength":64,"pattern":"\\S"},"position":{"type":"object","properties":{"x":{"type":"number","minimum":-20,"maximum":20},"z":{"type":"number","minimum":-20,"maximum":20}},"required":["x","z"],"additionalProperties":false},"rotationYDegrees":{"type":"number","minimum":-360,"maximum":360},"facing":{"type":"object","description":"Unit XZ direction the object's front points; {x:0,z:1} faces the camera side (front wall), {x:0,z:-1} faces the back wall. Mutually exclusive with rotationYDegrees.","properties":{"x":{"type":"number"},"z":{"type":"number"}},"required":["x","z"],"additionalProperties":false},"expectedRevision":{"type":"integer","minimum":1},"expectedStateVersion":{"type":"integer","minimum":1}},"required":["position","expectedRevision","expectedStateVersion"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/demo","/?view=dashboard"]},{"name":"add_scene_to_cart","kind":"act","impl":"imperative","description":"Open a local approval draft for product-backed Scene objects. Fails with NO_STORE_CONNECTED when no Shopify store is connected. The draft's required commerce block carries merchandise lines, productLinks for every requested product, a cart permalink when variants are mapped, the store's UCP MCP endpoint (mcpEndpoint) for create_cart/update_cart/get_cart, and agentProfileUrl, the UCP agent profile every call to that endpoint must name.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":1},"expectedStateVersion":{"type":"integer","minimum":1},"objectIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64,"pattern":"\\S"},"minItems":1,"maxItems":20,"uniqueItems":true}},"required":["expectedRevision","expectedStateVersion"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/demo","/?view=dashboard"]}],"category":"Commerce","favicon":"/favicons/openroom-webmcp.pages.dev.ico","apiSurface":"spec","toolCount":6}}