A read-only MCP server for the Chart Color System: solve, audit, simulate and ramp chart palettes with a token-driven, math-backed palette system for ECharts dashboards
Six tools with complete input schemas and descriptions, but descriptions are minimal (10-20 chars) and lack LLM-optimized guidance. Parameter descriptions are present but generic. No output schemas documented. No error handling guidance. Tools follow verb_noun naming but lack context on when to use each vs. alternatives. No tool annotations (readOnlyHint). Composition is sound (each tool does one thing), but descriptions do not explain dependencies or prerequisites.
Audit a palette for contrast and color-vision deficiency compliance
Calculate the WCAG contrast ratio between two colors
Generate a diverging color ramp for data visualization
Generate a sequential color ramp for data visualization
Simulate how a color appears under different color vision types
Solve an audited palette against a background color, returning categorical color assignments
Tool descriptions are 10 - 20 characters, below the 50 - 200 char LLM-optimized baseline. Descriptions lack WHEN to use each tool, prerequisites, or differentiation from similar tools (e.g., when to call auditPalette vs. contrastRatio).
No output schemas documented. LLMs cannot infer what fields each tool returns, forcing them to guess downstream field names and risk broken tool chains.
No error handling guidance. Tools do not document what happens on invalid input (e.g., malformed hex color, out-of-range steps), what errors are retryable, or how to recover.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Parameter descriptions are generic ('Array of color hex strings', 'Background color hex string'). No format constraints, examples, or validation rules stated. LLMs cannot infer whether '#FF0000' or 'FF0000' or 'red' is valid.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only, but this is not declared in the schema, forcing LLMs to infer safety from descriptions.