game-art-mcp
game-art-mcp
KI-gesteuertes Pixel-Art-Stilsystem und MCP-Server für die Art Direction von 2D-RPG-Spielen.
Zweck
Dieses Repository ist die maßgebliche Quelle für die Art Direction des Projekts. Jeder KI-Agent kann in dieses Repository wechseln, den Projektkontext über MCP abfragen und genau verstehen, was „unser Kunststil“ bedeutet — ohne auf den Gesprächsverlauf angewiesen zu sein.
Related MCP server: Aseprite MCP Server
Architektur
game-art-mcp/
├── project.yaml # Project config: which style is active
├── style/ # Version-controlled style definitions
│ └── fantasy_pixel_v1/ # Style v1 (YAML rules + style bible)
├── registry/ # Asset registry storage
│ ├── assets/ # One YAML file per registered asset
│ └── registry.yaml # Auto-generated index of all assets
├── memory/ # Art Memory storage (Phase 3)
│ ├── anchors/ # Style anchor YAML files
│ ├── references/ # Approved reference YAML files
│ ├── rejections/ # Rejection records
│ ├── decisions/ # Art decision records (ADR format)
│ ├── history.yaml # Style version evolution log
│ └── memory.yaml # Auto-generated memory index
├── src/
│ ├── style/ # Models, loader, validator
│ ├── assets/ # Asset registry (models + service)
│ │ ├── models/ # Zod schemas + TypeScript types
│ │ └── registry/ # AssetRegistry service (CRUD + query)
│ ├── memory/ # Art Memory (models, service, resolver)
│ │ ├── models/ # Zod schemas for anchors, references, rejections, decisions
│ │ ├── service/ # ArtMemoryService (CRUD + index)
│ │ └── resolver/ # ReferenceResolver (deterministic lookup)
│ ├── qa/ # Art QA engine (Phase 4)
│ │ ├── models/ # QA types, report schema, rule interface
│ │ ├── rules/ # 13 deterministic rules (7 categories)
│ │ ├── runner/ # QARunner orchestrator
│ │ └── history/ # QA history persistence
│ ├── providers/ # Provider Adapters (Phase 5)
│ │ ├── models/ # ProviderAdapter interface, types, error codes
│ │ ├── adapters/ # Adapter implementations (mock-provider)
│ │ ├── registry/ # ProviderRegistry (adapter lookup + capabilities)
│ │ ├── gateway/ # ProviderGateway (dispatch + artifact storage)
│ │ └── artifacts/ # ArtifactStore (immutable provenance)
│ ├── production/ # Production Orchestrator (Phase 6)
│ │ ├── models/ # Types, state machine, error codes
│ │ ├── orchestrator/ # ProductionOrchestrator (coordinator)
│ │ └── store/ # ProductionStore (YAML manifest persistence)
│ ├── versioning/ # Versioning & Approval (Phase 7)
│ │ ├── models/ # Types, lifecycle states, error codes
│ │ └── services/ # VersioningService (approval, versioning, promotion, audit)
│ ├── context/ # ArtContextService
│ └── mcp/ # MCP server + tools
│ └── tools/ # art-tools.ts, asset-tools.ts, memory-tools.ts, qa-tools.ts, provider-tools.ts, production-tools.ts, versioning-tools.ts
├── tests/ # Unit + integration tests
└── docs/ # Architecture, style system, phasesSchnellstart
npm install
npm run build
npm testMCP-Server ausführen
npm start
# or with custom root:
ART_MCP_ROOT=/path/to/project npm startStil validieren
npm run validateMCP-Werkzeuge
Stil-Werkzeuge (schreibgeschützt)
Werkzeug | Beschreibung |
| Vollständiger Art-Kontext (Projekt + Stil + alle Regeln) |
| Aktive Stildefinition |
| Bestimmte Regelkategorie (pixel_language, Sprachen, usw.) |
| Farbpalette mit semantischen Rollen |
| Stilkonfiguration validieren |
Asset-Werkzeuge (Lesen + Schreiben)
Werkzeug | Beschreibung |
| Asset anhand der ID abrufen |
| Assets suchen/filtern (Typ, Kategorie, Status, Tags) |
| Prüfen, ob eine Asset-ID registriert ist |
| Neues Asset mit vollständiger Validierung registrieren |
| Vorhandenes Asset aktualisieren (Teilupdate) |
| Asset als veraltet markieren |
| Asset archivieren |
| Registry-Index aus den Asset-Dateien neu aufbauen |
Memory-Werkzeuge (Lesen + Schreiben)
Werkzeug | Beschreibung |
| Memory-Übersicht: Anker, Entscheidungen, Ablehnungen, Referenzanzahl |
| Vollständige Stil-Erklärung mit Regeln, Ankern, Entscheidungen und Vermeidungen |
| Deterministische Referenzauflösung für einen bestimmten Kontext |
| Stilanker anhand der ID abrufen |
| Anker suchen (Kategorie, Status, Dimensionsfilter) |
| Neuen Stilanker hinzufügen |
| Freigegebene Referenz anhand der ID abrufen |
| Referenzen suchen (Rolle, Status, asset_id-Filter) |
| Neue freigegebene Referenz hinzufügen |
| Ablehnungsdatensatz anhand der ID abrufen |
| Ablehnungen suchen (Typ, Status, Grund-Filter) |
| Neuen Ablehnungsdatensatz hinzufügen |
| Künstlerische Entscheidung anhand der ID abrufen |
| Entscheidungen suchen (Statusfilter) |
| Neue künstlerische Entscheidung hinzufügen |
| Vollständige Historie der Stil-Entwicklung abrufen |
QA-Werkzeuge (schreibgeschützt)
Werkzeug | Beschreibung |
| QA-Prüfungen für ein einzelnes Asset ausführen (vollständiger Bericht) |
| QA-Prüfungen für mehrere Assets ausführen (Batch-Bericht) |
| QA-Gate-Prüfung — Ergebnis „bestanden/nicht bestanden“ für Freigabeworkflows |
| Alle verfügbaren QA-Regeln mit Definitionen auflisten |
| Vollständige Definition einer bestimmten QA-Regel anhand der ID abrufen |
| Erklären, warum eine bestimmte Regel für ein Asset fehlgeschlagen ist |
| QA-Ausführungsverlauf abrufen, optional nach Asset-ID gefiltert |
Provider-Werkzeuge (Lesen + Schreiben)
Werkzeug | Beschreibung |
| Alle registrierten Provider mit Metadaten auflisten |
| Detaillierte Metadaten für einen bestimmten Provider abrufen |
| Provider-Fähigkeiten abrufen (Operationen, Formate, Limits) |
| Health-Status des Providers prüfen |
| Kunstgenerierungsoperation erneut über einen Provider ausführen |
| Laufende Provider-Operation abbrechen |
| Status einer Operation anhand der ID abrufen |
| Artefakt-Details und Provenienz anhand der ID abrufen |
Produktions-Werkzeuge (Lesen + Schreiben)
Werkzeug | Beschreibung |
| Produktionsplan erstellen (Vorschau vor der Ausführung) |
| Produktions-Job erstellen (Plan + dauerhaft speichern, nicht starten) |
| Ausführung eines Produktions-Jobs starten |
| Aktuellen Jobstatus abrufen (Zusammenfassung) |
| Vollständige Jobdetails abrufen (Ereignisse, Versuche, Plan) |
| Fehlgeschlagenen Job wiederaufnehmen |
| Laufenden Job abbrechen |
| Versuchsverlauf für einen Job abrufen |
| Job genehmigen, der auf Freigabe wartet |
| Alle Produktions-Job-IDs auflisten |
Versionsverwaltungs-Werkzeuge (Lesen + Schreiben)
Werkzeug | Beschreibung |
| Kanonische (aktuelle) Version eines Assets abrufen |
| Details einer bestimmten Asset-Version abrufen |
| Vollständige Versionshistorie eines Assets abrufen |
| Zwei Versionen desselben Assets vergleichen |
| Versionsprovenienz inklusive Freigabedatensatz abrufen |
| Freigabe für ein Kandidaten-Asset beantragen |
| Freigabedatensatz anhand der ID abrufen |
| Kandidaten-Asset genehmigen |
| Kandidaten-Asset ablehnen |
| Änderungen an einem Kandidaten-Asset anfordern |
| Genehmigtes Kandidaten-Asset zur kanonischen Version befördern |
| Kanonische Version auf eine frühere Version zurücksetzen |
| Kanonisches Asset archivieren |
Stil- und QA-Werkzeuge sind schreibgeschützt. Asset-, Memory-, Provider-, Produktions- und Versionierungs-Werkzeuge unterstützen Lese- und Schreibzugriffe.
Asset-Registry
Das Asset-Registry (Phase 2) erfasst jedes Art-Asset im Projekt mit strukturierten Metadaten. Assets werden als einzelne YAML-Dateien unter registry/assets/ gespeichert und in registry/registry.yaml indiziert.
Wichtige Merkmale:
Semantische IDs — durch Punkte getrennt, klein geschrieben (z. B.
character.goblin.001)Stil-Verknüpfung — jedes Asset referenziert eine Stil-ID + Version
Beziehungen —
variant_of,derived_from,animation_ofusw.Statusverfolgung — draft, approved, rejected, deprecated, archived
Vollständige Validierung — Schema, Stilreferenz, Existenz der Quelldatei, Beziehungen
Siehe docs/ASSET-REGISTRY.md für die vollständige Dokumentation und docs/ASSET-METADATA.md für das Metadaten-Schema.
Art-Memory
Das Art-Memory-System (Phase 3) verleiht dem Repository dauerhaftes visuelles Wissen. Es speichert, was genehmigt wurde, was abgelehnt wurde und warum — sodass Agenten keine Gesprächshistorie benötigen, um die Art Direction des Projekts zu verstehen.
Wichtige Konzepte:
Stilanker — kanonische visuelle Beispiele, die den Stil definieren (siehe docs/STYLE-ANCHORS.md)
Genehmigte Referenzen — vertrauenswürdige Assets mit Rollen-Preferenzen. Ablehnungen — was NICHT passt, mit einem kontrollierten Vokabular an Gründen
Art-Entscheidungen — Datensätze im ADR-Format für visuelle Richtungsentscheidungen (siehe docs/ART-DECISIONS.md)
Referenz-Resolver — deterministische Referenzauflösung, die für jede Erstellungsaufgabe relevanten Kontext zurückgibt
Siehe docs/ART-MEMORY.md für die vollständige Dokumentation.
Art-QA
Das Art-QA-System (Phase 4) bietet deterministische, reproduzierbare Qualitätsprüfungen für Pixel-Art-Assets. Jeder Check ist regelbasiert mit Soll-/Ist-Werten und strukturierten Korrekturmaßnahmen — keine Bilderkennung, keine Embeddings, keine automatische Reparatur.
Wichtige Konzepte:
13 Regeln in 7 Kategorien (Technik, Dimensionen, Palette, Alpha, Pixel, Stil, Memuery)
3 Profile — „strict“ (schlägt bei Warnung fehl), „default“ (schlägt bei Fehler fehl), „lenient“ (schlägt nur bei kritischen Fehlern fehl)
Maschinenlesbare Berichte — JSON mit Ergebnissen pro Regel, Schweregrad und Korrekturmaßnahmen
Stil-Integration — liest Canvas-Größen, Farbgrenzen und Pixel-Regeln aus dem aktiven Stil
Memory-Integration — prüft total zurückgewiesene Richtungen und akzeptierte Art-Entscheidungen
QA-Gate — Ergebnis „bestanden/nicht bestandefor for CI und Freigabeworkflows
QA-Verlauf — persistentes Log aller Ausführungen pro Asset
Siehe docs/ART-QA.md für die vollständige Dokumentation.
Provider-Adapter
Das Provider-Adapter-System (Phase 5) fügt eine providerneutrale, anbieterunabhängige Schnittstelle zu externen Art-Generierungswerkzeugen hinzu. Anfragen laufen über ein Gateway, das Operationen validiert, an registrierte Adapter delegiert und generierte Artefakte mit unveränderlicher Provenienz speichert.
Wichtige Konzepte:
ProviderAdapter-Schnittstelle — Metadaten, Fähigkeiten, Health, Ausführung, Abbruch
Artefakte — Rohe Provider-Ausgabe mit unveränderlicher Provenienz (noch keine Assets)
Capabilities — Details pro Operation (Formate, maximale Auflösung)
Dry-run — Anfragen validieren, ohne Ausgabe zu generieren
Mock-Provider — eingebauter Testadapter mit Fehler-/Timeout-Modi
Keine automatische Auswahl — Agenten müssen einen Provider eExplicitly wählen
Siehe docs/PROVIDERS.md für die vollständige Dokumentation.
Produktions-Orchestrator
Der Produktions-Orchestrator (Phase 6) koordiniert den gesamten Lebenszyklus der Art-Asset-Generierung: request validation, Stil-/Referenz-/Provider-Auflösung, Ausführung, QA, Wiederholung und Freigabeprüfung.
Wichtige Konzepte:
Koordinator, keine Quelle der Wahrheit — delegiert an Stil, Qualitätssicherung, Anbieter und Registry
Zustandsmaschine — 9 Status mit validierten Übergängen (erstellt bis abgeschlossen/fehlgeschlagen/abgebrochen)
11 Produktionsstufen — REQUEST_VALIDATION bis APPROVAL_GATE
Begrenzte Wiederholung — konfigurierbare max_attempts (Standard 3) mit Reparaturplänen bei QA-Fehlern
Genehmigungsgrenze — stoppt bei
awaiting_approval, genehmigt niemals automatischPlan-Veraltung — erkennt Stilversionsabweichungen vor der Ausführung
YAML-Persistenz — ein manifest.yaml pro Auftrag in
production/<job_id>/Ereignishistorie — nur-anhängendes Protokoll aller Zustandsänderungen pro Auftrag
Siehe docs/PRODUCTION.md für die vollständige Dokumentation.
Versionierung & Genehmigung
Das Versionierungs- & Genehmigungssystem (Phase 7) fügt unveränderliche Asset-Versionierung, explizite Genehmigungsworkflows und eine vollständige Prüfpfad hinzu. Keine Version wird jemals gelöscht; kein Asset wird jemals automatisch genehmigt.
Wichtige Konzepte:
Asset-Lebenszyklus — 8 Zustände: Entwurf, ausstehende_Genehmigung, genehmigt, abgelehnt, Änderungen_angefordert, befördert, ersetzt, archiviert
Genehmigungsworkflow — anfordern, genehmigen, ablehnen, Änderungen_anfordern mit strukturiertem Feedback
Genehmigungsrichtlinie — konfigurierbar:
requires_qa_pass,allow_agent_approval,requires_humanUnveränderliche Versionen — monotone Inkrementierung, Elternverfolgung, vollständige Herkunft pro Version
Kanonischer Zeiger — verfolgt, welche Version aktuell ist; wird bei Beförderung/Rollback aktualisiert
Beförderung — Vergleich-und-Tausch mit QA-Gate und Genehmigungs-Gate
Rollback — setzt den kanonischen Zeiger auf eine frühere Version zurück, löscht niemals die Historie
Prüfprotokoll — 9 Ereignistypen, nur-anhängend, unveränderlich
Akteursidentität — Mensch, Agent, System, Anbieter bei jedem Datensatz verfolgt
Siehe docs/VERSIONING.md für die vollständige Dokumentation.
Aktuelle Phase
Phase 7 — Versionierung & Genehmigung (abgeschlossen)
Siehe docs/PHASES.md für die vollständige Roadmap.
Stilsystem
Stile sind strukturierte YAML-Dateien, die maschinenlesbare künstlerische Richtung darstellen:
style.yaml— Identität, Leinwandgrößen, Skalierungpalette.yaml— Farben mit semantischen Rollenpixel-rules.yaml— Pixel-Art-Einschränkungenoutline.yaml— Konturregelnshape-language.yaml— visuelle Sprachelighting.yaml— Lichtrichtung und -regelnanimation.yaml— Bildanzahl, FPS, Einschränkungen
Siehe docs/STYLE-SYSTEM.md für Details.
Available Tools
126 toolsart.aseprite.exportB
Export a canvas session to Aseprite format. Saves the canvas as PNG and generates the Aseprite CLI command to convert it. Commands are returned for external execution.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Canvas session ID | |
| output_name | No | Output file base name (default: session ID) |
art.aseprite.layersA
Generate a Lua script and Aseprite command to set up standard layer structure. Writes the script to disk and returns the command to execute it.
| Name | Required | Description | Default |
|---|---|---|---|
| layers | No | Layer names (bottom to top). Default: Outline, Base, Shadow, Detail, Effects | |
| session_id | Yes | Canvas session ID |
art.aseprite.spritesheetB
Generate a spritesheet export command for a canvas session. The canvas PNG is saved and a CLI command is returned to produce a packed spritesheet via Aseprite.
| Name | Required | Description | Default |
|---|---|---|---|
| columns | No | Number of columns in spritesheet (default: 4) | |
| padding | No | Padding between cells in pixels (default: 0) | |
| session_id | Yes | Canvas session ID |
art.aseprite.validateB
Generate a validation Lua script and Aseprite command to check sprite constraints (palette size, dimensions). Writes the script to disk and returns the command.
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | Expected sprite width in pixels | |
| height | Yes | Expected sprite height in pixels | |
| max_colors | Yes | Maximum allowed palette colors | |
| session_id | Yes | Canvas session ID |
art.asset.approval.inspectB
Get an approval record by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| approval_id | Yes | Approval record ID |
art.asset.approval.requestC
Request approval for a candidate asset.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Requesting actor | |
| style | Yes | Style reference | |
| asset_id | Yes | Asset identifier | |
| artifact_id | No | Artifact identifier | |
| qa_snapshot | No | QA snapshot at request time | |
| candidate_id | Yes | Candidate identifier | |
| production_job_id | No | Production job ID |
art.asset.approveC
Approve a candidate asset.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Approving actor | |
| reason | No | Approval reason | |
| approval_id | Yes | Approval record ID |
art.asset.archiveB
Archive an asset (remove from active use).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset ID to archive |
art.asset.archive_versionC
Archive a canonical asset, removing it from active use.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Actor performing archive | |
| asset_id | Yes | Asset identifier |
art.asset.compareB
Compare two versions of an asset.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | Asset identifier | |
| version_a | Yes | First version | |
| version_b | Yes | Second version |
art.asset.currentB
Get the canonical (current) version number of an asset.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | Asset identifier |
art.asset.deprecateC
Mark an asset as deprecated.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset ID to deprecate |
art.asset.existsA
Check whether an asset with the given ID exists in the registry.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset ID to check |
art.asset.findA
Search and filter registered assets. All parameters are optional; omit all to return every asset.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter by tags (all must match) | |
| type | No | Filter by asset type | |
| status | No | Filter by status | |
| category | No | Filter by category | |
| style_id | No | Filter by style ID | |
| style_version | No | Filter by style version |
art.asset.getA
Get a registered asset by its ID. Returns the full asset record.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset ID (e.g. "character.goblin.001") |
art.asset.historyC
Get the full version history of an asset.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | Asset identifier |
art.asset.inspect_versionB
Get details of a specific asset version.
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes | Version number | |
| asset_id | Yes | Asset identifier |
art.asset.promoteC
Promote an approved candidate to become the canonical version.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Promoting actor | |
| style | Yes | Style reference | |
| qa_result | No | QA result | |
| references | No | Reference asset IDs | |
| approval_id | Yes | Approval record ID | |
| artifact_id | Yes | Artifact identifier | |
| provider_id | No | Provider identifier | |
| candidate_id | Yes | Candidate identifier | |
| target_asset_id | Yes | Target asset identifier | |
| production_job_id | No | Production job ID | |
| expected_current_version | No | Expected current version (optimistic lock) |
art.asset.provenanceC
Get version provenance including approval record.
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes | Version number | |
| asset_id | Yes | Asset identifier |
art.asset.rebuild_indexA
Rebuild the asset registry index from all registered asset files.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
art.asset.registerA
Register a new asset in the registry. Validates schema, style reference, source file, and relationships.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique asset ID (e.g. "character.goblin.001") | |
| name | Yes | Human-readable asset name | |
| tags | No | Tags for filtering | |
| type | Yes | Asset type | |
| style | Yes | Style reference { id, version } | |
| source | Yes | Source file { path, format } | |
| status | Yes | Asset status | |
| category | Yes | Asset category | |
| animation | No | Animation metadata | |
| technical | No | Technical metadata | |
| dimensions | No | Asset dimensions in pixels | |
| relationships | No | Relationships to other assets |
art.asset.rejectC
Reject a candidate asset.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Rejecting actor | |
| reason | No | Rejection reason | |
| feedback | No | Detailed feedback items | |
| approval_id | Yes | Approval record ID |
art.asset.request_changesC
Request changes on a candidate asset.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Requesting actor | |
| reason | No | Summary reason | |
| feedback | Yes | Required changes | |
| approval_id | Yes | Approval record ID |
art.asset.rollbackB
Rollback the canonical version to a previous version.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Actor performing rollback | |
| asset_id | Yes | Asset identifier | |
| target_version | Yes | Version to rollback to | |
| expected_current_version | Yes | Expected current version (optimistic lock) |
art.asset.updateC
Update an existing asset. Provide the asset ID and a patch object with fields to change.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset ID to update | |
| patch | Yes | Fields to update |
art.canvas.analyze_refA
Analyze a reference image: extract dimensions, color palette with counts, and 2D color map.
| Name | Required | Description | Default |
|---|---|---|---|
| image_path | Yes | Path to image file (relative to project root or absolute) |
art.canvas.batch_drawA
Execute multiple draw commands in a single call for efficiency. Each command references a canvas tool name and its params.
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | Array of draw commands to execute sequentially | |
| session_id | Yes | Canvas session ID |
art.canvas.clearB
Clear the entire canvas, optionally filling with a color.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Fill color as hex string (defaults to transparent/black) | |
| session_id | Yes | Canvas session ID |
art.canvas.createB
Create a new pixel canvas session for drawing.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Canvas width in pixels (default 16) | |
| height | No | Canvas height in pixels (default 16) | |
| asset_id | No | Asset ID to associate with this session (enables Studio auto-open) | |
| bg_color | No | Background color as hex string (e.g. "#000000") | |
| session_id | Yes | Unique session identifier |
art.canvas.draw_circleB
Draw a circle on the canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| cx | Yes | Center X coordinate | |
| cy | Yes | Center Y coordinate | |
| color | Yes | Circle color as hex string | |
| filled | No | Whether to fill the circle (default true) | |
| radius | Yes | Circle radius in pixels | |
| session_id | Yes | Canvas session ID |
art.canvas.draw_ditherB
Apply a dither pattern to a rectangular region.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Top-left X coordinate | |
| y | Yes | Top-left Y coordinate | |
| width | Yes | Region width | |
| color1 | Yes | First color as hex string | |
| color2 | Yes | Second color as hex string | |
| height | Yes | Region height | |
| pattern | Yes | Dither pattern type | |
| session_id | Yes | Canvas session ID |
art.canvas.draw_lineA
Draw a line between two points using Bresenham algorithm.
| Name | Required | Description | Default |
|---|---|---|---|
| x0 | Yes | Start X coordinate | |
| x1 | Yes | End X coordinate | |
| y0 | Yes | Start Y coordinate | |
| y1 | Yes | End Y coordinate | |
| color | Yes | Line color as hex string | |
| session_id | Yes | Canvas session ID |
art.canvas.draw_noiseC
Fill a region with random noise using specified colors.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Top-left X coordinate | |
| y | Yes | Top-left Y coordinate | |
| width | Yes | Region width | |
| colors | Yes | Array of hex color strings to randomly pick from | |
| height | Yes | Region height | |
| density | No | Probability of placing a pixel (0-1, default 0.5) | |
| session_id | Yes | Canvas session ID |
art.canvas.draw_rectB
Draw a rectangle on the canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Top-left X coordinate | |
| y | Yes | Top-left Y coordinate | |
| color | Yes | Fill/stroke color as hex string | |
| width | Yes | Rectangle width | |
| filled | No | Whether to fill the rectangle (default true) | |
| height | Yes | Rectangle height | |
| session_id | Yes | Canvas session ID |
art.canvas.fillB
Flood fill an area starting from a point.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Start X coordinate | |
| y | Yes | Start Y coordinate | |
| color | Yes | Fill color as hex string | |
| session_id | Yes | Canvas session ID |
art.canvas.get_pixelB
Read the color of a single pixel on the canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate | |
| y | Yes | Y coordinate | |
| session_id | Yes | Canvas session ID |
art.canvas.get_stateA
Get the current canvas state as a color map (2D hex array) or base64 PNG.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format (default color_map) | color_map |
| session_id | Yes | Canvas session ID |
art.canvas.saveA
Save the current canvas to a PNG file.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Canvas session ID | |
| output_path | No | Output file path (defaults to artifacts/{session_id}/output.png) |
art.canvas.set_pixelB
Set a single pixel on the canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate | |
| y | Yes | Y coordinate | |
| color | Yes | Pixel color as hex string (e.g. "#FF0000") | |
| session_id | Yes | Canvas session ID |
art.critic.evaluateB
Run the art critic to evaluate canvas quality with spatial scoring and issue detection.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | Detail profile level for scoring context | |
| session_id | Yes | Canvas session ID |
art.critic.refineC
Execute refinement actions from a critique to improve canvas quality.
| Name | Required | Description | Default |
|---|---|---|---|
| actions | Yes | Array of refinement actions to execute | |
| session_id | Yes | Canvas session ID |
art.detail.cavityB
Add cavity details (dark center with light rim) to a region.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Top-left X coordinate | |
| y | Yes | Top-left Y coordinate | |
| seed | Yes | Random seed | |
| count | Yes | Number of cavities | |
| width | Yes | Region width | |
| height | Yes | Region height | |
| dark_color | Yes | Dark (cavity center) color as hex string | |
| session_id | Yes | Canvas session ID | |
| light_color | Yes | Light (rim) color as hex string |
art.detail.clean_clustersC
Cleanup pass: merge orphan/isolated pixels into nearest larger cluster.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Canvas session ID | |
| min_cluster_size | No | Minimum cluster size to keep (default 2) |
art.detail.clusterC
Create a pixel cluster on the canvas at a given position with a specified shape.
| Name | Required | Description | Default |
|---|---|---|---|
| cx | Yes | Center X coordinate | |
| cy | Yes | Center Y coordinate | |
| seed | No | Random seed (used for irregular shape) | |
| size | Yes | Cluster size (radius in pixels) | |
| color | Yes | Cluster color as hex string (e.g. "#8B4513") | |
| shape | Yes | Cluster shape | |
| session_id | Yes | Canvas session ID |
art.detail.crackB
Add crack patterns to a region (stone, ice surfaces).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Top-left X coordinate | |
| y | Yes | Top-left Y coordinate | |
| seed | Yes | Random seed | |
| color | Yes | Crack color as hex string | |
| count | Yes | Number of cracks | |
| width | Yes | Region width | |
| height | Yes | Region height | |
| session_id | Yes | Canvas session ID |
art.detail.edge_breakB
Apply edge breakup to avoid perfectly geometric silhouettes.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | Yes | Random seed | |
| amount | Yes | Breakup amount (0=none, 1=maximum) | |
| session_id | Yes | Canvas session ID | |
| preserve_outline | No | Whether to preserve outline-colored pixels (default true) |
art.detail.executeC
Run the full detail pass pipeline on an existing canvas session. Requires content already drawn on canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed | |
| profile | No | Detail profile level | medium |
| materials | Yes | Material types to apply | |
| session_id | Yes | Canvas session ID |
art.detail.grainA
Add directional grain lines to a region (wood, cloth).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Top-left X coordinate | |
| y | Yes | Top-left Y coordinate | |
| seed | Yes | Random seed | |
| color | Yes | Grain color as hex string | |
| width | Yes | Region width | |
| height | Yes | Region height | |
| density | Yes | Grain density (0-1) | |
| direction | Yes | Grain direction | |
| session_id | Yes | Canvas session ID |
art.detail.highlightC
Add highlight clusters to a region for specular/light reflection.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Top-left X coordinate | |
| y | Yes | Top-left Y coordinate | |
| seed | Yes | Random seed | |
| color | Yes | Highlight color as hex string | |
| width | Yes | Region width | |
| height | Yes | Region height | |
| density | Yes | Highlight density (0-1) | |
| session_id | Yes | Canvas session ID |
art.detail.materialB
Apply a full material treatment (all texture patterns for that material) to a region.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Top-left X coordinate | |
| y | Yes | Top-left Y coordinate | |
| seed | Yes | Random seed | |
| width | Yes | Region width | |
| height | Yes | Region height | |
| material | Yes | Material type (e.g. "stone", "wood", "metal") | |
| session_id | Yes | Canvas session ID |
art.detail.passC
Run a single named detail pass on a canvas session.
| Name | Required | Description | Default |
|---|---|---|---|
| materials | Yes | Material types | |
| pass_name | Yes | Pass name (e.g. "material", "texture", "cleanup", "critique") | |
| session_id | Yes | Canvas session ID |
art.detail.planB
Create a detail art plan for an asset, specifying subject, resolution, materials, and detail profile.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed for deterministic output | |
| width | Yes | Asset width in pixels | |
| height | Yes | Asset height in pixels | |
| profile | No | Detail profile level (low/medium/high/hero/boss/tile/item) | medium |
| subject | Yes | Subject description (e.g. "stone wall tile", "iron sword") | |
| materials | Yes | Material types (e.g. ["stone", "metal"]) |
art.detail.shadowA
Add shadow clusters to a region for depth/occlusion.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Top-left X coordinate | |
| y | Yes | Top-left Y coordinate | |
| seed | Yes | Random seed | |
| color | Yes | Shadow color as hex string | |
| width | Yes | Region width | |
| height | Yes | Region height | |
| density | Yes | Shadow density (0-1) | |
| session_id | Yes | Canvas session ID |
art.detail.speckleA
Add scattered speckle dots to a region (dirt, stone, skin).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Top-left X coordinate | |
| y | Yes | Top-left Y coordinate | |
| seed | Yes | Random seed | |
| width | Yes | Region width | |
| colors | Yes | Array of hex colors for speckle dots | |
| height | Yes | Region height | |
| density | Yes | Speckle density (0-1) | |
| session_id | Yes | Canvas session ID |
art.detail.textureC
Apply a texture pattern to a rectangular region on the canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Top-left X coordinate | |
| y | Yes | Top-left Y coordinate | |
| seed | Yes | Random seed | |
| width | Yes | Region width | |
| colors | Yes | Array of hex colors to use | |
| height | Yes | Region height | |
| density | Yes | Pattern density (0-1) | |
| pattern | Yes | Texture pattern name (noise_cluster/voronoi/grain/crack/speckle/cavity/edge_breakup) | |
| session_id | Yes | Canvas session ID |
art.get_paletteB
Returns the color palette for the active style.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
art.get_project_contextA
Returns the full art context: project config, active style definition, all rule categories, and palette.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
art.get_styleA
Returns the active style definition. Optionally specify style_id and version to look up a specific style.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Style version number. Only used with style_id. | |
| style_id | No | Style identifier (e.g. "fantasy_pixel"). Omit for active style. |
art.get_style_rulesB
Returns the rules for a specific category of the active style.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Rule category: pixel_language, outline, shape_language, lighting, or animation. |
art.memory.add_anchorC
Add a new style anchor to the art memory.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Anchor ID | |
| name | Yes | Human-readable name | |
| note | No | Optional note | |
| style | Yes | Style reference { id, version } | |
| assets | Yes | Asset IDs this anchor references | |
| status | Yes | Anchor status | |
| category | Yes | Anchor category | |
| strength | Yes | Anchor strength | |
| dimensions | Yes | Visual dimensions | |
| provenance | No | Provenance info |
art.memory.add_decisionC
Add a new art decision record to the art memory.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Decision ID (e.g. "ADR-001") | |
| style | Yes | Style reference { id, version } | |
| title | Yes | Decision title | |
| reason | Yes | Reasons for the decision | |
| status | Yes | Decision status | |
| decision | Yes | Decision details | |
| provenance | No | Provenance info | |
| alternatives | No | Alternatives considered | |
| consequences | No | Expected consequences | |
| relationships | No | Relationships to other decisions |
art.memory.add_referenceC
Add a new approved reference to the art memory.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Reference ID | |
| note | No | Optional note | |
| roles | Yes | Reference roles | |
| style | Yes | Style reference { id, version } | |
| status | Yes | Reference status | |
| asset_id | Yes | Asset ID this reference points to | |
| strength | Yes | Reference strength | |
| dimensions | Yes | Visual dimensions | |
| provenance | No | Provenance info |
art.memory.add_rejectionB
Add a new rejection record to the art memory.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Rejection ID (e.g. "rejection-001") | |
| note | No | Optional note | |
| type | Yes | Rejection type | |
| style | Yes | Style reference { id, version } | |
| status | Yes | Rejection status | |
| reasons | Yes | Rejection reasons | |
| asset_id | No | Asset ID (required for type=asset) | |
| provenance | No | Provenance info | |
| description | No | Description (required for type=direction) |
art.memory.explain_styleA
Explain the current or specified style: core rules, canonical anchors, important decisions, things to avoid, and history.
| Name | Required | Description | Default |
|---|---|---|---|
| style_id | No | Style ID (defaults to latest from history) | |
| style_version | No | Style version (defaults to latest) |
art.memory.find_anchorsC
Search for style anchors with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status | |
| category | No | Filter by category | |
| style_id | No | Filter by style ID | |
| dimension | No | Filter by dimension | |
| style_version | No | Filter by style version |
art.memory.find_decisionsB
Search for art decision records with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status | |
| style_id | No | Filter by style ID | |
| style_version | No | Filter by style version |
art.memory.find_referencesC
Search for approved references with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Filter by role | |
| status | No | Filter by status | |
| asset_id | No | Filter by asset ID | |
| style_id | No | Filter by style ID | |
| style_version | No | Filter by style version |
art.memory.find_rejectionsC
Search for rejection records with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by rejection type | |
| reason | No | Filter by reason | |
| status | No | Filter by status | |
| style_id | No | Filter by style ID | |
| style_version | No | Filter by style version |
art.memory.get_anchorA
Get a style anchor by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Anchor ID (e.g. "anchor.hero.canonical") |
art.memory.get_decisionA
Get an art decision record by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Decision ID (e.g. "ADR-001") |
art.memory.get_referenceC
Get an approved reference by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Reference ID (e.g. "reference.hero.front") |
art.memory.get_rejectionA
Get a rejection record by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Rejection ID (e.g. "rejection-001") |
art.memory.get_style_historyB
Get the full style evolution history.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
art.memory.get_summaryA
Get a summary of the art memory: anchor count, active decisions, active rejections, total references.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
art.memory.insightsA
Get style insights derived from approved assets — patterns, preferences, and learned conventions from the asset corpus.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
art.memory.negativeA
Get negative patterns (rejected examples) for a type/material — query rejections filtered by type hints in reasons.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Asset type to filter negative patterns | |
| material | No | Material type to filter negative patterns |
art.memory.resolve_referencesD
Resolve relevant references, anchors, decisions, and rejections for a given context. Returns categorized results.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Asset type filter | |
| category | No | Category filter | |
| style_id | No | Style ID (defaults to latest) | |
| dimensions | No | Dimensions to match | |
| style_version | No | Style version (defaults to latest) |
art.memory.signatureA
Compute a visual signature (deterministic fingerprint) for a canvas session — color distribution, cluster stats, edge complexity, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Canvas session ID |
art.pipeline.analyzeB
Analyze a reference image. Returns palette, silhouette, composition, pixel characteristics. Provide either a file path or reference_id of an already-uploaded reference.
| Name | Required | Description | Default |
|---|---|---|---|
| pose | No | Pose (e.g. "standing", "walking", "idle") | |
| facing | No | Facing direction (e.g. "front", "left", "3/4") | |
| subject | No | What the image depicts (e.g. "goblin warrior") | |
| category | No | Asset category (e.g. "monster", "character", "tile") | |
| file_path | No | Path to PNG file (relative to project root) | |
| reference_id | No | Reference ID (if already stored in references/) |
art.pipeline.planA
Build a 7-stage ArtPlan (silhouette-first) from an ArtSpecification. The plan defines ordered generation stages with QA checkpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| reference_id | Yes | Reference ID with existing spec | |
| max_iterations | No | Max QA iteration loops (default: 3) |
art.pipeline.scoreC
Compute visual quality score for a pixel art asset. Scores silhouette, palette, composition, pixel cleanliness, and style match.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_path | Yes | Path to PNG file to score (relative to project root) | |
| reference_id | No | Reference ID for comparison (optional) |
art.pipeline.specB
Build an ArtSpecification from a reference analysis + active style. The spec defines canvas, palette, outline, shading constraints for pixel art generation.
| Name | Required | Description | Default |
|---|---|---|---|
| subject | No | Override subject description | |
| max_colors | No | Override max palette colors | |
| canvas_width | No | Override canvas width | |
| reference_id | Yes | Reference ID to build spec from | |
| canvas_height | No | Override canvas height |
art.production.approveB
Approve a production job that is awaiting approval, moving it to completed.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Production job ID |
art.production.attemptsB
Get the attempt history for a production job.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Production job ID |
art.production.cancelC
Cancel a production job.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Production job ID |
art.production.createB
Create a production job (plan + persist, does not start execution).
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Style override | |
| output | Yes | Output specification | |
| subject | Yes | Subject description (e.g. "goblin", "fire sword") | |
| category | No | Asset category (e.g. "enemy", "npc") | |
| animation | No | Animation requirements | |
| asset_type | Yes | Asset type (e.g. "monster", "character", "item") | |
| request_id | Yes | Unique request identifier | |
| max_attempts | No | Maximum generation attempts | |
| preferred_provider | No | Preferred provider ID |
art.production.inspectC
Get full details of a production job including events, attempts, and plan.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Production job ID |
art.production.listB
List all production job IDs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
art.production.planB
Create a production plan for an art asset (inspect before executing).
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Style override | |
| output | Yes | Output specification | |
| subject | Yes | Subject description (e.g. "goblin", "fire sword") | |
| category | No | Asset category (e.g. "enemy", "npc") | |
| animation | No | Animation requirements | |
| asset_type | Yes | Asset type (e.g. "monster", "character", "item") | |
| request_id | Yes | Unique request identifier | |
| max_attempts | No | Maximum generation attempts | |
| preferred_provider | No | Preferred provider ID |
art.production.resumeA
Resume a failed or interrupted production job.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Production job ID |
art.production.startC
Start executing a production job.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Production job ID |
art.production.statusC
Get the current status of a production job.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Production job ID |
art.provider.analyzeB
Analyze a PNG file using the canvas-analysis provider. Runs local analysis (signature, clusters, palette) without external APIs.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Style context (uses default if omitted) | |
| asset_id | No | Asset ID for signature tagging | |
| operation | Yes | Analysis operation to perform | |
| source_path | Yes | Absolute path to the PNG file to analyze | |
| compare_path | No | Second PNG path (required for compare_canvases) | |
| connectivity | No | Cluster connectivity: 4 or 8 (default 8, for detect_clusters) |
art.provider.artifactB
Get details of a generated artifact.
| Name | Required | Description | Default |
|---|---|---|---|
| artifact_id | Yes |
art.provider.cancelC
Cancel a running provider operation.
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | Yes |
art.provider.capabilitiesB
Get the capabilities of a specific provider.
| Name | Required | Description | Default |
|---|---|---|---|
| provider_id | Yes | Provider ID |
art.provider.executeC
Execute an art generation operation via a provider.
| Name | Required | Description | Default |
|---|---|---|---|
| style | Yes | ||
| output | No | ||
| dry_run | No | ||
| asset_id | No | ||
| operation | Yes | ||
| asset_type | No | ||
| parameters | No | ||
| references | No | ||
| provider_id | Yes | ||
| timeout_seconds | No |
art.provider.fallbackC
Execute an art operation with fallback — tries the primary provider, falls back to a secondary on failure.
| Name | Required | Description | Default |
|---|---|---|---|
| style | Yes | ||
| output | No | ||
| dry_run | No | ||
| asset_id | No | ||
| operation | Yes | ||
| asset_type | No | ||
| parameters | No | ||
| references | No | ||
| provider_id | Yes | Primary provider ID | |
| timeout_seconds | No | ||
| fallback_provider | No | Fallback provider ID to try if primary fails |
art.provider.getA
Get detailed metadata for a specific provider.
| Name | Required | Description | Default |
|---|---|---|---|
| provider_id | Yes | Provider ID |
art.provider.healthB
Check the health status of a specific provider.
| Name | Required | Description | Default |
|---|---|---|---|
| provider_id | Yes | Provider ID |
art.provider.health_allA
Check health of all registered providers. Returns a map of provider ID to health status with latency and consecutive failure count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
art.provider.listA
List all registered art providers with their metadata.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
art.provider.operationC
Get the status of a provider operation.
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | Yes |
art.qa.assetA
Run QA checks on a single asset. Returns a full QA report with all rule results.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | QA profile: strict, default, or lenient | |
| asset_id | Yes | Asset ID to check (e.g. "character.goblin.001") |
art.qa.batchA
Run QA checks on multiple assets at once. Returns a batch report with individual results.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | QA profile: strict, default, or lenient | |
| asset_ids | Yes | Array of asset IDs to check |
art.qa.explain_failureA
Explain why a specific QA rule failed for an asset. Returns rule definition, issue details, and context.
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | Yes | Rule ID that failed | |
| asset_id | Yes | Asset ID that failed the rule |
art.qa.gateB
Run a QA gate check on an asset. Returns pass/fail verdict with full report.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | QA profile: strict, default, or lenient | |
| asset_id | Yes | Asset ID to gate-check |
art.qa.historyC
Get QA run history. Optionally filter by asset ID.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | No | Filter history by asset ID (omit for all) |
art.qa.list_rulesA
List all available QA rules with their definitions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
art.qa.ruleA
Get the full definition of a specific QA rule by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | Yes | Rule ID (e.g. "canvas.dimensions") |
art.ref.canonicalA
Get canonical assets for a type/material — filters retrieve results to only canonical status entries.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Asset type filter | |
| material | No | Material type filter |
art.ref.packB
Build a reference pack for generation — combines style constraints, canonical references, negative examples, and material palette.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Asset type filter | |
| category | No | Asset category filter | |
| material | No | Material type filter | |
| max_negative | No | Maximum negative examples | |
| max_canonical | No | Maximum canonical references |
art.ref.retrieveB
Smart ranked reference retrieval — scores and returns top assets by canonical status, style match, material match, and recency.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Asset type filter (e.g. "character", "tile", "item") | |
| category | No | Asset category filter | |
| material | No | Material type filter (e.g. "stone", "wood") | |
| max_results | No | Maximum number of results to return |
art.style.bootstrapA
Get session bootstrap context — assembles project config, style, canonical assets, anti-patterns, and recent decisions into one payload.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
art.style.checkA
Run style consistency check on a canvas session — compares canvas content against compiled style constraints.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Material type for context-specific checking | |
| session_id | Yes | Canvas session ID |
art.style.compileB
Compile style constraints for a subject — merges style definition, optional material profile, and resolution into a flat StyleConstraints object.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Asset width in pixels | |
| height | No | Asset height in pixels | |
| profile | No | Detail profile level (low/medium/high/hero/boss/tile/item) | medium |
| material | No | Material type (e.g. "stone", "wood", "metal") |
art.style.repairA
Generate a repair plan from a style consistency check — identifies actions to fix style issues on a canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Material type for context-specific repairs | |
| session_id | Yes | Canvas session ID |
art.tilemap.build_opsB
Generate TiledMCP operations from a MapSpecification. Returns the operation sequence for TiledMCP provider execution.
| Name | Required | Description | Default |
|---|---|---|---|
| map_id | Yes | Map ID to build operations for |
art.tilemap.create_specC
Create a MapSpecification for tilemap generation. Defines map size, biome, layers, objects, terrain rules.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed for procedural generation | |
| biome | Yes | Biome (e.g. "forest", "dungeon", "village") | |
| width | Yes | Map width in tiles | |
| height | Yes | Map height in tiles | |
| layers | Yes | Map layers | |
| map_id | Yes | Map identifier | |
| objects | No | Map objects | |
| tile_size | No | Tile size (default: 16) | |
| tileset_id | Yes | Tileset to use | |
| description | No |
art.tilemap.list_tilesetsA
List all registered tileset definitions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
art.tilemap.register_tilesetB
Register a tileset definition with semantic tile metadata. Each tile gets an ID, terrain, walkability, collision info.
| Name | Required | Description | Default |
|---|---|---|---|
| tiles | Yes | Tile definitions | |
| asset_id | Yes | Source pixel art asset ID | |
| style_id | No | Style ID (default: active style) | |
| tile_size | Yes | Tile size in pixels (e.g. 16) | |
| tileset_id | Yes | Unique tileset ID (e.g. "forest_v1") | |
| style_version | No | Style version |
art.tilemap.resolve_tilesA
Resolve semantic tile names to tileset local IDs. Use to verify tile names before building a map.
| Name | Required | Description | Default |
|---|---|---|---|
| intents | Yes | Tiles to resolve | |
| tileset_id | Yes | Tileset to resolve against |
art.tilemap.validateA
Validate a MapSpecification against its tileset. Checks missing tiles, invalid refs, style mismatch, object bounds.
| Name | Required | Description | Default |
|---|---|---|---|
| map_id | Yes | Map ID to validate |
art.validate_styleB
Validates the active style configuration and returns any errors found.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
art.workflow.guideA
Generate a step-by-step painting guide for the AI to follow when drawing a subject. Enforces strict palette discipline, form-first/detail-last hierarchy, and per-step color limits. The guide is TEXT instructions — read it and follow each step sequentially.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Asset width in pixels (default 16) | |
| height | No | Asset height in pixels (default 16) | |
| profile | No | Detail profile level (low/medium/high/hero/boss) | medium |
| subject | Yes | What to paint (e.g. "stone house", "wooden barrel", "iron sword") | |
| material | No | Material type (e.g. "stone", "wood", "metal", "grass", "dirt", "water", "leather", "cloth", "skin", "ice", "magic") |
art.workflow.paletteA
Get the strict palette for a material — returns role-to-hex mappings, maximum color count, and forbidden colors. Use this before painting to know EXACTLY which colors are allowed.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Material type (e.g. "stone", "wood", "metal"). Omit for general palette. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.3.1- Added
art.aseprite.export - Added
art.aseprite.layers - Added
art.aseprite.spritesheet - Added
art.aseprite.validate - Added
art.provider.analyze - Added
art.provider.fallback - Added
art.provider.health_all - Added
art.workflow.guide - Added
art.workflow.palette
50 tool updates
v0.3.0- Added
art.canvas.analyze_ref - Added
art.canvas.batch_draw - Added
art.canvas.clear - Added
art.canvas.create - Added
art.canvas.draw_circle - Added
art.canvas.draw_dither - Added
art.canvas.draw_line - Added
art.canvas.draw_noise - Added
art.canvas.draw_rect - Added
art.canvas.fill - Added
art.canvas.get_pixel - Added
art.canvas.get_state - Added
art.canvas.save - Added
art.canvas.set_pixel - Added
art.critic.evaluate - Added
art.critic.refine - Added
art.detail.cavity - Added
art.detail.clean_clusters - Added
art.detail.cluster - Added
art.detail.crack - Added
art.detail.edge_break - Added
art.detail.execute - Added
art.detail.grain - Added
art.detail.highlight - Added
art.detail.material - Added
art.detail.pass - Added
art.detail.plan - Added
art.detail.shadow - Added
art.detail.speckle - Added
art.detail.texture - Added
art.memory.insights - Added
art.memory.negative - Added
art.memory.signature - Added
art.pipeline.analyze - Added
art.pipeline.plan - Added
art.pipeline.score - Added
art.pipeline.spec - Added
art.ref.canonical - Added
art.ref.pack - Added
art.ref.retrieve - Added
art.style.bootstrap - Added
art.style.check - Added
art.style.compile - Added
art.style.repair - Added
art.tilemap.build_ops - Added
art.tilemap.create_spec - Added
art.tilemap.list_tilesets - Added
art.tilemap.register_tileset - Added
art.tilemap.resolve_tiles - Added
art.tilemap.validate
67 tool updates
v0.1.0- First observed
art.asset.approval.inspect - First observed
art.asset.approval.request - First observed
art.asset.approve - First observed
art.asset.archive - First observed
art.asset.archive_version - First observed
art.asset.compare - First observed
art.asset.current - First observed
art.asset.deprecate - First observed
art.asset.exists - First observed
art.asset.find - First observed
art.asset.get - First observed
art.asset.history - First observed
art.asset.inspect_version - First observed
art.asset.promote - First observed
art.asset.provenance - First observed
art.asset.rebuild_index - First observed
art.asset.register - First observed
art.asset.reject - First observed
art.asset.request_changes - First observed
art.asset.rollback - First observed
art.asset.update - First observed
art.get_palette - First observed
art.get_project_context - First observed
art.get_style - First observed
art.get_style_rules - First observed
art.memory.add_anchor - First observed
art.memory.add_decision - First observed
art.memory.add_reference - First observed
art.memory.add_rejection - First observed
art.memory.explain_style - First observed
art.memory.find_anchors - First observed
art.memory.find_decisions - First observed
art.memory.find_references - First observed
art.memory.find_rejections - First observed
art.memory.get_anchor - First observed
art.memory.get_decision - First observed
art.memory.get_reference - First observed
art.memory.get_rejection - First observed
art.memory.get_style_history - First observed
art.memory.get_summary - First observed
art.memory.resolve_references - First observed
art.production.approve - First observed
art.production.attempts - First observed
art.production.cancel - First observed
art.production.create - First observed
art.production.inspect - First observed
art.production.list - First observed
art.production.plan - First observed
art.production.resume - First observed
art.production.start - First observed
art.production.status - First observed
art.provider.artifact - First observed
art.provider.cancel - First observed
art.provider.capabilities - First observed
art.provider.execute - First observed
art.provider.get - First observed
art.provider.health - First observed
art.provider.list - First observed
art.provider.operation - First observed
art.qa.asset - First observed
art.qa.batch - First observed
art.qa.explain_failure - First observed
art.qa.gate - First observed
art.qa.history - First observed
art.qa.list_rules - First observed
art.qa.rule - First observed
art.validate_style
TDQS
Scored across 126 tools
The hierarchical namespaces help, but the sheer number of tools creates real overlap: art.provider.analyze vs art.pipeline.analyze, art.asset.archive vs art.asset.archive_version, and art.qa.asset vs art.critic.evaluate vs art.style.check all have fuzzy boundaries. An agent could easily pick the wrong one without very careful descriptions.
Most tools follow a predictable art.<category>.<action> pattern with snake_case verbs, which is highly readable. However, a few top-level tools like art.validate_style, art.get_style, and art.get_palette break the convention, and verbs are mixed across add/register/create for similar operations.
126 tools is an extreme count for any MCP server, far beyond the 25+ threshold. Many micro-tools—individual detail effects, memory CRUD variants, and Aseprite command generators—could be consolidated into broader operations, making the surface unnecessarily hard to navigate.
The tool surface is remarkably comprehensive for a game-art domain: asset lifecycle, versioning, approvals, style memory, QA, providers, canvas painting, production jobs, tilemaps, detail passes, Aseprite export, and workflow guidance are all covered. Major workflows have no obvious dead ends.
Maintenance
Related MCP Connectors
AI game assets for agents: consistent sprites, 2D animations, tiles, maps, music and engine exports.
Generate, edit, style-match, turn, and animate game-ready pixel art at exact sizes.
Build a game's 2D art layer with your agent: characters, animations, tilesets, levels, 5 engines.
Generate pixel art sprites, animations, 8-direction rotations and palettes for games.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI coding agents to create, draw, and refine Aseprite documents through deterministic canvas, layer, frame, tag, and palette tools, with pixel analyzers, style validation, and preview/diff visual feedback. It also supports spritesheet and animated GIF export, producing multi-layer game-ready assets.1MIT
- AlicenseBqualityCmaintenanceEnables users to automate the creation, editing, animation, and export of pixel-art game assets through a multi-agent pipeline that derives style specs and blueprints, generates Lua build scripts, and drives the canvas editor to produce .aseprite files, spritesheets, atlases, GIFs, and previews.12113 npm3MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to create and edit pixel-art projects — sprites, props, palettes, eight-direction animation, and tile-based environments — through a stdio MCP server with discovery, help, and call tools. Agents can build from silhouette to detail, inspect native-scale renders, silhouettes, value maps, and GIF playback, then save every change as versionable source.MIT
- AlicenseBqualityCmaintenanceEnables MCP-capable coding agents to act as a deterministic technical art director and multi-engine pipeline builder, locking AI-generated 2D/2.5D game assets to consistent camera angles, palettes, rigs, atlases, and exports across Blender, ComfyUI, UniRig, LibreSprite, Godot 4, Unity, and Unreal Engine 5.24MIT