aseprite-ai-artist
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| preflightA | Check that Aseprite is connected and report what this session can do. Call this FIRST in any pixel-art task and stop if |
| sprite_infoA | Full structured state of a sprite: dimensions, colour mode, palette, every layer (with opacity, blend mode, visibility, group nesting), every frame with its duration, animation tags, slices and the current selection. Read this before editing — guessing at layer names or frame counts is the most common way an agent corrupts someone's file. |
| sprite_manageA | Open, create, focus, resize, save and close sprites in the running Aseprite session. Ops: 'list' (open documents), 'new', 'open', 'activate', 'save', 'save_as', 'close', 'resize_canvas', 'set_properties', 'slice_create', 'slice_update', 'slice_delete'. Canvas resize keeps existing pixels — pass an anchor to say where they land. Slices name a rectangular region of the canvas for an engine to read back — a 9-patch panel's |
| lookA | See what is actually on the canvas. Ops:
• 'preview' — a nearest-neighbour upscaled PNG of the active frame (~1024px long edge). Use for overall read: silhouette, colour, whether it looks like the thing.
• 'ascii' — an exact text grid, one glyph per pixel with a colour legend and coordinate rulers. Use to verify precise pixel positions and values, to count cells, or on any client without vision. Reads up to the whole canvas; pass a region to crop. Glyphs are bound to palette indices, so every region and frame of a sprite agrees on what a glyph means; each read's legend lists only the colours it contains, so merge legends when rows from one piece go into another. Only colours outside the palette (listed in |
| read_pixelsA | Read a rectangular region as structured data: a list of distinct colours plus a row-major index grid. Use this when you need to compute over pixels (sample a palette from art, find a silhouette edge, copy a region) rather than just look at them. For eyeballing, 'look' is cheaper. |
| drawA | Apply a batch of drawing operations to one cel, as a single undoable action. Ops: pixels, line, polyline, rect, ellipse, fill, replace, dither, gradient, clear, blit, text, grid. Batch aggressively — a whole sprite in one call is normal and correct, and it means the user can undo your work with one Ctrl+Z. Set |
| selectA | Read or change the active selection. Ops: 'get', 'none', 'all', 'rect', 'ellipse', 'color' (select every pixel matching a colour), 'invert', 'grow', 'shrink'. A selection scopes draw, transform and recolor, which is usually cheaper and safer than masking by hand. |
| transformA | Move, flip, rotate or scale pixels on ONE cel — the target layer's image on the target frame. Ops: 'translate', 'flip', 'rotate', 'scale', 'outline', 'crop_to_content'. To transform part of a cel, crop the region out with |
| layerA | Manage layers. Ops: 'list', 'create', 'rename', 'delete', 'reorder', 'set' (visibility/opacity/blend/lock), 'group', 'ungroup', 'merge', 'duplicate', 'activate'. Pass |
| frameA | Manage animation frames. Ops: 'list', 'add', 'duplicate', 'delete', 'set_duration', 'activate', 'reorder'. Durations are milliseconds per frame and carry most of the life in a cycle — hold a contact pose longer than a pass pose. Use |
| tagA | Manage animation tags — the named frame ranges a game engine imports as 'idle', 'walk', 'attack'. Ops: 'list', 'create', 'update', 'delete'. Tag every cycle before export; an untagged spritesheet is a pile of frames the engine cannot address. |
| celA | Manage cels — one layer's image on one frame. Ops: 'list', 'create', 'clear', 'delete', 'move', 'copy', 'link', 'unlink', 'set' (position/opacity), 'tween', 'oscillate'. 'move' is how you shift a whole limb between frames without redrawing it; 'link' shares one image across frames so a static part of a cycle stays in sync. 'tween' interpolates position or opacity between two frames with an easing curve; 'oscillate' adds a sinusoidal position offset over a frame range — both fill in any missing in-between cels from the start cel, in one transaction. |
| paletteA | Read and shape the sprite's palette. Ops: • 'get' — current palette with per-colour usage counts. • 'set' — write specific indices, or replace the palette wholesale. • 'preset' — load a bundled palette by key: ~2000 of them, the classics (pico8, gameboy, cga, nes…) and the most-downloaded on Lospec (sweetie-16, endesga-32, resurrect-64, aap-64…). An unknown key or a name answers with the matching keys, so 'preset: "gameboy"' or 'preset: "endesga"' is a search. • 'load' — read a .gpl/.hex/.pal/.png palette file from disk. • 'ramp' — generate a hue-shifted ramp from a base colour and append it. Shadows rotate toward blue, highlights toward orange; a ramp that only changes brightness is the clearest tell of machine-made pixel art. • 'analyze' — report ramp structure, contrast, near-duplicate entries and colours used in the art that are not in the palette. • 'extract' — replace the palette with one quantized from the art itself (RGB sprites only). Use to derive a curated palette from a reference image imported at full colour. Decide the palette before drawing. Retro-fitting one onto finished art means repainting. |
| recolorA | Change colours in a region by intent, staying palette-legal. Ops: • 'shade' — darken or lighten with proper hue shifting (shadows cool, highlights warm). Use this instead of picking a darker hex by hand. • 'snap' — pull off-palette pixels onto the nearest palette colour by perceptual (CIELAB) distance. • 'replace' — swap one exact colour for another. • 'hue_shift' — rotate hue, e.g. to make a colour variant of a finished sprite. • 'desaturate' — drop toward grey, useful for a value check. Operates on a region's distinct colours in one pass, so a 64×64 recolour is one undo step, not four thousand. |
| validateA | Lint a sprite against pixel-art rules and report concrete, located problems. Checks: off-palette colours, orphan/stray pixels, broken or doubled outlines, banding, semi-transparent (soft or resized) pixels, empty layers, untagged frames and uniform frame timing; |
| referenceA | Bring an external image into the sprite as a reference layer, so you can trace proportions or sample colours from it. Ops: 'import' (place an image on a locked, semi-transparent layer above the art), 'sample_palette' (read its dominant colours without importing), 'list', 'remove'. A concept sheet or storyboard arrives as one image: |
| exportA | Write game-ready files. Ops: 'png' (single frame), 'gif' (animation), 'spritesheet' (packed sheet plus a JSON atlas with per-frame and per-tag data), 'frames' (numbered PNGs), 'aseprite' (save a copy of the source). Spritesheet is what an engine actually consumes: pass |
| tilesetA | Work with Aseprite tilemap layers. Ops:
• 'list' — tilesets in the sprite.
• 'create_layer' — a new empty tilemap layer on a given grid.
• 'get' — tile count and, with a path, the tiles as one packed PNG.
• 'stamp' — place tiles by grid coordinate. x/y are grid cells, not pixels.
• 'pack' — turn a hand-painted mockup layer into a tileset plus a tilemap that reconstructs it exactly. Deduplicates identical cells; |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| aseprite:animate | Build an idle, walk, run or attack cycle from key poses, set timing that reads as motion rather than a metronome, tag it, and review it as a filmstrip. Use when a rigged sprite needs to move. |
| aseprite:brief | Turn a vague pixel-art request into a written brief — size, palette, view, light, outline style — and confirm it with the user before any pixel is drawn. Use when the request is open-ended ("make me a knight") rather than a specific edit. |
| aseprite:concept | Before drawing a new character, prop, scene or animation, write an art spec, turn it into a ready-to-paste prompt for an image-generation model, and offer the user a choice — generate a concept sheet or storyboard with it and send it back, or continue without one. When reference art arrives (from that prompt or from the user), read it into a PixelSpec and import it panel by panel, so the pixel work reproduces a decided design instead of improvising one. Use after the brief for anything drawn from scratch, and whenever the user supplies reference art; skip for edits to existing art. |
| aseprite:draw | Draw a sprite from silhouette to finished pixels, in the order that catches mistakes while they are still cheap — block in, check the silhouette, shade, outline, verify. Use for the main body of any drawing task. |
| aseprite:export | Produce the files an engine actually consumes — spritesheets with atlases, GIFs, scaled PNGs — with the tags and layout the target needs. Use when work is finished and needs to leave Aseprite. |
| aseprite:fix | Change a sprite that already exists — the user's own work or your earlier output — without destroying what is already right. Use for edits, touch-ups, style corrections and "make it more X" requests. |
| aseprite:new | Create a new Aseprite document with the right canvas size, colour mode, palette and layer structure, so later work does not have to fight the setup. Use when starting fresh rather than editing an existing sprite. |
| aseprite:palette | Pick a palette that fits the request, build hue-shifted ramps, or clean up a sprite whose colours have sprawled. Use when the user asks about colour, wants a specific retro look, or when validate reports off-palette colours. |
| aseprite:review | Run the mechanical checks and the by-eye checks, then report what you found with evidence instead of declaring success. Use before finishing any pixel-art task, and when the user asks "is this good" or "why does this look off". |
| aseprite:rig | Split a character onto named layers — head, torso, arms, legs — so it can be animated by moving cels instead of redrawing pixels. Use before animating anything, or when limbs are baked into one layer. |
| aseprite:shade | Add light and shadow with proper hue shifting, one step at a time, so the sprite gains form without gaining the flat-luminance look that marks generated pixel art. Use when flat art needs volume. |
| aseprite:studio | The front door for any Aseprite or pixel-art request. Works out what the user actually wants, picks which workflows to run and in what order — and whether to work in the user's open Aseprite window or a headless batch Aseprite (`--headless` / `--live` force it) — hands parts to the specialist agents where the harness has them, and does not stop until the result has been looked at and reviewed. Use when a request spans several steps ("make me an animated knight for Godot") or when you are unsure which workflow applies. |
| aseprite:submit | Turn the sprite you just made into a gallery pull request against with-pebbly/aseprite-ai-artist — exported files, an honest generation.yaml (prompts verbatim, model, plugin version, validate results, optional benchmark scoring), checked with `pnpm gallery:check`, opened with the gh CLI. Use when the user wants to share, publish or submit their work to the gallery or the benchmark. |
| aseprite:tileset | Design seamless tiles and autotile sets, or deduplicate a hand-painted mockup into a reusable tileset, then export for Tiled or Godot. Use for level art, terrain and anything that repeats. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| pixel-art-rules-index | The craft rules this server encodes, by subject: core discipline, technique, colour and materials, characters (faces, hands), animation (walks, attacks), creatures, environments, objects and isometric, effects and UI, style. Read this before your first sprite in a session. |
| palette-presets | Every palette the `palette` tool's 'preset' op can load — about 2000, roughly 1 MB of JSON. To find one, call `palette` op 'preset' with a word of its name instead of reading this. |
| 00-core-principles | One chapter of the pixel-art rulebook. |
| 01-palette-and-color | One chapter of the pixel-art rulebook. |
| 02-shading-and-light | One chapter of the pixel-art rulebook. |
| 03-silhouette-and-form | One chapter of the pixel-art rulebook. |
| 04-outlines-and-edges | One chapter of the pixel-art rulebook. |
| 05-animation | One chapter of the pixel-art rulebook. |
| 06-layers-and-rigging | One chapter of the pixel-art rulebook. |
| 07-review-checklist | One chapter of the pixel-art rulebook. |
| 10-lines-and-curves | One chapter of the pixel-art rulebook. |
| 11-clusters-and-noise | One chapter of the pixel-art rulebook. |
| 12-anti-aliasing | One chapter of the pixel-art rulebook. |
| 13-dithering-and-texture | One chapter of the pixel-art rulebook. |
| 14-readability-and-scale | One chapter of the pixel-art rulebook. |
| 20-color-for-pixel-art | One chapter of the pixel-art rulebook. |
| 21-limited-and-platform-palettes | One chapter of the pixel-art rulebook. |
| 22-materials-hard | One chapter of the pixel-art rulebook. |
| 23-materials-soft | One chapter of the pixel-art rulebook. |
| 24-lighting-scenarios | One chapter of the pixel-art rulebook. |
| 30-proportions-by-size | One chapter of the pixel-art rulebook. |
| 31-anatomy-and-pose | One chapter of the pixel-art rulebook. |
| 32-heads-and-faces | One chapter of the pixel-art rulebook. |
| 33-eyes-and-expressions | One chapter of the pixel-art rulebook. |
| 34-hands-and-feet | One chapter of the pixel-art rulebook. |
| 35-hair-and-clothing | One chapter of the pixel-art rulebook. |
| 36-character-design | One chapter of the pixel-art rulebook. |
| 37-views-and-directions | One chapter of the pixel-art rulebook. |
| 38-portraits | One chapter of the pixel-art rulebook. |
| 40-timing-and-spacing | One chapter of the pixel-art rulebook. |
| 41-idle-and-breathing | One chapter of the pixel-art rulebook. |
| 42-walk-and-run | One chapter of the pixel-art rulebook. |
| 43-jump-fall-land | One chapter of the pixel-art rulebook. |
| 44-attacks-and-impacts | One chapter of the pixel-art rulebook. |
| 45-secondary-motion | One chapter of the pixel-art rulebook. |
| 46-subpixel-animation | One chapter of the pixel-art rulebook. |
| 47-top-down-animation | One chapter of the pixel-art rulebook. |
| 50-quadrupeds | One chapter of the pixel-art rulebook. |
| 51-animal-gaits | One chapter of the pixel-art rulebook. |
| 52-birds-and-flight | One chapter of the pixel-art rulebook. |
| 53-small-creatures | One chapter of the pixel-art rulebook. |
| 54-monster-design | One chapter of the pixel-art rulebook. |
| 60-skies-and-atmosphere | One chapter of the pixel-art rulebook. |
| 61-landscapes-and-terrain | One chapter of the pixel-art rulebook. |
| 62-parallax-backgrounds | One chapter of the pixel-art rulebook. |
| 63-trees-and-foliage | One chapter of the pixel-art rulebook. |
| 64-water | One chapter of the pixel-art rulebook. |
| 65-ground-rocks-grass | One chapter of the pixel-art rulebook. |
| 66-tiles-and-autotiling | One chapter of the pixel-art rulebook. |
| 67-architecture-and-interiors | One chapter of the pixel-art rulebook. |
| 70-perspective | One chapter of the pixel-art rulebook. |
| 71-isometric | One chapter of the pixel-art rulebook. |
| 72-3d-forms | One chapter of the pixel-art rulebook. |
| 73-props-and-items | One chapter of the pixel-art rulebook. |
| 74-vehicles-and-machines | One chapter of the pixel-art rulebook. |
| 75-rotation-and-turnarounds | One chapter of the pixel-art rulebook. |
| 80-vfx-fire-smoke-magic | One chapter of the pixel-art rulebook. |
| 81-impacts-and-game-feel | One chapter of the pixel-art rulebook. |
| 82-particles-and-weather | One chapter of the pixel-art rulebook. |
| 83-ui-and-icons | One chapter of the pixel-art rulebook. |
| 84-bitmap-fonts | One chapter of the pixel-art rulebook. |
| 90-platform-styles | One chapter of the pixel-art rulebook. |
| 91-composition-and-scenes | One chapter of the pixel-art rulebook. |
| 92-generated-art-tells | One chapter of the pixel-art rulebook. |
| animate | Build an idle, walk, run or attack cycle from key poses, set timing that reads as motion rather than a metronome, tag it, and review it as a filmstrip. Use when a rigged sprite needs to move. |
| brief | Turn a vague pixel-art request into a written brief — size, palette, view, light, outline style — and confirm it with the user before any pixel is drawn. Use when the request is open-ended ("make me a knight") rather than a specific edit. |
| concept | Before drawing a new character, prop, scene or animation, write an art spec, turn it into a ready-to-paste prompt for an image-generation model, and offer the user a choice — generate a concept sheet or storyboard with it and send it back, or continue without one. When reference art arrives (from that prompt or from the user), read it into a PixelSpec and import it panel by panel, so the pixel work reproduces a decided design instead of improvising one. Use after the brief for anything drawn from scratch, and whenever the user supplies reference art; skip for edits to existing art. |
| draw | Draw a sprite from silhouette to finished pixels, in the order that catches mistakes while they are still cheap — block in, check the silhouette, shade, outline, verify. Use for the main body of any drawing task. |
| export | Produce the files an engine actually consumes — spritesheets with atlases, GIFs, scaled PNGs — with the tags and layout the target needs. Use when work is finished and needs to leave Aseprite. |
| fix | Change a sprite that already exists — the user's own work or your earlier output — without destroying what is already right. Use for edits, touch-ups, style corrections and "make it more X" requests. |
| new | Create a new Aseprite document with the right canvas size, colour mode, palette and layer structure, so later work does not have to fight the setup. Use when starting fresh rather than editing an existing sprite. |
| palette | Pick a palette that fits the request, build hue-shifted ramps, or clean up a sprite whose colours have sprawled. Use when the user asks about colour, wants a specific retro look, or when validate reports off-palette colours. |
| review | Run the mechanical checks and the by-eye checks, then report what you found with evidence instead of declaring success. Use before finishing any pixel-art task, and when the user asks "is this good" or "why does this look off". |
| rig | Split a character onto named layers — head, torso, arms, legs — so it can be animated by moving cels instead of redrawing pixels. Use before animating anything, or when limbs are baked into one layer. |
| shade | Add light and shadow with proper hue shifting, one step at a time, so the sprite gains form without gaining the flat-luminance look that marks generated pixel art. Use when flat art needs volume. |
| studio | The front door for any Aseprite or pixel-art request. Works out what the user actually wants, picks which workflows to run and in what order — and whether to work in the user's open Aseprite window or a headless batch Aseprite (`--headless` / `--live` force it) — hands parts to the specialist agents where the harness has them, and does not stop until the result has been looked at and reviewed. Use when a request spans several steps ("make me an animated knight for Godot") or when you are unsure which workflow applies. |
| submit | Turn the sprite you just made into a gallery pull request against with-pebbly/aseprite-ai-artist — exported files, an honest generation.yaml (prompts verbatim, model, plugin version, validate results, optional benchmark scoring), checked with `pnpm gallery:check`, opened with the gh CLI. Use when the user wants to share, publish or submit their work to the gallery or the benchmark. |
| tileset | Design seamless tiles and autotile sets, or deduplicate a hand-painted mockup into a reusable tileset, then export for Tiled or Godot. Use for level art, terrain and anything that repeats. |
TDQS
Scored across 18 tools
Most tools map cleanly to a distinct resource or action (draw, transform, recolor, layer, frame, cel, tag). A few boundaries blur slightly — look vs read_pixels (visual read vs structured pixel read) and draw vs transform vs recolor could be confused by an agent without reading the descriptions — but the descriptions themselves draw sharp lines (e.g. transform explicitly notes there is no selection-scoped transform).
There's a loose pattern (bare verbs for direct actions like draw/look/select/export, nouns for op-bundled resource managers like palette/layer/frame/cel/tileset), but it's not consistent — 'sprite_info', 'sprite_manage' and 'read_pixels' use snake_case while everything else is single-word, and 'preflight'/'validate' are neither verb_noun nor noun. Readable, but conventions are mixed.
18 tools for a full Aseprite editing surface (drawing, palette, layers, frames, tags, cels, selection, transform, export, tilesets, validation) is heavy but each tool earns its place via the op-bundling pattern that keeps related operations under one name. Slightly above the ideal 3-15 range.
Covers the full lifecycle: connection check (preflight), read state (sprite_info, look, read_pixels), palette, drawing, selection, transform, layer/cel/frame/tag management, recolor, validation, reference importing and export/tilesets. There is no obvious dead end for pixel-art creation and game-ready output.