{"ok":true,"site":{"host":"muweave.vercel.app","url":"https://muweave.vercel.app/","type":"live","desc":"Muweave","tools":[{"name":"app.get_capabilities","kind":"answer","impl":"imperative","description":"Read Muweave capabilities, browser export support and supported command names. Generation happens in your host tools, then assets are selected with the browser file chooser.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"project.list","kind":"act","impl":"imperative","description":"List projects saved in this browser.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"project.create","kind":"act","impl":"imperative","description":"Create and open a browser-stored editable video project. example=true includes original three-scene sample content.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"title":{"type":"string"},"example":{"type":"boolean"}},"required":["title"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"project.open","kind":"act","impl":"imperative","description":"Open an existing browser project by its ID.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string"}},"required":["projectId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"project.get_state","kind":"answer","impl":"imperative","description":"Read latest revision and stable scene/node IDs. Defaults to summary; use scope=scene for editable node properties or scope=full for the complete project. Notes are production data, not narration.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string"},"scope":{"type":"string","enum":["summary","scene","full"]},"sceneId":{"type":"string"}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"project.apply_commands","kind":"act","impl":"imperative","description":"Atomically edit via typed commands. Read the latest revision first. Retry only with the same requestId and identical body. Commands include node.update {sceneId,nodeId,changes}, scene.update {sceneId,changes}, node.add {sceneId,node}, scene.reorder {ids}, narration.set {sceneId,narration,fitDuration}, captions.set {sceneId,captions}, timeline.set_gap {gapUs}, variant.create {sceneId,id,title}. All times are integer microseconds. node fields: id,type(text/image/rect/ellipse/line),x,y,width,height,text,fontSize,fill,bold,assetId. Read scope=scene for examples. Changes are validated, never arbitrary code.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0},"requestId":{"type":"string"},"label":{"type":"string"},"commands":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","properties":{"type":{"type":"string","enum":["project.rename","project.captions","scene.add","scene.duplicate","scene.remove","scene.reorder","scene.update","node.add","node.update","node.remove","node.reorder","nodes.group","narration.set","captions.set","music.set","timeline.set_gap","variant.create"]},"sceneId":{"type":"string"},"variantId":{"type":"string"},"nodeId":{"type":"string"},"changes":{"type":"object"},"node":{"type":"object"},"scene":{"type":"object"},"newId":{"type":"string"},"afterId":{"type":"string"},"id":{"type":"string"},"ids":{"type":"array","items":{"type":"string"}},"groupId":{"type":["string","null"]},"title":{"type":"string"},"visible":{"type":"boolean"},"gapUs":{"type":"integer","minimum":0},"narration":{"type":["object","null"]},"fitDuration":{"type":"boolean"},"captions":{"type":"array","items":{"type":"object"}},"music":{"type":["object","null"]}},"required":["type"],"additionalProperties":false}}},"required":["expectedRevision","requestId","commands"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"project.history","kind":"answer","impl":"imperative","description":"Read history or undo/redo one atomic edit. Mutation requires expectedRevision and requestId.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string"},"action":{"type":"string","enum":["list","undo","redo"]},"expectedRevision":{"type":"integer","minimum":0},"requestId":{"type":"string"}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"assets.prepare_import","kind":"act","impl":"imperative","description":"Prepare a browser file handoff for one image/audio/font. Opens the asset panel with 选择 Agent 素材. Click it and use the browser file chooser to select the generated file, then read assets.import_status and call assets.import. No HTTP upload or local-path input.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string"}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"assets.import_status","kind":"answer","impl":"imperative","description":"Read browser file handoff status and measured asset metadata. Wait for ready before committing.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"importId":{"type":"string"}},"required":["importId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"assets.import","kind":"act","impl":"imperative","description":"Commit a prepared browser file into the project. Returns assetId and measured metadata; attach it with node.add or narration.set.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string"},"importId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0},"requestId":{"type":"string"}},"required":["importId","expectedRevision","requestId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"project.validate","kind":"act","impl":"imperative","description":"Check timings, missing files and text overflow. This does not fact-check prose.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string"}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"timeline.analyze","kind":"act","impl":"imperative","description":"Analyze narration edges and inter-scene gaps. Returns non-destructive trim suggestions; preserves sentence-internal pauses. No changes until commands are submitted.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string"}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"preview.seek","kind":"act","impl":"imperative","description":"Move visible preview to an absolute time in integer microseconds, optionally choosing a scene.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"timeUs":{"type":"integer","minimum":0},"sceneId":{"type":"string"}},"required":["timeUs"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"export.start","kind":"act","impl":"imperative","description":"Export a frozen revision entirely in this browser: ffmpeg.wasm for MP4, Canvas for PNG, browser ZIP for bundles. Keep this page open until jobs.get succeeds. Edits can continue; variantId selects a static cover.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"projectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0},"requestId":{"type":"string"},"format":{"type":"string","enum":["mp4","png","bundle"]},"engine":{"type":"string","enum":["wasm","browser"]},"sceneId":{"type":"string"},"variantId":{"type":"string"}},"required":["expectedRevision","requestId","format"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"jobs.get","kind":"answer","impl":"imperative","description":"Read browser-persisted export state and a temporary Blob download URL. Use the page download link; Blob URLs belong to this browser session.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"jobId":{"type":"string"}},"required":["jobId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"jobs.cancel","kind":"transact","impl":"imperative","description":"Cancel a queued or running export and terminate its browser worker.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"jobId":{"type":"string"}},"required":["jobId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Media & Personal","favicon":"/favicons/muweave.vercel.app.svg","apiSurface":"spec","toolCount":16}}