{"ok":true,"site":{"host":"origami-webmcp.onrender.com","url":"https://origami-webmcp.onrender.com/","type":"live","desc":"An agent-native origami studio. A person folds a sheet of virtual paper in 3D while an AI agent reads the real crease and layer state through WebMCP tools and folds alongside them.","tools":[{"name":"get_sheet","kind":"answer","impl":"imperative","description":"Summary of the paper on the stage: how many flat regions it has, how many folds have been applied, how deep the layer stack is, whether it is turned over, and how many creases are foldable now. Returns counts, not geometry.","title":"Get sheet state","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_creases","kind":"answer","impl":"imperative","description":"Every crease that can be folded from the current state, with its id, a short label, its endpoints in sheet coordinates, and how many flat regions the fold would move. Only these ids are accepted by fold_crease.","title":"List foldable creases","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"describe_sheet","kind":"answer","impl":"imperative","description":"The current state in plain sentences, suitable for reading aloud to the person. Same text the canvas exposes as its accessible description.","title":"Describe the sheet","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_models","kind":"answer","impl":"imperative","description":"The authored catalogue: each model's id, name, difficulty, and step count. These are simple-fold models; the engine does not do reverse or petal folds, so no crane is offered.","title":"List target models","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_active_model","kind":"answer","impl":"imperative","description":"Which model is selected, how many of its steps the sheet has completed, and whether the sheet is still on its sequence.","title":"Get active model","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_next_step","kind":"answer","impl":"imperative","description":"The next authored step for the active model, naming the crease id, the fold type, and a short note. Fails when no model is selected or the sheet has left the sequence.","title":"Get the next step","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"check_progress","kind":"answer","impl":"imperative","description":"Whether the sheet matches the expected state for the active model. Progress is measured by replaying the model and comparing geometry, so a fold the person made by hand is reported honestly rather than assumed away.","title":"Check progress","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_fold_history","kind":"answer","impl":"imperative","description":"Applied sheet changes in order, including folds and whole-model flips, each tagged person or agent. Returns at most the newest ten plus total and truncation counts; undone changes are excluded.","title":"Get action history","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_view","kind":"answer","impl":"imperative","description":"The shared camera as azimuth degrees, elevation degrees, and zoom factor. The person and the agent drive the same view.","title":"Get camera view","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_tool_activity","kind":"answer","impl":"imperative","description":"Recent tool calls this page recorded, newest last, each tagged with its origin. Entries include text supplied by the caller.","title":"Get tool activity","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"fold_crease","kind":"act","impl":"imperative","description":"Fold the sheet along one currently legal crease. Refuses any id outside the legal set and names the legal ids in the refusal. Returns the resulting sheet summary.","title":"Fold along a crease","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"crease_id":{"type":"string","description":"Crease id from list_creases, for example diag-a.","maxLength":80},"type":{"type":"string","description":"valley folds the flap up and over, mountain tucks it under.","maxLength":80,"enum":["valley","mountain"]}},"required":["crease_id","type"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"advance_step","kind":"act","impl":"imperative","description":"Perform the next authored step of the active model. Fails when no model is selected, when the model is complete, or when the sheet has left the sequence. It never silently corrects the sheet.","title":"Fold the next step","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"undo_fold","kind":"act","impl":"imperative","description":"Step back one change in the action history, whether a fold or whole-model flip. The person can always take over, so undo is available to both of you.","title":"Undo the last change","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"redo_fold","kind":"act","impl":"imperative","description":"Reapply the most recently undone fold or whole-model flip, when one exists.","title":"Redo an undone change","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"reset_sheet","kind":"act","impl":"imperative","description":"Discard all folds and return to a fresh square. Past three folds this requires confirm true, so a casual call cannot wipe the person's work.","title":"Reset to a fresh square","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"confirm":{"type":"boolean","description":"Must be true to discard more than three folds."}},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"flip_sheet","kind":"act","impl":"imperative","description":"Turn the whole model over, the diagram instruction that usually loses people. Layer order and face colours invert with it.","title":"Turn the model over","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"select_model","kind":"act","impl":"imperative","description":"Set the active target from the authored catalogue. Does not fold anything on its own; use advance_step to walk the sequence.","title":"Select a target model","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"model_id":{"type":"string","description":"Model id from list_models, for example blintz.","maxLength":80}},"required":["model_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"highlight_crease","kind":"act","impl":"imperative","description":"Make one crease pulse in the scene so the person can see which flap you mean. This is how you point at the answer instead of describing it.","title":"Highlight a crease","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"crease_id":{"type":"string","description":"Crease id from list_creases.","maxLength":80}},"required":["crease_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"clear_highlight","kind":"act","impl":"imperative","description":"Remove any crease highlight from the scene.","title":"Clear the highlight","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_view","kind":"act","impl":"imperative","description":"Orbit and zoom the shared camera so the person sees what you are working on. Omitted values stay as they are.","title":"Move the camera","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"azimuth":{"type":"number","description":"Horizontal angle in degrees.","minimum":0,"maximum":360},"elevation":{"type":"number","description":"Vertical angle in degrees, 15 to 85. The sheet is flat, so lower is not useful.","minimum":15,"maximum":85},"zoom":{"type":"number","description":"Zoom factor, 0.5 to 2.2. The camera already frames the sheet.","minimum":0.5,"maximum":2.2}},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Health & Education","apiSurface":"spec","toolCount":20}}