Skip to main content
Glama
Aseprite Asset MCP

Aseprite Asset MCP

by jdsalasca

Aseprite Asset MCP

npm version

Plan de arquitectura y evolución: docs/IMPROVEMENT_PLAN.md. La integración con la UX independiente está documentada en docs/ASSET_STUDIO_INTEGRATION.md.

MCP server público para crear pixel art, personajes y escenarios de Aseprite con TypeScript 6.0.3, Node.js 24 y arquitectura hexagonal.

El servidor usa stdio. El adaptador MCP llama a casos de uso de aplicación y el adaptador de infraestructura ejecuta Aseprite de forma controlada. Los workflows generan primero un plan JSON reproducible y un manifiesto compatible con Godot.

Install / Quickstart

En 5 minutos:

  1. Requisitos: Node.js 24 o posterior, npm 11 o posterior y Aseprite instalado. El servidor invoca el binario de Aseprite; si no está en el PATH, define ASEPRITE_PATH:

$env:ASEPRITE_PATH = 'C:\Program Files (x86)\Steam\steamapps\common\Aseprite\Aseprite.exe'
  1. Ejecuta el servidor sin instalarlo (paquete público en npm) o instálalo globalmente para obtener el bin aseprite-asset-mcp:

npx -y aseprite-asset-mcp
# o
npm install -g aseprite-asset-mcp && aseprite-asset-mcp
  1. Apunta tu cliente MCP al bin. El servidor habla stdio y ASEPRITE_PATH se pasa como variable de entorno.

Claude Desktop (claude_desktop_config.json) y Cursor (mcp.json) usan mcpServers:

{
  "mcpServers": {
    "aseprite": {
      "command": "npx",
      "args": ["-y", "aseprite-asset-mcp"],
      "env": {
        "ASEPRITE_PATH": "C:\\Program Files (x86)\\Steam\\steamapps\\common\\Aseprite\\Aseprite.exe"
      }
    }
  }
}

OpenCode (opencode.json) usa mcp con type: "local":

{
  "mcp": {
    "aseprite": {
      "type": "local",
      "command": ["npx", "-y", "aseprite-asset-mcp"],
      "environment": {
        "ASEPRITE_PATH": "C:\\Program Files (x86)\\Steam\\steamapps\\common\\Aseprite\\Aseprite.exe"
      },
      "enabled": true
    }
  }
}

Si instalaste el paquete globalmente, usa "command": "aseprite-asset-mcp" y omite args.

  1. Verifica el handshake pidiendo al agente server_capabilities o get_tools_list. Debe reportar 185 tools.

Related MCP server: aseprite-mcp

Arquitectura

src/
  domain/          contratos y resultados del dominio
  application/     casos de uso
  infrastructure/  adaptador CLI de Aseprite
  interfaces/      adaptador MCP y entrada stdio
  workflows/       planes TypeScript y cliente MCP
tests-ts/          TDD unitario y handshake MCP

Estado de la migración

La rama develop usa únicamente el runtime TypeScript. El núcleo disponible incluye canvas, grupos, capas, frames, tags, paletas, dibujo pixelado, tilemaps, validación, exportación, planes deterministas para personajes y escenarios, y handshake MCP real por stdio.

Este proyecto mantiene su propio desarrollo, roadmap y contrato de herramientas para convertirlo en una fábrica de assets pixel-art eficiente para agentes.

Showcase visual

Los ejemplos se generan de forma reproducible con npm run showcase. El mismo pipeline crea estilo, tileset, mapa, oleaje, transición temporal y manifests.

Declarative asset pipeline

Coastal map preview

Animated beach waves

Day, sunset, night, and sunrise transition

Ver también:

Requisitos

  • Node.js 24 o posterior.

  • npm 11 o posterior.

  • Aseprite instalado y accesible.

  • ASEPRITE_PATH configurado si el ejecutable no está en el PATH.

En Windows:

$env:ASEPRITE_PATH = 'C:\Program Files (x86)\Steam\steamapps\common\Aseprite\Aseprite.exe'
npm install
npm test

Conectar el MCP

.mcp.json usa el servidor TypeScript:

{
  "mcpServers": {
    "aseprite": {
      "type": "stdio",
      "command": "npm",
      "args": ["run", "mcp", "--silent"]
    }
  }
}

Ejecuta manualmente con npm run mcp. stdout pertenece al protocolo MCP; los logs operativos van a stderr.

Workflows para juegos

Modo plan:

npm run asset:character -- --asset=moon-knight
npm run asset:scene -- --asset=forest-ruins

Esto crea en artifacts/aseprite/ el plan de llamadas y el manifiesto *.godot.json.

Modo ejecución, después de revisar el plan:

$env:ASEPRITE_PATH = 'C:\Program Files (x86)\Steam\steamapps\common\Aseprite\Aseprite.exe'
npm run asset:character -- --asset=moon-knight --execute
npm run asset:scene -- --asset=forest-ruins --execute
npm run asset:odiseum-style
npm run asset:odiseum-world
npm run asset:library
npm run showcase

Secuencia: canvas; grupos y capas semánticas; paleta; frames y tags; validación; spritesheet, datos y manifiesto para Godot.

asset:odiseum-style genera los personajes, el entrenador y la transición de viaje de Odiseum. asset:odiseum-world genera el sheet de seis props, el glifo animado de los portales y el cristal animado exclusivo de Starfall Grove con la misma paleta cozy. asset:library genera odiseum-cozy-kit, una biblioteca reutilizable de ocho assets de entorno de 48 px con sombras de contacto, navegación, naturaleza y arquitectura.

La biblioteca se exporta en art/library/odiseum-cozy-kit.png junto con asset-library.json. El manifiesto documenta el índice de cada frame, categoría, paleta, escala y regla de renderizado nearest para reutilizar el kit en otros juegos originales.

Herramientas compactas para agentes

El agente puede descubrir capacidades por carpetas antes de cargar detalles:

  • get_tools_list: devuelve carpetas y conteos sin repetir los más de cien nombres.

  • get_tools_by_folder: carga solo una familia, por ejemplo asset/animation o asset/quality.

  • run_asset_recipe: ejecuta o previsualiza recetas pixel_art, animation_pixel_art, gif y atlas.

  • batch_asset_job: agrupa varias recetas en una sola llamada y devuelve un resultado compacto.

  • convert_image_to_pixel_art: convierte PNG, JPG, WebP y otros formatos soportados por Sharp con resize box/nearest, paleta limitada, transparencia y dithering Bayer opcional.

  • convert_animation_to_pixel_art: procesa todos los frames con una paleta global y conserva sus delays en GIF.

  • upscale_pixel_art: aumenta sprites estáticos o animados con nearest-neighbor determinista, conserva transparencia/delays y limita la salida a 4096 px.

  • harmonize_asset_palette: mueve un PNG/GIF hacia una familia cromática de acento, limita la paleta y conserva transparencia/delays en una salida separada.

  • build_contact_sheet: ajusta sprites heterogéneos a celdas nearest-neighbor, genera un PNG de preview y un manifest JSON navegable en una sola llamada.

  • export_animation_gif: exporta una imagen animada o un .aseprite a GIF.

  • inspect_asset_bundle: combina dimensiones, frames, colores, transparencia, delays, violaciones y recomendaciones deterministas en una sola respuesta compacta.

  • inspect_asset_batch: audita hasta 32 assets en una sola llamada, conserva el orden, aísla fallos de decodificación y devuelve un resumen valid/invalid/failed sin transferir buffers de píxeles.

  • audit_asset_manifest: revisa los archivos referenciados por un manifest generado, detecta faltantes o archivos vacíos y devuelve formato, tamaño y hash SHA-256 en una respuesta compacta.

  • recommend_asset_scene: recibe un prompt de mundo, tags o efectos y devuelve una selección determinista de assets con ranking, razones y cobertura de tipos/variantes para componer escenas con menos llamadas.

  • build_scene_bundle: compone en una llamada la versión PNG, la animación GIF y sus manifests de una escena, reutilizando los compositores existentes y deteniéndose si falla la composición estática.

  • apply_enhancement_plan: inspecciona, planifica, aplica y ejecuta quality gate en una sola llamada determinista, preservando la fuente y reduciendo round-trips de la UX/agente.

  • apply_enhancement_batch: aplica ese mismo pipeline a hasta 24 assets en una llamada, conserva el orden, aísla fallos por archivo y bloquea colisiones antes de escribir.

  • inspect_animation_quality: audita una animación en una sola llamada, detecta frames duplicados, cambios por transición, timing irregular, deriva de paleta y costura de loop.

  • inspect_sprite_geometry: calcula bounds alfa, componentes conectados, baseline y pivotes por frame para placement estable.

  • generate_sprite_hitboxes: deriva un manifest JSON de colisión desde esa geometría, con modo components o union y padding acotado, sin duplicar análisis raster.

  • build_sprite_runtime_bundle: empaqueta spritesheet, timing e hitboxes en una sola llamada y publica un manifest runtime navegable.

  • generate_sprite_anchors: deriva puntos bottom_center, center, top_center, laterales y baseline por frame para placement estable en motores.

  • normalize_sprite: recorta PNG/GIF a los bounds alfa compartidos, añade padding determinista, conserva los delays y escribe un manifest JSON con pivote para motores 2D.

  • build_animation_sheet: convierte todos los frames de una animación en un PNG spritesheet con coordenadas, pivotes bottom_center, delays y duración de loop en un manifest navegable.

  • inspect_sprite_geometry: calcula bounds alfa, componentes conectados, baseline y pivotes por frame para detectar jitter antes de colisiones o composición de escenas.

  • export_asset_pack: empaqueta imágenes del mismo tamaño en un atlas PNG y entrega un manifiesto JSON con la posición de cada asset.

  • create_style_bible: fija paleta, luz, escala, detalle y semilla para mantener consistencia.

  • inspect_reference y run_asset_quality_gate: analizan color, contraste, bordes, transparencia, banding y píxeles aislados.

  • build_terrain_tileset: genera 16 máscaras cardinales por terreno para transiciones reutilizables.

  • generate_world_map: crea mapas multi-bioma deterministas con landmarks y preview.

  • generate_beach_scene: crea costa, arena, tierra, preview y oleaje animado.

  • extend_scene: amplía un mapa JSON existente por sus bordes, conserva capas y desplaza landmarks de forma determinista.

  • generate_biome_transition: detecta fronteras entre biomas, calcula una banda determinista de transición y escribe metadatos/preview para espuma, hierba, roca o bordes de terreno sin mutar el mapa fuente.

  • generate_seamless_texture: iguala bordes opuestos para texturas repetibles de agua, tierra, piedra o hierba sin alterar la fuente.

  • generate_water_reflection: genera un GIF determinista con reflejo bajo una línea de agua, oleaje y destellos temporales para océanos, playas y mapas.

  • generate_water_caustics: genera una pasada GIF de luz refractada sobre píxeles opacos de agua, piscinas, playas o interiores inundados.

  • generate_day_night_cycle: genera un GIF determinista con las etapas day, sunset, night y sunrise, preservando transparencia y dimensiones. Acepta un manifest_filename opcional que escribe un manifest JSON determinista (kind: day_night_cycle) con las fases.

  • generate_environment_pack: empaqueta playa, bosque, aldea o cueva en una sola llamada.

  • create_asset_recipe: compone outline, grading, materiales, luz, sombras, partículas, normal map y quality gate en un plan determinista sin ejecutar cambios.

  • get_asset_library: busca una biblioteca de 339 items preconstruidos en 10 categorías, con resultados compactos para reducir tokens.

  • get_asset_library_item: resuelve README, manifest, preview y sprite sheet de un asset concreto.

  • audit_asset_library: valida IDs, referencias de presets, categorías y rutas navegables antes de componer escenas; devuelve métricas compactas y hasta 100 violaciones deterministas.

  • summarize_asset_library: devuelve un mapa de categorías, tres ejemplos por categoría y presets sin cargar el detalle completo, reduciendo tokens de navegación.

  • plan_asset_scene: recibe IDs arbitrarios de la biblioteca y devuelve capas ordenadas con roles, previews y sprites sin generar archivos.

  • compose_asset_scene: recibe IDs y materializa un PNG de escena + manifest navegable con placements deterministas, sin modificar los originales.

  • compose_asset_scene_animation: recibe IDs de la biblioteca y materializa un GIF de escena con selección cíclica de frames, delays y manifest por frame.

  • generate_library_variant_pack: recibe múltiples IDs y genera en una sola llamada packs de lluvia, fuego, terremoto, aves, noche, movimiento y reflejos reutilizando el servicio de variantes existente.

  • get_asset_preset: devuelve composiciones listas como living-forest, coastal-sunset, fantasy-quest y rainy-village.

  • generate_asset_preset: ejecuta un preset completo y devuelve terreno, mapa, preview, oleaje cuando aplica y transición temporal en una respuesta compacta.

  • generate_scene_effect_stack: agrupa en una sola llamada lluvia, partículas, caústicas/reflejos, día-noche, granularidad de material e iluminación direccional; infiere dimensiones para partículas, devuelve todos los artifacts y preserva la fuente.

  • generate_motion_pack: crea ciclos idle, walk, run, jump o attack desde un sprite estático o animado.

  • generate_source_variant_pack: crea en una sola llamada hasta nueve variantes deterministas (rain, fire, earthquake, birds, night, day_night, walk, water_reflection y water_caustics) a partir de un asset fuente y devuelve un manifiesto compacto de artifacts.

Las operaciones de imagen no necesitan abrir Aseprite; eso reduce latencia y tokens para conversiones masivas. Las operaciones sobre .aseprite siguen pasando por el adaptador CLI hexagonal y mantienen la compatibilidad con Godot.

TDD y calidad

npm run typecheck
npm run test:ts
npm test

Las pruebas de dominio y planes no necesitan abrir Aseprite. La prueba MCP inicia el servidor TypeScript real, hace el handshake stdio y verifica las herramientas expuestas.

Los tests de integración reales corren en un runner self-hosted — ver docs/CI_ASEPRITE.md.

Docker

La imagen usa Node.js 24. El binario de Aseprite debe estar disponible dentro del contenedor y configurarse con ASEPRITE_PATH; no se incluyen credenciales ni binarios propietarios.

docker compose run --rm aseprite-mcp-dev

Licencia y proyecto

Proyecto independiente: jdsalasca/aseprite-asset-mcp. Conserva la licencia MIT.

Ejecución de recetas compuestas

create_asset_recipe genera un plan revisable y execute_asset_recipe lo ejecuta paso a paso usando los mismos servicios de efectos, materiales, iluminación y calidad. El pipeline conserva la fuente, detiene la primera operación fallida y devuelve el artifact final.

La UX puede invocar POST /api/v1/recipes/execute cuando MCP_REST_PORT está habilitado.

Biblioteca de assets y presets

assets/folders/ contiene una biblioteca determinista y navegable: personajes, flora, fauna, criaturas mitológicas, monturas, armas y accesorios, biomas/mapas, interiores, instrumentos y efectos de escena. Cada carpeta tiene su propio README.md, manifest.json, preview.png, preview.svg, sprite-sheet.png y sprite-sheet.svg.

Para regenerar la biblioteca después de cambiar sus semillas:

npm run asset:library:catalog

La API HTTP sidecar (/api/v1/...) es experimental y puede cambiar entre versiones minor; los cambios breaking se documentan en el CHANGELOG.

Ejemplos REST:

GET /api/v1/library?query=rain&limit=12
GET /api/v1/library/audit
GET /api/v1/library/summary
POST /api/v1/library/scene-plan
POST /api/v1/library/scene-compose
POST /api/v1/library/scene-animation-compose
POST /api/v1/library/variants/pack
POST /api/v1/effects/motion
POST /api/v1/effects/upscale
POST /api/v1/assets/palette-harmonize
POST /api/v1/assets/contact-sheet
POST /api/v1/effects/seamless
POST /api/v1/effects/water-reflection
POST /api/v1/effects/water-caustics
POST /api/v1/effects/day-night
POST /api/v1/variants/pack
POST /api/v1/assets/quality-bundle
POST /api/v1/assets/enhancement-plan
POST /api/v1/assets/enhancement-batch
POST /api/v1/assets/quality-batch
POST /api/v1/assets/animation-quality
POST /api/v1/assets/normalize-sprite
POST /api/v1/assets/animation-sheet
POST /api/v1/assets/sprite-geometry
POST /api/v1/assets/sprite-hitboxes
POST /api/v1/assets/sprite-runtime-bundle
POST /api/v1/assets/sprite-anchors
GET /api/v1/library/items/forest-ranger
GET /api/v1/library/presets/living-forest
GET /api/v1/library/items/forest-ranger/preview
GET /api/v1/library/items/forest-ranger/sprite
GET /api/v1/library/presets/living-forest/compose
POST /api/v1/library/presets/generate
POST /api/v1/effects/scene-stack
POST /api/v1/scenes/biome-transition

Las dos últimas rutas sirven PNG/GIF de forma binaria desde el adaptador de archivos, validando primero el id del catálogo y bloqueando escapes del directorio assets/folders. Asset Studio las consume para mostrar previews reales en PixelAssetGrid.

compose_asset_preset y GET /api/v1/library/presets/:id/compose devuelven en una sola respuesta los assets y las capas ordenadas (background, midground, foreground, effect), reduciendo búsquedas repetidas de los agentes.

compose_asset_scene y POST /api/v1/library/scene-compose reciben item_ids, output_filename, manifest_filename, width, height y padding. El servicio decodifica las previews mediante un puerto raster, compone con alpha source-over y escribe un PNG más un manifest con coordenadas, dimensiones, roles y garantías deterministic/sourcePreserved.

compose_asset_scene_animation y POST /api/v1/library/scene-animation-compose añaden frames (2–24) y delay_ms (1–2000). Cada capa selecciona su frame de forma cíclica, se compone con geometría determinista y se exporta como GIF sin modificar las previews originales.

generate_library_variant_pack y POST /api/v1/library/variants/pack reciben item_ids, output_prefix, variants, frames, seed y delay_ms. El orquestador resuelve y valida los IDs, materializa previews con un adaptador temporal, delega el algoritmo a AssetVariantPackService, libera los temporales incluso ante errores y escribe un manifest compacto del lote.

audit_asset_manifest y POST /api/v1/assets/manifest-audit reciben { "manifest_filename": "output/scene.json" }. El caso de uso extrae rutas de salida conocidas, comprueba existencia y tamaño, calcula SHA-256 y marca valid: false si falta o está vacío algún artefacto. Con ASSET_ARTIFACT_ROOT se puede restringir la auditoría a una raíz permitida.

recommend_asset_scene y POST /api/v1/library/recommendations reciben opcionalmente prompt, category, required_kinds, required_tags, required_variants, limit y seed. Devuelven suggestedItemIds, scores y razones como prompt:water, tag:tropical o variant:water_reflection; el resultado se puede pasar directamente a plan_asset_scene o compose_asset_scene.

build_scene_bundle y POST /api/v1/library/scene-bundle reciben item_ids, output_prefix, width, height, padding, frames y delay_ms. Generan scene.png, scene.json, scene.gif y scene-animation.json dentro del prefijo indicado con una respuesta compacta.

apply_enhancement_plan (MCP) y POST /api/v1/assets/enhancement-plan (REST) reciben { "filename": "hero.png", "output_filename": "hero-enhanced.png", "format": "png", "goals": ["cleanup", "terrain_grain", "directional_lighting"], "max_colors": 64, "seed": 7 }. El servicio de aplicación analiza la referencia, crea el plan explicable, escribe una salida separada y ejecuta el quality gate; devuelve plan, applied, quality, deterministic y sourcePreserved en una respuesta.

apply_enhancement_batch y POST /api/v1/assets/enhancement-batch reciben { "items": [{ "filename": "hero.png", "output_filename": "hero-batch.png", "format": "png" }, { "filename": "tree.gif", "output_filename": "tree-batch.gif", "format": "gif" }], "goals": ["cleanup", "particles"], "max_colors": 64, "seed": 7 }. Validan colisiones globales antes de escribir, procesan en orden y devuelven summary: { total, succeeded, failed } con error por item.

La composición es fail-closed: si el preset contiene una referencia inexistente, no devuelve una escena parcial. Ejecuta audit_asset_library para localizar y corregir el catálogo antes de componer.

Las variantes (rain, fire, earthquake, birds, wave-reflection, day, sunset, night, walk, attack, etc.) son contratos para los algoritmos existentes: se aplican sobre una copia del asset y conservan la fuente.

normalize_sprite es útil antes de generar atlas o integrar animaciones en Godot: usa el union de alfa de todos los frames para que el canvas no salte, limita el padding a 16 px, rechaza colisiones de input/output/manifest y deja el pivote bottom_center sobre la última fila visible.

build_animation_sheet recibe { "input_filename": "hero.gif", "output_filename": "hero-sheet.png", "manifest_filename": "hero-sheet.json", "columns": 4, "padding": 1 }. El PNG solo contiene la rejilla visual; el manifest conserva los delays originales y los pivotes globales de cada celda, evitando que la animación dependa de un formato GIF en el motor.

inspect_sprite_geometry recibe { "filename": "hero.gif", "min_component_pixels": 1 } y devuelve por frame los componentes alfa 4-conectados, bounds, baseline y pivote. Un bounds inestable genera recomendación de normalización, pero no se marca como error: el movimiento intencional también puede cambiar la silueta.

generate_source_variant_pack evita nueve llamadas del agente cuando se necesita explorar un asset fuente en distintos contextos. Ejemplo MCP/REST equivalente:

{
  "input_filename": "art/forest-ranger.png",
  "output_prefix": "art/forest-ranger-variants",
  "variants": ["rain", "night", "birds", "day_night"],
  "frames": 8,
  "seed": 17,
  "delay_ms": 90
}

La respuesta contiene artifacts[] con ruta, operación, cantidad de frames, formato y las garantías deterministic y sourcePreserved. Las fuentes PNG estáticas también pueden producir GIFs animados; el servidor rechaza explícitamente pedir varios frames con formato PNG.

generate_scene_effect_stack reduce llamadas repetidas del agente cuando se quiere probar una escena completa. Selecciona efectos únicos y el servicio reutiliza los puertos existentes de efectos, materiales e iluminación:

{
  "input_filename": "art/forest-ranger.png",
  "output_prefix": "art/forest-ranger-scene",
  "effects": ["material_texture", "depth_lighting", "rain", "particles", "water_caustics", "day_night"],
  "frames": 8,
  "seed": 17,
  "material": "earth",
  "direction": "south_east",
  "format": "gif"
}

El equivalente REST es POST /api/v1/effects/scene-stack; devuelve un manifest compacto con un artifact por efecto y mantiene deterministic: true y sourcePreserved: true.

generate_biome_transition recibe input_map_filename, output_map_filename, preview_filename opcional, transition_width de 1 a 8 y seed. Conserva las capas y landmarks, añade biomeTransitions[] con distancia, bioma origen/destino y variante (edge, blend, accent) y genera un preview de un píxel por celda; esto permite que una herramienta posterior pinte espuma, bordes de hierba o roca sin regenerar el mundo.

Available Tools

185 tools
add_frameC

Add one animation frame.

Inputs: filename (required).

add_framesC

Add a deterministic number of animation frames.

Inputs: count (required), filename (required), duration_ms.

add_groupC

Add a named layer group to an Aseprite document.

Inputs: filename (required), group_name (required), parent_group.

add_layerC

Add a named layer, optionally inside a group.

Inputs: filename (required), layer_name (required), group.

adjust_brightness_contrastC

Apply Aseprite native brightness and contrast adjustment.

Inputs: filename (required), x, y, width, +5 more.

adjust_hslA

Shift hue, saturation, and lightness on an opaque cel while preserving alpha.

Inputs: filename (required), layer_name (required), frame_index (required), hue_shift, +2 more.

adjust_hsl_nativeC

Apply Aseprite native hue, saturation, and lightness adjustment.

Inputs: filename (required), x, y, hue, +6 more.

animation_sanitizeD

Normalize animation cels and optionally repair out-of-range activity.

Inputs: filename (required), end_frame, layer_names, layer_order, +13 more.

animation_workflow_guideA

Return a concise deterministic guide for character, environment, or general animation workflows.

Inputs: use_case.

apply_color_gradeC

Apply deterministic brightness, contrast, and saturation grading to a sprite.

Inputs: input_filename (required), output_filename (required), format, contrast, +2 more.

apply_convolutionC

Apply a built-in Aseprite convolution matrix to a layer and frame.

Inputs: matrix (required), filename (required), x, y, +4 more.

apply_depth_lightingA

Apply deterministic depth-aware directional lighting to a sprite while preserving transparency and source data.

Inputs: direction (required), input_filename (required), output_filename (required), format, +2 more.

apply_dither_gradientC

Fill a rectangle with a two-color Bayer-dithered gradient.

Inputs: x (required), y (required), width (required), height (required), +7 more.

apply_dither_patternC

Fill a rectangle with a uniform Bayer-dithered mix of two colors.

Inputs: x (required), y (required), width (required), height (required), +7 more.

apply_enhancement_batchA

Enhance up to 24 assets in one deterministic batch, isolating per-file failures and preserving every source.

Inputs: items (required), seed, goals, max_colors.

apply_enhancement_planB

Apply a deterministic enhancement plan to a new output file while preserving the source asset.

Inputs: filename (required), output_filename (required), seed, goals, +2 more.

apply_gradient_rectA

Apply a horizontal or vertical linear gradient to a rectangle on a named layer and animation frame.

Inputs: x (required), y (required), width (required), height (required), +7 more.

apply_material_textureC

Apply deterministic water, earth, grass, stone, or snow granularity while preserving transparency and source data.

Inputs: seed (required), material (required), input_filename (required), output_filename (required), +2 more.

apply_palette_presetC

Apply a built-in retro palette preset to the sprite.

Inputs: preset (required), filename (required).

apply_pixel_outlineC

Add a deterministic pixel outline around opaque sprite edges.

Inputs: color (required), input_filename (required), output_filename (required), format, +1 more.

audit_animationC

Audit animation cels, overlaps, and declared frame ranges.

Inputs: filename (required), end_frame, layer_names, report_cels, +6 more.

audit_asset_libraryA

Audit library ids, preset references, categories, folders, and navigable asset paths before composing a scene.

Inputs: no named parameters.

audit_asset_manifestA

Audit files referenced by a generated manifest, including missing, empty, format, and SHA-256 metadata.

Inputs: manifest_filename (required).

batch_asset_jobC

Run several compact asset recipes in order or return one batch plan.

Inputs: jobs (required), dry_run.

build_animation_sheetA

Assemble all frames of a PNG or GIF into a deterministic PNG spritesheet and write coordinates, bottom-center pivots, and delays to a manifest.

Inputs: input_filename (required), output_filename (required), manifest_filename (required), columns, +1 more.

build_contact_sheetC

Fit heterogeneous sprite previews into a deterministic nearest-neighbor contact sheet and write a navigable JSON manifest.

Inputs: cell_width (required), cell_height (required), input_filenames (required), output_filename (required), +3 more.

build_scene_bundleC

Build a static PNG scene, animated GIF scene, and both navigation manifests through one deterministic operation.

Inputs: width (required), height (required), item_ids (required), output_prefix (required), +3 more.

build_sprite_runtime_bundleC

Build one deterministic runtime bundle with an animation sheet, timing manifest, and sprite hitbox manifest.

Inputs: input_filename (required), sheet_filename (required), sheet_manifest_filename (required), bundle_manifest_filename (required), +6 more.

build_terrain_tilesetC

Build a deterministic terrain tileset with adjacency variants and metadata.

Inputs: terrains (required), tile_size (required), output_filename (required), manifest_filename (required), +3 more.

cancel_asset_jobA

Request cancellation of a queued or running asset job.

Inputs: job_id (required).

clear_celC

Delete a cel from a named layer and frame.

Inputs: filename (required), layer_name (required), frame_index (required).

compare_framesA

Compare two flattened animation frames and return changed-pixel metrics as JSON.

Inputs: frame_a (required), frame_b (required), filename (required).

compose_asset_presetB

Compose one scene preset into compact assets and ordered layers for a single low-token request.

Inputs: id (required).

compose_asset_sceneC

Compose selected library previews into a deterministic PNG and navigable manifest.

Inputs: width (required), height (required), item_ids (required), output_filename (required), +2 more.

compose_asset_scene_animationC

Compose selected animated library previews into a deterministic GIF and frame manifest.

Inputs: width (required), height (required), item_ids (required), output_filename (required), +4 more.

convert_animation_to_pixel_artB

Convert all image frames to pixel art and preserve animation delays.

Inputs: width (required), height (required), input_filename (required), output_filename (required), +4 more.

convert_image_to_pixel_artB

Convert one image to pixel art with a deterministic shared palette.

Inputs: width (required), height (required), input_filename (required), output_filename (required), +4 more.

copy_celB

Copy one layer cel to another frame, replacing the destination by default.

Inputs: filename (required), layer_name (required), source_frame (required), target_frame (required), +1 more.

copy_frameC

Copy all cels from one frame to another frame or append a new frame.

Inputs: filename (required), source_frame (required), overwrite, target_frame.

copy_layers_between_spritesC

Copy selected animation layers and cels from one Aseprite document into another.

Inputs: layer_names (required), source_filename (required), target_filename (required), replace, +1 more.

copy_regionC

Copy a rectangular region to a layer and frame destination.

Inputs: x (required), y (required), width (required), dest_x (required), +7 more.

copy_spriteA

Copy a sprite to another Aseprite document, refusing to overwrite by default.

Inputs: filename (required), output_filename (required), overwrite.

create_asset_recipeA

Compose a deterministic, reviewable multi-effect asset recipe without executing it.

Inputs: steps (required), asset_id (required), output_prefix (required), input_filename (required), +4 more.

create_canvasC

Create a new Aseprite canvas.

Inputs: width (required), height (required), filename (required).

create_celA

Create an empty cel at a layer and frame when one does not already exist.

Inputs: filename (required), layer_name (required), frame_index (required), x, +1 more.

create_character_planC

Create a deterministic, auditable TypeScript plan for a layered character and its Godot exports.

Inputs: asset_id (required), output_directory.

create_scene_planC

Create a deterministic, auditable TypeScript plan for a tilemap scene and its Godot exports.

Inputs: asset_id (required), output_directory.

create_sliceC

Create a named rectangular slice.

Inputs: x (required), y (required), name (required), width (required), +2 more.

create_style_bibleC

Create a deterministic visual style contract for sprites and maps.

Inputs: id (required), palette (required), filename (required), base_size (required), +5 more.

create_tilemap_layerC

Create a tilemap layer and set the Aseprite grid.

Inputs: filename (required), layer_name (required), tile_width (required), tile_height (required).

crop_canvasC

Crop the sprite canvas to a rectangle.

Inputs: x (required), y (required), width (required), height (required), +1 more.

delete_frameB

Delete one animation frame while keeping at least one frame in the sprite.

Inputs: filename (required), frame_index (required).

delete_layerC

Delete a named layer from an Aseprite document.

Inputs: filename (required), layer_name (required).

delete_sliceC

Delete a named slice.

Inputs: name (required), filename (required).

delete_tagC

Delete an existing animation tag.

Inputs: name (required), filename (required).

draw_circleC

Draw an ellipse-bounded circle.

Inputs: radius (required), center_x (required), center_y (required), filename (required), +2 more.

draw_circle_atC

Draw an ellipse-bounded circle on a named layer and animation frame.

Inputs: radius (required), center_x (required), center_y (required), filename (required), +5 more.

draw_ellipse_atC

Draw a filled or outlined ellipse on a named layer and animation frame.

Inputs: center_x (required), center_y (required), filename (required), radius_x (required), +6 more.

draw_lineC

Draw a Bresenham line with optional pixel thickness.

Inputs: x1 (required), x2 (required), y1 (required), y2 (required), +3 more.

draw_line_atB

Draw a Bresenham line on a named layer and animation frame.

Inputs: x1 (required), x2 (required), y1 (required), y2 (required), +6 more.

draw_on_tileC

Draw pixels onto a tilemap tileset tile.

Inputs: pixels (required), filename (required), layer_name (required), tile_index (required).

draw_pathD

Draw a polyline on a named layer and animation frame.

Inputs: points (required), filename (required), layer_name (required), frame_index (required), +3 more.

draw_pixelsC

Draw explicit pixels on the active cel.

Inputs: pixels (required), filename (required).

draw_pixels_atC

Draw explicit pixels on a named layer and animation frame, creating the cel when requested.

Inputs: pixels (required), filename (required), layer_name (required), frame_index (required), +1 more.

draw_polygonC

Draw a filled or outlined polygon on a named layer and animation frame.

Inputs: points (required), filename (required), layer_name (required), frame_index (required), +3 more.

draw_rectangleC

Draw a filled or outlined pixel-art rectangle on the active Aseprite layer.

Inputs: x (required), y (required), color (required), width (required), +3 more.

draw_rectangle_atB

Draw a filled or outlined rectangle on a named layer and animation frame.

Inputs: x (required), y (required), width (required), height (required), +6 more.

draw_textB

Rasterize and draw text into a sprite layer and frame.

Inputs: x (required), y (required), font (required), text (required), +16 more.

duplicate_frame_rangeC

Append one or more copies of an inclusive animation frame range.

Inputs: filename (required), end_frame (required), start_frame (required), times.

duplicate_layerC

Duplicate a layer and its cels across all frames.

Inputs: filename (required), layer_name (required), group, new_name.

ensure_layers_presentC

Ensure cels exist for named layers across a frame range.

Inputs: filename (required), layer_names (required), end_frame, start_frame.

erase_colorB

Erase opaque pixels matching a color within channel tolerance.

Inputs: color (required), filename (required), layer_name (required), frame_index (required), +1 more.

erase_regionC

Erase a rectangular region to transparency.

Inputs: x (required), y (required), width (required), height (required), +3 more.

execute_asset_recipeC

Execute a deterministic composed asset recipe through the shared visual services.

Inputs: steps (required), asset_id (required), output_prefix (required), input_filename (required), +4 more.

export_animation_gifB

Convert a PNG, GIF, or animated image into a GIF while preserving frames.

Inputs: input_filename (required), output_filename (required).

export_asset_packC

Export an atlas PNG and a compact JSON manifest in one call.

Inputs: input_filenames (required), output_filename (required), manifest_filename (required), columns, +1 more.

export_frameC

Export one animation frame as a PNG with nearest-neighbor integer scaling.

Inputs: filename (required), frame_index (required), output_filename (required), scale.

export_layersC

Export each layer as a PNG and confirm that at least one new layer file was written.

Inputs: filename (required), output_directory (required), include_hidden.

export_spriteC

Export a sprite to a selected image format and confirm that Aseprite wrote an output file.

Inputs: filename (required), output_filename (required), format.

export_spritesheetC

Export a spritesheet and optional frame metadata for Godot.

Inputs: filename (required), output_filename (required), scale, padding, +5 more.

export_tagC

Export an animation tag as an image or animation file after validating that the tag exists.

Inputs: filename (required), tag_name (required), output_filename (required), scale.

extend_sceneB

Extend an existing deterministic scene around its borders while preserving the original layers and landmarks.

Inputs: input_map_filename (required), output_map_filename (required), top, left, +4 more.

extract_paletteC

Extract and persist an optimized palette with a bounded color count.

Inputs: filename (required), max_colors, with_alpha.

fill_areaC

Fill a contiguous area from a seed pixel.

Inputs: x (required), y (required), filename (required), color.

fill_area_atC

Fill a contiguous area on a named layer and animation frame.

Inputs: x (required), y (required), filename (required), layer_name (required), +3 more.

flatten_spriteB

Flatten all layers into one layer.

Inputs: filename (required).

flip_layerC

Flip a layer cel horizontally or vertically.

Inputs: filename (required), layer_name (required), frame_index (required), direction.

generate_asset_presetC

Generate one executable world preset with terrain, map, preview, and deterministic time-of-day artifacts.

Inputs: seed (required), width (required), height (required), preset_id (required), +3 more.

generate_beach_sceneC

Generate a seeded beach map, preview, and animated wave GIF.

Inputs: seed (required), width (required), height (required), map_filename (required), +6 more.

generate_biome_transitionA

Generate deterministic transition metadata and a preview overlay between adjacent map biomes without mutating the source map.

Inputs: input_map_filename (required), output_map_filename (required), seed, preview_filename, +1 more.

generate_color_rampC

Generate a hue-shifted dark-to-light pixel-art color ramp.

Inputs: base_color (required), steps, lightness_range, hue_shift_degrees.

generate_day_night_cycleC

Generate a deterministic animated day, sunset, night, and sunrise cycle while preserving transparency and source dimensions.

Inputs: input_filename (required), output_filename (required), seed, format, +4 more.

generate_environment_packC

Generate a complete beach, forest, village, or cave asset pack.

Inputs: kind (required), seed (required), width (required), height (required), +3 more.

generate_library_variant_packB

Generate deterministic environmental variants for multiple asset library ids with one compact request.

Inputs: item_ids (required), variants (required), output_prefix (required), seed, +2 more.

generate_motion_packB

Generate a deterministic idle, walk, run, jump, or attack cycle from a static or animated sprite.

Inputs: motion (required), input_filename (required), output_filename (required), seed, +4 more.

generate_normal_mapC

Generate a deterministic tangent-space normal map from sprite alpha depth.

Inputs: input_filename (required), output_filename (required), format, strength.

generate_particle_burstB

Generate a deterministic animated particle burst GIF for impact, healing, magic, or dust.

Inputs: seed (required), color (required), width (required), frames (required), +4 more.

generate_rain_overlayC

Generate a deterministic rain overlay while preserving the source dimensions and frame timing.

Inputs: seed (required), color (required), input_filename (required), output_filename (required), +5 more.

generate_scene_effect_stackC

Generate a deterministic compact package of selected scene effects while preserving the source: rain, particles, water motion, day/night, material grain, and directional lighting.

Inputs: effects (required), output_prefix (required), input_filename (required), seed, +7 more.

generate_seamless_textureC

Make opposite texture borders match deterministically for repeatable water, earth, stone, or grass backgrounds.

Inputs: input_filename (required), output_filename (required), format, seam_width.

generate_source_variant_packB

Generate a deterministic multi-output environmental variant pack for one source asset: rain, fire, earthquake, birds, night, movement, and water effects.

Inputs: variants (required), output_prefix (required), input_filename (required), seed, +2 more.

generate_sprite_anchorsC

Generate deterministic placement anchors from sprite geometry for scene composition and game-engine transforms.

Inputs: filename (required), output_filename (required), min_component_pixels.

generate_sprite_hitboxesB

Generate a deterministic collision manifest from sprite geometry using component or union hitboxes with bounded padding.

Inputs: filename (required), output_filename (required), mode, padding, +1 more.

generate_sprite_shadowC

Generate a deterministic clipped sprite shadow from alpha data.

Inputs: color (required), offset_x (required), offset_y (required), input_filename (required), +3 more.

generate_water_causticsB

Generate deterministic animated light caustics over opaque water pixels for oceans, pools, beaches, and flooded interiors.

Inputs: color (required), input_filename (required), output_filename (required), seed, +5 more.

generate_water_reflectionC

Generate a deterministic animated reflection below a waterline for oceans, beaches, and wave scenes.

Inputs: waterline (required), input_filename (required), output_filename (required), seed, +5 more.

generate_world_mapB

Generate a seeded multi-biome map manifest and optional preview.

Inputs: seed (required), width (required), biomes (required), height (required), +4 more.

get_asset_job_statusC

Read one asynchronous asset job without returning raw pixels.

Inputs: job_id (required).

get_asset_libraryC

Search the deterministic asset/preset library with compact results for humans and agents.

Inputs: limit, query, category.

get_asset_library_itemA

Resolve one library item and its README, preview, sprite sheet, and variants.

Inputs: id (required).

get_asset_presetC

Resolve a ready-to-compose scene preset and its recommended MCP tools.

Inputs: id (required).

get_color_statsC

Return JSON color usage statistics for one flattened frame.

Inputs: filename (required), top, frame_index.

get_composite_pixelC

Read one RGBA pixel from the visible flattened composite.

Inputs: x (required), y (required), filename (required), frame_index.

get_composite_rectC

Read a visible flattened composite region as JSON.

Inputs: x (required), y (required), width (required), height (required), +2 more.

get_paletteB

Return the active sprite palette as a JSON color array.

Inputs: filename (required).

get_pixel_colorC

Read one RGBA pixel from a cel.

Inputs: x (required), y (required), filename (required), layer_name, +1 more.

get_pixels_rectB

Read a rectangular RGBA region from a cel as JSON.

Inputs: x (required), y (required), width (required), height (required), +3 more.

get_sprite_infoA

Read sprite dimensions, color mode, frame durations, layers, and tags as JSON.

Inputs: filename (required).

get_tile_atB

Read the tile index at a tilemap grid coordinate.

Inputs: col (required), row (required), filename (required), layer_name (required), +1 more.

get_tilemap_infoB

Read tile size, tileset count, and map dimensions.

Inputs: filename (required), layer_name (required).

get_tools_by_folderC

List concise tools in one folder. Use a parent folder to inspect its subfolders.

Inputs: folder (required).

get_tools_listB

List tool folders and counts. Use this before loading a tool folder.

Inputs: include_tools.

harmonize_asset_paletteA

Apply a deterministic accent palette to a PNG or GIF, preserve transparency and timing, and cap output colors without overwriting the source.

Inputs: accent_color (required), input_filename (required), output_filename (required), format, +2 more.

import_image_as_layerC

Import an image into a named layer and frame, creating the layer when it does not exist.

Inputs: filename (required), image_path (required), layer_name (required), x, +2 more.

inspect_animation_qualityB

Audit an animation for duplicate frames, timing, palette drift, movement bounds, and loop seam issues.

Inputs: filename (required).

inspect_asset_batchB

Inspect up to 32 sprites in one deterministic quality pass and return a compact collection summary.

Inputs: filenames (required), max_colors, max_isolated_pixels.

inspect_asset_bundleC

Inspect one asset and return compact quality violations and deterministic recommendations in one call.

Inputs: filename (required), max_colors, max_isolated_pixels.

inspect_referenceB

Analyze reference dimensions, dominant colors, contrast, edges, and transparency.

Inputs: filename (required).

inspect_sprite_geometryA

Inspect per-frame alpha bounds, connected components, baseline, and bottom-center pivots for scene placement.

Inputs: filename (required), min_component_pixels.

invert_colorsC

Apply Aseprite native color inversion.

Inputs: filename (required), x, y, width, +3 more.

list_convolution_matricesA

List the built-in convolution matrices supported by Aseprite.

Inputs: no named parameters.

list_palette_presetsA

List built-in retro palette presets.

Inputs: no named parameters.

list_slicesB

List slice bounds, centers, and pivots as JSON.

Inputs: filename (required).

list_text_fontsA

List discoverable TrueType and OpenType fonts.

Inputs: no named parameters.

measure_textA

Measure a text run without changing a sprite.

Inputs: font (required), text (required), bold, size, +2 more.

merge_layer_downC

Merge a layer into the layer below it.

Inputs: filename (required), layer_name (required).

move_regionC

Move a rectangular region within a cel, clearing its source.

Inputs: x (required), y (required), width (required), dest_x (required), +5 more.

normalize_spriteA

Crop one or more raster frames to shared alpha bounds, add deterministic padding and write pivot metadata without overwriting the source.

Inputs: input_filename (required), output_filename (required), manifest_filename (required), pivot, +2 more.

offset_cel_positionsC

Offset cel positions across a frame range.

Inputs: dx (required), dy (required), filename (required), end_frame (required), +2 more.

oscillate_cel_positionsC

Apply sine-wave position offsets to cels across frames.

Inputs: filename (required), end_frame (required), layer_name (required), start_frame (required), +6 more.

outline_nativeC

Apply Aseprite native outline to a selected layer and frame.

Inputs: filename (required), color, place, matrix, +2 more.

plan_asset_sceneA

Plan ordered scene layers from selected asset library ids without generating files or loading full asset details.

Inputs: item_ids (required).

propagate_celsC

Copy selected layer cels from one source frame across a frame range.

Inputs: filename (required), end_frame (required), layer_names (required), start_frame (required), +2 more.

propagate_frame_to_rangeC

Propagate all source-frame cels to a frame range.

Inputs: filename (required), end_frame (required), start_frame (required), source_frame (required), +1 more.

quantize_to_paletteC

Snap opaque pixels to the nearest color in the active palette.

Inputs: filename (required), end_frame, layer_name, start_frame.

recommend_asset_sceneC

Recommend a compact, deterministic set of compatible library assets for a scene, with explainable reasons and covered tags/effects.

Inputs: seed, limit, prompt, category, +3 more.

remap_colors_in_cel_rangeB

Remap explicit RGB colors across a layer frame range while preserving alpha.

Inputs: filename (required), mappings (required), end_frame (required), layer_name (required), +3 more.

rename_layerC

Rename a named layer.

Inputs: filename (required), new_name (required), layer_name (required).

render_onion_skinC

Render neighboring animation frames as translucent onion-skin ghosts into a PNG.

Inputs: filename (required), frame_index (required), output_filename (required), after, +3 more.

reorder_layerC

Move a layer to a one-based stack position.

Inputs: filename (required), position (required), layer_name (required).

replace_colorB

Replace a cel color while preserving alpha and allowing channel tolerance.

Inputs: filename (required), to_color (required), from_color (required), layer_name (required), +2 more.

resize_canvasC

Resize the sprite canvas and its content.

Inputs: width (required), height (required), filename (required).

rotate_layerB

Rotate a layer cel 90, 180, or 270 degrees clockwise.

Inputs: filename (required), layer_name (required), frame_index (required), angle.

run_asset_quality_gateC

Run compact pixel-art quality checks before export.

Inputs: filename (required), max_colors, min_contrast, max_banding_runs, +1 more.

run_asset_recipeC

Run one compact asset recipe or return its dry-run plan.

Inputs: recipe (required), input_filenames (required), width, height, +3 more.

run_lua_scriptB

Run a bounded, trusted Aseprite Lua script as an escape hatch; dedicated tools are preferred.

Inputs: script (required), filename.

server_capabilitiesServer capabilitiesA

List the typed TypeScript MCP capabilities available to the current server.

Inputs: no named parameters.

set_cel_opacityB

Set one cel opacity from 0 to 255.

Inputs: opacity (required), filename (required), layer_name (required), frame_index (required).

set_cel_positionC

Set one cel position, optionally creating it from a source cel.

Inputs: x (required), y (required), filename (required), layer_name (required), +3 more.

set_color_modeC

Convert a sprite to RGB, grayscale, or indexed color mode.

Inputs: mode (required), filename (required).

set_frameB

Set the active animation frame by one-based index.

Inputs: filename (required), frame_index (required).

set_frame_durationB

Set one animation frame duration in milliseconds.

Inputs: filename (required), duration_ms (required), frame_index (required).

set_frame_duration_allC

Set all animation frame durations in milliseconds.

Inputs: filename (required), duration_ms (required).

set_layerC

Set the active layer by name, optionally creating it.

Inputs: filename (required), layer_name (required), create_if_missing.

set_layer_blend_modeC

Set a layer blend mode supported by Aseprite.

Inputs: mode (required), filename (required), layer_name (required).

set_layer_opacityB

Set a named layer opacity from 0 to 255.

Inputs: opacity (required), filename (required), layer_name (required).

set_layer_visibilityC

Set a named layer visibility.

Inputs: filename (required), layer_name (required), visible.

set_onion_skinC

Validate onion-skin settings for batch workflows; Aseprite UI-only settings are reported explicitly.

Inputs: filename (required), after, before, enabled, +1 more.

set_paletteC

Apply a controlled hexadecimal palette to a document.

Inputs: colors (required), filename (required).

set_slice_centerC

Set a slice 9-patch center rectangle.

Inputs: x (required), y (required), name (required), width (required), +2 more.

set_slice_pivotC

Set a slice pivot point.

Inputs: x (required), y (required), name (required), filename (required).

set_tagC

Create or update an animation tag.

Inputs: name (required), filename (required), to_frame (required), from_frame (required), +1 more.

set_tilesC

Place tile indices on a tilemap frame by grid coordinates.

Inputs: tiles (required), filename (required), layer_name (required), frame_index (required).

start_asset_jobB

Start a compact asynchronous batch asset job and return its job id.

Inputs: jobs (required).

start_preview_serverC

Serve a validated local directory over HTTP for visual asset preview.

Inputs: directory (required), port.

stop_preview_serverA

Stop a preview server started by this MCP process.

Inputs: port.

suggest_enhancement_planA

Inspect one image and return a deterministic, non-destructive enhancement plan for an agent or human review.

Inputs: filename (required), seed, goals, max_colors.

summarize_asset_libraryA

Return compact category and preset navigation metadata for the asset library with minimal tokens.

Inputs: no named parameters.

tween_cel_opacity_easedC

Tween cel opacity from 0 to 255 across frames with easing.

Inputs: filename (required), end_frame (required), layer_name (required), end_opacity (required), +5 more.

tween_cel_positionsB

Tween cel positions linearly across a frame range.

Inputs: end_x (required), end_y (required), start_x (required), start_y (required), +6 more.

tween_cel_positions_easedC

Tween cel positions across frames with deterministic easing.

Inputs: end_x (required), end_y (required), start_x (required), start_y (required), +7 more.

tween_cel_scale_easedA

Scale a source cel across frames with easing and a stable anchor.

Inputs: filename (required), end_frame (required), end_scale (required), layer_name (required), +7 more.

upscale_pixel_artB

Upscale one image or animation with deterministic nearest-neighbor pixels and preserved transparency.

Inputs: scale (required), input_filename (required), output_filename (required), format.

validate_sceneA

Validate required layers and the requested frame range before export.

Inputs: filename (required), required_layers (required), end_frame, start_frame.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.7/5.0

    Scored across 185 tools

    Disambiguation2/5

    Many tools overlap heavily across generation, recipe, export, and drawing families, e.g. create_asset_recipe vs run_asset_recipe vs execute_asset_recipe, generate_asset_preset vs compose_asset_preset, and draw_* vs draw_*_at variants. Descriptions help somewhat, but with 185 tools an agent will struggle to reliably pick the right tool without ambiguity.

    Naming Consistency4/5

    Most names follow a predictable snake_case verb_noun pattern, such as create_canvas, add_layer, export_spritesheet, and inspect_asset_batch. Minor deviations like get_tools_list instead of list_* and a few noun-first or guide-style names slightly reduce consistency.

    Tool Count1/5

    185 tools is an extreme mismatch for a single MCP server and far exceeds a well-scoped surface. Many operations could be consolidated or exposed through a smaller, more coherent API.

    Completeness5/5

    The tool surface covers an unusually broad lifecycle: canvas/layer/frame/cel manipulation, palettes, drawing primitives, text, tilemaps, slices, tags, export/import, asset library, recipes, batch jobs, and preview servers. No obvious domain gaps stand out for the stated Aseprite asset creation purpose.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers