{"ok":true,"site":{"host":"pixelforge-studio.appcaster.chatgpt.site","url":"https://pixelforge-studio.appcaster.chatgpt.site/","type":"live","desc":"A professional browser pixel-art editor for drawing, frame animation, palettes, sprite sheets, GIF export, and WebMCP automation.","tools":[{"name":"plan_text_creation","kind":"act","impl":"imperative","description":"Parse a brief and inspect dimensions, timing and effects. Supported basic VFX runs locally. Otherwise the connected agent must obtain a real PNG image and submit it; indexed redraws are blocked. execution:agent routes any brief to the agent.","title":"Plan text creation","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["prompt"],"properties":{"prompt":{"type":"string","minLength":2,"maxLength":1500},"kind":{"type":"string","enum":["auto","art","animation","vfx"]},"size":{"type":"integer","minimum":16,"maximum":128},"frames":{"type":"integer","minimum":1,"maximum":48},"fps":{"type":"integer","minimum":1,"maximum":50},"durationMs":{"type":"integer","minimum":20,"maximum":96000,"description":"Total duration per clip in milliseconds. Cannot combine with fps."},"maxColors":{"type":"integer","minimum":8,"maximum":64},"execution":{"type":"string","enum":["auto","agent"]},"seed":{"type":"integer","minimum":0,"maximum":2147483647},"background":{"type":"string","enum":["transparent","scene"],"description":"Default transparent. scene only for an explicitly requested background."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_text_creation_status","kind":"answer","impl":"imperative","description":"Read pending requests and staged result summaries for this tab. No API key or provider setup. An agent must explicitly claim a pending request; tool registration alone is not agent presence.","title":"Read text creation requests","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"create_from_text","kind":"act","impl":"imperative","description":"Stage basic procedural VFX immediately, or enqueue a brief for the connected agent. This does NOT call a model or automatically invent new artwork. For pending results YOU must claim_text_creation, receive actual PNG artwork, and submit_text_creation with pixelforge-raster-v1. Opens the preview dialog without changing the active project.","title":"Queue a text creation request","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["prompt"],"properties":{"prompt":{"type":"string","minLength":2,"maxLength":1500},"kind":{"type":"string","enum":["auto","art","animation","vfx"]},"size":{"type":"integer","minimum":16,"maximum":128},"frames":{"type":"integer","minimum":1,"maximum":48},"fps":{"type":"integer","minimum":1,"maximum":50},"durationMs":{"type":"integer","minimum":20,"maximum":96000,"description":"Total duration per clip in milliseconds. Cannot combine with fps."},"maxColors":{"type":"integer","minimum":8,"maximum":64},"execution":{"type":"string","enum":["auto","agent"]},"seed":{"type":"integer","minimum":0,"maximum":2147483647},"background":{"type":"string","enum":["transparent","scene"],"description":"Default transparent. scene only for an explicitly requested background."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"claim_text_creation","kind":"act","impl":"imperative","description":"Atomically claim a pending or expired request. Returns a five-minute claim token and the pixel format contract. Renew via update_text_creation. Use the token only for this request.","title":"Claim a text request","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["requestId"],"properties":{"requestId":{"type":"string","minLength":1,"maxLength":80},"agentName":{"type":"string","minLength":1,"maxLength":80},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"update_text_creation","kind":"act","impl":"imperative","description":"Report truthful progress and renew a live claim. Set failed:true to close a failed request with an actionable message. Does not mutate the editor.","title":"Report creation progress","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["requestId","claimToken","message"],"properties":{"requestId":{"type":"string","minLength":1,"maxLength":80},"claimToken":{"type":"string","minLength":1,"maxLength":80},"message":{"type":"string","minLength":1,"maxLength":500},"failed":{"type":"boolean"},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"submit_text_creation","kind":"transact","impl":"imperative","description":"Actual PNG image bytes are MANDATORY. Receive an uploaded image or the calling image tool output before submitting pixelforge-raster-v1. No indexed rows or approximate programmatic redraws. source declares uploaded/generated; imageDataUrl is the complete PNG data URL. Use exact source columns, rows, cellWidth, cellHeight, and optional margins/spacing/frameOrder. For irregular spacing, use sourceRects (x,y,width,height,offsetX,offsetY) and a common cell canvas. Regions plus offsets must fit; no clipping. Preserve source size and colors by default; explicit width/height opts into resizing. Each requested frame must exist in the source. Newly generated transparent sprites require actual alpha-0 source pixels; uploaded opaque originals can use explicit edge background removal. Keep white/black interiors filled. Optional gait uses actual delivered foot/root coordinates. Stages a fresh preview; never overwrites the active project. Cancelled, expired or reclaimed submissions fail even during image decoding.","title":"Submit received PNG artwork","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["requestId","claimToken","asset"],"properties":{"requestId":{"type":"string","minLength":1,"maxLength":80},"claimToken":{"type":"string","minLength":1,"maxLength":80},"asset":{"type":"object","additionalProperties":false,"properties":{"imageDataUrl":{"type":"string","maxLength":8388000,"description":"Must start with data:image/png;base64,"},"columns":{"type":"integer","minimum":1,"maximum":64},"rows":{"type":"integer","minimum":1,"maximum":64},"cellWidth":{"type":"integer","minimum":1,"maximum":2048},"cellHeight":{"type":"integer","minimum":1,"maximum":2048},"sourceRects":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"x":{"type":"integer","minimum":0,"maximum":16384},"y":{"type":"integer","minimum":0,"maximum":16384},"width":{"type":"integer","minimum":1,"maximum":2048},"height":{"type":"integer","minimum":1,"maximum":2048},"offsetX":{"type":"integer","minimum":0,"maximum":512},"offsetY":{"type":"integer","minimum":0,"maximum":512}},"required":["x","y","width","height"]},"minItems":1,"maxItems":64},"marginX":{"type":"integer","minimum":0,"maximum":2048},"marginY":{"type":"integer","minimum":0,"maximum":2048},"spacingX":{"type":"integer","minimum":0,"maximum":512},"spacingY":{"type":"integer","minimum":0,"maximum":512},"alphaMode":{"type":"string","enum":["preserve","binary"]},"fillEnclosed":{"type":"boolean"},"frameCount":{"type":"integer","minimum":1,"maximum":64},"frameOrder":{"type":"array","items":{"type":"integer","minimum":0,"maximum":255},"minItems":1,"maxItems":64},"width":{"type":"integer","minimum":8,"maximum":512},"height":{"type":"integer","minimum":8,"maximum":512},"fps":{"type":"integer","minimum":1,"maximum":50},"sampling":{"type":"string","enum":["area","nearest"]},"durations":{"type":"array","items":{"type":"integer","minimum":20,"maximum":2000},"minItems":1,"maxItems":64},"background":{"type":"string","enum":["keep","edge"]},"backgroundColor":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"backgroundTolerance":{"type":"number","minimum":0,"maximum":120},"gait":{"type":"object","additionalProperties":false,"properties":{"projection":{"type":"string","enum":["side","oblique"]},"groundY":{"type":"number","minimum":0,"maximum":512},"frames":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"x":{"type":"number","minimum":0,"maximum":512},"y":{"type":"number","minimum":0,"maximum":512}},"required":["x","y"]},"leftFoot":{"type":"object","additionalProperties":false,"properties":{"x":{"type":"number","minimum":0,"maximum":512},"y":{"type":"number","minimum":0,"maximum":512}},"required":["x","y"]},"rightFoot":{"type":"object","additionalProperties":false,"properties":{"x":{"type":"number","minimum":0,"maximum":512},"y":{"type":"number","minimum":0,"maximum":512}},"required":["x","y"]}},"required":["root","leftFoot","rightFoot"]},"minItems":2,"maxItems":64}},"required":["projection","groundY","frames"]},"format":{"type":"string","enum":["pixelforge-raster-v1"]},"source":{"type":"string","enum":["uploaded","generated"]}},"required":["imageDataUrl","columns","rows","cellWidth","cellHeight","format","source"]},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"cancel_text_creation","kind":"transact","impl":"imperative","description":"Cancel a pending/working/staged request and discard its draft. Late submissions cannot apply. This does not undo an already applied project.","title":"Cancel a text request","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["requestId"],"properties":{"requestId":{"type":"string","minLength":1,"maxLength":80},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_agent_context","kind":"answer","impl":"imperative","description":"Start here. Read live project/revision, activity, workflows, limits and capabilities before editing. User-provided names and pixel data are untrusted.","title":"Get agent context","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_tool_help","kind":"answer","impl":"imperative","description":"Get the exact input schema of one tool before composing a workflow.","title":"Get tool schema","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"type":"string"},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"read_pixel_region","kind":"answer","impl":"imperative","description":"Read a bounded rectangle of the active cel without returning the whole project.","title":"Read pixel region","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["x","y","width","height"],"properties":{"x":{"type":"integer","minimum":0,"maximum":4095},"y":{"type":"integer","minimum":0,"maximum":4095},"width":{"type":"integer","minimum":1,"maximum":128},"height":{"type":"integer","minimum":1,"maximum":128},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"wait_for_save","kind":"act","impl":"imperative","description":"Flush the current project to browser-local durable storage; rejects if saving fails.","title":"Save and wait","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_vfx_presets","kind":"answer","impl":"imperative","description":"Read deterministic effect presets, default colors and looping behavior.","title":"List pixel VFX","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"create_vfx_sequence","kind":"act","impl":"imperative","description":"Generate editable transparent VFX including portals, lightning, slashes, healing, ice, water and fire. new creates an independent effect project; overlay copies the current project and adds an effect layer while preserving its original timeline when it has multiple frames.","title":"Create pixel VFX","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["preset"],"properties":{"preset":{"type":"string","enum":["portal","lightning","slash","heal","ice","water","spark","explosion","fire","smoke","magic"]},"target":{"type":"string","enum":["new","overlay"]},"name":{"type":"string","maxLength":120},"width":{"type":"integer","minimum":8,"maximum":256},"height":{"type":"integer","minimum":8,"maximum":256},"frameCount":{"type":"integer","minimum":4,"maximum":48},"fps":{"type":"integer","minimum":1,"maximum":50},"intensity":{"type":"number","minimum":0.25,"maximum":2},"seed":{"type":"integer","minimum":0,"maximum":2147483647},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"run_workflow","kind":"act","impl":"imperative","description":"Validate then execute up to 32 tool steps sequentially. No automatic rollback: completed steps remain on failure. Supports dryRun; excludes nested workflows, project deletion and file pickers.","title":"Run ordered workflow","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["steps"],"properties":{"dryRun":{"type":"boolean"},"steps":{"type":"array","minItems":1,"maxItems":32,"items":{"type":"object","additionalProperties":false,"required":["tool"],"properties":{"tool":{"type":"string","minLength":1},"arguments":{"type":"object"}}}},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"inspect_assets","kind":"act","impl":"imperative","description":"Read pixel statistics, alpha, empty frames, export warnings and gaitReview for walking. Gait review checks supplied actual sole/root landmarks against current pixels; missing landmarks are unreviewed and stale landmarks need revision. Distinct frames do not prove natural walking. No artwork quality guarantee.","title":"Inspect game assets","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_walk_pose_guide","kind":"answer","impl":"imperative","description":"Return a technical PNG skeleton/sole template for two anatomical half-strides, in chronological cells. Use this as the FIRST image reference and character identity as the SECOND. The opaque diagram background and guide colors are instructions only: final sprite background remains transparent. Recipe coordinates are not measured gait landmarks. Adapt the diagram to the actual anatomy and view.","title":"Get a walk pose guide","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["frameCount","size"],"properties":{"frameCount":{"type":"integer","minimum":1,"maximum":64},"size":{"type":"integer","minimum":16,"maximum":256},"direction":{"type":"string","enum":["s","sw","w","nw","n","ne","e","se"]},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"transform_pixels","kind":"act","impl":"imperative","description":"Apply an undoable flip, 180 degree rotation, isolated-noise cleanup or outline to the unlocked active cel.","title":"Transform active cel","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["operation"],"properties":{"operation":{"type":"string","enum":["flip-x","flip-y","rotate-180","clean-noise","outline"]},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"configure_animation","kind":"act","impl":"imperative","description":"Set loop, pivot and zero-based clips; retime actual frames with durations, durationMs (total keeping ratios), OR uniform fps. Only one timing option; pixels stay unchanged.","title":"Configure animation","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"durationMs":{"type":"integer","minimum":20,"maximum":480000},"fps":{"type":"integer","minimum":1,"maximum":50},"durations":{"type":"array","minItems":1,"maxItems":240,"items":{"type":"integer","minimum":20,"maximum":2000}},"loopMode":{"type":"string","enum":["loop","once","ping-pong"]},"pivotX":{"type":"number","minimum":0,"maximum":4096},"pivotY":{"type":"number","minimum":0,"maximum":4096},"tags":{"type":"array","maxItems":120,"items":{"type":"object","additionalProperties":false,"required":["name","from","to","loop"],"properties":{"name":{"type":"string","minLength":1,"maxLength":80},"from":{"type":"integer","minimum":0,"maximum":239},"to":{"type":"integer","minimum":0,"maximum":239},"loop":{"type":"boolean"}}}},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"slice_sprite_sheet","kind":"act","impl":"imperative","description":"Create a new animation from equal cells in row order. Optionally supply directionRows with all eight unique views in source top-to-bottom order (s, sw, w, nw, n, ne, e, se). Requires exactly eight source rows and creates walk_direction clips. Columns are frames for that view. Actual artwork for every view must already exist; no views are generated. Original project is preserved.","title":"Slice current sprite sheet","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["width","height"],"properties":{"width":{"type":"integer","minimum":1,"maximum":4096},"height":{"type":"integer","minimum":1,"maximum":4096},"margin":{"type":"integer","minimum":0,"maximum":1024},"spacing":{"type":"integer","minimum":0,"maximum":1024},"duration":{"type":"integer","minimum":20,"maximum":10000},"directionRows":{"type":"array","minItems":8,"maxItems":8,"uniqueItems":true,"items":{"type":"string","enum":["s","sw","w","nw","n","ne","e","se"]}},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_project_state","kind":"answer","impl":"imperative","description":"Read a concise project summary. Set includePixels only when exact cel data is required.","title":"Get project state","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"includePixels":{"type":"boolean","description":"Include every cel pixel for projects up to 262144 pixel cells; use read_pixel_region or export_project for larger projects."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"get_quality_policy","kind":"answer","impl":"imperative","description":"Read source-preservation recommendations and the limits of pixel-based similarity metrics. Scores are advisory, not artistic or identity guarantees.","title":"Get original-quality policy","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_action_presets","kind":"answer","impl":"imperative","description":"List source-preserving action recipes, recommended frame counts, timing, and loop behavior before creating motion.","title":"List action presets","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_projects","kind":"answer","impl":"imperative","description":"List every browser-local PixelForge project with its stable id, name, dimensions, frame count, layer count, and last update time.","title":"List local projects","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"select_project","kind":"act","impl":"imperative","description":"Save the current project and switch to another browser-local project by stable id.","title":"Select project","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["projectId"],"properties":{"projectId":{"type":"string","minLength":1,"maxLength":160},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"duplicate_project","kind":"act","impl":"imperative","description":"Create and select a new browser-local copy without changing the original project.","title":"Duplicate active project","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"delete_project","kind":"transact","impl":"imperative","description":"Delete one browser-local project by id and select another remaining project.","title":"Delete project","annotations":{"openWorldHint":false,"consequentialHint":true,"untrustedContentHint":true,"destructiveHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["projectId"],"properties":{"projectId":{"type":"string","minLength":1,"maxLength":160},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_project_presets","kind":"answer","impl":"imperative","description":"List researched sprite, tile, web-game, and classic-system canvas presets.","title":"List production presets","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"create_from_preset","kind":"act","impl":"imperative","description":"Add and select a production-sized project with a matching palette while preserving existing projects.","title":"Create from preset","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["presetId"],"properties":{"presetId":{"type":"string","minLength":1,"maxLength":80},"name":{"type":"string","maxLength":120},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"create_project","kind":"act","impl":"imperative","description":"Add and select a new transparent pixel project while preserving existing projects.","title":"Create project","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["width","height"],"properties":{"width":{"type":"integer","minimum":1,"maximum":4096,"description":"Canvas width in pixels."},"height":{"type":"integer","minimum":1,"maximum":4096,"description":"Canvas height in pixels."},"name":{"type":"string","maxLength":120,"description":"Project name."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"image_to_pixel","kind":"act","impl":"imperative","description":"Create an editable pixel project from PNG/JPEG/WebP. Set width/height and maxColors for game sprites. Supports fixed palettes, color adjustments, edge-connected background removal and outlines. Reconstruction scores compare output-grid pixels, not artistic quality. balanced is the default; strict-99 is a legacy sampling preset.","title":"Reconstruct image as pixel art","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["imageDataUrl"],"properties":{"imageDataUrl":{"type":"string","pattern":"^data:image/(png|jpeg|webp);base64,","maxLength":22400000,"description":"Base64 image data URL; arbitrary remote URLs are not accepted."},"name":{"type":"string","maxLength":120},"resolutionMode":{"type":"string","enum":["source-exact","auto-faithful","custom"],"description":"Defaults to auto-faithful. Custom requires width and height."},"fidelityMode":{"type":"string","enum":["strict-99","balanced","manual"],"description":"Defaults to balanced. strict-99 is a legacy reconstruction preset, not a fidelity guarantee."},"width":{"type":"integer","minimum":1,"maximum":4096,"description":"Editable output width for custom mode."},"height":{"type":"integer","minimum":1,"maximum":4096,"description":"Editable output height for custom mode."},"maxColors":{"type":"integer","minimum":2,"maximum":256,"description":"Adaptive palette size; strict-99 enforces at least 128."},"dither":{"type":"string","enum":["none","ordered-4x4","floyd-steinberg"]},"fit":{"type":"string","enum":["contain","cover","stretch"]},"sampling":{"type":"string","enum":["smooth","nearest"]},"alphaThreshold":{"type":"integer","minimum":0,"maximum":255},"preserveAlpha":{"type":"boolean","description":"Preserve alpha values above the cutoff."},"trimTransparent":{"type":"boolean","description":"Crop transparent source margins before fitting."},"targetOccupancy":{"type":"number","minimum":0.1,"maximum":1,"description":"Share of the canvas occupied by the visible subject."},"hardAlpha":{"type":"boolean","description":"Convert retained edge pixels to fully opaque pixels."},"brightness":{"type":"number","minimum":-60,"maximum":60},"contrast":{"type":"number","minimum":-60,"maximum":100},"saturation":{"type":"number","minimum":-100,"maximum":100},"background":{"type":"string","enum":["keep","edge"]},"backgroundTolerance":{"type":"number","minimum":0,"maximum":120},"backgroundColor":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"cleanNoise":{"type":"boolean"},"outline":{"type":"boolean"},"outlineColor":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"fixedPalette":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"animation_from_images","kind":"act","impl":"imperative","description":"Import multiple images as an aligned animation with a shared palette. Source canvas alignment is preserved. Optional reference comparisons are advisory; use render_frame for visual review.","title":"Create animation from images","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["imageDataUrls"],"properties":{"imageDataUrls":{"type":"array","minItems":2,"maxItems":120,"items":{"type":"string","pattern":"^data:image/(png|jpeg|webp);base64,","maxLength":22400000}},"referenceImageDataUrl":{"type":"string","pattern":"^data:image/(png|jpeg|webp);base64,","maxLength":22400000,"description":"Exact original image used for advisory per-frame continuity statistics. When omitted, the current reference is used; if none exists, frame 1 becomes the reference."},"referenceName":{"type":"string","maxLength":180,"description":"Optional display name for the supplied original reference."},"sourceNames":{"type":"array","maxItems":120,"items":{"type":"string","maxLength":180}},"name":{"type":"string","maxLength":120},"resolutionMode":{"type":"string","enum":["source-exact","auto-faithful","custom"]},"fidelityMode":{"type":"string","enum":["strict-99","balanced","manual"]},"width":{"type":"integer","minimum":1,"maximum":4096},"height":{"type":"integer","minimum":1,"maximum":4096},"maxColors":{"type":"integer","minimum":2,"maximum":256},"alphaThreshold":{"type":"integer","minimum":0,"maximum":255},"targetOccupancy":{"type":"number","minimum":0.1,"maximum":1},"fps":{"type":"integer","minimum":1,"maximum":60},"loopMode":{"type":"string","enum":["loop","once","ping-pong"]},"separateLayers":{"type":"boolean","description":"Separate common pixels from per-frame motion details."},"referenceQualityFloor":{"type":"number","minimum":0.9,"maximum":1,"description":"Advisory continuity threshold, from 0.90 to 1.0. It does not block valid motion."},"allowBelowReferenceQuality":{"type":"boolean","description":"explicit opt-out. Set true only when the user directly requests a lower-fidelity or stylized result."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"create_action_sequence","kind":"act","impl":"imperative","description":"Create a new editable action animation from the active frame without redrawing the character. Every source pixel is retained through bounded integer transforms; weapon, shield, accessory, shadow, and FX layers receive action-aware timing. This translates existing layers; it does not generate new articulated poses.","title":"Create source-preserving action","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["preset"],"properties":{"preset":{"type":"string","enum":["idle","walk","run","jump","dash","attack","heavy-attack","cast","hurt","defend"]},"name":{"type":"string","maxLength":120},"frameCount":{"type":"integer","minimum":4,"maximum":24,"description":"Number of editable action frames."},"fps":{"type":"integer","minimum":1,"maximum":50,"description":"Optional uniform frame rate; omit for preset timing."},"durationMs":{"type":"integer","minimum":80,"maximum":48000,"description":"Total action duration; preserves phase ratios. Cannot combine with fps."},"direction":{"type":"string","enum":["left","right"]},"intensity":{"type":"number","minimum":0.25,"maximum":2,"description":"Motion amplitude multiplier."},"includeEffects":{"type":"boolean","description":"Add a separate action FX layer."},"effectColor":{"type":"string","pattern":"^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$","description":"Hex color as #RRGGBB or #RRGGBBAA."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"render_frame","kind":"act","impl":"imperative","description":"Return a bounded PNG data URL for an exact frame without downloading or mutating the project. Use it after image conversion, action creation, or manual edits so the agent can visually inspect the real composite before export.","title":"Render frame for inspection","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"frameId":{"type":"string","minLength":1,"maxLength":160},"scale":{"type":"integer","minimum":1,"maximum":8,"description":"Nearest-neighbor preview scale."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.get_state","kind":"answer","impl":"imperative","description":"Read the browser-local reference image metadata and every synchronized view setting without returning the image bytes.","title":"Get reference image state","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.open_picker","kind":"act","impl":"imperative","description":"Request the browser file picker for a local PNG, JPEG, or WebP. Browser user-activation rules may require the user to click the visible upload control instead.","title":"Open reference image picker","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.set_from_data_url","kind":"act","impl":"imperative","description":"Validate and store a bounded PNG, JPEG, or WebP data URL as the current browser-local reference image. Remote URLs are never accepted.","title":"Set reference from data URL","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["imageDataUrl"],"properties":{"imageDataUrl":{"type":"string","pattern":"^data:image/(png|jpeg|webp);base64,","maxLength":22400000,"description":"Base64 image data URL; arbitrary remote URLs are not accepted."},"name":{"type":"string","maxLength":180},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.clear","kind":"act","impl":"imperative","description":"Remove the current browser-local reference image while preserving the pixel project.","title":"Clear reference image","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"destructiveHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.set_mode","kind":"act","impl":"imperative","description":"Switch the desktop reference between split, floating overlay, and hidden modes. Mobile continues to use its dedicated sheet viewer.","title":"Set reference display mode","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["mode"],"properties":{"mode":{"type":"string","enum":["split","overlay","hidden"]},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.set_zoom","kind":"act","impl":"imperative","description":"Set the reference image scale from 0.1 to 8, where 1 is 100 percent.","title":"Set reference zoom","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["zoom"],"properties":{"zoom":{"type":"number","minimum":0.1,"maximum":8,"description":"Scale multiplier; 1 is 100 percent."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.set_opacity","kind":"act","impl":"imperative","description":"Set reference image opacity from 0 to 1.","title":"Set reference opacity","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["opacity"],"properties":{"opacity":{"type":"number","minimum":0,"maximum":1,"description":"Opacity from transparent 0 to opaque 1."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.set_flip","kind":"act","impl":"imperative","description":"Set horizontal and/or vertical reference mirroring. At least one field is required.","title":"Set reference flips","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"flipX":{"type":"boolean","description":"Mirror left to right."},"flipY":{"type":"boolean","description":"Mirror top to bottom."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.set_panel_size","kind":"act","impl":"imperative","description":"Set the desktop split reference panel width in pixels.","title":"Set reference panel width","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["panelSize"],"properties":{"panelSize":{"type":"integer","minimum":220,"maximum":720,"description":"Desktop panel width in pixels."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.set_overlay_rect","kind":"act","impl":"imperative","description":"Move and resize the floating reference using workspace-relative pixel bounds.","title":"Set floating reference bounds","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["x","y","width","height"],"properties":{"x":{"type":"integer","minimum":0,"maximum":4096},"y":{"type":"integer","minimum":0,"maximum":4096},"width":{"type":"integer","minimum":260,"maximum":1600},"height":{"type":"integer","minimum":220,"maximum":1200},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.fit","kind":"act","impl":"imperative","description":"Fit the entire reference image inside its current panel or floating window.","title":"Fit reference image","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.set_pinned","kind":"act","impl":"imperative","description":"Pin or unpin the floating reference so its position and size cannot be changed by pointer input.","title":"Pin floating reference","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["pinned"],"properties":{"pinned":{"type":"boolean"},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.set_collapsed","kind":"act","impl":"imperative","description":"Collapse or expand the desktop split reference panel without clearing its image.","title":"Collapse reference panel","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["collapsed"],"properties":{"collapsed":{"type":"boolean"},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.pixelize","kind":"act","impl":"imperative","description":"Reuse the current browser-local reference as image-to-pixel input. balanced is the default. Returns advisory pixel statistics and preserves a bound reference.","title":"Convert current reference to pixel art","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":120},"resolutionMode":{"type":"string","enum":["source-exact","auto-faithful","custom"],"description":"Defaults to auto-faithful. Supplying width and height implies custom mode."},"fidelityMode":{"type":"string","enum":["strict-99","balanced","manual"],"description":"Defaults to balanced; strict-99 is a legacy reconstruction preset."},"width":{"type":"integer","minimum":1,"maximum":4096,"description":"Editable output width for custom mode."},"height":{"type":"integer","minimum":1,"maximum":4096,"description":"Editable output height for custom mode."},"maxColors":{"type":"integer","minimum":2,"maximum":256,"description":"Adaptive palette size; strict-99 enforces at least 128."},"dither":{"type":"string","enum":["none","ordered-4x4","floyd-steinberg"]},"fit":{"type":"string","enum":["contain","cover","stretch"]},"sampling":{"type":"string","enum":["smooth","nearest"]},"alphaThreshold":{"type":"integer","minimum":0,"maximum":255},"preserveAlpha":{"type":"boolean","description":"Preserve alpha values above the cutoff."},"trimTransparent":{"type":"boolean","description":"Crop transparent source margins before fitting."},"targetOccupancy":{"type":"number","minimum":0.1,"maximum":1},"hardAlpha":{"type":"boolean","description":"Convert retained edge pixels to fully opaque pixels."},"brightness":{"type":"number","minimum":-60,"maximum":60},"contrast":{"type":"number","minimum":-60,"maximum":100},"saturation":{"type":"number","minimum":-100,"maximum":100},"background":{"type":"string","enum":["keep","edge"]},"backgroundTolerance":{"type":"number","minimum":0,"maximum":120},"backgroundColor":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"cleanNoise":{"type":"boolean"},"outline":{"type":"boolean"},"outlineColor":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"fixedPalette":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reference_image.audit_fidelity","kind":"act","impl":"imperative","description":"Measure the active frame against the browser-local reference after every reference-driven WebMCP workflow. A verified_99 result requires a score of at least 0.990, every metric floor, exact dimensions, and a meaningful reference alpha mask; never describe an unscorable or degraded result as 99% verified.","title":"Audit current frame against reference","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"readOnlyHint":true,"idempotentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"alphaThreshold":{"type":"integer","minimum":0,"maximum":255,"description":"Alpha cutoff used for the silhouette comparison."},"trimTransparent":{"type":"boolean","description":"Compare against transparent content bounds."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"import_project","kind":"act","impl":"imperative","description":"Add and select a complete PixelForge project JSON object while preserving existing projects.","title":"Import project data","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["project"],"properties":{"project":{"type":"object","description":"PixelForge project object."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"rename_project","kind":"act","impl":"imperative","description":"Change the current project name.","title":"Rename project","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":120},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"resize_canvas","kind":"act","impl":"imperative","description":"Resize every cel and anchor existing pixels to a chosen edge or the center.","title":"Resize canvas","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true,"destructiveHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["width","height"],"properties":{"width":{"type":"integer","minimum":1,"maximum":4096},"height":{"type":"integer","minimum":1,"maximum":4096},"anchor":{"type":"string","enum":["top-left","top","top-right","left","center","right","bottom-left","bottom","bottom-right"]},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"set_active_tool","kind":"act","impl":"imperative","description":"Select pencil, eraser, fill, line, rectangle, ellipse, picker, marquee, or hand.","title":"Select drawing tool","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["tool"],"properties":{"tool":{"type":"string","enum":["pencil","eraser","fill","line","rectangle","ellipse","picker","select","hand"]},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"set_primary_color","kind":"act","impl":"imperative","description":"Set the foreground drawing color.","title":"Set primary color","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["color"],"properties":{"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$","description":"Hex color as #RRGGBB or #RRGGBBAA."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"set_secondary_color","kind":"act","impl":"imperative","description":"Set the right-click background drawing color.","title":"Set secondary color","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["color"],"properties":{"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$","description":"Hex color as #RRGGBB or #RRGGBBAA."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"set_brush_size","kind":"act","impl":"imperative","description":"Set the square pixel brush size from 1 to 8.","title":"Set brush size","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["size"],"properties":{"size":{"type":"integer","minimum":1,"maximum":8},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"load_palette","kind":"act","impl":"imperative","description":"Replace the active palette with named hex colors.","title":"Load color palette","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["colors"],"properties":{"name":{"type":"string","maxLength":80},"colors":{"type":"array","minItems":1,"maxItems":256,"items":{"type":"string","pattern":"^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$","description":"Hex color as #RRGGBB or #RRGGBBAA."}},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"draw_pixels","kind":"act","impl":"imperative","description":"Write a bounded batch of exact pixels into the active cel atomically.","title":"Draw pixel batch","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["pixels"],"properties":{"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$","description":"Hex color as #RRGGBB or #RRGGBBAA."},"pixels":{"type":"array","minItems":1,"maxItems":1048576,"items":{"type":"object","additionalProperties":false,"required":["x","y"],"properties":{"x":{"type":"integer","minimum":0,"maximum":4095,"description":"Zero-based pixel x coordinate."},"y":{"type":"integer","minimum":0,"maximum":4095,"description":"Zero-based pixel y coordinate."},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$","description":"Hex color as #RRGGBB or #RRGGBBAA."}}}},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"apply_edit","kind":"act","impl":"imperative","description":"Run the editor's line, rectangle, ellipse, or flood-fill algorithm on the active cel.","title":"Draw shape or fill","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["operation","start"],"properties":{"operation":{"type":"string","enum":["line","rectangle","ellipse","fill"]},"start":{"type":"object","additionalProperties":false,"required":["x","y"],"properties":{"x":{"type":"integer","minimum":0,"maximum":4095,"description":"Zero-based pixel x coordinate."},"y":{"type":"integer","minimum":0,"maximum":4095,"description":"Zero-based pixel y coordinate."}}},"end":{"type":"object","additionalProperties":false,"required":["x","y"],"properties":{"x":{"type":"integer","minimum":0,"maximum":4095,"description":"Zero-based pixel x coordinate."},"y":{"type":"integer","minimum":0,"maximum":4095,"description":"Zero-based pixel y coordinate."}}},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$","description":"Hex color as #RRGGBB or #RRGGBBAA."},"filled":{"type":"boolean","description":"Fill the interior of rectangles or ellipses."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"clear_active_cel","kind":"act","impl":"imperative","description":"Erase all pixels in the active layer and frame unless the layer is locked.","title":"Clear active cel","annotations":{"openWorldHint":false,"consequentialHint":true,"untrustedContentHint":true,"destructiveHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"set_selection","kind":"act","impl":"imperative","description":"Create or clear the rectangular marquee selection.","title":"Set marquee selection","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"selection":{"oneOf":[{"type":"object","additionalProperties":false,"required":["x","y","width","height"],"properties":{"x":{"type":"integer","minimum":0,"maximum":4095},"y":{"type":"integer","minimum":0,"maximum":4095},"width":{"type":"integer","minimum":1,"maximum":4096},"height":{"type":"integer","minimum":1,"maximum":4096}}},{"type":"null"}]},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"delete_selection","kind":"transact","impl":"imperative","description":"Clear pixels inside the current marquee on the active cel.","title":"Delete selected pixels","annotations":{"openWorldHint":false,"consequentialHint":true,"untrustedContentHint":true,"destructiveHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"add_frame","kind":"act","impl":"imperative","description":"Append a blank animation frame.","title":"Add frame","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"duplicate_frame","kind":"act","impl":"imperative","description":"Copy the active frame and every layer cel.","title":"Duplicate frame","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"delete_frame","kind":"transact","impl":"imperative","description":"Delete the active animation frame.","title":"Delete frame","annotations":{"openWorldHint":false,"consequentialHint":true,"untrustedContentHint":true,"destructiveHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"add_layer","kind":"act","impl":"imperative","description":"Add a transparent layer.","title":"Add layer","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"duplicate_layer","kind":"act","impl":"imperative","description":"Copy the active layer and all cels.","title":"Duplicate layer","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"delete_layer","kind":"transact","impl":"imperative","description":"Delete the active layer.","title":"Delete layer","annotations":{"openWorldHint":false,"consequentialHint":true,"untrustedContentHint":true,"destructiveHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"toggle_layer_visibility","kind":"act","impl":"imperative","description":"Show or hide the active layer.","title":"Toggle layer visibility","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"undo","kind":"act","impl":"imperative","description":"Undo the latest recorded project edit.","title":"Undo","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"redo","kind":"act","impl":"imperative","description":"Redo the next project edit.","title":"Redo","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"set_active_frame","kind":"act","impl":"imperative","description":"Select an animation frame by zero-based index.","title":"Select frame","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["index"],"properties":{"index":{"type":"integer","minimum":0,"maximum":9999},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"set_frame_duration","kind":"act","impl":"imperative","description":"Set the active frame duration in milliseconds.","title":"Set frame duration","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["ms"],"properties":{"ms":{"type":"integer","minimum":20,"maximum":10000},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reorder_frame","kind":"act","impl":"imperative","description":"Move the active frame to a zero-based timeline index.","title":"Reorder frame","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["to"],"properties":{"to":{"type":"integer","minimum":0,"maximum":9999},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"rename_layer","kind":"act","impl":"imperative","description":"Rename the active layer.","title":"Rename layer","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":120},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"lock_layer","kind":"act","impl":"imperative","description":"Lock, unlock, or toggle the active layer edit lock.","title":"Lock layer","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"locked":{"type":"boolean","description":"Omit to toggle."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"set_layer_opacity","kind":"act","impl":"imperative","description":"Set active layer opacity from 0 to 100 percent.","title":"Set layer opacity","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["opacity"],"properties":{"opacity":{"type":"number","minimum":0,"maximum":100},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"set_active_layer","kind":"act","impl":"imperative","description":"Select a layer by zero-based index.","title":"Select layer","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["index"],"properties":{"index":{"type":"integer","minimum":0,"maximum":9999},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"reorder_layer","kind":"act","impl":"imperative","description":"Move the active layer to a zero-based stack index.","title":"Reorder layer","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["to"],"properties":{"to":{"type":"integer","minimum":0,"maximum":9999},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"set_zoom","kind":"act","impl":"imperative","description":"Set the editor's integer pixel zoom multiplier from 1 to 64.","title":"Set canvas zoom","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["zoom"],"properties":{"zoom":{"type":"integer","minimum":1,"maximum":64},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"toggle_grid","kind":"act","impl":"imperative","description":"Show, hide, or toggle the pixel grid.","title":"Toggle grid","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"enabled":{"type":"boolean","description":"Omit to toggle the current value."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"toggle_onion_skin","kind":"act","impl":"imperative","description":"Show, hide, or toggle adjacent animation frames.","title":"Toggle onion skin","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"enabled":{"type":"boolean","description":"Omit to toggle the current value."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"toggle_symmetry","kind":"act","impl":"imperative","description":"Enable, disable, or toggle mirrored drawing on both axes.","title":"Toggle symmetry","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"enabled":{"type":"boolean","description":"Omit to toggle the current value."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"playback","kind":"act","impl":"imperative","description":"Play, pause, or stop the frame animation.","title":"Control animation playback","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"required":["action"],"properties":{"action":{"type":"string","enum":["play","pause","stop"]},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"export_png","kind":"act","impl":"imperative","description":"Download the active frame as a crisp PNG.","title":"Export png","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"scale":{"type":"integer","minimum":1,"maximum":16},"delivery":{"type":"string","enum":["download","data-url"],"description":"Default data-url returns a file up to 8 MB. Use download to prepare a visible browser download link for larger files."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"export_gif","kind":"act","impl":"imperative","description":"Download all frames as a looping animated GIF.","title":"Export gif","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"scale":{"type":"integer","minimum":1,"maximum":8},"loop":{"type":"boolean"},"delivery":{"type":"string","enum":["download","data-url"],"description":"Default data-url returns a file up to 8 MB. Use download to prepare a visible browser download link for larger files."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"export_spritesheet","kind":"act","impl":"imperative","description":"Download a PNG sprite sheet and JSON frame metadata.","title":"Export spritesheet","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"scale":{"type":"integer","minimum":1,"maximum":16},"columns":{"type":"integer","minimum":1,"maximum":9999},"gap":{"type":"integer","minimum":0,"maximum":128},"layout":{"type":"string","enum":["horizontal","vertical","grid"]},"delivery":{"type":"string","enum":["download","data-url"],"description":"Default data-url returns a file up to 8 MB. Use download to prepare a visible browser download link for larger files."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"export_project","kind":"act","impl":"imperative","description":"Download the editable PixelForge project file.","title":"Export project","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"delivery":{"type":"string","enum":["download","data-url"],"description":"Default data-url returns a file up to 8 MB. Use download to prepare a visible browser download link for larger files."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"export_game_bundle","kind":"act","impl":"imperative","description":"Download a game-ready ZIP with transparent sprite sheets, optional PNG frame sequence, atlas metadata, timing, pivots, engine helpers, and a README.","title":"Export game-bundle","annotations":{"openWorldHint":false,"consequentialHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"engine":{"type":"string","enum":["universal","unity","godot","phaser","unreal","libgdx","gamemaker","rpg-maker","love2d"]},"scale":{"type":"integer","minimum":1,"maximum":16},"columns":{"type":"integer","minimum":1,"maximum":9999},"gap":{"type":"integer","minimum":0,"maximum":128},"includeFrameSequence":{"type":"boolean"},"extrude":{"type":"integer","minimum":0,"maximum":4},"delivery":{"type":"string","enum":["download","data-url"],"description":"Default data-url returns a file up to 8 MB. Use download to prepare a visible browser download link for larger files."},"expectedProjectId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]}],"category":"Media & Personal","favicon":"/favicons/pixelforge-studio.appcaster.chatgpt.site.png","apiSurface":"spec","toolCount":88}}