{"ok":true,"site":{"host":"stagehand-animation-studio.saimun-h-shahee.chatgpt.site","url":"https://stagehand-animation-studio.saimun-h-shahee.chatgpt.site/","type":"live","desc":"A WebMCP-native 2D animation studio for editable cartoon scenes.","tools":[{"name":"inspect_project","kind":"act","impl":"imperative","description":"Read the complete high-level state before editing.","title":"Inspect project","annotations":{"readOnlyHint":true},"inputSchema":{"$id":"https://stagehand.local/schemas/inspect-project.json","type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_project","kind":"act","impl":"imperative","description":"Start a blank held-cel frame animation.","title":"Create project","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/create-project.json","type":"object","additionalProperties":false,"properties":{"name":{"type":"string","minLength":1},"fps":{"enum":[12,24]},"frameCount":{"type":"integer","minimum":12,"maximum":1440},"renderPreset":{"enum":["720p","1080p"]},"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}},"required":["name"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"load_demo","kind":"act","impl":"imperative","description":"Load one of the three complete multi-scene demo animations.","title":"Load demo","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/load-demo.json","type":"object","additionalProperties":false,"properties":{"demoId":{"enum":["brick-breakout","deadline-show","no-clams-no-patty"]},"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}},"required":["demoId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"edit_storyboard","kind":"act","impl":"imperative","description":"Add, update, delete, or reorder a story scene and its storyboard beat.","title":"Edit storyboard","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/edit-storyboard.json","type":"object","additionalProperties":false,"properties":{"action":{"enum":["add","update","delete","move"]},"sceneId":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"frameCount":{"type":"integer","minimum":12,"maximum":1440},"toIndex":{"type":"integer","minimum":0},"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}},"required":["action"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_current_scene","kind":"act","impl":"imperative","description":"Open a scene by ID and reset its local playhead.","title":"Set current scene","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/set-current-scene.json","type":"object","additionalProperties":false,"properties":{"sceneId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}},"required":["sceneId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_timeline","kind":"answer","impl":"imperative","description":"Read scene-local tracks, held drawings, captions, mouth cues, and SFX.","title":"Get timeline","annotations":{"readOnlyHint":true},"inputSchema":{"$id":"https://stagehand.local/schemas/get-timeline.json","type":"object","additionalProperties":false,"properties":{"sceneId":{"type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_playhead","kind":"act","impl":"imperative","description":"Move to an exact integer frame in the active scene.","title":"Set playhead","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/set-playhead.json","type":"object","additionalProperties":false,"properties":{"frame":{"type":"integer","minimum":0},"sceneId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}},"required":["frame"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_animation_frames","kind":"answer","impl":"imperative","description":"Read exposed drawings for one track or every track in a scene.","title":"Get animation frames","annotations":{"readOnlyHint":true},"inputSchema":{"$id":"https://stagehand.local/schemas/get-animation-frames.json","type":"object","additionalProperties":false,"properties":{"sceneId":{"type":"string"},"trackId":{"type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"edit_animation_frame","kind":"act","impl":"imperative","description":"Add, update, duplicate, or delete one exposed drawing with hold semantics.","title":"Edit animation frame","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/edit-animation-frame.json","type":"object","additionalProperties":false,"properties":{"action":{"enum":["add","update","duplicate","delete"]},"sceneId":{"type":"string"},"trackId":{"type":"string"},"celId":{"type":"string"},"frame":{"type":"integer","minimum":0},"exposure":{"type":"integer","minimum":1},"drawing":{"type":"string"},"assetId":{"type":"string"},"assetFrame":{"type":"integer","minimum":0,"maximum":63},"x":{"type":"number"},"y":{"type":"number"},"scale":{"type":"number","minimum":0.05,"maximum":8},"rotation":{"type":"number","minimum":-360,"maximum":360},"opacity":{"type":"number","minimum":0,"maximum":1},"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}},"required":["action","trackId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_lip_sync","kind":"answer","impl":"imperative","description":"Read compact X/A/B/C/D/E/F/G/H mouth cues for a scene.","title":"Get lip sync","annotations":{"readOnlyHint":true},"inputSchema":{"$id":"https://stagehand.local/schemas/get-lip-sync.json","type":"object","additionalProperties":false,"properties":{"sceneId":{"type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"generate_lip_sync","kind":"act","impl":"imperative","description":"Estimate held mouth shapes from every caption; use Rhubarb later for aligned cues.","title":"Generate lip sync","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/generate-lip-sync.json","type":"object","additionalProperties":false,"properties":{"sceneId":{"type":"string"},"allScenes":{"type":"boolean"},"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"probe_local_voice","kind":"act","impl":"imperative","description":"Check the localhost bridge for OmniVoice or the deterministic preview engine.","title":"Probe local voice","annotations":{"readOnlyHint":true},"inputSchema":{"$id":"https://stagehand.local/schemas/probe-local-voice.json","type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"generate_voice","kind":"act","impl":"imperative","description":"Generate private local speech and attach its WAV plus estimated timing to the current project.","title":"Generate voice","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/generate-voice.json","type":"object","additionalProperties":false,"properties":{"text":{"type":"string","minLength":1,"maxLength":1000},"label":{"type":"string"},"sceneId":{"type":"string"},"startFrame":{"type":"integer","minimum":0},"characterId":{"type":"string"},"durationMs":{"type":"integer","minimum":80,"maximum":30000},"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}},"required":["text"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"edit_audio","kind":"act","impl":"imperative","description":"List, add, update, or delete voice/music cues in a scene.","title":"Edit audio","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/edit-audio.json","type":"object","additionalProperties":false,"properties":{"action":{"enum":["list","add","update","delete"]},"sceneId":{"type":"string"},"cueId":{"type":"string"},"label":{"type":"string"},"kind":{"enum":["voice","music"]},"startFrame":{"type":"integer","minimum":0},"endFrame":{"type":"integer","minimum":1},"volume":{"type":"number","minimum":0,"maximum":1},"assetId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}},"required":["action"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"generate_sfx","kind":"act","impl":"imperative","description":"Add a deterministic Web Audio sound recipe—no stock library or network required.","title":"Generate SFX","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/generate-sfx.json","type":"object","additionalProperties":false,"properties":{"sceneId":{"type":"string"},"label":{"type":"string"},"recipe":{"enum":["alarm","brick-pop","cash-register","error-zap","jelly-bloop","keyboard","portal","splash","success","whoosh"]},"startFrame":{"type":"integer","minimum":0},"durationFrames":{"type":"integer","minimum":1,"maximum":240},"volume":{"type":"number","minimum":0,"maximum":1},"seed":{"type":"integer"},"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}},"required":["recipe","startFrame"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_assets","kind":"answer","impl":"imperative","description":"Read asset metadata and approval state without returning large payloads.","title":"List assets","annotations":{"readOnlyHint":true},"inputSchema":{"$id":"https://stagehand.local/schemas/list-assets.json","type":"object","additionalProperties":false,"properties":{"kind":{"enum":["background","character","prop","frame","audio","mouth-pack"]}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_asset_generation_checklist","kind":"answer","impl":"imperative","description":"Get the frame-animation generation contract before creating media.","title":"Get asset checklist","annotations":{"readOnlyHint":true},"inputSchema":{"$id":"https://stagehand.local/schemas/asset-checklist.json","type":"object","additionalProperties":false,"properties":{"kind":{"enum":["background","character","prop","frame","mouth-pack"]}},"required":["kind"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_asset_request","kind":"act","impl":"imperative","description":"Save a durable prompt and checklist before image generation.","title":"Create asset request","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/create-asset-request.json","type":"object","additionalProperties":false,"properties":{"kind":{"enum":["background","character","prop","frame","mouth-pack"]},"label":{"type":"string","minLength":1},"prompt":{"type":"string","minLength":1},"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}},"required":["kind","label","prompt"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"attach_generated_asset","kind":"act","impl":"imperative","description":"Attach bounded image bytes as a new candidate; never replaces a source in place.","title":"Attach generated asset","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/attach-generated-asset.json","type":"object","additionalProperties":false,"properties":{"requestId":{"type":"string"},"dataUrl":{"type":"string","minLength":32,"maxLength":12000000},"mimeType":{"enum":["image/png","image/jpeg","image/webp"]},"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}},"required":["requestId","dataUrl"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"inspect_asset_candidate","kind":"act","impl":"imperative","description":"Read dimensions, transparency, checklist, prompt, and provenance before approval.","title":"Inspect asset candidate","annotations":{"readOnlyHint":true},"inputSchema":{"$id":"https://stagehand.local/schemas/inspect-asset-candidate.json","type":"object","additionalProperties":false,"properties":{"assetId":{"type":"string"}},"required":["assetId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"approve_asset","kind":"act","impl":"imperative","description":"Approve or reject a visually inspected candidate.","title":"Approve asset","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/approve-asset.json","type":"object","additionalProperties":false,"properties":{"assetId":{"type":"string"},"decision":{"enum":["approve","reject"]},"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}},"required":["assetId","decision"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"validate_project","kind":"act","impl":"imperative","description":"Check integer frames, exposure holds, references, lip cues, SFX, and approval state.","title":"Validate project","annotations":{"readOnlyHint":true},"inputSchema":{"$id":"https://stagehand.local/schemas/validate-project.json","type":"object","additionalProperties":false,"properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"inspect_frame","kind":"act","impl":"imperative","description":"Evaluate one exact held-cel frame using the same state as preview and export.","title":"Inspect frame","annotations":{"readOnlyHint":true},"inputSchema":{"$id":"https://stagehand.local/schemas/inspect-frame.json","type":"object","additionalProperties":false,"properties":{"sceneId":{"type":"string"},"frame":{"type":"integer","minimum":0},"includePng":{"type":"boolean"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"export_frame","kind":"act","impl":"imperative","description":"Export an exact scene frame as PNG using the production evaluator.","title":"Export frame","annotations":{"readOnlyHint":true},"inputSchema":{"$id":"https://stagehand.local/schemas/export-frame.json","type":"object","additionalProperties":false,"properties":{"sceneId":{"type":"string"},"frame":{"type":"integer","minimum":0},"download":{"type":"boolean"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"render_webm","kind":"act","impl":"imperative","description":"Render every held-cel scene with captions, generated dialogue, optional music, and procedural SFX.","title":"Render WebM","annotations":{"readOnlyHint":true},"inputSchema":{"$id":"https://stagehand.local/schemas/render-webm.json","type":"object","additionalProperties":false,"properties":{"download":{"type":"boolean"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"undo","kind":"act","impl":"imperative","description":"Undo the most recent project edit.","title":"Undo","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/undo.json","type":"object","additionalProperties":false,"properties":{"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"redo","kind":"act","impl":"imperative","description":"Redo the most recently undone edit.","title":"Redo","annotations":{"readOnlyHint":false},"inputSchema":{"$id":"https://stagehand.local/schemas/redo.json","type":"object","additionalProperties":false,"properties":{"expectedRevision":{"type":"integer","minimum":1,"description":"Optional optimistic-concurrency guard from a fresh read."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"description":"Unique retry key. Repeated calls return the first result."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Media & Personal","favicon":"/favicons/stagehand-animation-studio.saimun-h-shahee.chatgpt.site.png","apiSurface":"spec","toolCount":27}}