Pixel-native Minecraft asset toolchain — CLI and MCP server for deterministic pixel-art, animation, and resource-pack workflows
Strong tool definitions with comprehensive descriptions and clear read/write contracts. All 21 tools have explicit names, descriptions (avg 156 chars), and input schemas with typed parameters. Naming follows verb_noun pattern consistently (analyze_, pixelize_, render_, apply_, etc.). Descriptions explicitly state read-only vs write behavior, guiding agent selection. However, parameter descriptions are sparse, most params lack detail on format, constraints, or valid ranges. Output schemas are not documented. Error handling guidance is absent. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications.
Analyze a raster image (PNG, JPEG, WebP) and return a read-only report: dimensions, palette, predicted alpha classification, pixel-art characteristics, and processing recommendations. Reads only, never writes.
Run one animation subcommand (pack, unpack, reorder, resize, validate, or preview) over frames or a sprite sheet. Pack writes a sheet PNG only to the explicit output path and unpack, reorder, and resize write frames only to the explicit output directory; validate and preview return read-only reports.
Apply a batch of Core pixel/layer/region operations to an editable .mcpx source in one call (atomic by default: the first failure rolls everything back). This is the batch-edit slot; never split pixel work across hundreds of per-pixel tool calls.
Build an editable .mcpx source into a texture or re-serialize the source, with an optional batch applied after parsing. Returns PNG bytes and/or the built source via explicit output paths or embedded artifacts; no force, mkdir, or in-place writes.
Detect or eliminate isolated, noise, or outlier pixels in a raster image or .mcpx source, optionally scoped by a selection. Returns PNG bytes and/or the editable source via explicit output paths or embedded artifacts; no force, mkdir, or in-place writes.
Parameter descriptions lack format constraints and valid ranges. E.g., 'preset' in pixelize_asset, 'size' in generate_asset, 'mode' in multiple tools have no enum values or format specs. LLMs cannot infer valid inputs.
Output schemas are not documented. Tools return 'PNG bytes and/or editable .mcpx source' but the actual response structure (fields, types, format) is not specified. Agents cannot plan downstream operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Fan out one editable .mcpx source into per-material variants under an explicit output directory, each starting from the pristine source so reruns stay byte-identical.
Generate a deterministic procedural texture from a named pattern, size, palette, and seed. Returns PNG bytes and/or the editable .mcpx source via explicit output paths or embedded artifacts; no force, mkdir, or in-place writes.
Decode a raster image (PNG, JPEG, WebP) into the Pixel Canvas with an optional batch applied after import. Returns PNG bytes and/or the editable .mcpx source via explicit output paths or embedded artifacts; no force, mkdir, or in-place writes.
Inspect an editable .mcpx source or raster image without writing: structure reports layers, regions, color usage, and overlaps; view returns the composited PNG plus metadata. Raster inputs read as a single base layer.
Run the material list or show subcommand and return a read-only report of builtin material definitions or one material's color ramps. Reads only, never writes.
Run the palette extract or inspect subcommand over an image and return a read-only report of unique colors, distribution, roles, or contrast. Reads only, never writes.
Run a reference raster image through the deterministic pixelize pipeline and return PNG bytes and/or the editable .mcpx source. The input must be PNG, JPEG, or WebP, never .mcpx.
Preview an image in ascii, palette-map, scale, or nine-slice mode. Read-only except scale and nine-slice, which may write a PNG only to the explicit output path; never invents filenames.
Reduce the distinct colors of a raster image or .mcpx source to a target count, optionally scoped by a selection. Returns PNG bytes and/or the editable source via explicit output paths or embedded artifacts; no force, mkdir, or in-place writes.
Recolor an editable .mcpx source with a builtin material id, optionally limited to one region id, and return PNG bytes and/or the recolored source.
Render a hand-authored ASCII Grid (inline text or a .grid file, exactly one) into PNG bytes and/or the editable .mcpx source, with an optional batch applied after parsing. For pixel-level authorship without per-pixel tool calls.
Scale a GUI sprite to N or WxH with the mcmeta stretch/tile/nine_slice mapping. Returns PNG bytes and/or the scaled PNG via an explicit output path; never invents filenames.
Analyze seams, edge repetition, and brightness continuity of a tileable image, with an optional tiled preview grid. Reads the input and returns a report, or writes a preview PNG only to the explicit output path; never invents filenames.
Apply one spatial transformation (flip, rotate, crop, pad, resize, or translate) to a raster image or .mcpx source. Returns PNG bytes and/or the editable source via explicit output paths or embedded artifacts; no force, mkdir, or in-place writes.
Validate an asset file and return a read-only verdict with findings. Reads only, never writes; an optional explicit .mcmeta path is used verbatim.
Scan a resource pack root for namespace, model, texture, and atlas integrity and return a read-only verdict with findings. Reads only, never writes.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite explicit risk classifications in tool metadata. Agents cannot distinguish safe reads from destructive writes without parsing descriptions.
Error handling guidance is absent. No recovery hints, retryability classification, or actionable error messages documented. E.g., what happens if a .grid file is malformed in render_pixel_asset?
Parameter 'batch' and 'operations' accept JSON strings but no schema or format is documented. LLMs must guess the structure of batch operations, risking malformed input.