Deterministic pixel-perfect optical centering for icons, symbols, and UI glyphs via MCP.
GlyphCenter demonstrates strong schema completeness and detailed parameter documentation across all 5 tools. Tool names follow verb_noun convention (render_, optimize_, analyze_, compare_, run_). Descriptions are comprehensive (194 - 392 chars, within baseline p10 - p90 range). All parameters have type definitions and descriptions. However, output schemas are not explicitly documented in the source, and error handling guidance is absent. The server lacks tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles (WRITE vs READ_ONLY). No recovery guidance for common failure modes.
Analyze an existing PNG at final resolution. Reports alpha bounds, coverage-weighted centroid, offset from the expected center, opposing padding, quadrant mass balance, dimensions, SHA-256, and returns a diagnostic overlay.
Compare two same-sized PNGs with exact changed-pixel count, changed ratio, mean absolute error, RMS error, maximum channel difference, and a magenta difference image.
Search subpixel offsets around alpha centering, scoring alpha-centroid error, opposing edge padding, and quadrant mass. Use for asymmetric custom SVG/PNG symbols, thin marks, odd pixel sizes, or any render whose diagnostic overlay does not look balanced.
Render a distortion-free symbol inside a filled or outlined circle, square, rounded rectangle, triangle, pentagon, hexagon, ellipse, rectangle, or custom SVG path. Uses continuous coordinates, 1-16x supersampling, premultiplied-alpha Lanczos downsampling, alpha trimming for PNG inputs, geometric/alpha/optical centering, and returns both the clean PNG and a measured diagnostic overlay.
Run the built-in 435-check precision suite across circle, square, rounded rectangle, triangle, and pentagon; filled and outlined variants; X, dot, line, equals, slash, less/greater, plus, check, and minus; 17/24/31/48 px sizes; thin/small, regular/medium, and bold/large profiles; the compact default-scale contract; alpha-trimmed PNG input; custom paths; and exact comparison. Returns failures and a 100-case visual contact sheet.
Output schemas not documented. Tools return complex results (PNG data, metrics, diagnostic overlays, contact sheets) but no structured output schema is visible in the source. LLMs cannot plan downstream operations or extract specific fields without guessing.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). render_centered_symbol and optimize_symbol_centering are marked WRITE (file system side effects) but lack destructiveHint annotation. analyze_icon_png, compare_icon_pngs, and run_precision_regression_suite are READ_ONLY but lack readOnlyHint. Agents cannot distinguish safe from risky operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2025-06-18+ | v2 |
No error handling or recovery guidance. Tools accept file paths and perform I/O but provide no error messages, validation feedback, or recovery hints. E.g., if outputPath is invalid or overwrite=false but file exists, what happens? No guidance for LLM.
Ambiguous parameter dependencies undocumented. shape.variant (filled/outlined) interacts with fill/stroke colors; symbol.kind=image requires filePath/pngBase64/pngDataUri (mutually exclusive?); layout.scale vs padding override logic. Dependencies not stated in descriptions.
compare_icon_pngs lacks input validation description. Requires 'same-sized PNGs' but no schema constraint or description hint. LLM may pass mismatched sizes; tool will fail with unclear error.