Skip to main content
Glama

Vanderpoel Pairing

vanderpoel_pairing
Read-only

Emily Noyes Vanderpoel's documented 'good' dyad/triad hue groupings (Color Problems, 1902, Plate XXXVI 'Good Dyads or Pairs' and Plate XXXVII 'Good Triads'), served from the build artefacts vanderpoel_dyads.json and vanderpoel_triads.json. Snaps an input hex to the nearest of Vanderpoel's eleven real hue-family labels, resolves that hex against the archive, and returns every documented dyad or triad the label belongs to -- each OTHER member carrying its own nearest real archive match (CIEDE2000), with hex_collision disclosed when the match is tied. Unlike hay_contrast, this carries NO proportional ratio -- only Vanderpoel's own categorical 'good' editorial judgement, printed verbatim on the plates. Returns groupings: null for a near-neutral input, where hue is not meaningfully defined, or when the nearest hue-family label is a member of no dyad or triad -- silence is the honest answer, not a forced match. Member names come from a transcriber's digitisation_alt_text (an accessibility description of the plate image), not verified printed captions; every response states this caveat explicitly (member_source_caveat), not just a code comment. The hue positions used to snap an input to a label are a modern matching convention, not a number Vanderpoel printed -- disclosed per response as label_placement_basis.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
hexYesHex colour, e.g. '#CC1A14'.
n_per_memberNoArchive candidates per partner member (1-5). Default 1, which returns a single archive_match object rather than a list.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
reasonNo
coveredNo
groupingsNoDocumented dyads/triads containing the snapped label. Each carries other_member_labels (Vanderpoel's own words), other_members (each with archive_match and hex_collision), judgement, judgement_basis_verbatim, source_plate and its own member_source_caveat. null -- never [] and never a substituted weaker answer -- when nothing is documented.
input_hexNo
input_snapped_toNoVanderpoel hue-family label the input snapped to.
input_archive_matchNoNearest real archive colour to the input itself, or null if nothing is near enough.
member_source_caveatNo
label_placement_basisNoStates that the snap angles are a modern convention, not a number Vanderpoel printed.
degrees_from_nearest_named_hueNo

TDQS

A4.6/5.0
Behavior5/5

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

Even with readOnlyHint=true covering the non-destructive nature, the description adds substantial behavior: it discloses the transcription provenance caveat (member_source_caveat), the modern matching convention for label_placement_basis, tied-match disclosure via hex_collision, and the explicit null behavior instead of forced matches. These are exactly the kind of semantic and honesty-related behaviors an agent cannot infer from annotations or schema.

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 each clause earns its place given the tool's provenance, matching, nulling, and caveat requirements. It is front-loaded with the core operation and source before moving into caveats. A small amount of redundancy ('silence is the honest answer' restates the null behavior) keeps it from a perfect conciseness score.

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?

The description covers the tool's source artefacts, algorithm, output shape (including archive_match and hex_collision), null semantics, transparency caveats, and differentiation from contrast tools. With full parameter coverage, an output schema, and a readOnly annotation, nothing necessary for correct invocation or interpretation is missing. The only minor gap is not naming additional sibling alternatives, but that is not required for completeness.

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 schema already explains hex and n_per_member, including the default's effect on the return shape. The description adds value by explaining how hex is interpreted: it is snapped to one of eleven hue-family labels, resolved against an archive, and nulled for near-neutral inputs. It does not duplicate the schema's parameter docs, but enriches the semantic context.

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 opens with a precise verb-resource pair: it 'returns every documented dyad or triad' from Vanderpoel's plates for a hue label derived from an input hex. It further distinguishes itself from hay_contrast by stating it carries no proportional ratio, isolating its categorical editorial purpose. This is enough for an agent to select it over sibling harmony and contrast tools.

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 gives clear context for when the tool should and should not produce results: it returns null for near-neutral inputs, undefined hue, or unrepresented labels, and explicitly contrasts itself with hay_contrast on the absence of proportional ratios. It does not, however, provide an explicit use-this-when statement or enumerate alternatives beyond that single contrast tool, so it falls just short of full routing guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.8/5.0
Disambiguation2/5

With 88 tools, there is substantial overlap: colour_passport vs colour_dna vs colour_metrics vs colour_cultural_risk are explicit components of the same object; palette_concept vs palette_strict vs palette_generate vs palette_heritage overlap heavily; and four image extraction tools exist (extract_image_colours, image_palette, palette_extact, ingest_image). Although descriptions are detailed and tool_guide exists, an agent will frequently struggle to select the correct tool unambiguously.

Naming Consistency5/5

Nearly all tools follow a consistent snake_case noun_verb or domain-prefixed pattern (colour_*, palette_*, brand_*, archive_*, project_*, accessibility_*). The naming is uniform and predictable, with no mixing of styles or verb conventions across the set.

Tool Count1/5

88 tools is an extreme count for an MCP server. Even honoring the broad domain, the rubric places 50+ at the extreme end, and the high overlap between compound and individual tools suggests many could be consolidated or exposed as sub-resources rather than top-level tools.

Completeness5/5

The tool surface covers the full colour lifecycle: lookup, analysis, palettes, brand systems, accessibility, image extraction, interior design, archival research, reports, PDF generation, and project management. Workflows have clear entry points and few dead ends, and the presence of compound tools further closes integration gaps.

Resources