Skip to main content
Glama
nmassi

glyphs-mcp

by nmassi

compare_stems

Compare stem thicknesses across glyphs to find inconsistencies. Evaluates each letter against industry standards for optical compensation and flags pass, compensation, inconsistent, or unreliable verdicts.

Instructions

Compare stem thicknesses across multiple glyphs to find inconsistencies.

RECIPE: For a full font audit (stems + color + proportions + spacing), call get_recipe("audit_consistency") — it runs checks in dependency order.

Evaluates each glyph against industry stem patterns for optical compensation. Per-glyph verdicts:

  • pass: stem within expected tolerance (green in GlyphsApp)

  • compensation: known optical compensation like round stems, bowl mass (yellow) — only flagged if OUTSIDE the expected range

  • inconsistent: real issue, deviation exceeds industry norms (red)

  • unreliable: glyph shape can't be reliably measured (orange)

Each glyph is classified into one of 5 groups:

  • straight: pure stems (n,h,m,u,i,j,l,r / H,I,L,T,U,F,E,K,J)

  • round: pure round forms (o,c / O,C,Q)

  • mixed: stem + bowl (b,d,p,q,g,a,e,s / D,B,P,R,G)

  • diagonal: diagonal strokes (v,w,x,y,z,k / V,W,X,Y,Z,A,M,N)

  • optical/figure: special cases (t,f) and numbers (0-9)

Supports uppercase (ref: H), lowercase (ref: n), and figures (ref: H).

If master_id is omitted, analyzes ALL masters and returns per-master results. Glyph color = worst verdict across all masters. If master_id is provided, analyzes that single master only.

Does not modify glyph colors by default. When mark_glyphs=True, marks: Red=inconsistent, Orange=unreliable, Yellow=compensation, Green=pass

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

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

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it delivers: it explicitly states that glyph colors are not modified by default, describes the exact color meaning of each verdict, explains per-master vs. all-master behavior, and clarifies that mark_glyphs only colorizes when explicitly requested. This is unusually transparent about side effects.

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?

The description is long but well-structured with labeled sections (RECIPE, verdicts, groups, master behavior, color behavior). Every major block earns its place for a fairly complex analysis tool; the glyph-class enumeration is detailed but useful. It is slightly longer than strictly necessary, so not a 5.

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 that an output schema exists, return-value documentation is not needed. The description covers inputs, output semantics via verdicts and per-master results, side effects, and the recommended recipe path. An agent has everything needed to select and invoke this tool correctly.

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 description coverage is 0%, so the description must compensate—and it does thoroughly. It explains glyph_names as the list to compare, master_id as optional (empty = all masters), and mark_glyphs as the explicit color-marking switch. This gives agents full semantic understanding beyond the raw JSON 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?

The opening line states a specific verb and resource: 'Compare stem thicknesses across multiple glyphs to find inconsistencies.' This clearly differentiates it from measurement-only or single-glyph tools, and the detailed verdict/group taxonomy reinforces what the tool produces.

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 description explicitly recommends get_recipe('audit_consistency') for a full font audit, giving agents a clear alternative workflow. It also explains when to use master_id vs. omitting it. It stops short of naming sibling tools like measure_stems and saying 'use this instead of that,' but the recipe pointer and mode behavior provide solid guidance.

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