Skip to main content
Glama

Server Details

Check WCAG color contrast, fix failing colors, build 50-950 palettes. No account.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A4.3/5.0

Scored across 6 tools

Disambiguation4/5

Each tool has a distinct resource+action focus, and the single-pair vs bulk-pair split (check_contrast vs check_pairs) is clearly signposted. The one soft overlap is pick_text_color versus fix_contrast, since both answer 'what text color should I use here' — the descriptions distinguish black/white-only from 'closest color reaching a target', but an agent could still hesitate.

Naming Consistency5/5

Every tool uses the same swatch_ prefix followed by a verb_noun snake_case pattern (check_contrast, convert_color, fix_contrast, make_scale, pick_text_color). The convention is uniform throughout with no style mixing.

Tool Count5/5

Six tools is well within the sweet spot for a focused color/contrast utility. Each tool maps to a distinct user intent — check, batch-check, convert, fix, scale, pick — and none feel redundant padding.

Completeness4/5

The surface covers the core accessibility lifecycle: convert, check single, check bulk, remediate, generate scales, and choose text color. Minor gaps exist around alpha/transparency handling (overlaying semi-transparent colors on a background) and color-blindness simulation, but agents can work around these for most stated use cases.

Available Tools

6 tools
swatch_check_contrastCheck the WCAG contrast of a text and background colorA
Read-onlyIdempotent
Inspect

Use when the user asks whether a color combination is readable or accessible, passes WCAG AA or AAA, or has enough contrast (text on a background, button, badge, link color). Returns the exact contrast ratio, pass or fail for normal text, large text and UI components at AA and AAA, the APCA lightness contrast and a plain note. Colors can be hex, rgb(), hsl() or CSS names. Example: {"foreground": "#777777", "background": "#ffffff"}. Language models cannot compute this reliably, so call it instead of guessing.

NameRequiredDescriptionDefault
backgroundYesBackground color, e.g. "#ffffff".
foregroundYesText (or icon) color, e.g. "#767676" or "rgb(20 20 20)" or "tomato".

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a safe, idempotent, closed-world read, so the safety profile is covered. The description goes further and discloses the return payload in detail: exact contrast ratio, pass/fail for normal text, large text and UI components at both AA and AAA, plus APCA lightness contrast and a plain note. That is meaningful output context not available anywhere in the structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the usage trigger, followed by return contents, accepted formats, an inline example, and a closing rationale for not guessing. Every sentence carries distinct information and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by specifying exactly what comes back. With only two well-documented parameters and annotations covering safety, an agent has everything needed to select and call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3 and the schema already labels foreground as text/icon color and background as the backdrop. The description adds accepted input formats — hex, rgb(), hsl() and CSS color names — extending beyond the schema examples (which omit hsl()), and supplies a worked example object.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — checking the WCAG contrast ratio of a foreground/background color pair — and the title reinforces it. It is clearly distinguishable from siblings like swatch_fix_contrast or swatch_pick_text_color, which act on the result rather than reporting it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger: 'Use when the user asks whether a color combination is readable or accessible, passes WCAG AA or AAA, or has enough contrast,' and enumerates concrete scenarios (text on background, button, badge, link). It also justifies itself against the alternative of the model guessing. What it lacks is a pointer to the sibling to call when the check fails (e.g., swatch_fix_contrast).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

swatch_check_pairsCheck contrast for many color pairs at onceA
Read-onlyIdempotent
Inspect

Use when the user has a whole design system, theme or stylesheet and wants every text and background pair checked for accessibility in one go. Takes up to 50 pairs and returns the ratio and AA and AAA results for each, with a count of failures. Example: {"pairs": [{"foreground": "#777", "background": "#fff", "label": "muted text"}, {"foreground": "#fff", "background": "#ff5a1f", "label": "button"}]}.

NameRequiredDescriptionDefault
pairsYesPairs to check.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds real value beyond that: the 50-pair cap, the returned fields (ratio, AA/AAA results), and a failure count, which tells the agent what to expect from a call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the when-to-use condition, then the behavior, then a compact example. Every sentence carries information; the example is slightly long but directly useful for constructing the nested array.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description explains the return shape (ratio plus AA/AAA per pair and a failure count), and the input is fully covered by schema plus example. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description earns above that by supplying a concrete example payload showing foreground/background/label usage and restating the 50-pair limit. It adds practical meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (check contrast for many color pairs at once) and scopes it to batch/design-system use, which cleanly separates it from the single-pair sibling swatch_check_contrast. An agent can pick it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear triggering condition (user has a design system, theme, or stylesheet and wants every pair checked in one go), which implicitly routes batch work here rather than to the single-pair tool. It stops short of explicitly naming swatch_check_contrast as the alternative for one-off checks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

swatch_convert_colorConvert a color between hex, rgb, hsl and oklchA
Read-onlyIdempotent
Inspect

Use when the user asks to convert a color between hex, RGB, HSL and OKLCH, or asks what a color is called or how light it is. Returns all formats, the relative luminance and the nearest CSS color name. Example: {"color": "#ff5a1f"}. Exact math, so prefer it to converting by hand.

NameRequiredDescriptionDefault
colorYesAny CSS color.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description adds genuinely useful context — that all formats plus relative luminance and nearest CSS name come back, and that the math is exact. With no output schema, it could say more about the shape of the result, but it goes beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: trigger, return contents, and a concrete example, all front-loaded with zero filler. Every clause contributes something an agent would use.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only conversion tool with full schema coverage and no output schema, the description covers input, output contents and the exactness guarantee. Minor gap: it does not describe error behavior for malformed color strings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is documented as "Any CSS color." The inline example {"color": "#ff5a1f"} illustrates an accepted input form, which is a small addition, but most of the meaning is carried by the schema, so the baseline applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb (convert) on a specific resource (a color) and enumerates the formats involved, plus the extra outputs (name, luminance). An agent can distinguish it from siblings like swatch_check_contrast or swatch_make_scale without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit trigger ("Use when the user asks to convert a color...") and covers a second use case (what a color is called, how light it is). It also says to prefer it over manual conversion. It stops short of naming exclusions or pointing at sibling tools for contrast/scale tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

swatch_fix_contrastFind the nearest accessible color that passes contrastA
Read-onlyIdempotent
Inspect

Use when a color pair fails contrast and the user wants the smallest change that makes it pass, such as "make this gray text accessible without changing the look". Returns the closest text color on that background that reaches the target (AA, AAA, AA-large or ui), and separately the closest background, keeping the hue. Example: {"foreground": "#777777", "background": "#ffffff", "target": "AA"}. Returns already_passes if nothing needs to change.

NameRequiredDescriptionDefault
targetNoContrast target. Default AA.
backgroundYesCurrent background color.
foregroundYesCurrent text color.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that this is a read-only, idempotent, non-destructive operation, so the description focuses appropriately on behavior beyond safety. It adds useful return context: the closest text color on the background, separately the closest background while keeping hue, and an already_passes outcome when no change is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the usage condition, then explains the return behavior, provides a compact example, and notes the already_passes case. Every sentence contributes to selecting or correctly invoking the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description sufficiently explains what the tool returns and how the already_passes case works. Combined with full parameter documentation in the schema and the safety annotations, an agent has enough information to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 the three parameters and the target enum. The description reinforces this with an example and mentions target values, but it does not add syntax or semantic detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: find the closest accessible text or background color that passes a contrast target. It also distinguishes the scenario from mere checking by saying it is for when a color pair fails contrast and the user wants the smallest change that makes it pass.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear triggering condition: use when a color pair fails contrast and the user wants the smallest change that makes it pass. However, it does not explicitly name alternatives such as swatch_check_contrast or swatch_pick_text_color, nor does it state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

swatch_make_scaleBuild a 50-950 color palette from one colorA
Read-onlyIdempotent
Inspect

Use when the user asks for a palette, shades, tints, a design-token scale or a Tailwind-style 50 to 950 ramp from a brand color. Returns 11 steps that keep the hue, with the hex, contrast on white and on black, and the best text color for each step. Example: {"color": "#ff5a1f", "name": "brand"}.

NameRequiredDescriptionDefault
nameNoToken name used in the CSS and Tailwind output. Default "brand".
colorYesBase color, e.g. "#ff5a1f".

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive and closed-world, so the safety profile is covered. The description earns credit for adding return composition: 11 steps, hue preserved, hex plus contrast on white and black plus recommended text color per step — meaningful since no output schema exists. It could still note determinism or that the base color is echoed as one of the steps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: trigger conditions first, output shape second, example last. Every sentence carries information an agent needs and nothing is repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, read-only, no-output-schema tool, the description supplies the trigger context, the full return content, and a working example. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 goes beyond by supplying a concrete invocation example with both parameters populated ({"color": "#ff5a1f", "name": "brand"}), which shows the optional name in context. It does not explain format tolerance (hex vs named colors) beyond the schema's own example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (build) and resource (a 50-950 color palette / 11-step ramp) from a single base color, immediately separating it from siblings like swatch_check_contrast or swatch_convert_color.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening clause enumerates concrete user intents ('palette, shades, tints, a design-token scale or a Tailwind-style 50 to 950 ramp') that should trigger this tool, which is strong routing guidance. It stops short of naming the sibling tools or stating when NOT to use it (e.g. single-pair checks belong to swatch_check_pairs).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

swatch_pick_text_colorPick black or white text for a backgroundA
Read-onlyIdempotent
Inspect

Use when the user asks what text color (black or white) to put on a given background, button or brand color so it is readable. Returns the better of black or white with both contrast ratios, the WCAG grade and a softer near-black option. Example: {"background": "#ff5a1f"}.

NameRequiredDescriptionDefault
backgroundYesThe surface color the text sits on.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, and non-destructive, so the safety bar is met. The description adds genuine value by disclosing the return payload — both contrast ratios, the WCAG grade, and a softer near-black alternative — which is important since there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The trigger condition is front-loaded in the first clause, the return shape follows, and a one-line example closes it. No sentence is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, annotation-covered, output-schema-less tool, the description covers trigger, output contents, and input format. An agent has everything needed to call it and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is already documented as "the surface color the text sits on." The inline example {"background": "#ff5a1f"} adds the concrete format expectation (hex string) that the schema does not spell out.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: picks the better of black or white text for a given background, and the title/description align. The narrow scope (black-or-white only, not arbitrary text colors) implicitly separates it from swatch_check_contrast and swatch_fix_contrast, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when the user asks what text color (black or white) to put on a given background, button or brand color" gives a concrete trigger condition with example surfaces. It stops short of stating when NOT to use it or pointing to the sibling contrast tools for other cases.

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.

  1. 6 tool updates
    • First observedswatch_check_contrast
    • First observedswatch_check_pairs
    • First observedswatch_convert_color
    • First observedswatch_fix_contrast
    • First observedswatch_make_scale
    • First observedswatch_pick_text_color

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables checking WCAG color contrast ratios and accessibility compliance between color pairs. Helps determine optimal text colors for backgrounds and validates color combinations meet accessibility standards.
    16 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Extract 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables accurate WCAG color contrast checking and accessibility analysis by calculating actual contrast ratios between color pairs, checking compliance levels, and analyzing luminance values for web accessibility.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to work with color: converting between formats like HEX, OKLCH and Display P3, checking and fixing WCAG 2 and APCA contrast, auditing palettes for accessibility and color blindness, and generating palettes, gradients, scales and design tokens.
    18
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources