{"ok":true,"site":{"host":"elbowroom.jonathanandrei.com","url":"https://elbowroom.jonathanandrei.com/","type":"live","desc":"Before you buy the couch, find out whether it can get up the stairs.","tools":[{"name":"describe_staircase","kind":"answer","impl":"imperative","description":"Report the measured geometry of the staircase: clear width of the run, the two widths at the turn, headroom under the soffit, and the openings. Says which figures were measured and which are still placeholders, so a verdict is never quoted as firmer than its inputs.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_objects","kind":"answer","impl":"imperative","description":"List the things available to test against this staircase, with their real dimensions in inches. Includes the couch this house actually failed to move, and standard items such as mattresses and sheet goods whose sizes are published rather than guessed.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_current_object","kind":"answer","impl":"imperative","description":"Report what is currently on the canvas: which object, its dimensions, where it sits and at what angle. Use this to see what the person at the keyboard has already set up before changing anything.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"check_fit","kind":"answer","impl":"imperative","description":"Decide whether an object of the given dimensions fits the place on screen. For a staircase, checks the doorway, the straight run and the winder turn, choosing the best orientation and tilt. For a traced room, checks the floor outline, the ceiling and the narrowest gap between walls. Returns which stage fails and by how much. Pass raw inches; all the geometry is done here. Call describe_staircase first to see which it is.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"length_in":{"type":"number","description":"Longest dimension in inches."},"depth_in":{"type":"number","description":"Second dimension in inches."},"height_in":{"type":"number","description":"Third dimension in inches."}},"required":["length_in","depth_in","height_in"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"longest_that_fits","kind":"act","impl":"imperative","description":"For an object of a given depth, report the longest it could be and still get round the turn, and the angle at which the corner pinches. This is the number that decides whether a piece of furniture is worth buying. If a room is on screen rather than a staircase, reports the longest straight run inside its walls instead.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"depth_in":{"type":"number","description":"Depth presented to the corner, in inches."}},"required":["depth_in"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_unknowns","kind":"answer","impl":"imperative","description":"List the measurements that are still placeholders rather than tape readings, and say why each matters. Call this before presenting a verdict as certain.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"select_object","kind":"act","impl":"imperative","description":"Put one of the catalogue objects on the canvas. The drawing updates immediately, so the person watching sees the change as you make it.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Catalogue id from list_objects.","enum":["the-couch","sofa-3seat","water-tank","mattress-queen","mattress-king","plywood-sheet","door-leaf","fridge"]}},"required":["id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"set_dimensions","kind":"act","impl":"imperative","description":"Put a custom object on the canvas by its measurements, for something not in the catalogue. Give raw inches straight off the tape.","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"length_in":{"type":"number","description":"Longest dimension in inches."},"depth_in":{"type":"number","description":"Second dimension in inches."},"height_in":{"type":"number","description":"Third dimension in inches."},"label":{"type":"string","description":"What to call it on screen. Optional."}},"required":["length_in","depth_in","height_in"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"show_pinch","kind":"act","impl":"imperative","description":"Move the object to the tightest point of the turn and leave it there. For something that does not fit, that is where it jams. For something that does, it is the worst place on the route and shows how little room is left. Use this instead of describing it.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"place_object","kind":"act","impl":"imperative","description":"Move or rotate the object on the plan by hand, in inches and degrees from the outer corner. For walking through a specific position rather than jumping to the pinch point.","inputSchema":{"type":"object","properties":{"x_in":{"type":"number","description":"Centre position along the lower arm, inches."},"y_in":{"type":"number","description":"Centre position up the vertical arm, inches."},"angle_deg":{"type":"number","description":"Rotation in degrees, 0 is along the lower arm."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"remove_door_leaf","kind":"act","impl":"imperative","description":"Take the door at the top off its hinges, or put it back. Worth about two inches of opening and it clears the swing, which is the first thing any mover tries.","inputSchema":{"type":"object","properties":{"removed":{"type":"boolean","description":"True to take it off, false to rehang."}},"required":["removed"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reset_canvas","kind":"act","impl":"imperative","description":"Put everything back to the starting state: first catalogue object, door rehung.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"record_measurement","kind":"act","impl":"imperative","description":"Write a tape reading into the staircase model, replacing a placeholder. This changes every verdict the app gives, so the person at the keyboard is asked to confirm it before it takes effect. Only use it for a figure someone has actually measured.","inputSchema":{"type":"object","properties":{"field":{"type":"string","description":"Which measurement.","enum":["clearWidth","turn.widthA","turn.widthB","turn.headroom","run.rise","run.going","run.treads","turn.treads"]},"inches":{"type":"number","description":"The reading, in inches."}},"required":["field","inches"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"try_without_feet","kind":"act","impl":"imperative","description":"Test the same object with its feet taken off, which is the cheapest way to buy width through a turn. Only offered while something is failing.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"how_short_to_fit","kind":"act","impl":"imperative","description":"Report how much shorter the object would have to be to get round the turn at its current depth. Only offered while something is failing.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"calibration_status","kind":"answer","impl":"imperative","description":"Report how far the calibration has got: whether a photo is loaded, how many reference corners are clicked, the reference size, and every reading taken so far.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/measure/","pages":["/measure/"]},{"name":"set_reference_size","kind":"act","impl":"imperative","description":"Set the real width and depth of the thing being used as the calibration reference, in inches. A stair tread, a floor tile, a sheet of paper.","inputSchema":{"type":"object","properties":{"width_in":{"type":"number","description":"Real width of the reference, inches."},"depth_in":{"type":"number","description":"Real depth of the reference, inches."}},"required":["width_in","depth_in"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/measure/","pages":["/measure/"]},{"name":"save_reading","kind":"act","impl":"imperative","description":"File the most recent reading against one of the staircase measurements, so it can be carried over into the planner.","inputSchema":{"type":"object","properties":{"field":{"type":"string","description":"Which measurement.","enum":["clearWidth","turn.widthA","turn.widthB","turn.headroom"]}},"required":["field"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/measure/","pages":["/measure/"]},{"name":"send_to_planner","kind":"transact","impl":"imperative","description":"Carry the measured staircase over to Elbow Room so the fit checks run against this house instead of the sample one.","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/measure/","pages":["/measure/"]},{"name":"echo","kind":"act","impl":"imperative","description":"Echo a word back. Used to confirm the agent can reach this page at all.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"word":{"type":"string","description":"Any word"}},"required":["word"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/probe/","pages":["/probe/"]},{"name":"plain_string","kind":"act","impl":"imperative","description":"Returns a bare string rather than a content array, to find out which return shape the runtime accepts.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/probe/","pages":["/probe/"]},{"name":"get_stair_geometry","kind":"answer","impl":"imperative","description":"Read the measured geometry of the basement staircase: clear width, number of winder treads, and headroom at the turn.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/probe/","pages":["/probe/"]},{"name":"check_fit","kind":"answer","impl":"imperative","description":"Check whether an object of a given length and depth in inches can pass up the staircase.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"length_in":{"type":"number","description":"Longest dimension, inches"},"depth_in":{"type":"number","description":"Depth across the side profile, inches"}},"required":["length_in","depth_in"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/probe/","pages":["/probe/"]},{"name":"book_delivery","kind":"transact","impl":"imperative","description":"Book a delivery slot. Consequential, so it asks the person at the keyboard to confirm.","inputSchema":{"type":"object","properties":{"day":{"type":"string","description":"Day of the week"}},"required":["day"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/probe/","pages":["/probe/"]}],"favicon":"/favicons/elbowroom.jonathanandrei.com.png","apiSurface":"spec","category":"Productivity & Business","toolCount":24}}