PixelForge MCP Server
PixelForge MCP server provides image, palette, sprite/tile, and video pixel-art processing tools for AI agents.
Discover capabilities: list presets, Reel styles, palettes, dithering methods, resamplers, and outline modes via
catalog_list; get browser studio info viastudio_info.Convert images: run full pixel-art pipelines with resampling, palettes, dithering, Kuwahara, tone controls, cleanup, outlines, indexed PNG export, and pixel grids using
image_convert.Apply styles and compare outputs: render one of 12 procedural Reel styles with
image_stylize_reel, or generate labeled contact sheets withimage_showcase.Recover native pixel art: detect upscale block factors and export 1x art with
image_detect_grid.Work with palettes: extract OKLab palettes, fetch Lospec palettes, or convert palette files with
palette_tool.Build game assets: pack images/video frames into sprite sheets plus TexturePacker/Aseprite JSON atlases via
export_spritesheet, and slice/deduplicate mirrored tilesets plus tilemaps viaexport_tileset.Process video: convert video to frame-coherent pixel-art MP4/GIF with audio handling via
video_convert.Analyze and sync video: detect motion/scene cuts/zooms, sync motion to audio, detect progress-bar fills, detect stroke drawings, and extract visual-to-sound triggers.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PixelForge MCP Serverconvert hero.png to pixel art with the game-boy palette and save a PNG"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PixelForge
Hybrid Edge-Aware Pixel Art Studio, 32-Thread Numba Python Core, Game-Asset Pipeline & 15-Tool MCP Engine
![]()
PixelForge turns images, sprite animations, and full-motion video into crisp, production-ready pixel art—running both in the browser at 60 FPS on WebGL 2 and headlessly in Python at 160+ FPS on multi-core Numba JIT (plus a 15-tool Model Context Protocol server for AI agents).
Key Capabilities
4-Column PixelForge Workstation (
/editor/) & Interactive Algorithm Lab (/playground/):5 Live Multi-Viewport Modes:
Single (1),Vertical/Horizontal Split Curtain (2/C),Dual Sync Side-by-Side (3),4-Up Snapshot/Preset Arena (4), and3×3 Seamless Tile Wrap Checker (5).7 Non-Destructive Pixel Retouch Tools:
Navigate/Pan (V),Pixel Pencil 1–4px (B),Procedural-Restore Pixel Eraser (E),Flood Bucket & Shift+Click Global Color Swap (K),1px Bresenham Line (U),1px Pixel Rectangle (R), andSmart Eyedropper (I)—composited non-destructively over the live WebGL 2 shader output with independent stroke undo/redo.Scientific Color & Game-Asset Telemetry: Floating 12× Pixel Loupe Magnifier (
L) with(X, Y),#HEX, and perceptualOKLabcoordinates; live RGB + Luminance Canvas Histogram; 4 Style Snapshot Slots (A/B/C/D); built-in Procedural OKLab Harmony Ramp Generator; and a Live Mirror-Deduplicated Tileset Preview Studio & VRAM Savings Calculator.Interactive WebGL 2 Lab (
/playground/): 4 live browser labs comparingBayesian Posteriorvs64×64 Blue NoisevsBayer 8×8vsAtkinson,OKLab-BGMvsSalientvsMedian-Cut, mirror-deduplicated tilemaps, and procedural OKLab color ramps.
Hybrid Bimodal-Plateau Downsampler (
hybrid):Uses smooth alpha-premultiplied box averaging in low-contrast gradients and skies (zero sensor/starfield noise) while splitting high-contrast edges around the tile midpoint into foreground/background plateaus weighted by inverse gradient—snapping typography, thin strokes, and sprite silhouettes cleanly without muddy anti-aliasing halos.
Also includes
sobel(gradient-salient pooling),box(16×16 supersampled average),nearest(center-texel), and automatic pixel-grid GCD detection (detect_pixel_grid) to recover exact 1× native art from already-upscaled sprites.
Regularized OKLab-BGM Palette Discovery (
oklab-bgm/hybrid_bgm_oklab) & Harmony Synthesis:Runs 7 regularized Bayesian Gaussian Mixture EM iterations in perceptual OKLab space (fitting anisotropic diagonal covariances + Dirichlet mixture priors) seeded by chroma- and edge-weighted k-means++ / Median-Cut—preserving tiny vivid neon highlights across WebGL 2 and Python with zero temporal flicker.
Includes
generateHarmonyRampfor procedural cool-shadow / warm-highlight pixel-art color ramps, 43+ built-in palettes,.gpl/.pal/.hex/.txt/.jsonI/O, and livelospec:<slug>fetching.
20 Perceptual Dithering Modes (WebGL 2 + CPU Parity):
WebGL 2 & CPU Bayesian Posterior Soft Dither (
posterior/bgm_posterior): Evaluates exact perceptual distances(d₁, d₂)to the 2 nearest OKLab centroids and thresholds Boltzmann posterior probabilityP(c₁)over a 64×64 void-and-cluster Blue Noise field—guaranteeing zero 3rd-color bleed and seam-free Voronoi transitions.Ordered & Halftone: 64×64 Void-and-Cluster Blue Noise (
bluenoise),bayer2,bayer4,bayer8,bayer16,cluster4&cluster8halftone screens,lines, and arbitrarycustomthreshold matrices.7 Serpentine Error-Diffusion Kernels:
floyd-steinberg,atkinson,sierra-lite,sierra,burkes,jarvis, andstucki.
SVD Low-Rank Denoise, Kuwahara Brush, Local CLAHE Contrast & 1px Comic Ink:
Dedicated SVD / Low-Rank Structural Noise Pre-Filter (
adjust.svd:0..1), edge-preserving Kuwahara flat-paint pre-brush (0..4), 5×5 adaptive CLAHE local micro-contrast punch, luminance-preserving tone controls, orphan stray-pixel removal, stroke-preserving 3×3 majority smoothing, and 1px outlines (outer,inner, and internalinkcomic contours).
Real-Time 60-FPS WebGL 2 Screen Post-FX, 20 Categorized Studio Presets & 12 Procedural Styles:
Live WebGL 2 + CPU-parity Screen & Stylization Post-FX stage (
fx.mode): Bioluminescent Bloom, CRT Arcade Phosphor, 3D Voxel Bevel, Handheld Dot-Matrix LCD, Oscilloscope P31 Vector Beam, and Cyber Blueprint Wireframe, plus continuous CRT Scanlines and RGB Chromatic Aberration (0..3 px).Ships with 20 categorized Studio presets (
bgm-posterior,svd-cel,hybrid-crisp,kurzgesagt,crt-arcade,chunky-ink,pc98-cyber,voxel-3d,oscilloscope-xy,cyber-blueprint,aloboi-dream,pico-8,game-boy,one-bit,faithful,balanced,sprite,cga,newsprint,soft), 4 bundled real scenic view photographs, and 12 Python procedural video/reel styles.
Game-Ready Asset & Video Exporters:
True 1/2/4/8-bit Indexed-Color PNG (
PLTE+tRNS) (~53% smaller files), 1px pixel-grid overlays, Sprite Sheet Packer + TexturePacker/Aseprite JSON Atlas, Mirror-Deduplicated (X/Y/XYflip) Tileset & Tilemap Builder, animated GIF, WebM, and H.264 MP4 (with audio pass-through or external.wavsoundtrack muxing).
Computer-Vision Video Event & Motion Detectors:
Built-in optical-flow motion energy, scene-cut detection, consonant camera-zoom interval extraction, 1D horizontal/vertical progress-bar fill curve tracking (
bar_fills), progressive circle/contour/callout stroke drawing detection (stroke_draws), and audio-beat camera synchronization (sync_video_motion_to_audio).
Related MCP server: pixelworks
12 Built-In Presets Showcase
![]()
Architecture Overview
flowchart LR
SRC["Image / Sprite / Video"] --> PREP["Prep & Kuwahara Brush\nHybrid / Sobel / Box / Nearest"]
PREP --> TONE["Tone, CLAHE & Alpha Cut"]
TONE --> PAL["OKLab-BGM Salient Palette\nor 43+ Built-In / Lospec / .gpl"]
PAL --> DITH["19 Perceptual Dithers\nBlue Noise / Bayer / 7 Diffusions"]
DITH --> CLEAN["Orphan & Stroke-Safe Smooth\n+ Outer / Inner / 1px Ink Outline"]
CLEAN --> EXP["Indexed PNG / Sprite Sheet Atlas\nMirror Tileset / GIF / MP4"]Installation
Python Engine, CLI & MCP Server
Requires Python 3.10+ (numpy, scipy, scikit-learn, numba, Pillow, imageio, imageio-ffmpeg):
pip install -e .Real-Time WebGL 2 Browser Studio & JS/TS Library
Requires Node.js 18+:
npm install
npm run build:site
npm run preview # Launches Studio at http://localhost:8080/editor/Usage
1. Real-Time WebGL 2 Studio
Launch the browser studio either from Python or npm:
python -m pixelforge studio --port 8765
# Open http://localhost:8765/editor/2. Command-Line Interface (pixelforge)
# List all presets, styles, built-in palettes, and dithering methods
python -m pixelforge catalog
# Convert an image using a preset or custom pipeline flags
python -m pixelforge convert input.png output.png --preset kurzgesagt-pixel --upscale 4
python -m pixelforge convert input.png inked.png --width 160 --resample hybrid --kuwahara 2 --palette 24 --dither bluenoise --outline ink --orphans
# Convert a video with locked temporal palette (and optional external WAV soundtrack)
python -m pixelforge convert clip.mp4 pixel_clip.mp4 --preset pc98-cyber-dither --upscale 4 --audio soundtrack.wav
# Pack animation frames into a Sprite Sheet PNG + TexturePacker JSON Atlas
python -m pixelforge spritesheet run_0.png run_1.png run_2.png run_3.png -o character_sheet.png --width 64 --outline outer
# Slice & mirror-deduplicate a level mockup into a Tileset PNG + JSON Tilemap
python -m pixelforge tileset mockup.png -o level_tileset.png --tile-size 163. Python API
import imageio.v3 as iio
from pixelforge import PixelForge, save_png, pack_sprite_sheet, build_tileset
img = iio.imread("illustration.png")
engine = PixelForge(
width=160,
resample="hybrid", # Bimodal-Plateau + Box edge-crisp downsampler
kuwahara=2, # Flat-paint cartoon pre-brush
palette=24, # Deterministic Salient OKLab-BGM extraction
dither="bluenoise", # 64x64 Void-and-Cluster Blue Noise
dither_strength=0.42,
remove_orphans=True,
outline_mode="ink", # 1px internal comic contour outlines
outline_color="#100c1c",
)
pixel_1x = engine.fit_transform(img)
save_png("illustration_pixel.png", pixel_1x, scale=4, indexed=True) # True Indexed PLTE+tRNS PNG4. JavaScript / TypeScript WebGL 2 & CPU Engine
import { createPixelator } from 'pixelforge';
const px = await createPixelator(); // WebGL 2 GPU pipeline with automatic CPU fallback
const result = await px.process(imageElementOrBuffer, {
size: { width: 160, resample: 'hybrid' },
adjust: { kuwahara: 2, contrast: 0.1, saturation: 0.14 },
palette: { source: 'extract', count: 24, distance: 'oklab' },
dither: { method: 'bluenoise', strength: 0.42 },
cleanup: { orphans: true, smooth: false },
outline: { mode: 'ink', color: '#100c1c' },
});
document.body.append(result.toCanvas(4)); // 4x nearest-neighbor canvas
const blob = await result.toBlob({ scale: 4 }); // Compact Indexed-Color PNG15-Tool Model Context Protocol (MCP) Server
Start the headless JSON-RPC 2.0 stdio MCP server for Claude Desktop, Cursor, or custom AI agents:
{
"mcpServers": {
"pixelforge": {
"command": "python",
"args": ["-m", "pixelforge.mcp_server"]
}
}
}Tool Name | Purpose |
| Lists all 14 presets, 12 procedural styles, 43+ palettes, 19 dithers, 4 resamplers, and 4 outline modes. |
| Full pixel-art pipeline with Kuwahara brush, 19 dithers, outlines, pixel grid, and Indexed |
| Applies any of the 12 procedural styles ( |
| Renders a labeled 12-panel contact sheet comparing presets or procedural styles on an input image. |
| Detects the pixel block factor of upscaled pixel art via border-difference GCD and recovers 1× native art. |
| Extracts |
| Packs images or video frames into a Sprite Sheet PNG + TexturePacker/Aseprite JSON Atlas. |
| Slices pixel art into an |
| Converts MP4/GIF video with locked temporal palette (zero flicker) and audio pass-through or WAV muxing. |
| Extracts optical-flow motion energy, scene cuts, and consonant camera-zoom intervals ( |
| Detects 1D horizontal & vertical progress-bar/meter fill curves ( |
| Standalone detector for progressive circle, contour-outline, and callout-line drawings ( |
| Extracts generalized visual-to-audio event triggers and arrangement regimes from video footage. |
| Beat-locks camera micro-zooms and pan curves to an external |
| Returns the universal visual-to-sound trigger catalog schema. |
Testing
# Python core, exporters, CV detectors & live stdio MCP handshake tests
python -m unittest tests/test_pixelforge.py -v
# Build JS bundles & static WebGL 2 Studio site
npm run build:siteLicense
MIT License — see LICENSE.
Available Tools
15 toolscatalog_listB
Lists all merged PixelForge capabilities: 14 presets, 12 Reel styles, 43+ built-in Lospec/Hardware/Reel palettes, 19 dithering methods (incl. Blue Noise & 7 error-diffusion kernels), 4 downsamplers (incl. Hybrid Edge-Medoid), and 4 outline modes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it says nothing about whether the catalog is static metadata or computed at runtime, whether it requires any setup, or how large the response is. 'Merged' hints that entries are consolidated from multiple sources but this is never explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and scope first, followed by concrete counts that let an agent judge whether a follow-up tool is needed. The inventory detail is dense but earns its place as a preview of contents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing tool this is nearly adequate, but with no output schema the description never says what the returned entries look like (names, identifiers, categories) or whether those identifiers are usable as inputs to sibling tools. That is a meaningful gap for a discovery/index tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate beyond what the empty schema already conveys. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Lists' plus the resource 'merged PixelForge capabilities' is specific, and the enumeration of the five capability families tells an agent exactly what the catalog covers. It doesn't explicitly differentiate itself from siblings like palette_tool or studio_info, which also surface overlapping information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus alternatives such as palette_tool (palettes) or studio_info (studio metadata), nor any note on whether it should be called before other tools as a discovery step. The usage is only inferable from the content list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_spritesheetC
Pixelizes and packs multiple input images OR sampled video frames into a single Sprite Sheet PNG + TexturePacker/Aseprite JSON coordinate atlas.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| dither | No | none | |
| preset | No | Optional PixelForge preset (e.g. 'sprite', 'pico-8', 'hybrid-crisp'). | |
| columns | No | 0 = roughly square grid. | |
| padding | No | ||
| palette | No | ||
| output_png | Yes | Output sprite sheet PNG path. | |
| input_paths | Yes | List of input image paths (or 1 video path). | |
| outline_mode | No | none | |
| max_video_frames | No | ||
| output_atlas_json | No | Optional JSON atlas path (defaults to <output_png>.json). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose that input can be many images or a single video whose frames are sampled, and that two files are produced (PNG plus atlas JSON). It stays silent on overwrite semantics, whether originals are modified, frame-sampling limits, and failure modes for mixed-type inputs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the key nouns (sprite sheet, atlas) land early. It is dense but every clause (pixelize, pack, images/video, two artifacts) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An 11-parameter, dual-mode (still images or video) export tool with no annotations and no output schema needs far more: atlas format choice, grid/padding behavior, video sampling, and destructive-write risk are all absent. The description is enough to recognize the tool but not enough to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 45% across 11 parameters, so the description must compensate and does not. It only touches input_paths and the two outputs (both already documented in the schema), leaving width, dither, preset, columns, padding, palette, outline_mode, and max_video_frames entirely unexplained — 'pixelizes' hints at palette/width behavior but names nothing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific compound verb ('pixelizes and packs') and a concrete resource ('single Sprite Sheet PNG + TexturePacker/Aseprite JSON coordinate atlas'), including the two output artifacts. It does not differentiate itself from sibling export_tileset, which handles a closely related output, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use / when-not guidance. The 'OR sampled video frames' phrasing clarifies acceptable input shapes but never tells the agent when to pick this over export_tileset or image_convert. Usage is only implied by the name and the word 'packing'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_tilesetB
Slices a pixel-art (or newly pixelized) image into fixed tiles (e.g. 8x8 or 16x16), deduplicates identical & X/Y/XY mirrored tiles, and writes a compact Tileset PNG + Tilemap JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| palette | No | endesga-32 | |
| input_path | Yes | ||
| output_png | Yes | ||
| tile_width | No | ||
| allow_flips | No | ||
| tile_height | No | ||
| pixelize_first | No | ||
| output_map_json | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses deduplication and X/Y/XY mirror handling plus that files are written, but it does not state overwrite behavior, path requirements, failure modes, or what happens to existing output files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the core action and ends with the concrete outputs. There is no filler and every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex 9-parameter file-writing tool with no annotations and no output schema, yet the description covers only a fraction of the parameter surface and no operational constraints. It is not sufficient for an agent to call the tool confidently without opening and guessing at the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters, so the description must compensate. It only indirectly touches tile_width/tile_height ('8x8 or 16x16'), allow_flips ('mirrored tiles'), and pixelize_first ('newly pixelized'); it says nothing about palette, width, input_path, output_png, or output_map_json.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Slices') and resource ('pixel-art image into fixed tiles') and names the outputs ('Tileset PNG + Tilemap JSON'). It distinguishes the operation from a generic image conversion, though it never explicitly contrasts with the sibling export_spritesheet tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no when-to-use guidance, no prerequisites, and no exclusions. With a closely related sibling like export_spritesheet and image_detect_grid available, the agent is left to infer which tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_convertC
Converts an image to pixel art using the full unified PixelForge pipeline (Hybrid/Sobel/Box/Nearest downsampling, Hybrid OKLab-BGM or Lospec/.gpl/.hex/.pal palette, 19 dithering modes, Kuwahara pre-brush, tone controls, orphan/majority cleanup, 1px inner/outer/ink outlines, indexed PNG, and pixel grid).
| Name | Required | Description | Default |
|---|---|---|---|
| hue | No | ||
| grid | No | Draw 1px pixel grid on upscaled output. | |
| gamma | No | ||
| width | No | Target pixel width (height auto-computed if omitted). | |
| dither | No | bluenoise | |
| factor | No | Alternative integer downscale factor. | |
| height | No | Optional target pixel height. | |
| preset | No | Optional preset id (e.g. 'hybrid-crisp', 'kurzgesagt-pixel', 'chunky-ink-sprite', 'pico-8', 'sprite', 'one-bit'). | |
| indexed | No | Write compact Indexed-Color PNG (PLTE+tRNS) when <= 256 colors. | |
| palette | No | Color count to extract (2..256), built-in id ('endesga-32', 'pico-8', 'kurzgesagt-24'), 'lospec:<slug>', palette file path (.gpl/.hex/.pal/.json), or 'none'. | |
| upscale | No | Integer nearest-neighbor output upscale. | |
| contrast | No | ||
| kuwahara | No | Pre-pixel Kuwahara flat-paint radius (0=off, 2..5=flat cartoon blocks). | |
| resample | No | hybrid | |
| brightness | No | ||
| input_path | Yes | Input image path. | |
| saturation | No | ||
| output_path | Yes | Output PNG path. | |
| extract_mode | No | hybrid_bgm_oklab | |
| outline_mode | No | none | |
| outline_color | No | #181425 | |
| remove_orphans | No | Remove isolated 1-pixel strays. | |
| dither_strength | No | Dither strength in [0.0, 1.0] (palette-spread normalized). | |
| outline_corners | No | ||
| smooth_majority | No | 3x3 5-of-9 majority speck smoothing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden, and it only lists transformation features. It never says whether output_path is overwritten, whether directories are created, what the tool returns, or how long the heavy pipeline (19 dither modes, Kuwahara, palette extraction) might take.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, which is good, but it then becomes a single run-on laundry list of every pipeline feature. For a 25-parameter tool some enumeration is warranted, yet the sentence is dense and hard to parse rather than structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 25-parameter, file-writing tool with no annotations and no output schema, the description explains the transformation broadly but omits return value, overwrite behavior, and how the preset parameter relates to the manual parameters. It is adequate but leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 56%, so the description should compensate. It does name most feature families (downsampling modes, palette sources, dithering, Kuwahara, tone controls, cleanup, outlines, grid), but it only restates the parameter names without adding syntax, ranges, or interactions beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Converts an image to pixel art' — and names the concrete pipeline it uses. It never references any sibling tool (image_stylize_reel, palette_tool, image_detect_grid), so an agent can identify the function but must infer why to pick this over the adjacent image tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative guidance at all. The mention of 'the full unified PixelForge pipeline' hints this is the comprehensive converter, but nothing tells the agent when to reach for it versus image_stylize_reel or a preset-only path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_detect_gridA
Detects the pixel-block factor of an already-upscaled pixel-art image (e.g. 4x sprite) and optionally exports its exact 1x native pixel grid.
| Name | Required | Description | Default |
|---|---|---|---|
| tolerance | No | ||
| input_path | Yes | ||
| recover_1x_output_path | No | Optional path to save recovered 1x native pixel-art PNG. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two meaningful traits: the input must already be upscaled, and the tool writes a PNG to disk only when recover_1x_output_path is supplied (a real side effect worth flagging). It omits failure behavior on non-pixel-art input, whether the write overwrites an existing file, and what the detection returns. Adequate but with clear behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core operation front-loaded and the optional export hedged with 'optionally'. Nothing is wasted and the parenthetical example adds concrete grounding rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should explain what the tool returns (the detected factor? a structure?) and how tolerance affects results. Neither is covered, leaving an agent unable to reason about output shape or parameter tuning for a three-parameter tool. The one thing it does cover — the optional file export — is already documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% and the description adds nothing for the undocumented parameters. 'tolerance' (default 8) — the parameter most likely to be mis-set, since it governs how closely pixel blocks must match — is never explained in the schema or the description. The description only obliquely restates what the schema already says about recover_1x_output_path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('detects') and resource ('pixel-block factor of an already-upscaled pixel-art image') with a concrete example (4x sprite) and a secondary capability (exporting the 1x native grid). No sibling tool (image_convert, image_stylize_reel, palette_tool, export_spritesheet) overlaps this operation, so an agent can route here unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Already-upscaled' encodes an implicit precondition on the input — the image must be pixel art that was previously scaled — which rules out arbitrary photos or native-resolution art. However, it never states when to prefer this over image_convert or export_spritesheet, nor what to do when detection fails. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_showcaseC
Renders a labeled multi-panel contact sheet comparing all 12 Reel styles or top PixelForge presets on an input image.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | presets | |
| input_path | Yes | ||
| tile_width | No | ||
| output_path | Yes | ||
| tile_height | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it says nothing about what the tool writes to output_path, whether an existing file is overwritten, what image format results, or whether rendering is read-only aside from the output file. It does convey that the result is a labeled multi-panel sheet, which is useful behavioral color, but the write/overwrite semantics for a rendering tool are left entirely unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the verb and the distinguishing scope front-loaded; no filler or redundancy. Its compactness is close to ideal, even if some needed detail is missing rather than excess being present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 undocumented parameters, no annotations, and no output schema, the description should do much more: explain the mode choice, tile sizing, and what lands at output_path. As written, an agent knows roughly what the tool produces but not enough to set parameters confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate and largely does not. It hints at the mode enum ('Reel styles or top PixelForge presets') and that an input image is involved, but tile_width, tile_height, and output_path are never explained, and the mode values 'presets' vs 'reel_styles' are not mapped to their meanings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Renders a labeled multi-panel contact sheet comparing all 12 Reel styles or top PixelForge presets on an input image.' That is far more concrete than a generic 'process image' and implicitly separates it from image_stylize_reel (this one compares many styles rather than applying one), though it never names that sibling or explicitly contrasts with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to reach for this over alternatives such as image_stylize_reel or palette_tool, nor any preconditions (image format, size limits, whether output_path must not exist). The comparison/preview use case is inferable from 'contact sheet' but is not stated as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_stylize_reelC
Applies one of the 12 procedural Reel visual styles (kurzgesagt_glow, chunky_cartoon, pc98_cyber, oscilloscope_xy, aloboi_dreamcore, bitwonder_bayer, etc.) with optional post-cleanup & 1px outlines.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | kurzgesagt_glow | |
| factor | No | ||
| upscale | No | ||
| input_path | Yes | ||
| output_path | Yes | ||
| outline_mode | No | none | |
| outline_color | No | #100b20 | |
| remove_orphans | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It does not explain that the tool reads input_path and writes output_path, whether it overwrites existing output, what formats are supported, or what post-cleanup and remove_orphans actually do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the parenthetical style list is long but useful. It is appropriately concise, though slightly unstructured due to the embedded enumeration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage, the description leaves too much unspecified for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for eight parameters. It names the style enum values and alludes to cleanup and outlines, but factor, upscale, input_path, output_path, outline_mode, outline_color, and remove_orphans remain semantically unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Applies') and resource ('procedural Reel visual styles'), with example style names. The styling purpose is clear, though it does not explicitly differentiate itself from siblings like image_convert or image_showcase.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives no guidance on when to choose this tool over alternatives such as image_convert or palette_tool, and provides no prerequisites, exclusions, or when-not-to-use information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
palette_toolA
Extracts an optimal palette from an image (via hybrid_bgm_oklab or oklab_median_cut), fetches a Lospec palette ('lospec:'), or converts any palette to .gpl, .hex, or .json.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | PixelForge Palette | |
| palette | Yes | Color count (if input_image given), built-in id, 'lospec:<slug>', or palette file path. | |
| input_image | No | Optional image to extract palette from. | |
| output_file | No | Optional output palette file (.gpl, .hex, or .json). | |
| extract_mode | No | hybrid_bgm_oklab |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does disclose the three operational modes, which is genuinely useful behavioral information. However, it omits that writing to output_file is a file-system side effect, says nothing about what is returned (color list vs. path), and gives no error behavior for invalid slugs or unreadable images.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the alternate modes and keeps parenthetical algorithm names inline. Every clause carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no annotations and no output schema, the description covers the mode dispatch but leaves the return value, the file-writing side effect, the untagged 'name' parameter, and the extraction-mode choice unexplained. Adequate to start a call, not adequate to call confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60% and the description largely restates the schema's own palette description (count/id/slug/path) rather than adding format detail. The most valuable missing semantics — the tradeoff between hybrid_bgm_oklab and oklab_median_cut, and what 'name' affects — are absent from both description and schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names three concrete operations with specific verbs and resources: extract a palette from an image via named algorithms, fetch a Lospec palette by slug, and convert to .gpl/.hex/.json. An agent can tell this is the palette-domain tool (versus image_convert or export_* siblings), though it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mode dispatch is only implicit in the description: an image input selects extraction, a 'lospec:<slug>' value selects fetching, an output path selects conversion. No sentence states 'use this when X, use image_convert instead when Y', and there is no guidance on choosing between hybrid_bgm_oklab and oklab_median_cut.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_infoC
Returns information and launch commands for the upgraded PixelForge WebGL 2 Real-Time Browser Studio.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. "Returns" implies a read-only, no-side-effect call, but the description never states the shape of the return, whether the "launch commands" are strings/URLs, or any environment prerequisites for launching the studio.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though it spends its one sentence on a product name rather than on actionable detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param tool the description is minimally sufficient, but with no output schema and no annotations, the agent is left guessing what "information" and "launch commands" actually contain and how to act on them. A short note on the return contents would close the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema is trivially complete and the description has nothing to compensate for. Baseline 4 applies; no parameter detail is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb ("Returns") and a resource ("information and launch commands for the PixelForge WebGL 2 Real-Time Browser Studio"), so it is distinguishable from the image/video/palette siblings. However, "information" is undefined — the agent cannot tell whether this is version metadata, capability listing, or UI launch URLs — so the purpose stays at a vague high level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when an agent should call this tool, what triggers it, or which sibling scenarios it precedes (e.g. before rendering/export). No alternatives or exclusions are named despite a crowded sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video_analyze_motionC
Analyzes a video for scene cuts, camera zoom-ins/outs, object inflation/shrinking, and per-frame motion energy for SoundBit audio sync.
| Name | Required | Description | Default |
|---|---|---|---|
| max_frames | No | ||
| video_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It identifies the analysis targets but omits key behavioral details such as whether the operation is read-only, what the output looks like, how max_frames affects processing, and what video formats are supported. The description adds some value by naming the analyses, but it does not compensate for the complete absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is appropriately sized for a tool name, though it could be strengthened by using some of that space to cover the completely undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a video-analysis tool with no annotations, no output schema, and zero schema description coverage, so the description should explain more about what is returned, how max_frames works, and what formats are accepted. It names the analyses but leaves critical invocation details missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention either parameter. It does not explain that video_path is the path to the source video or that max_frames limits the number of frames processed, leaving both parameters entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Analyzes') and resource ('a video') and enumerates the exact analyses performed: scene cuts, camera zooms, object inflation/shrinking, and motion energy. It is clear what the tool does, but it does not explicitly distinguish itself from sibling tools such as video_sync_motion_to_audio or video_extract_sound_triggers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit when-to-use/when-not-to-use guidance or alternatives. The phrase 'for SoundBit audio sync' gives a general context, but an agent is left to infer when this tool should be selected over the many related video tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video_convertB
Converts a video file to frame-coherent pixel-art MP4 or GIF using any PixelForge preset, custom palette/dither, or 12 Reel styles, keeping original audio or muxing a custom WAV.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Optional Reel style id (e.g. 'kurzgesagt_glow', 'pc98_cyber'). | |
| width | No | ||
| dither | No | bluenoise | |
| factor | No | ||
| preset | No | ||
| palette | No | ||
| upscale | No | ||
| resample | No | hybrid | |
| audio_wav | No | Optional custom WAV soundtrack to mux. | |
| max_frames | No | ||
| input_video | Yes | ||
| output_path | Yes | .mp4 or .gif output path. | |
| keep_source_audio | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does convey meaningful behavior: frame-coherence, that audio is preserved or a custom WAV muxed, and what artifact is produced. However, it never states that the tool writes/overwrites a file at output_path, says nothing about processing duration for long videos, or what happens when both keep_source_audio and audio_wav are supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the core action and then qualifies the option space. It earns its length, though the tail clause ('keeping original audio or muxing a custom WAV') is compressed enough that the interaction between the two audio parameters is never disambiguated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation tool with no annotations, no output schema, and 77% of parameters undocumented, the description is too thin. Decisions the agent cannot make from the provided text — resolution control (width vs factor vs upscale), resample meaning, and frame-limiting via max_frames — are exactly the ones a video pipeline needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 23% (13 params, 4 described), so the description must compensate, and it partially does: it clarifies presets, palette/dither, the 12 Reel styles, and the keep_source_audio vs audio_wav pairing. But width, factor, upscale, resample, and max_frames are undocumented in both schema and description, leaving the agent to guess at the most consequential tuning knobs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ('Converts') with a specific resource ('a video file') and enumerates the output options (MP4/GIF) and styling sources (PixelForge presets, custom palette/dither, 12 Reel styles). It is clearly distinguishable from image-focused siblings like image_convert or image_stylize_reel, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to pick this over image_convert, image_stylize_reel, or export_* tools, and no prerequisites or exclusions. The agent must infer from the name and the input-file requirement that this is the video-domain conversion path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video_detect_bar_fillsB
Detects 1D horizontal & vertical progress bars, meters, gauges, and column fills, returning frame-accurate fill_curve trajectories in [0.0, 1.0].
| Name | Required | Description | Default |
|---|---|---|---|
| max_frames | No | ||
| video_path | Yes | ||
| min_duration_s | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden; it does disclose the return contract (frame-accurate fill_curve trajectories normalized to [0.0, 1.0]) and an important scope limit (1D only, so radial/2D gauges are out). It says nothing about processing cost, failure modes on videos without bars, or whether detection is a pure read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that packs verb, target geometry, and return format with zero filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a computer-vision video tool with no annotations, no output schema, and 0% parameter documentation, the description is too thin: it explains what comes out but not how to drive it (frame budget, duration threshold) or what limits to expect. The one strong element, the output-range disclosure, does not offset the missing parameter and cost context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, and the description never mentions video_path, max_frames, or min_duration_s — notably leaving the 0.65 s default unexplained (presumably a minimum fill-event duration). With no schema prose to fall back on, this gap is not compensated anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Detects) and a well-scoped resource (1D horizontal & vertical progress bars, meters, gauges, column fills), plus the output artifact (fill_curve). It implicitly separates itself from video_detect_stroke_draws and video_analyze_motion by naming the exact visual target, but never names a sibling explicitly, so routing still relies on inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus video_detect_stroke_draws, video_analyze_motion, or video_extract_sound_triggers, and no prerequisites or exclusions. The only hint of applicability is the detection target itself, which is closer to 'no guidance' than to explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video_detect_stroke_drawsC
Detects progressive indicator drawings (circle_draw, contour_outline_draw, callout_line_draw) with exact start_s, finish_s, and draw_curve.
| Name | Required | Description | Default |
|---|---|---|---|
| max_frames | No | ||
| video_path | Yes | ||
| allowed_shapes | No | ||
| min_duration_s | No | ||
| proof_image_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but discloses little behavior beyond the output field names. It does not say whether the tool is read-only, whether it writes proof images, or what performance or permission characteristics apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of fluff, but it is too terse for a tool with five parameters and no annotations. It is efficient in wording but appropriately sized? No—it omits necessary details, making it under-specified rather than truly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a detection tool with five parameters, no annotations, and no output schema, the description is severely incomplete. It hints at return values (start_s, finish_s, draw_curve) but doesn't explain what they are, how they're formatted, or what the tool returns overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain all five parameters. It mentions the shape enum values and some output fields but never explains video_path, max_frames, allowed_shapes, min_duration_s, or proof_image_path, leaving the parameters essentially undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('detects') and resource ('progressive indicator drawings') with three concrete shape types. It distinguishes from sibling video_detect_bar_fills by naming different shapes, though it does not explicitly reference siblings or contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like video_detect_bar_fills or video_analyze_motion. No prerequisites, exclusions, or context for choosing this detection method are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video_extract_sound_triggersC
Extracts configurable movement-to-sound triggers (bar fills, sparse camera zooms, HUD text ticks, risers, bursts) and musical arrangement regimes.
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | ||
| zoom_mode | No | major_only | |
| max_frames | No | ||
| video_path | Yes | ||
| zoom_min_sigma | No | ||
| include_catalog | No | ||
| zoom_cooldown_s | No | ||
| enable_bar_fills | No | ||
| enable_stroke_draws | No | ||
| zoom_include_whoosh | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: it does not say whether the tool is read-only, whether it writes files, whether it is expensive/slow on long videos, or what the result looks like. The parenthetical trigger categories give a hint about output content, but nothing about side effects, determinism, or cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is structurally clean. But for a 10-parameter tool with a nested config object, one sentence is under-specified rather than genuinely concise, and the parenthetical list of jargon terms is dense without being explanatory.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, 10 parameters at 0% coverage, and a nested object, the description should explain the config structure, the zoom_mode enum, and at least the shape of the return value. It provides none of this, so an agent cannot reliably construct a call or anticipate the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 10 parameters, including an opaque nested 'config' object and an unexplained 'zoom_mode' enum (off/major_only/probabilistic/musical_subtle/all). The description's parenthetical categories loosely map to enable_bar_fills and the zoom_* parameters, but 'config', 'max_frames', 'include_catalog', and the enum semantics are entirely undocumented, leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Extracts ... movement-to-sound triggers') and lists the concrete trigger categories (bar fills, zooms, HUD ticks, risers, bursts), so an agent can tell this is a video-to-trigger-extraction tool rather than a converter or analyzer. It does not, however, distinguish itself from overlapping siblings such as video_detect_bar_fills or video_detect_stroke_draws, whose functionality appears to be folded in as options here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus video_detect_bar_fills, video_detect_stroke_draws, video_analyze_motion, or video_sync_motion_to_audio, despite clear functional overlap. No prerequisites, exclusions, or input requirements (e.g., video format, cost) are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video_sync_motion_to_audioC
Locks video camera zooms, pullbacks, focal tracking, and sub-bass micro-zoom punches in pre-pixel space onto a WAV soundtrack, then stylizes and muxes MP4.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| style | No | pc98_cyber | |
| factor | No | ||
| audio_wav | Yes | ||
| input_video | Yes | ||
| output_video | Yes | ||
| bass_punch_strength | No | ||
| phrase_zoom_strength | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full burden of behavioral disclosure. It indicates a multi-stage mutation involving motion locking, stylization, and muxing, but does not say whether output_video is overwritten, what permissions or files are required, or what the result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single tightly packed sentence with no filler, and the sequence of operations is front-loaded. It is dense with jargon but not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex: 8 parameters, no schema descriptions, no annotations, and no output schema. The description explains the high-level pipeline but leaves most parameter semantics and operational behavior unspecified, so it is not complete enough for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description must compensate. It gives indirect clues for audio_wav, output_video, style, and bass_punch_strength, but says nothing about bpm, factor, phrase_zoom_strength, or how the optional parameters affect the output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it locks video camera motion onto a WAV soundtrack and then stylizes and muxes an MP4. That is clear enough to distinguish it from general video conversion or motion analysis tools, though it does not explicitly name any sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as video_extract_sound_triggers, video_analyze_motion, or video_convert. The use case is implied by the description, but no prerequisites, exclusions, or alternative-selection rules are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
15 tool updates
v1.0.0- First observed
catalog_list - First observed
export_spritesheet - First observed
export_tileset - First observed
image_convert - First observed
image_detect_grid - First observed
image_showcase - First observed
image_stylize_reel - First observed
palette_tool - First observed
studio_info - First observed
video_analyze_motion - First observed
video_convert - First observed
video_detect_bar_fills - First observed
video_detect_stroke_draws - First observed
video_extract_sound_triggers - First observed
video_sync_motion_to_audio
TDQS
Scored across 15 tools
Each tool targets a fairly distinct operation (convert vs. export vs. detect vs. sync), and the video-analysis tools split cleanly by feature (bar fills, stroke draws, motion, sound triggers). Minor ambiguity exists between studio_info and catalog_list (both informational) and between image_convert and image_stylize_reel, but descriptions clarify the boundaries.
Most tools follow a resource_action pattern (image_convert, video_convert, video_detect_bar_fills, image_stylize_reel), which is readable and predictable. A few deviate with verb-first (export_spritesheet, export_tileset) or noun_noun (studio_info, catalog_list, palette_tool) forms, but the overall convention is coherent.
15 tools sits at the top of the well-scoped range for a rich pixel-art/video pipeline. Each tool maps to a real capability (conversion, detection, export, sync, info), so none feel redundant, though the set is on the heavier side.
Coverage is broad: image and video conversion, palette handling, spritesheet/tileset export, multiple detection/analysis tools, motion-audio sync, and catalog/info. Minor gaps exist (e.g., no standalone audio extraction or batch orchestration), but core lifecycle workflows are covered without obvious dead ends.
Maintenance
Related MCP Connectors
Generate, edit, style-match, turn, and animate game-ready pixel art at exact sizes.
Generate pixel art sprites, animations, 8-direction rotations and palettes for games.
Video, audio, and image processing for AI agents: convert, transcribe, upscale - 150+ operations.
Game-ready pixel art: generate sprites, animate them, pixelate images, remove backgrounds.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to create, inspect, edit, and export pixel art, sprites, animations, and spritesheets using headless Aseprite, and to convert arbitrary images into indexed pixel art.MIT
- AlicenseCqualityAmaintenanceEnables AI clients to drive pixel-art workflows through 169 tools spanning Retro Diffusion generation, Aseprite editing, and Krita painting, with independently gated subsystems.6169MIT
- AlicenseNot gradedqualityCmaintenanceGives AI assistants headless control of the pixel-art editor by wrapping its command line and complete Lua scripting API. It enables inspecting sprite metadata, creating new sprites, exporting frames and packed spritesheets, and editing pixels, layers, frames, tags and palettes.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to create layered pixel-art sprites and animations, inspect pixels, and export images, spritesheets, GIFs, APNGs, and TrueType pixel fonts. Documents and edits stay local, accessible over stdio MCP or callable directly from a shell.26MIT