Skip to main content
Glama
nmassi

glyphs-mcp

by nmassi

compare_color

Compare ink density across glyphs to flag inconsistencies, provide per-glyph verdicts, and optionally mark colors for visual audit.

Instructions

Compare typographic color (ink density) across multiple glyphs.

RECIPE: For a full consistency audit, follow get_recipe("audit_consistency").

Finds glyphs that are visually too dark or too light compared to the group. Uses per-glyph expected density ratios from industry patterns — each glyph gets a verdict: pass, compensation, inconsistent, or unreliable.

Reference glyphs: n (lowercase), H (uppercase).

If master_id is omitted, analyzes ALL masters and returns per-master results. Glyph color in GlyphsApp = worst verdict across all masters.

Does not modify glyph colors by default. When mark_glyphs=True, marks:

  • Red (0) = inconsistent density

  • Orange (1) = unreliable measurement

  • Yellow (3) = optical compensation (expected)

  • Green (4) = pass

Args: glyph_names: Glyphs to compare master_id: Optional master ID (empty = all masters) mark_glyphs: Color glyphs by verdict only when explicitly requested

Examples: "Is the color consistent across uppercase?" -> compare_color(["H","I","M","N","O","B","D","E","F","K","L","P","R"])

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
master_idNo
glyph_namesYes
mark_glyphsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully carries the burden of behavioral disclosure. It clearly states that the tool does not modify glyph colors by default, and describes exactly what happens when mark_glyphs=True (verdict-based color assignments). It also explains the verdict categories and per-master aggregation behavior, leaving no ambiguities about side effects or output semantics.

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 structured front-loaded with the core purpose, then a recipe reference, then detailed behavior, then arguments, then a concrete example. No sentence is wasted; even the example adds clarity. Despite length, every part earns its place, and the structure aids quick scanning.

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?

Given the output schema exists (the tool returns per-glyph verdicts, though not detailed in the description), the description still covers all input parameters, default behaviors, side effects, and provides an example. It even references a recipe for a broader audit. Nothing an agent needs to call this correctly is missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate, and it does. Each argument is explained: glyph_names (list of glyphs), master_id (optional, empty = all masters), mark_glyphs (boolean, only colors when explicitly requested). This goes beyond the schema's raw types and defaults, providing actionable meaning.

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 precise verb ('Compare') and resource ('typographic color / ink density across multiple glyphs'), and the example question clarifies its scope. It clearly differentiates from sibling tools like compare_stems (which compares stem weights) by focusing on ink density. The purpose is specific and unambiguous.

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

Usage Guidelines5/5

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

The description provides an explicit alternative for a broader audit via the RECIPE line ('For a full consistency audit, follow get_recipe("audit_consistency")'), and explains the behavior when master_id is omitted (analyzes all masters). The example question demonstrates a typical usage case, giving the agent clear context on when to invoke this tool.

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