Chart Color System
Server Details
Solve, audit and simulate colorblind-safe chart palettes. WCAG contrast, OKLab ΔE. Read-only.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- socraticstatic/Visualizations
- GitHub Stars
- 0
TDQS
Scored across 4 tools
Each tool targets a clearly different action: auditing existing colors, building a ramp, simulating colorblind vision, and solving for a categorical palette. Even though several tools return audits, their primary purposes are distinct and easy to tell apart.
All tool names follow the same verb_noun pattern: audit_palette, build_ramp, simulate_palette, solve_palette. The verbs are specific and the nouns accurately reflect the object being acted on.
Four tools is well-scoped for a focused chart color system domain. Each tool covers a distinct need and none feel redundant or unnecessary.
The set covers the main workflow: auditing existing palettes, building sequential/diverging ramps, simulating colorblind perception, and generating categorical palettes with accessibility constraints. There are no obvious missing operations for the stated purpose.
Available Tools
4 toolsaudit_paletteAudit a chart paletteARead-onlyIdempotentInspect
Audit existing chart colors for accessibility: pairwise OKLab separation under normal vision, deuteranopia, protanopia, tritanopia and achromatopsia, plus WCAG 2.2 non-text contrast (3:1) of every color against the chart background. Returns a pass / warn / fail verdict with the numbers behind it. Set ramp=true for sequential or diverging scales, whose steps are meant to be close.
| Name | Required | Description | Default |
|---|---|---|---|
| ramp | No | true for a sequential or diverging scale (skips pairwise separation) | |
| colors | Yes | Palette colors in slot order (CSS syntax) | |
| background | No | Chart background color | #ffffff |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it returns a pass/warn/fail verdict with the numbers behind it, and explains that ramp=true skips pairwise separation. This goes beyond the annotations without contradicting them.
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?
Two sentences with zero waste. The core purpose and the key behavioral detail (ramp=true) are front-loaded, and the return format is stated compactly. Every sentence 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 read-only audit tool with 100% schema coverage and no output schema, the description is nearly complete. It explains what checks are performed, the return verdict, and the ramp option. The only minor gap is that it doesn't describe the exact structure of the returned numbers, but since there's no output schema, a bit more detail on the return format could help. Still, the description is sufficient for an agent to select and invoke the tool correctly.
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 100%, so the schema already documents all three parameters (colors, ramp, background). The description adds value by explaining the semantic effect of ramp=true (skips pairwise separation) and clarifying that colors are in slot order, but it doesn't add syntax details beyond what the schema provides. Baseline 3 is appropriate.
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 ('Audit') and resource ('existing chart colors'), and enumerates the exact accessibility checks performed (OKLab separation under five vision conditions, WCAG 2.2 non-text contrast). This clearly distinguishes it from sibling tools like build_ramp or solve_palette, which create or optimize palettes rather than audit 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?
The description gives clear context for when to use the tool: auditing existing chart colors for accessibility. It also explains the ramp=true option for sequential/diverging scales, which is a usage condition. However, it doesn't explicitly name sibling alternatives or state when NOT to use this tool (e.g., when building a new palette, use build_ramp or solve_palette instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_rampBuild a sequential or diverging rampARead-onlyIdempotentInspect
Build an evenly spaced perceptual (OKLab) color scale: sequential from start to end, or diverging from start through mid to end. Returns the steps and a background-contrast audit (pairwise separation is not judged for ramps).
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | Last color (or the positive end) | |
| mid | No | Middle color for a diverging scale; default a neutral near the background | |
| kind | Yes | ||
| start | Yes | First color (or the negative end of a diverging scale) | |
| steps | No | ||
| background | No | #ffffff |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by noting the use of OKLab perceptual space, that the result is evenly spaced, and that it returns an audit with the caveat that pairwise separation is not judged for ramps. This enriches behavioral understanding without contradicting 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 two sentences with no fluff, front-loading the core purpose and including essential output details. Every word contributes value, making it highly efficient.
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 description covers the primary function and what is returned, but does not detail the exact structure of the steps or the audit. Given the lack of an output schema and the moderate parameter count, a bit more detail on the return format would improve completeness, but the annotations and schema cover safety and parameter constraints adequately.
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 description clarifies the semantic roles of start, end, mid (sequential vs diverging) and background (used for the contrast audit), which adds meaning beyond the schema's terse descriptions. Given a schema coverage of 50%, this compensation is helpful, though steps is not explicitly described (though schema provides default and range).
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 (build), a clear resource (color scale/ramp), and explicitly defines the two variants (sequential from start to end, diverging from start through mid to end). It also mentions the output (steps and a background-contrast audit), making the tool's purpose unambiguous and distinguishing it from the sibling audit/simulate/solve 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?
The description does not provide any guidance on when to use this tool versus the sibling tools (audit_palette, simulate_palette, solve_palette). There is no mention of conditions or alternatives, leaving the agent to infer the appropriate context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_paletteSimulate colorblind visionARead-onlyIdempotentInspect
Show what each color looks like to readers with deuteranopia, protanopia, tritanopia or achromatopsia (published Machado 2009 matrices), so an assistant can describe or render the palette as a colorblind reader sees it.
| Name | Required | Description | Default |
|---|---|---|---|
| modes | No | Vision modes to simulate; default all | |
| colors | Yes | Colors in slot order (CSS syntax) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the description does not need to restate them. It adds meaningful context by citing the Machado 2009 matrices and clarifying the output's purpose (what the palette looks like to colorblind readers), which goes beyond the bare schema.
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 efficient sentence that front-loads the core behavior ('Show what each color looks like') and packs the mode list, algorithm provenance, and intended use case without waste.
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 only two parameters, full schema coverage, and safety-oriented annotations, the description plus schema gives an agent enough context to select and invoke the tool. The only minor gap is that the output shape is not described, but no output schema exists and the phrase 'show what each color looks like' makes the expected result reasonably inferable.
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 100%, so the schema already documents 'colors' as CSS-syntax strings and 'modes' with its enum values and default. The description names the vision modes in prose, which adds minor reinforcement but no new semantic detail beyond the 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 uses a specific verb ('Show what each color looks like') and names the exact resource (palette colors) and the four vision modes, grounding the simulation in published Machado 2009 matrices. This clearly distinguishes it from the sibling tools audit_palette, build_ramp, and solve_palette.
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 states the intended context explicitly: use it when an assistant needs to describe or render a palette as a colorblind reader sees it. It does not explicitly enumerate exclusions or alternatives, but the intended scenario is clear and the simulation purpose is distinguishable from the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_paletteSolve a chart paletteARead-onlyIdempotentInspect
Generate a categorical chart palette of n colors (1-12) that maximizes perceptual separation under normal vision and colorblindness, with the given brand colors locked as anchors in slot order. Returns the palette, the worst pair distances, the engine's relaxation notes, a full accessibility audit against the background, and a link to open it in the app. Honest cap is 6 slots; above that the result says so.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Number of categorical slots | |
| grid | No | Gridline color; defaults to a light or dark gray to match the background | |
| anchors | No | Brand or required colors, kept exactly, in slot order (CSS syntax) | |
| posture | No | kpi: few strong colors; comparative: balanced; exploratory: many muted | comparative |
| background | No | Chart background color | #ffffff |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds rich behavioral detail beyond the read-only and idempotent annotations: it specifies the exact return payload (palette, worst pair distances, relaxation notes, accessibility audit, app link), and it honestly discloses the 6-slot capability cap. This gives the agent a realistic expectation of what will happen, including a non-obvious limitation.
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?
Three sentences with no filler: the purpose, the return values, and the critical limitation. The most important information is front-loaded, and every sentence 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?
The description is complete for a read-only generation tool with no output schema. All five parameters are already documented in the schema, and the description covers outputs, constraints, and behavior. An agent has enough information to invoke it correctly without seeking external clarification.
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 100%, so the baseline is 3. The description does mention the n range and anchor behavior, but these are largely redundant with the schema's own descriptions ('kept exactly, in slot order', minimum/maximum). It does not add meaningful semantics for grid, posture, or background beyond what the schema already provides.
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 opens with a specific verb-resource pair: 'Generate a categorical chart palette', and then specifies the optimization goal (perceptual separation under normal vision and colorblindness) and the anchor constraint. This is clearly distinct from siblings like audit_palette, build_ramp, and simulate_palette.
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 gives clear context for when to use the tool: when you need a new categorical chart palette with brand anchors. It does not explicitly name alternatives or exclusion conditions, but the verb 'generate' and the returned outputs make the intended use unmistakable relative to auditing, building ramps, or simulating.
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.
4 tool updates
- First observed
audit_palette - First observed
build_ramp - First observed
simulate_palette - First observed
solve_palette
Related MCP Connectors
Convert colours between hex, RGB, HSL, OKLCH and CMYK, and compute harmonies.
Generate design systems: OKLCH color palettes, fluid type scales, spacing, shape and icon tokens.
A complete color workflow over MCP: mix, convert, harmonize, measure, and remember palettes.
AI-agent design tools: fonts, font recognition, palettes, color naming, contrast, code, SVG, CSS.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceExtract palettes from images, generate harmonies, gradients, random palettes; Check WCAG and APCA contrast; Suggest nearest passing OkLCH lightness; Simulate color-blindness; Convert and sort colors across formats (hex / RGB / HSL / OkLCH / …)MIT
- AlicenseNot gradedqualityBmaintenanceEnables auditing chart color palettes for colorblindness accessibility by simulating CVD and measuring contrast. Provides tools to audit palettes and design tokens mid-conversation.28 npmMIT
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive color conversion, manipulation, analysis, and WCAG accessibility tools supporting multiple formats (hex, rgb, hsl, oklch, oklab) for design systems and web development.28 npm2MIT
- FlicenseAqualityCmaintenanceChecks whether a color palette or an image is colorblind-safe and names the pairs that collapse, generates colorblind-safe palettes, recolors images as protanopia/deuteranopia/tritanopia, and generates Ishihara-style test plates. Built on the published Machado 2009 + CIEDE2000 method and runs locally over stdio.6-
Glama MCP Gateway
Add one secure layer between your agents and this server.