AI actions
The AI Assistant can issue structured actions against a project: adding layers, generating tweens, swapping palettes, mirroring variants, and more. Below is the full action vocabulary, along with guidance on prompting for reliable results. For a step-by-step walkthrough, see AI-assisted editing; for production-scale patterns, see Production workflows at scale.
![]()
Project structure
Section titled “Project structure”Pixel Art Studio is a structured document, not a flat canvas. A project is:
Project├── Settings (grid, onion skin, view)├── Palette (named colors, ramps, presets)├── Layers[] (visibility, lock, opacity, blend mode, group)├── Frames[] (duration, order)├── Animation Tags[](name, range, direction)├── Variations[] (palette overrides, visibility presets)└── Tile Atlases[] (reusable tiles)Every AI action targets one of these structures. The more precisely you address it (explicit layerId, frameIndex, coordinates, colors), the better the result.
Actions
Section titled “Actions”These are the structured actions the assistant can issue. Use them as the vocabulary when you prompt.
Layers
addLayerdeleteLayerupdateLayerduplicateLayerreorderLayerscreateLayerGroupmoveLayerToGroupFrames and animation
addFrameduplicateFramedeleteFrameupdateFrameDurationreorderFramesselectFramesetFrameCount // build a whole timeline in one actioncopyLayerToFrames // carry one layer's art across framesgenerateTweenaddAnimationTagupdateAnimationTagdeleteAnimationTagPixels and shapes
setPixels // explicit coordinates + colorsclearLayerfillAreadrawShapeflipLayergenerateMirroredVariantsArt primitives
These do the pixel craft — colour ramps, dithering, natural silhouettes — from a description of intent rather than a list of coordinates. They accept colours as hex strings or palette indices, and any colour not already in the palette is added.
drawGradient // dithered ramp: skies, water, lit backgroundsditherFill // two-tone blend for soft shadingdrawMountainRange // jagged ridgeline with optional snowdrawHills // rolling midground banddrawTree // one shaded treedrawTreeLine // a whole band of varied treesdrawCloud // soft cloud with a lit edgedrawSprite // pixel pattern from character rows and a color keyscatter // grass, stars, flowers, foliage speckledrawRain // one frame of falling rain or snowdrawLightning // a forked boltdrawFlash // partial-coverage brightening overlayPalette
addColorupdateColorremoveColorgenerateRampsortPaletteloadPaletteProject
updateSettingsShared MCP tools in built-in chat
Section titled “Shared MCP tools in built-in chat”pixelArtToolThe built-in assistant uses the unified chat system and can invoke all Pixel Art MCP tools through pixelArtTool. It uses your signed-in session and the open editor draft; no personal MCP token is needed and the external MCP admin switch does not affect it. The Pixel Art AI assignment and your service permissions still apply.
For example, {"action":"pixelArtTool","tool":"get_rig","arguments":{}} reads the current rig. Use apply_actions for rig and pixel edits, preview_animation for an inline GIF, and analyze_animation for frame-specific findings. The editor supplies project/service IDs and the draft revision. Applied edits participate in editor Undo and normal autosave. Project listing and creation are scoped to the current service; open another project before editing it.
The assistant receives textual tool results in its next live context. Images are shown in chat; visual model input depends on the chat’s image-input support, so numerical pixel reads and analysis remain the reliable inspection path.
Try this in the built-in chat:
Read this project’s rig and current frames. Create an eight-frame walk using the existing parts, preserve my cleanup layers, and keep stance feet planted. Render the poses, show a looping preview, and analyze the animation for disconnected pieces and foot drift. Report the affected frames before making further repairs.
Targeting frames
Section titled “Targeting frames”Every art primitive draws on one frame by default. Give it a frame selector instead and one action covers a whole animation, re-evaluated per frame so the effect moves:
| Field | Meaning |
|---|---|
frameIndex: 3 |
Just frame 3 (the default is the current frame) |
frames: [0, 4, 8] |
Exactly those frames |
frameRange: [0, 11] |
Frames 0 through 11, inclusive |
allFrames: true |
Every frame in the project |
Two modifiers control how the effect changes between frames. driftX and driftY scroll the result by that many pixels per frame, wrapping inside the action’s own region so the loop closes — that turns any primitive into a moving element. freezeSeed holds the random layout identical on every frame, so scattered marks stay put and only the drift moves them; without it, scattered marks re-seed each frame and shimmer.
drawRain carries its own phase and loops on its own, so it needs neither.
The assistant handles this for you when you ask for an animation. See Generate a multi-frame animation with AI for the workflow.
Prompting
Section titled “Prompting”Specificity predicts the quality of the result more than anything else. State the structure you’re targeting (layer name, frame index, palette, tag), the change you want, and where (coordinates, color values).
| Vague | Structured |
|---|---|
| “make it better” | “on layer body, frame 3, shift all pixels right by 2 and recolor the outline to #1a1a2a” |
| “add a walk cycle” | “duplicate frames 1–4 as frames 5–8, then generateTween Hybrid EaseInOut between frame 4 and frame 8 on layer body” |
| “do the fire variant” | “create variation fire, set palette to [list], hide layer ice_overlay, show layer fire_overlay” |
| “fix colors” | “select all pixels on layer outfit matching #3a86ff within tolerance 10, recolor to #e63946” |
A few rules apply in most situations. Address things by name, not index: “layer body” survives reorders, “layer 2” doesn’t. Give explicit coordinates for pixel edits, because setPixels with [x, y, color] triples is deterministic. Name tags and variations the way you’ll export them, since tag names become export targets. When one prompt would touch layers, frames, palette, and animation at once, split it into ordered steps. Review before you publish, because every AI action is undoable with Ctrl+Z but only manual review catches gradual drift.
