{"ok":true,"site":{"host":"stagepair.netlify.app","url":"https://stagepair.netlify.app/","type":"live","desc":"StagePair — a human stages the performance while an AI agent finds the shot inside the same live browser scene.","tools":[{"name":"inspect_stage","kind":"answer","impl":"imperative","description":"Read the exact current StagePair state: performer, camera, table, door, creative locks, and revision. Always call this immediately before setting a camera, then pass its revision as basedOnRevision so a human edit cannot be overwritten by a stale agent move.","title":"Inspect the live stage","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"inspect_camera","kind":"answer","impl":"imperative","description":"Read the current camera position, field of view, performer target, and a deterministic framing check against the current live stage.","title":"Inspect the current camera","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"evaluate_camera","kind":"answer","impl":"imperative","description":"Evaluate a candidate camera position against the current performer, table, and door without mutating the stage. Useful before choosing a new shot.","title":"Evaluate a camera position","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"x":{"type":"number","description":"Camera X position in stage meters, from -7.2 to 7.2."},"z":{"type":"number","description":"Camera Z position in stage meters, from -7.2 to 7.2."},"fov":{"type":"number","description":"Vertical field of view in degrees, from 28 to 68."}},"required":["x","z"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_camera","kind":"act","impl":"imperative","description":"Move only the camera in the live StagePair scene. basedOnRevision must equal the current stage revision returned by inspect_stage. If the human has edited the stage since inspection, the move is rejected as stale so the agent must inspect again. This tool never moves the performer, prop, or performance, and it rejects changes while the camera is human-locked.","title":"Set the camera from the latest stage revision","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"x":{"type":"number","description":"Camera X position in stage meters, from -7.2 to 7.2."},"z":{"type":"number","description":"Camera Z position in stage meters, from -7.2 to 7.2."},"fov":{"type":"number","description":"Vertical field of view in degrees, from 28 to 68."},"basedOnRevision":{"type":"integer","minimum":1,"description":"Exact stage revision returned by the latest inspect_stage call."}},"required":["x","z","basedOnRevision"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"capture_take","kind":"act","impl":"imperative","description":"Capture the current StagePair viewfinder as a contact-sheet still, preserving the exact current stage revision and camera state.","title":"Capture the current frame","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"label":{"type":"string","description":"A short optional take label."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Media & Personal","favicon":"/favicons/stagepair.netlify.app.svg","apiSurface":"spec","toolCount":5}}