sprite-agent-mcp
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": false
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| sprite_quickstartA | Call this FIRST. Returns the exact Arena.ai Agent workflow, tool order, the golden rules of pixel art and a ready-to-use example. No source reading needed. |
| sprite_policyA | Returns the binding policy: agents MUST only call MCP tools and MUST NOT modify repository code. Also reports source-integrity status. Read this before doing anything else. |
| sprite_verify_integrityA | SHA-256 check of every tracked source/config file against integrity/manifest.json. Use it to prove no agent edited the code. If clean=false, STOP and ask the human to restore. |
| sprite_list_palettesA | List all built-in curated pixel-art palettes with roles and hex colors. Use the |
| sprite_paletteC | Inspect the active palette, switch to a built-in one, or install a custom palette. Also lists all semantic color roles for the current project. |
| sprite_new_projectA | Create an indexed pixel-art project: canvas size, palette, frames and layers. Always call this first. Classic sizes: 16×16 icons, 32×32 characters, 64×64 bosses. |
| sprite_list_projectsA | List all projects currently held in the server session (shared across stdio and HTTP connections). |
| sprite_project_infoC | Inspect the whole project state: size, palette, roles, frames, durations, layers and tags. |
| sprite_select_projectA | Make a project the active one, so later calls can omit the |
| sprite_delete_projectA | Remove a project from the in-memory session (does not delete exported files). |
| sprite_layerB | Add / remove / rename / show / hide / lock layers, or set layer opacity (opacity uses ordered dithering, never new colors). Layers exist per frame. |
| sprite_draw_gridA | THE PRIMARY DRAWING TOOL for LLMs. Write the sprite as text rows; each character maps to a color via |
| sprite_draw_opsB | Vector-ish pixel ops, all snapped to integer pixels. Ops: clear, pixel(s), rect, line, circle/ellipse, polygon, fill (flood), dither, gradient, noise, scatter, replace, outline, shade, mirror, shift, text (3×5 font), crop. Example ops:[{op:"rect",x:4,y:4,w:8,h:8,color:"base"},{op:"shade",light:"nw"},{op:"outline",color:"outline",mode:"selective"}]. The "shade" op adds hue-shifted light/shadow; "outline" adds a real silhouette outline. |
| sprite_generateA | One-call, seeded, hand-designed pixel-art recipes. Kinds: hero, slime, potion, gem, chest, sword, shield, tree, mushroom, ghost, coin, star, torch, planet, cloud, heart, portrait, tile_grass, tile_stone, tile_brick, tile_water, tile_lava. Animated kinds (slime/ghost/coin/star/torch/tile_water/tile_lava) create a full looping timeline automatically. Call sprite_catalog for the full list. |
| sprite_catalogA | List every generator, animation preset, palette, built-in font character and available export format. Use it to discover capabilities instead of reading source files. |
| sprite_frameC | add / duplicate / delete / rename / select / set_duration / tag / reorder frames. Index is 0-based. |
| sprite_animateB | Build a full animation timeline from the active frame. Presets: idle_bob, walk_cycle, blink, pulse, squash_stretch, spin, shake, wave, flicker, explode, jump, glow, hue_cycle, float. Integer/nearest-neighbour only — never blurred. Example: {preset:"idle_bob", frames:6, durationMs:120, amplitude:1}. |
| sprite_tweenC | Create intermediate frames between two keyframes using ordered-dither cross dissolve (pixel-art correct, no alpha blur). Example: {from:0,to:2,steps:3}. |
| sprite_timingC | Set a constant fps (10–12 fps is the pixel-art sweet spot), a constant duration, or per-frame durations. Example: {fps:10}. |
| sprite_loopC | pingpong (seamless back-and-forth), reverse, hold (freeze each frame N times) or deduplicate (remove identical frames). Example: {mode:'pingpong'}. |
| sprite_enhanceC | One-click pro polish: despeckle jaggies, enforce palette economy, add a selective dark outline, apply hue-shifted light/shadow (cool shadows, warm highlights), fix symmetry and center the silhouette. Example: {outline:true, shade:true, despeckle:true, limitColors:16}. |
| sprite_critiqueA | Scores color economy, silhouette, outline, shading and animation (0–100, grade S–D) and returns concrete next tool calls. Use it before exporting. |
| sprite_inspectA | Return the frame as an ASCII grid + legend + color histogram. Perfect for text-only reasoning and for iterating on a specific frame without vision. |
| sprite_previewA | Render the sprite as an INLINE PNG image content block so you (the agent) can actually SEE the art. Use 'all' to get a contact sheet of the whole animation. Returns a text summary too. |
| sprite_exportA | Write real files (never source files). formats: png (per frame), gif, apng (lossless animated PNG), svg (animated), spritesheet (PNG + atlas JSON), gpl, css, json (project), gallery. Example: {formats:["png","gif","spritesheet","apng"], scale:8, atlas:"aseprite"}. Returns absolute paths and an inline preview. |
| sprite_galleryB | Write a fully self-contained HTML animation player (inline base64 PNGs, playback controls, onion skin, zoom, palette swatches, frame tags). Works offline and in a sandboxed preview. |
| sprite_save_projectA | Serialize the full project (palette, layers, all frames, durations) to a .spriteproj.json inside the output root. Load it later with sprite_load_project. |
| sprite_load_projectB | Load a .spriteproj.json exported by sprite_save_project. Path is relative to the output root, or an absolute path to a project JSON file. Reading is safe; writing is still guarded. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| new_sprite | Recipe prompt: create a polished pixel-art sprite of a subject. Use as a slash-command in Arena.ai Agent Mode. |
| walk_cycle | Build a 6-frame looping walk cycle and export a sprite sheet. |
| tileset | Generate a seamless animated tileset and its atlas. |
| critique_loop | Iteratively improve the active project until grade A or better. |
| arena_safety | Reminder prompt that pins the read-only repository policy for the whole session. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| policy | MCP-only, no source edits. Read this first. |
| pixel-art-guide | Color economy, hue-shifted shading, selective outline, silhouette rules. |
| animation-guide | Timing, loop shaping and animation recipes. |
| tools-guide | All MCP tool names and the recommended call order. |
| catalog | Palettes, generators, animation presets and tool names as JSON. |
| state | Current projects and integrity status. |
TDQS
Scored across 28 tools
Most tools have a clear resource+action target, but several clusters overlap: sprite_quickstart and sprite_policy both claim priority ('Call this FIRST' vs 'Read this before doing anything else'), sprite_preview / sprite_inspect / sprite_critique / sprite_gallery all cover 'look at the art', and sprite_loop / sprite_animate / sprite_tween / sprite_timing all manipulate the timeline. sprite_enhance also duplicates outline/shade operations that sprite_draw_ops exposes directly. Descriptions are detailed enough to resolve most cases, but the boundaries require reading rather than being self-evident from names.
Nearly every tool follows the sprite_<verb>_<noun> or sprite_<verb> convention in consistent snake_case, e.g. sprite_new_project, sprite_load_project, sprite_list_projects, sprite_draw_grid. Minor deviations are noun-only multi-action tools (sprite_palette, sprite_layer, sprite_frame, sprite_timing) that bundle several verbs into one name, but the prefix scheme remains predictable throughout.
At 28 tools the surface is heavy for essentially one asset domain, and several tools are near-duplicates that could be merged (sprite_list_palettes into sprite_palette, sprite_timing/sprite_loop into a frame-timing op, sprite_gallery into sprite_export). The discovery trio sprite_quickstart / sprite_policy / sprite_catalog plus sprite_verify_integrity further inflates the count beyond what the creative workflow needs.
Coverage is genuinely broad: project lifecycle (new/list/info/select/delete/save/load), drawing (grid and vector ops), frame and animation control, palettes, critique/inspect/preview, and many export formats. The main gaps are no undo/redo or history tool and no canvas resize/import operation, both of which an agent doing iterative pixel art would reasonably expect.