Skip to main content
Glama

Server Details

Cultural color intelligence. Every colour anchored to a person, a year, and a consequence.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.3/5 across 66 of 66 tools scored. Lowest: 3.3/5.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose, as evidenced by detailed descriptions that differentiate even closely related tools (e.g., accessibility_check vs. accessibility_matrix). The use of category prefixes (accessibility_, archive_, colour_, palette_, etc.) helps agents quickly identify the domain of each tool, reducing ambiguity.

Naming Consistency5/5

Tool names follow a consistent pattern: a category prefix (e.g., accessibility_, archive_, brand_, colour_, palette_) followed by a descriptive verb or noun. This makes the API predictable and easy to navigate. All tools adhere to snake_case, with no mixing of conventions.

Tool Count2/5

At 66 tools, the count is far above the typical range of 3-15 for a well-scoped server. Even considering the broad domain of color intelligence, many tools are overly specialized (e.g., multiple palette generation variants) and could be consolidated. The high number adds unnecessary complexity for LLM agents.

Completeness5/5

The tool set covers the full lifecycle of color intelligence: querying, generating, analyzing, comparing, exporting, and applying colors across domains (branding, ecommerce, interior design, accessibility, cultural context). There are no obvious gaps; every plausible color-related task has a dedicated tool.

Available Tools

85 tools
accessibility_checkCheck WCAG AccessibilityA
Read-only
Inspect

Evaluates contrast for a single foreground/background pair. For palettes or multiple colours, use accessibility_matrix instead, it replaces multiple accessibility_check calls in one response.

ParametersJSON Schema
NameRequiredDescriptionDefault
hex_valYesForeground hex value
backgroundNoBackground hex (default 'FFFFFF')FFFFFF

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotation readOnlyHint:true already establishes this is a safe read operation. Description adds that it only evaluates a single pair (scope limitation) and hints at the tool's relationship to accessibility_matrix. No additional side effects or context are disclosed, but given the annotation and simple tool, this is adequate.

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?

Two sentences, no filler. The first sentence states the primary function, the second sentence gives alternative guidance. Extremely efficient.

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?

Tool is simple, has a readOnly annotation, an output schema, and complete parameter schema. The description covers the tool's purpose and alternative usage. The only missing info (e.g., WCAG version or return format) is likely covered by the output schema and title.

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% as both hex_val and background have descriptions in the input schema. Description adds no additional parameter details beyond what schema already provides. Baseline 3 is appropriate.

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?

Description uses specific verb 'Evaluates' and identifies exact scope: 'contrast for a single foreground/background pair'. It also distinguishes from sibling accessibility_matrix by contrasting single pair vs palettes/multiple colours.

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?

Explicitly states when NOT to use: 'For palettes or multiple colours, use accessibility_matrix instead', and explains benefit: 'it replaces multiple accessibility_check calls in one response'. This is clear alternative guidance.

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

accessibility_fontFont Colour AdvisorA
Read-only
Inspect

Given a background hex and a palette of candidate foreground colours, return them ranked by contrast ratio with WCAG grades and specific recommendations for body text, large text, and UI components.

ParametersJSON Schema
NameRequiredDescriptionDefault
paletteYesCandidate foreground hex values
backgroundYesBackground hex value

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds output details (ranking, WCAG grades, recommendations) but no additional behavioral caveats such as auth requirements or side effects, and it does not contradict the annotation.

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 one well-structured sentence with no filler. Each clause contributes the input, the action, and the output format.

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 only two well-described parameters, a readOnly annotation, and an output schema, the description fully covers tool invocation. It clearly states what the tool accepts and what it returns, leaving no ambiguity for an agent.

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 descriptions cover 100% of the two parameters, so the baseline is 3. The description restates background and palette as hex values but adds no new parameter-level semantics beyond what the schema already 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 opens with 'Given a background hex and a palette of candidate foreground colours, return them ranked by contrast ratio' – a clear verb, resource, and output. The WCAG grades and text-type recommendations distinguish it from broader siblings like accessibility_check or colour_compare.

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 'Given a background hex and a palette' phrasing establishes a concrete use case: selecting accessible foreground colors for body, large, and UI text. It does not name alternatives or exclusions, so it stops short of the most explicit guidance.

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

accessibility_matrixFull Palette Accessibility MatrixA
Read-only
Inspect

Accept a palette array and return every foreground/background combination with contrast ratio, AA normal, AA large, AAA normal, AAA large pass/fail grades, and a summary. Use this instead of calling accessibility_check multiple times for a palette.

ParametersJSON Schema
NameRequiredDescriptionDefault
paletteYesArray of hex values e.g. ['#D4A829', '#1A5C6E', '#0F2D6B', '#0A0A0B']

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The readOnlyHint annotation already signals a safe read operation, and the description adds valuable output behavior: what combinations are computed, which contrast grades (AA/AAA normal/large) are included, and that a summary is returned. It does not cover edge cases like invalid hex values, but the schema provides type/format coverage, so the marginal disclosure is solid.

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?

Two concise sentences: the first states the action and output, the second captures the key usage decision. Every word contributes without redundancy, making it easy to parse for an agent.

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 tool has one parameter, a 100% schema-covered parameter description, an output schema, and read-only annotations, the description provides all necessary context: what it computes, the output structure, and when to choose it. It is fully adequate for an agent to invoke 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?

The schema description covers the parameter fully (array of hex values with an example), so the baseline is 3 even without extra detail in the description. The description only says 'palette array,' adding no new semantics beyond the schema, so no increase.

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 specific action ('Accept a palette array and return every foreground/background combination') and clearly distinguishes itself from the sibling tool accessibility_check by stating it computes a full matrix rather than single checks. This is a concrete verb+resource pairing with clear scope.

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?

It explicitly tells the agent when to use this tool: 'Use this instead of calling accessibility_check multiple times for a palette.' This names the alternative and gives a reason (avoiding multiple calls), which is strong guidance for tool selection.

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

accessibility_rulesAccessibility Usage RulesA
Read-only
Inspect

Convert a palette WCAG matrix into actionable design-system rules. Returns safe pairs, AA-only pairs, large-text-only pairs, decorative-only pairs, best text colour per background, and component usage rules. Deterministic, no LLM cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
paletteYesArray of hex values

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The description adds meaningful behavioral context beyond the readOnlyHint annotation: it is deterministic, has no LLM cost, and returns a predefined set of rule categories. This helps the agent anticipate the tool's performance and output, though it does not discuss edge cases or failure modes. No contradiction with 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?

The description is two sentences, front-loaded with the primary action and output list. The final note 'Deterministic, no LLM cost' is concise and provides useful selection information without padding. Every word earns its place.

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?

Given the tool's simple input (one array) and the presence of an output schema, the description sufficiently covers the purpose and behavior, including output categories. It lacks an example or clarification of the 'WCAG matrix' phrasing, but the combination of schema and description is reasonably complete for an agent to select and invoke the tool.

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?

The input schema already fully describes the only parameter ('palette' as an array of hex values) with 100% coverage. The description adds little beyond the ambiguous phrase 'palette WCAG matrix', which might confuse the input format. Since the schema carries the parameter meaning, a baseline of 3 is appropriate.

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 clearly states the tool's function with a specific verb ('Convert') and resource ('a palette WCAG matrix'), and enumerates the distinct output types (safe pairs, AA-only pairs, etc.). This distinguishes it from sibling tools like accessibility_matrix, which likely produces the matrix rather than the rules.

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 implies when to use the tool: when you have a palette and need actionable design-system rules. It also adds a decision factor with 'Deterministic, no LLM cost', suggesting it is a reliable and low-cost option. However, it does not explicitly mention when not to use it or name alternative tools, so it stops short of a full when/when-not guide.

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

accessibility_simulateSimulate Colour BlindnessA
Read-only
Inspect

Return simulated hex values for protanopia, deuteranopia, and tritanopia using the Brettel-Vienot-Mollon model.

ParametersJSON Schema
NameRequiredDescriptionDefault
hex_valYesHex value e.g. '#BE0032'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The annotation readOnlyHint=true is consistent with 'Return simulated hex values', so there is no contradiction. The description adds behavioral context by naming the Brettel-Vienot-Mollon model and specifying the three simulated types, providing more insight than the annotation alone.

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 a single, front-loaded sentence that conveys the action, the specific output, and the method. No fluff or repetition, every word earns its place.

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 tool's low complexity (one parameter, output schema provided), the description is complete. It explains what it returns, the model used, and the three color blindness types. No critical context is missing.

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% for the single parameter 'hex_val', so the baseline is 3. The description does not add additional parameter semantics beyond what the schema already provides, but it doesn't need to.

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 clearly states a specific verb ('Return') and a specific resource (simulated hex values for three types of color blindness), using a named model. It distinguishes itself from sibling tools by focusing on simulation output rather than checking or comparing accessibility features.

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

Usage Guidelines3/5

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

The description implies usage for simulating color blindness hex values but does not explicitly state when to use it over alternative tools like accessibility_check or colour_compare. There is no mention of exclusions or alternative tools, so the guidance is merely implied.

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

agent_briefGenerate Colour Direction for Another AIA
Read-only
Inspect

Generate a complete colour direction package for another AI agent or image generation model. Fetches a historically grounded archive palette from the concept, then produces: an agent brief (colour direction in prose), colour tokens with hex values and roles, a model-specific image generation prompt, a negative prompt, and lighting notes. Supports midjourney, flux, dalle, stable_diffusion. Example: task='luxury hotel bedroom', concept='Ottoman winter luxury', model='midjourney'. Use this to make Colour Memory the colour layer for other AI systems. Archive-grounded retrieval is evidence-filtered: entries with claim_role='reject' (no primary source and no period connection), stub entries, blank-source entries, and entries below minimum_claim_strength are never selected. If fewer than palette_size colours pass these filters, the call returns an honest incomplete result (ok:false, error_code:INSUFFICIENT_EVIDENCE_ELIGIBLE_PALETTE) rather than padding the palette with rejected or weak evidence. Negative constraints (from 'avoid' or negation phrases in concept like 'must never', 'without', 'not') are also applied to retrieval, not just flagged afterward -- a brief that says a wedding must never feel funereal will not surface mourning-themed colours in the first place. locked_palette calls skip evidence filtering entirely since the caller is supplying colours directly, not requesting archive evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesWhat the other AI needs to generate e.g. 'luxury hotel bedroom image'
avoidNoOptional: terms/associations to keep out of retrieval e.g. ['mourning', 'funeral black']. Affects retrieval directly, not just post-hoc flagging.
modelNoTarget model: midjourney, flux, dalle, stable_diffusionmidjourney
archiveNoOptional: restrict palette query to this archive e.g. georgianpleasures, japan, china
conceptYesColour concept to draw from e.g. 'Ottoman winter luxury', 'Victorian mourning'. Negation phrases ('must never', 'without', 'not X') are extracted and kept out of retrieval.
style_notesNoOptional: additional style direction e.g. 'matte surfaces only', 'no gold'
palette_sizeNoNumber of archive colours to include (default 5, max 8)
locked_paletteNoOptional: list of hex values to use exclusively. When provided, no archive query is run and no evidence filtering applies — these exact colours are used as-is. Prevents palette drift.
allowed_archivesNoOptional: list of allowed archive names. Query restricted to these archives only.
minimum_claim_strengthNoEvidence-grade floor for archive-grounded retrieval (default 'C'). Grade controls documentary strength; claim_role='reject' entries are excluded regardless of how low this is set. Not applied to locked_palette calls.C

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

The description goes far beyond the readOnlyHint annotation, detailing evidence-filtering rules (exclusion of reject/stub/blank-source entries), the honest incomplete-result behavior (ok:false, error_code), the application of negative constraints at retrieval time, and special handling for locked_palette. This gives the agent a strong behavioral model.

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 longer than minimal, but every sentence carries distinct information: purpose, deliverable components, supported models, example, use case, filtering rules, failure handling, negative constraints, and locked_palette behavior. It is well-structured and front-loaded, though some sentences paraphrase schema notes slightly.

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 tool's complexity (10 params, multiple filtering behaviors, locked_palette mode, failure modes), the description is remarkably complete. It covers retrieval rules, evidence quality floors, negative constraints, special-case behavior, and model support. The presence of an output schema means return-value documentation is unnecessary, so no additional info 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?

Although the schema already describes all 10 parameters at 100% coverage, the description adds significant cross-parameter semantics: how 'avoid' and negation phrases in 'concept' affect retrieval, how 'locked_palette' bypasses evidence filtering, how 'minimum_claim_strength' interacts with 'claim_role', and how palette_size relates to the honest failure mode. This goes 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 opens with a specific verb and resource: 'Generate a complete colour direction package for another AI agent or image generation model.' It clearly distinguishes itself from siblings like palette_generate or image_brief by specifying the cross-AI delivery format, including agent brief, tokens, prompt, negative prompt, and lighting notes.

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 provides a clear use case ('Use this to make Colour Memory the colour layer for other AI systems') and an explicit example ('task='luxury hotel bedroom', concept='Ottoman winter luxury', model='midjourney''). However, it does not name alternatives or explicitly say when not to use this tool, so it stops short of full exclusion guidance.

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

agent_verifyVerify AI Image Generation Colour FidelityA
Read-only
Inspect

Verify that an AI-generated image actually used the colours specified in an agent_brief call. Supply the generated image (URL or base64) and the target palette from agent_brief colour_tokens. Returns a fidelity score 0-100, dE2000 distance per colour, match quality per colour (accurate/acceptable/drifted/ignored), and an overall verdict. Use after agent_brief + image generation to close the colour loop.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_urlNoURL of the generated image
image_base64NoBase64 encoded generated image
target_paletteYesHex values from agent_brief colour_tokens e.g. ['#ED9921', '#E29937']

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations provide readOnlyHint=true; description does not contradict. Adds behavioral context by detailing output (fidelity score 0-100, dE2000 distance, match quality, verdict) and input flexibility (URL or base64), going beyond the bare annotation.

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?

Two sentences, each earning its place: first states purpose, second covers usage, inputs, outputs, and workflow position. Front-loaded and free of redundant phrasing.

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?

Output schema exists, so return values need no description. The description covers when to use it, what inputs to supply, what it returns, and where it fits in the agent_brief→image generation workflow. Complete for a read-only verification tool.

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 has 100% coverage with descriptions for all three parameters. Description reinforces that target_palette comes from agent_brief colour_tokens, but adds no syntax or format details beyond what the schema already 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?

Specific verb 'Verify' + resource 'AI-generated image' + scope 'colours specified in an agent_brief call'. Clearly distinguishes from siblings like colour_compare or palette_verdict by referencing agent_brief and the fidelity scoring workflow.

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?

Explicitly states 'Use after agent_brief + image generation to close the colour loop' – gives clear situational context. Does not name alternatives or exclusions, but the workflow context is unambiguous.

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

archive_clicheBreak a Colour ClicheA
Read-only
Inspect

Find the most surprising archive colour for a concept and generate a memorable one-liner subverting the obvious expectation. Supply a concept (e.g. 'love', 'grief', 'luxury', 'power') and optionally the expected colour (e.g. 'red' for love). The archive finds the contradiction and Claude writes the one-liner, short story, and tweet. Example: love + red returns Shakespeare's dark green with 'Love is not red. It is the green of someone still waiting in a field.' Use this for public-facing demos, content, and brand storytelling.

ParametersJSON Schema
NameRequiredDescriptionDefault
conceptYesColour concept to subvert e.g. 'love', 'grief', 'luxury', 'betrayal', 'power'
n_resultsNoNumber of archive entries to search (default 8)
expected_colourNoOptional: the cliche colour to contradict e.g. 'red', '#FF0000'. Hex or colour name.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With readOnlyHint=true, the annotation provides the safety profile. The description adds process context: the archive finds the contradiction and Claude writes the outputs, including the specific output types (one-liner, short story, tweet) and an example. No destructive or side-effect behavior is relevant, so the description goes beyond the annotation.

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 two sentences plus an illustrative example. It front-loads the core purpose, then gives instructions and use cases. Every sentence earns its place with no redundancy, making it highly concise and well-structured.

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 tool's moderate complexity, the description covers purpose, usage, parameters, example output, and target use cases. The presence of an output schema handles return values, so the description is complete 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.

Parameters3/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 reinforces parameter roles with examples (e.g., 'love' + 'red' returns dark green), but it doesn't add much beyond the schema's own descriptions. It clarifies the interaction between concept and expected_colour, earning a moderate score.

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 clearly states a specific verb+resource: 'Find the most surprising archive colour for a concept and generate a memorable one-liner subverting the obvious expectation.' It also provides concrete outputs (one-liner, short story, tweet) and an example, which distinguishes it from sibling tools like archive_search or colour_story.

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 explicit use cases: 'Use this for public-facing demos, content, and brand storytelling.' It does not list alternatives or exclusion criteria, but the context is clear enough for an agent to choose this tool over others.

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

archive_coverage_gapCoverage Gap ReportA
Read-only
Inspect

Given a list of themes, report which are well-evidenced in the archive and which are under-evidenced or missing. Returns a coverage matrix: for each theme, entries found, coverage grade (strong/moderate/weak/missing), best match with claim strength, and what source type would be needed to improve coverage. Use this BEFORE building an archive_report_brief or brief_forensic to know where the evidence is strong and where gaps will appear. Prevents building beautiful reports that quietly ignore half the brief.

ParametersJSON Schema
NameRequiredDescriptionDefault
themesYesThemes to check e.g. ['opium', 'gin', 'gambling', 'racing']
archivesNoOptional archives to search e.g. ['EIC', 'Dickens']

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

The readOnlyHint annotation already establishes a safe read operation, and the description does not contradict it. The description adds some behavioral context about preventing reports that ignore evidence gaps, but it mostly reiterates the output structure (coverage matrix, source type) rather than disclosing side effects, permissions, or limitations.

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 three sentences, front-loaded with the core action, followed by output details and a practical usage tip. Every sentence earns its place with no redundant or promotional language.

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?

The description covers purpose, output format, and workflow timing concisely, while the annotation and complete schema handle safety and parameters. It lacks only an explicit contrast with the similar sibling archive_evidence_gap, but that is not essential for using the tool 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?

The input schema has 100% coverage with clear descriptions for both 'themes' and 'archives', including examples. The description only restates 'a list of themes' and does not add meaning beyond what the schema already 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 uses a specific verb ('report') with a clear resource ('coverage gap in the archive') and details the output (coverage matrix, grades, claim strength). It differentiates itself from sibling tools by focusing on per-theme evidence coverage and explicitly referencing downstream tools like archive_report_brief and brief_forensic.

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 states when to use the tool: 'Use this BEFORE building an archive_report_brief or brief_forensic'. This provides a clear workflow context, though it does not mention when not to use it or compare it directly with alternative tools.

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

archive_cultural_anachronismAnachronism GuardA
Read-only
Inspect

Check a list of colour entries for anachronism risk. Detects whether the primary source date falls outside the requested period, whether the archive is a known modern source (RacingSilks, FootballStrips), and returns a period_relevance score and safe phrasing. Essential for historical documents: prevents a 2011 Jockey Club racing silk registration being presented as Georgian evidence. Returns anachronism_risk (none/low/medium/elevated/high), period_relevance score 0-1, safe_phrasing, and unsafe_phrasing for each entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
entriesYesColour entries to check
period_endNoEnd year e.g. 1830
period_startNoStart year e.g. 1714
target_periodNoPeriod description e.g. 'Georgian England 1714-1830'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With readOnlyHint=true, the description appropriately adds detail beyond the annotation: the specific checks (date range, known modern archives) and the return fields (risk, relevance, safe/unsafe phrasing). The concrete example illustrates typical behavior, though it does not disclose edge cases or limitations.

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 sentences, front-loaded with the primary purpose, followed by the detection logic and output summary. Every sentence contributes meaning, with no redundancy or filler.

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 tool has an output schema and readOnlyHint annotation. The description further explains the output values (anachronism_risk, period_relevance, safe_phrasing, unsafe_phrasing) and the practical scenario, making it sufficiently complete for an AI agent to understand when and how to invoke it.

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% for top-level parameters, so the baseline is 3. The description mentions 'primary source date' and 'archive', which maps to entry fields, but it does not add meaningful semantic detail beyond the schema's own descriptions (e.g., 'Start year e.g. 1714').

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 specific verb+resource ('Check a list of colour entries') and names the exact function (anachronism risk). The concrete example of a 2011 racing silk being presented as Georgian evidence clearly distinguishes this from sibling tools like archive_provenance or colour_cultural_risk.

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 phrase 'Essential for historical documents' provides clear contextual guidance on when to use the tool. It does not explicitly mention alternatives or exclusions, but the focus on anachronism detection and the illustrative scenario make the intended use obvious.

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

archive_evidence_gapEvidence Gap AnalysisA
Read-only
Inspect

Given a hex value and a proposed claim about it, return whether the archive supports that claim, what is missing, what kind of source would be needed, and safe agent wording. This is Colour Memory's anti-hallucination endpoint. It turns the absence of evidence into a forensic finding rather than a gap to fill with invention. Example: hex #4A535C + proposed claim 'cyanosis in a death chamber' returns: nearest archive support, support level (supported/partial/unsupported), what source type is needed, and safe wording for the agent to use. Essential for museum, documentary, editorial, legal, and forensic workflows.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex colour to analyse e.g. '#4A535C'
archiveNoOptional archive to search e.g. 'DarkHistory'
n_candidatesNoNumber of archive candidates to return (default 5)
proposed_claimYesWhat you want to say about this colour e.g. 'cyanosis in a death chamber'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds valuable behavioral context: it 'turns the absence of evidence into a forensic finding rather than a gap to fill with invention' and mentions the output includes 'safe wording for the agent to use.' This goes beyond the annotation without contradicting it.

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 primary action and outcome, then provides a concrete example and use cases. Every sentence earns its place; it is detailed but not bloated.

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 description does not need to enumerate return fields, but it does anyway in the example. Combined with the annotations, schema descriptions for all 4 parameters, and clear workflow contexts, this description is fully 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.

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. The description adds a concrete example (![hex] #4A535C + 'cyanosis in a death chamber') and explains what each major parameter contributes (hex and proposed_claim) and the nature of the response. This is more than the schema provides alone.

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 uses a specific verb-resource pairing: 'Given a hex value and a proposed claim about it, return whether the archive supports that claim...' This clearly distinguishes it from siblings like archive_search, archive_coverage_gap, and colour_forensics by framing it as an anti-hallucination endpoint that produces 'safe agent wording.'

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 explicitly states when to use: 'Essential for museum, documentary, editorial, legal, and forensic workflows.' It does not mention when not to use it or explicitly name alternatives, but the context and example make the intended use clear.

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

archive_provenanceExplain a Colour's ProvenanceA
Read-only
Inspect

Explains the provenance of a named archive colour: documented fact vs computational derivation vs cultural interpretation, with confidence and citation format. This is one component of colour_passport, but also a standalone research tool for deep provenance work (museum, documentary, editorial). Use colour_passport for a general profile; call this directly for research workflows needing full source-chain detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
colour_nameYesName of the archive colour e.g. 'Love Idleness', 'Woad Vat Blue', 'Murex Luxury'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds meaningful behavioral context by describing the type of output (provenance categories, confidence, citation format) and that it is a research tool, going beyond the annotation.

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 two sentences, front-loaded with the core purpose and immediately followed by usage differentiation. No filler or redundancy.

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?

With an output schema present and clear usage guidance, the description covers purpose, sibling differentiation, and output characteristics. It is complete for a read-only research tool of this complexity.

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% for the single parameter, which includes examples like 'Love Idleness'. The description does not add param-specific semantics, but the schema fully handles them, so baseline 3 is appropriate.

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 ('Explains'), a specific resource ('provenance of a named archive colour'), and distinct output elements (documented fact vs computational derivation vs cultural interpretation, confidence, citation format). It also differentiates itself from the sibling tool colour_passport by noting it is a component but also a standalone research tool.

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 explicitly directs usage: 'Use colour_passport for a general profile; call this directly for research workflows needing full source-chain detail.' This provides clear when-to-use guidance and names the alternative tool.

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

archive_report_briefArchive Report BriefA
Read-only
Inspect

One-call complete archive research package for a document, PDF, or editorial brief. Input: title, audience, themes, archives to draw from, things to avoid, number of colours. Output: ranked colour cards with full provenance, story order, source confidence flags, pull quote, CTA line, CSS tokens, image prompt for Midjourney/Flux/DALLE, editorial argument, weakest and strongest entries identified. Replaces chaining archive_search + get_colour_card + cliche_breaker + agent_brief separately. Two Claude calls total. This is the endpoint for building premium archive documents, PDFs, briefs, and editorial content. Use this first for any document workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
avoidNoTopics to suppress e.g. ['arsenic wallpaper', 'Wedgwood blue']
titleNoDocument title e.g. 'The Colours of Georgian Power'
themesYesResearch themes e.g. ['racing silks', 'EIC trade', 'Keats']
archivesNoArchives to search e.g. ['RacingSilks', 'EIC', 'Keats', 'Dickens']
audienceNoTarget audience e.g. 'serious Georgian collector'
n_coloursNoNumber of colours to return (default 8, max 16)
period_endNoHard period gate: exclude entries dated after this year. Default 9999 (no upper bound).
period_startNoHard period gate: exclude entries dated before this year. Default 0 (no lower bound).
allow_partialNoIf false (default), returning fewer cards than requested sets ok=false with error_code INSUFFICIENT_PALETTE_RESULTS instead of a silent short 'success'. Set true to accept a short result.
output_formatNoReserved for future use -- currently accepted but has no effect on the response shape (the endpoint always returns the full report).
strict_sourcesNoOnly return entries with named primary sources (default true)
family_card_modeNoHow near-identical cultivars/records are presented. 'auto' (default): current behaviour, groups into family cards above the standard ΔE threshold. 'always': widens the clustering threshold so more near-duplicates group into family cards. 'conservative': suppresses family cards over max_family_card_share of the deck, instead promoting one hero cultivar per suppressed family with the rest folded into that card's also_supported_by list (never dissolved back into separate near-duplicate swatches).
confidence_thresholdNoMinimum confidence score (0.0-1.0) for an entry to be included. Default 0.5 filters out weakly-matched stubs.
max_family_card_shareNoConservative mode only: maximum fraction (0.0-1.0, default 0.5) of presented cards that may be family cards before excess families are suppressed to hero cards. Ignored in auto/always modes.
minimum_claim_strengthNoHard evidence-grade floor: A, B, C, D, or E. Never silently relaxed.
strict_semantic_colourNoDefault false. When true, excludes entries whose quoted colour language contradicts their stored hex (e.g. a record naming 'Prussian blue' whose hex is actually a pale cream) rather than presenting them as normal evidence. Never alters hex values, only excludes flagged ones.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context beyond that: 'Two Claude calls total' (resource usage), hard period gates, strict evidence floors ('Never silently relaxed'), and error handling for insufficient results (INSUFFICIENT_PALETTE_RESULTS). It contradicts nothing in 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.

Conciseness4/5

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

The description is a single dense paragraph that front-loads the core value proposition. It is fairly long, but each sentence adds necessary context (output list, usage priority, alternatives). The output list may duplicate what the output schema already conveys, slightly bloating the text, but it remains well-structured.

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?

Given the tool's complexity (16 parameters, output schema, minimal annotations), the description provides a complete high-level orientation: purpose, expected outputs, usage guidance, and alternatives. Detailed parameter behavior is left to the exhaustive schema, so there are no critical gaps for an agent to select and call the tool effectively.

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% with detailed per-parameter descriptions. The tool description only paraphrases a subset of parameters (title, audience, themes, archives, avoid, n_colours) without adding new semantics or format details beyond what the schema already provides, so the baseline 3 is appropriate.

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 specific, action-oriented claim: 'One-call complete archive research package for a document, PDF, or editorial brief.' It clearly differentiates from siblings by explicitly stating it replaces chaining archive_search + get_colour_card + cliche_breaker + agent_brief, making the tool's unique value unmistakable.

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?

It gives explicit when-to-use instruction: 'Use this first for any document workflow.' It also names the alternatives it replaces, providing clear guidance on when this tool should be selected over the pointed-to sibling tools.

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

brand_asset_packBrand Asset Pack ExportA
Read-only
Inspect

Complete brand asset pack. Returns CSS variables, Tailwind config, Figma tokens JSON, citation cards, and a Markdown brand guide. Everything a brand team needs to ship. Deterministic. No LLM cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoTarget marketglobal
mediumNodigital | print | bothdigital
paletteYesHex values
use_caseNoUse casebrand identity
brand_categoryNoOptional brand name or category

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already provide readOnlyHint=true, so the safety profile is covered. The description adds valuable behavioral details: 'Deterministic. No LLM cost.' and enumerates the output types, providing context beyond the annotation without contradicting it.

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 compact and front-loaded. The first sentence states the purpose, the second enumerates deliverables, and the third adds a key behavioral note. Every sentence adds value with no filler.

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?

Given the output schema exists, the description need not detail return formatting. It provides a clear deliverable list and behavioral notes. However, it could clarify how parameters influence the pack (e.g., market or medium variants), which would make it more complete for a complex tool.

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 fully documents all five parameters. The description does not add parameter-specific semantics beyond listing the outputs, which may implicitly depend on parameters like 'medium' or 'market', but this is not stated. Baseline 3 is appropriate.

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 explicitly states the tool's purpose: 'Complete brand asset pack' and lists the specific returned artifacts (CSS variables, Tailwind config, Figma tokens JSON, citation cards, Markdown brand guide). This clearly differentiates it from more specialized siblings like palette_export or palette_pdf.

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

Usage Guidelines3/5

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

The phrase 'Everything a brand team needs to ship' implies this is the all-in-one export tool, but it does not explicitly name alternatives or state when not to use it. There are many sibling export tools, and the description offers no direct comparison or exclusion criteria.

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

brand_auditComplete Brand Colour AuditA
Read-only
Inspect

Fast, fully deterministic brand colour audit. Accepts a palette array plus market, use_case, medium and brand_category. COMPUTED SYNCHRONOUSLY, no model call of any kind: colour roles with archive names, the full WCAG accessibility matrix, cultural risk per colour, CSS variables, Tailwind config, design tokens and production notes. NOT COMPUTED HERE: palette interpretation -- the verdict, its score and the written narrative copy. Those require an LLM call and used to be made inside this tool without saying so, which put a normal five-colour audit at 43-45s. The palette_verdict and verdict_copy keys are still returned, carrying interpretation_status='not_computed' plus a ready-to-send palette_verdict.continuation.arguments -- forward those verbatim to the palette_verdict tool to get the interpretation. Replaces chaining accessibility_matrix + cultural_risk_assessment; palette_verdict is now an explicit, optional second call rather than a hidden one.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoTarget market e.g. 'UK luxury', 'global', 'Japan'global
mediumNodigital | print | bothdigital
paletteYesArray of hex values e.g. ['#D4A829', '#1A5C6E', '#0F2D6B', '#0A0A0B']
use_caseNoUse case e.g. 'brand identity', 'packaging', 'app UI'brand identity
brand_categoryNoOptional brand category e.g. 'developer tool', 'food', 'fashion'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

The description adds crucial behavioral context beyond the readOnlyHint annotation: it is synchronous, uses no model call, and previously made a hidden LLM call. It discloses the exact output keys, the 'not_computed' status, and the continuation mechanism, which is far more transparent than the annotation alone.

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 longer than average but every sentence earns its place by explaining scope, performance implications, hidden behavior, and follow-up instructions. It is front-loaded with the main purpose and deterministic nature, though the final 'Replaces...' sentence could be tightened.

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 tool's complexity and the presence of an output schema, the description is remarkably complete: it explains what is computed, what is deferred, how to continue the workflow, and how it relates to sibling tools. The agent can confidently decide whether to call this tool and what to do with the result.

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?

The input schema already has 100% description coverage for all five parameters, so the baseline is appropriate. The description lists the parameters but does not add new semantic detail beyond the schema; it only contextualizes their role within the audit computation.

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: 'brand colour audit' with a clear deterministic scope. It distinguishes itself from siblings by explicitly explaining that it replaces chaining accessibility_matrix + cultural_risk_assessment and defers interpretation to palette_verdict.

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?

It explicitly says what is computed and what is NOT computed, and instructs the agent to forward continuation arguments to the palette_verdict tool. It also names the alternative (palette_verdict) and clarifies that interpretation is a separate, optional second call rather than hidden.

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

brand_collisionBrand Colour Collision CheckA
Read-only
Inspect

Can this brand own this colour against these competitors in this market? Input: brand hex, brand name, competitor hexes and names, market, region. Returns CIEDE2000 distance to each competitor, archive context for each colour, a distinctiveness score (0-100), an ownership verdict (strong/viable/contested/collision), a plain-English verdict summary, and a strategic recommendation. Use before committing to a brand colour in a competitive market. Replaces manual colour distance checks and competitor palette analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoMarket context e.g. 'UK luxury food retail'
regionNoRegion code e.g. 'GB', 'UAE', 'JP'
brand_hexYesBrand hero colour hex e.g. '#D4A829'
brand_nameNoBrand name e.g. 'Fortnum and Mason'
competitor_hexesNoList of competitor hex colours
competitor_namesNoCompetitor names matching hex order

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The annotations include readOnlyHint=true, establishing a safe read-only operation. The description adds valuable behavioral detail beyond that: it names the specific algorithm (CIEDE2000), the output components (distinctiveness score, ownership verdict, plain-English summary, strategic recommendation), and the verdict value set. This gives the agent a clear picture of what to expect without contradicting the annotation.

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 compact yet information-dense: a leading question, a short input list, a structured output list, and a usage sentence. Every sentence earns its place and the text is front-loaded with the tool's purpose. It is appropriately sized for a tool with this many inputs and outputs.

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 (so return values are already structurally specified) and annotations declare readOnlyHint, the description covers the remaining context: what the tool does, when to use it, what inputs are expected, and what kind of output to anticipate. No critical contextual gap is apparent for selection and invocation.

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 explains all six parameters. The description simply enumerates the parameter categories ('brand hex, brand name, competitor hexes and names, market, region') without adding new syntactic or semantic detail beyond the schema. The baseline of 3 is appropriate since the description does not deepens parameter understanding.

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 the core question—'Can this brand own this colour against these competitors in this market?'—and clearly lists the inputs and outputs, including CIEDE2000 distance, verdict, and recommendation. It distinguishes itself from sibling tools by framing the purpose as brand ownership in a competitive market and explicitly stating it replaces manual colour distance checks and competitor palette analysis.

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 provides clear usage context: 'Use before committing to a brand colour in a competitive market' and notes it replaces manual colour distance checks and competitor palette analysis. However, it does not explicitly mention when not to use it or alternative sibling tools, so it stops short of full exclusionary guidance.

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

brand_guideline_claimsResolve Brand Colour Standard Claim DetailA
Read-onlyIdempotent
Inspect

Resolves claim_id values (returned inline on every colour by brand_guideline_specify and brand_guideline_select) into their full claim record: source title/locator/citation, the exact permitted claim text, do_not_say restrictions, and claim_role (anchor/analogue/reject). Read-only -- reads the already-persisted, frozen brand_ref snapshot, never re-runs generation or mutates anything. Omit claim_ids to return every claim on the brand_ref. Accepts exactly one of brand_ref or project_id, same as brand_guideline_pdf.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_refNoThe brand_ref returned by brand_guideline_specify or brand_guideline_select.
claim_idsNoWhich claim_id values to resolve. Omit (or pass an empty list) to return every claim on the brand_ref.
project_idNoAlternative to brand_ref for an authenticated (keyed) brand project. Requires the same API key that created it.
project_versionNoResolve claims against this specific immutable version instead of the project's current version.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already declare readOnly, idempotent, and non-destructive. The description adds value by explaining it reads a 'frozen brand_ref snapshot' and 'never re-runs generation or mutates anything,' plus the behavior of omitting claim_ids. This goes beyond the annotation hints.

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 sentences, front-loaded with the primary action, each sentence earning its place. It's concise but information-dense, with no filler.

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?

With an output schema present and full parameter coverage, the description doesn't need return-value detail. It covers behavioral guarantees, input constraints, and sibling relationships, making it complete for the tool's complexity.

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 baseline is 3. The description adds meaning by clarifying that claim_ids are 'returned inline on every colour' by sibling tools, and that brand_ref/project_id are mutually exclusive ('exactly one'). This is useful context beyond the schema definitions.

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 specific verb and resource: 'Resolves claim_id values ... into their full claim record.' It clearly lists what the record contains and references sibling tools (brand_guideline_specify/select) that produce the claim_ids, distinguishing it from related 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 provides clear context: use with claim_ids from brand_guideline_specify/select, omit to get all claims, and accept brand_ref or project_id exactly one, same as brand_guideline_pdf. It doesn't explicitly state when not to use it, but the guidance is sufficiently specific.

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

brand_guideline_pdfRender Brand Colour Standard PDFA
Read-onlyIdempotent
Inspect

Renders a client-facing brand colour standard from an existing brand_ref. The document covers the direction carried forward and its assessment, the colour system in proportion, the argument for the palette, packaging and digital application, a full pairwise WCAG accessibility matrix computed upstream (never hand-drawn examples), and a provenance and evidence register in which every claim is bound to the colour it belongs to. Page count is not fixed: sections that have nothing real to say are omitted rather than padded -- a single-candidate brand_ref drops the comparison spread, and a candidate that was never scored for distinctiveness gets a different page shape rather than an empty scale. Derived colours are never presented in documented-source language. Renders the brand_guideline_select-chosen candidate if one has been recorded, otherwise the strongest eligible candidate as a provisional preview (clearly labelled as such). Reads only the already-persisted, frozen snapshot -- never re-runs brand_guideline_specify, never rematches an archive, never mutates the resolved project. Accepts exactly one of brand_ref or project_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
deliveryNo'url' (default): signed, time-limited R2 download link. 'base64': PDF bytes returned inline.url
brand_refNoThe brand_ref returned by brand_guideline_specify or brand_guideline_select.
project_idNoAlternative to brand_ref for an authenticated (keyed) brand project. Requires the same API key that created it.
project_versionNoRender this specific immutable version instead of the project's current version. Omit to render the current version.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already mark the tool as read-only and idempotent, but the description adds crucial behavioral detail: variable page count, omission of empty sections, provisional preview labeling, and the guarantee never to mutate or recompute. This goes far beyond the structured annotations and enriches the agent's understanding.

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 dense but every sentence contributes a substantive detail about output composition or behavioral guardrails. It is longer than average but contains no filler or repeated information, earning a strong score despite its length.

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?

With rich annotations, an output schema, and a description that covers output content, variable behavior, input prerequisites, and safety guarantees, the tool is fully specified. An agent has all necessary information to decide when to use it and what to expect.

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% with per-parameter descriptions, so the baseline is 3. The description adds the essential exclusivity rule ('exactly one of brand_ref or project_id') and traces brand_ref provenance to brand_guideline_specify/select, providing context not captured in the 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 description opens with a specific verb ('Renders') and resource ('client-facing brand colour standard PDF') derived from an existing brand_ref. It clearly differentiates from sibling tools like brand_guideline_specify and brand_guideline_select by focusing on rendering an existing snapshot rather than creating or selecting.

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 states the prerequisite ('from an existing brand_ref'), gives the exclusivity constraint ('Accepts exactly one of brand_ref or project_id'), and explicitly names what it never does ('never re-runs brand_guideline_specify, never rematches an archive'). It stops short of naming alternative tools for those scenarios, but the guidance is clear and actionable.

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

brand_guideline_selectRecord a Manual Brand Colour DecisionAInspect

Records which brand_guideline_specify candidate was chosen, which colours should be locked for future iteration, and which claims should be suppressed -- produces a revised brand_ref (same reference, a new version underneath it, exactly like a versioned house_ref). No accounts or reviewer states yet -- this demonstrates decision-making, not a full approval workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional free-text rationale, e.g. "Client prefers the quieter system."
brand_refYesThe brand_ref returned by brand_guideline_specify.
locked_colour_idsNocolour_id values to lock for future iteration.
suppressed_claim_idsNoclaim_id values to suppress (marked superseded).
selected_candidate_idYesWhich candidate_id to make canonical.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With annotations already covering readOnly=false and destructive=false, the description adds behavioral context: it produces a new version under the same reference (exactly like a versioned house_ref), suppresses claims, and locks colours. It also clarifies the tool's scope (decision-making only, not approval). 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.

Conciseness5/5

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

The description is two sentences and every clause carries meaning: the action, the inputs, the output, and the scope limitation. It is front-loaded with the main verb and avoids redundancy or filler, achieving high information density in minimal length.

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?

The tool has an output schema (so return values are covered) and the description covers the full workflow context: the source of brand_ref, the analogy to house_ref, and the limitation to decision-making. It does not explicitly describe the output structure or prerequisites like authentication, but those are either inferred or handled by the schema, making this largely complete.

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% for all 5 parameters, so the baseline is 3. The description adds meaning by explaining that locked_colour_ids are 'for future iteration' and suppressed_claim_ids are 'marked superseded,' and by relating selected_candidate_id to brand_guideline_specify. This extra context is helpful but not essential given the schema's own descriptions.

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 uses a specific verb ('Records') and clearly identifies the resource: the chosen brand_guideline_specify candidate, locked colours, and suppressed claims. It distinguishes the tool from its sibling brand_guideline_specify by stating it records the decision and produces a revised version, and it explicitly sets scope boundaries ('not a full approval workflow').

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 implies the tool is used after brand_guideline_specify (the candidate source) and explains the outcome via the house_ref analogy. It also states when not to use it ('No accounts or reviewer states yet'), but it does not explicitly name alternative tools for approval workflows or provide a direct when-to-use versus sibling comparison.

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

brand_guideline_specifyGenerate an Archive-Grounded Brand Colour StandardA
Read-only
Inspect

Generates the case for a brand's colours, not just the colours themselves: three genuinely different, archive-grounded candidate palettes from a brand brief, each scored for distinctiveness against named competitors, checked for accessibility, and labelled with exactly what each colour can and cannot legitimately claim (documented archive anchor vs analogue vs original brand colour). Returns a brand_ref (valid 24h) plus a claim_id per colour -- resolve those into full source/permitted-claim/do_not_say text with brand_guideline_claims (the response's own claim_detail_available_via field always names it explicitly). Follow with brand_guideline_select to record which candidate was chosen. TIMING (2026-08-07): real generation cost ranges roughly 60-280 seconds depending on retrieval/generation path. This call races generation against a safe ~55s window: a fast generation returns the full result exactly as described above, unchanged. A slower generation instead returns a compact {"status": "processing", "brand_job_ref": ..., "poll_after_seconds": ...} -- generation keeps running server-side regardless, and is never lost. Call brand_guideline_status with that brand_job_ref to retrieve the completed result (brand_ref, project_id, candidate summary) once ready; poll no more often than poll_after_seconds suggests.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_nameYesThe brand's name.
brand_briefNoCategory, positioning, audience, personality, values, channels, markets, and named competitors with their hex colours.
constraintsNoStructured negative/positive retrieval constraints, checked before archive-diversity capping. avoid_concepts takes precedence over any sentiment inferred from brand_brief prose.
preferencesNo
palette_inputYesExactly how to source the candidate colours.
identity_assetsNo
output_preferencesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

The description discloses significant behavioral traits beyond the annotations: the async race (55s window), the processing status response, the 'generation keeps running server-side regardless, and is never lost' guarantee, and the poll_after_seconds guidance. It also clarifies claim labelling semantics. This is exceptional transparency.

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?

Although the description is long, it is well-structured and front-loaded: the first sentence states the core purpose, followed by output details, next steps, and timing. Every sentence adds unique value (e.g., valid 24h, claim_id, async behavior), with no redundancy or filler.

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 is exceptionally complete for a tool with 7 parameters, nested objects, an output schema, and many siblings. It covers the purpose, the exact process, the asynchronous failure mode, the return contract, and next-step tools. The presence of an output schema means it need not detail every return field, but it still explains key ones like brand_ref and claim_id.

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?

The description itself does not explain input parameters, but the schema provides meaningful descriptions for most fields (e.g., constraints, preferences, palette_input). Schema coverage is 57%, which is moderate; the description adds no parameter-specific meaning beyond the schema, so a baseline score of 3 is appropriate.

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 clearly states the tool's verb and resource: 'Generates the case for a brand's colours, not just the colours themselves' and describes producing 'three genuinely different, archive-grounded candidate palettes'. It distinguishes from siblings by emphasizing the 'case' aspect and explicitly naming follow-up tools like brand_guideline_claims and brand_guideline_select.

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 gives explicit when-to-use guidance and alternatives: it instructs to 'Follow with brand_guideline_select to record which candidate was chosen', 'resolve those into full source/permitted-claim/do_not_say text with brand_guideline_claims', and 'Call brand_guideline_status with that brand_job_ref to retrieve the completed result'. It also mentions the polling guidance. This is a clear usage guide.

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

brand_guideline_statusRetrieve a Slow brand_guideline_specify Generation's ResultA
Read-onlyIdempotent
Inspect

Resolves a brand_job_ref returned by brand_guideline_specify when its race-to-complete window elapsed before generation finished. Read-only, in-process lookup -- never re-runs generation. Returns {"status": "processing"} if still running, {"status": "complete", "brand_ref": ..., "project_id": ..., "recommended_candidate_id": ..., "candidate_count": ...} once done (a compact summary -- use the returned brand_ref with brand_guideline_select/brand_guideline_pdf/brand_guideline_claims for full detail, the same pattern every other Brand Standard tool already uses), or {"status": "failed", "error_code": ..., "message": ...} if generation genuinely failed server-side. An unknown or expired brand_job_ref returns a structured BRAND_JOB_NOT_FOUND error, never a crash or empty success.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_job_refYesThe brand_job_ref returned by brand_guideline_specify's processing response.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive. Description adds behavioral context: it's an in-process lookup, never re-runs generation, and details all possible return states including error handling (BRAND_JOB_NOT_FOUND). This goes beyond the annotations and gives full transparency.

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 a single dense paragraph but every clause adds value: purpose, conditions, read-only nature, return shapes, error behavior, and pointers to related tools. It is front-loaded and free of filler.

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 fully covers all possible outcomes (processing, complete, failed, not found) and how to proceed with the returned brand_ref. It references the output schema implicitly and the sibling tool family, making it complete for an agent to invoke 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% with a clear parameter description. The tool description adds semantic context by explaining the parameter's origin ('returned by brand_guideline_specify') and its role in a race-to-complete scenario, which is not in the 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 description clearly states the tool resolves a brand_job_ref from brand_guideline_specify when its race-to-complete window elapsed. It uses a specific verb ('Resolves') and resource ('brand_job_ref'), and distinguishes itself from siblings by focusing on status retrieval, not generation or full detail retrieval.

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 explicitly states when to use it: when brand_guideline_specify's race-to-complete window elapsed before generation finished. It also provides guidance on alternatives by directing the user to use brand_guideline_select/brand_guideline_pdf/brand_guideline_claims for full detail, and clarifies it never re-runs generation.

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

brand_reportComplete Brand Colour Intelligence ReportA
Read-only
Inspect

One-call complete brand colour intelligence report. Input: hex + brand context + markets + medium + product type. Output: archive anchor, cliche contradiction, colour DNA, strategy verdict, commercial signals, market reading per market, usage rules, palette roles, ecommerce copy, memory hooks, Instagram caption, and Midjourney/Flux/DALLE agent brief. Use this instead of chaining colour_strategy + cliche_breaker + ecommerce_product_copy + memory_hooks + agent_brief separately. Two Claude calls total. One complete response.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHero hex colour e.g. '#4A2A50'
mediumNoMedium e.g. 'packaging', 'digital', 'interior'general
conceptNoOptional concept to search for cliche contradiction e.g. 'luxury', 'eco', 'wellness'
marketsNoTarget markets e.g. ['UK', 'France', 'Japan']
product_typeNoProduct type for copy e.g. 'velvet cushion', 'fragrance', 'cleaning spray'
target_modelNoImage model for agent brief e.g. 'midjourney', 'flux', 'dalle'midjourney
brand_contextNoBrand context: category, positioning, audience, channels

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds that this is a one-call aggregated report producing a single complete response. The 'Two Claude calls total' phrase is slightly ambiguous, but it is not contradictory with the read-only hint and adds context about the tool's internal workflow.

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 dense and front-loaded with the primary purpose. It lists inputs, outputs, and alternatives efficiently. The 'Two Claude calls total' phrase is redundant and slightly confusing, which prevents a perfect score, but overall every sentence earns its place.

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 100% schema coverage, nested object schema, and output schema, the description provides sufficient context. It tells the agent what inputs are needed, what outputs to expect, and when to use it instead of chaining alternatives. This is complete for a complex aggregator tool.

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% and each parameter has a clear description (e.g., hex, markets, product_type). The description restates the main input categories but does not add semantic details beyond the schema, so the baseline of 3 is appropriate.

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 clearly states the tool produces a 'complete brand colour intelligence report' and enumerates specific outputs. It distinguishes itself from siblings by saying 'Use this instead of chaining colour_strategy + cliche_breaker + ecommerce_product_copy + memory_hooks + agent_brief separately.', making the resource and action unmistakable.

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?

Explicit guidance is provided: 'Use this instead of chaining colour_strategy + cliche_breaker + ecommerce_product_copy + memory_hooks + agent_brief separately.' This tells the agent exactly when to choose this tool over alternatives and that it is a consolidated one-call option.

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

brand_systemComplete Brand Colour SystemA
Read-only
Inspect

Complete brand colour system in one call. Returns colour roles with archive names, light and dark mode role maps, typography guidance, usage rules per colour, design tokens (CSS, Tailwind, Figma), and citation cards. Deterministic. No LLM cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoTarget market e.g. global, UK, Japanglobal
mediumNodigital | print | bothdigital
paletteYesHex values
use_caseNoUse case e.g. brand identity, packagingbrand identity
brand_categoryNoOptional e.g. developer tool, luxury, food

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With readOnlyHint=true, the annotation already signals safety, but the description adds valuable behavioral traits: 'Deterministic. No LLM cost.' and enumerates all output categories. This goes beyond the annotation and gives the agent confidence about predictability and cost.

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?

Two tight sentences: the first summarizes the tool's value, the second lists deliverables. 'Deterministic' and 'No LLM cost' are important operational details, and no word is wasted. Front-loaded and efficient.

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 purpose, outputs, and operational traits. Since an output schema exists, return values are structurally defined, and the description still lists them for clarity. It is complete for a read-only aggregation tool.

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 fully documents all parameters. The description adds no parameter-specific guidance; it focuses on outputs rather than inputs. This matches the baseline 3 for high schema coverage.

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 exactly what the tool does: 'Complete brand colour system in one call' and lists all returned components (colour roles, dark/light maps, typography, usage rules, design tokens, citation cards). This clearly distinguishes it from sibling tools that focus on individual aspects (e.g., palette_light_dark, colour_card).

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 phrase 'in one call' and 'complete' imply this is for holistic brand colour needs, giving clear context for when to use it. However, it does not explicitly name alternative tools or state when not to use it, so it stops short of the top score.

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

colour_cardGet Colour Details by NameA
Read-only
Inspect

Look up a named colour and return its hex, archive, provenance, and cultural notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoColour name e.g. 'Prussian Blue' or 'Ottoman Carbon Ink'
slugNoStable colour slug from archive_search e.g. 'keats:keats-s-lung' -- preferred over name for reliable retrieval

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds value by enumerating the return categories (hex, archive, provenance, cultural notes). It does not disclose potential ambiguity with colour names or fallback behavior between name and slug, but with the annotation baseline this is adequate.

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?

One front-loaded sentence that immediately states the action and the key output items. Every word earns its place; there is no fluff or repetition.

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?

This is a simple lookup tool with a read-only annotation and an output schema present, so the description does not need to explain return values. It covers the primary purpose and outputs. The only gap is lack of guidance on when to use which parameter or how to handle no parameters, but given the tool's simplicity and schema support, the description is sufficiently complete.

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%: both 'name' and 'slug' have descriptive help text, and slug explicitly says it is preferred over name for reliable retrieval. The description adds little beyond 'named colour' and the output list; it does not provide syntax or format details not already in the schema. Baseline 3 is appropriate.

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 clearly states a specific verb ('look up') and a resource ('named colour'), then lists the exact outputs: hex, archive, provenance, and cultural notes. This distinguishes it from sibling tools like colour_dna or colour_passport by scoping the return content.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus the many sibling colour_* tools. The description implies 'look up a named colour' but does not mention alternatives, exclusions, or the schema's note that slug is preferred over name. There is no explicit 'use when' or 'prefer X over Y' guidance.

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

colour_combinationColour Combination CheckA
Read-only
Inspect

Assess 2-5 colours as a combination for a given context (UI, data viz, fashion, interior, print, branding). Returns harmony type, clash warnings, contrast summary, and specific deployment rules for the context.

ParametersJSON Schema
NameRequiredDescriptionDefault
coloursYes2-5 hex values to assess as a combination
contextNoUsage context: UI | data viz | fashion | interior | print | brandingUI

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations declare readOnlyHint=true, so the tool is understood to be a read operation. The description adds that it returns harmony type, clash warnings, contrast summary, and deployment rules, but does not disclose additional behavioural details such as error handling or parsing behavior. This is acceptable given the read-only annotation and modest complexity.

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 a single sentence that efficiently states the input scope and output highlights. It is front-loaded with the core action and remains informative without excessive detail.

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?

With a full input schema, output schema, and read-only annotation, the description covers the essential scope and purpose. It mentions the contexts and return categories, making it sufficiently complete for an agent to select and invoke the tool.

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?

The schema fully describes both parameters: 'colours' as 2-5 hex values and 'context' with allowed values. The description does not add new parameter semantics beyond what the schema already provides, so the baseline score of 3 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?

The description states the tool 'Assess 2-5 colours as a combination for a given context' and enumerates return types (harmony type, clash warnings, contrast summary, deployment rules). This clearly identifies the action, resource, and output, distinguishing it from sibling colour tools like colour_compare or colour_harmonies.

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 provides clear context on when to use the tool: when you have 2-5 colours and need to assess their combination for a specific context (UI, data viz, fashion, etc.). However, it does not explicitly mention alternatives or when not to use it, though the specificity implicitly guides selection.

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

colour_compareCompare Two Colours — Perceptual and CulturalA
Read-only
Inspect

Deep perceptual and semantic comparison between any two hex values. Returns quantified differences in LRV, chroma, hue angle, warmth, and CIEDE2000 distance, plus cultural context on both — which is more authoritative, more saturated, more stable under different illuminants, and what each has historically signified. Use when choosing between two colours or explaining why one works better than another. Not a harmony tool — this is a decision and reasoning tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
hex_aYesFirst colour hex e.g. '#003366'
hex_bYesSecond colour hex e.g. '#1877F2'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

The readOnlyHint annotation already establishes safety, and the description adds no contradicting information. The description does add contextual value by detailing the nature of the returned analysis (perceptual, semantic, cultural), but it does not disclose additional behavioral traits beyond what the annotation provides, such as rate limits or 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.

Conciseness5/5

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

The description is four focused sentences with no redundant content. It front-loads the core purpose, then efficiently covers outputs, use cases, and exclusions. The 'Not a harmony tool' note earns its place by preventing category confusion.

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 simple two-parameter, read-only tool with no output schema, this description provides all essential context: what it does, what it returns, when to use it, and how it differs from harmony tools. The level of detail is appropriate for the tool's complexity.

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%, with clear descriptions and examples for hex_a and hex_b. The description merely says 'any two hex values' and does not add extra semantics, constraints, or format details beyond the schema, so it neither enhances nor detracts from the schema's clarity.

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 clearly states a specific action ('deep perceptual and semantic comparison') and resource ('any two hex values'), then enumerates the quantified outputs (LRV, chroma, hue angle, warmth, CIEDE2000 distance). It also distinguishes itself from sibling tools by explicitly noting 'Not a harmony tool — this is a decision and reasoning tool.'

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?

It explicitly tells the agent when to use the tool: 'Use when choosing between two colours or explaining why one works better than another.' It also provides a clear exclusion: 'Not a harmony tool,' which prevents misuse and helps differentiate from alternatives.

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

colour_cultural_riskAssess Cultural Risk of a Colour or PaletteA
Read-only
Inspect

Cultural risk assessment for a hex value or palette (symbolic weight, regional taboos, religious associations, market flags). This is one component of colour_passport for single colours. Use colour_passport for a general profile; call this directly for palette-level risk checks or when cultural risk is the only thing being asked about.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexNoSingle hex value to assess e.g. '#FF9900'
marketsNoOptional market focus e.g. ['China', 'Middle East', 'India']
paletteNoOptional list of hex values to assess as a palette

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With readOnlyHint=true annotation already indicating a safe read operation, the description adds meaningful context by detailing the types of cultural risk covered (symbolic weight, regional taboos, religious associations, market flags). It also clarifies that the tool is a component of colour_passport, giving structural insight. No contradictions with the annotation.

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 concise and front-loaded: the first sentence states the core purpose, while the second provides usage differentiation. No filler words, and every sentence serves a distinct purpose – ideal for efficient parsing.

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 tool's moderate complexity (3 optional parameters, an output schema present), the description fully covers its purpose, scope, and relationship to sibling tools. Since an output schema exists, return-value details are unnecessary. The description is complete for an agent to select and invoke this tool confidently.

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?

The schema already provides 100% parameter coverage with descriptions for hex, markets, and palette. The description mentions 'hex value or palette' which mirrors the parameters but does not add new semantic meaning beyond what the schema already conveys. Thus, the schema carries the burden, earning the baseline score.

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 clearly states the tool's purpose: 'Cultural risk assessment for a hex value or palette' and lists specific aspects (symbolic weight, regional taboos, religious associations, market flags). It also distinguishes itself from colour_passport, explicitly positioning this tool as a focused risk check for palettes or when cultural risk is the only concern.

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 explicit usage guidance: 'Use colour_passport for a general profile; call this directly for palette-level risk checks or when cultural risk is the only thing being asked about.' This names the alternative, specifies when to use it, and implies when not to use it (i.e., when a general profile is needed).

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

colour_dnaColour DNA FingerprintA
Read-only
Inspect

Compact semantic fingerprint for a single hex colour. This is one component of colour_passport. Use colour_passport for a general colour profile; use this only when the user explicitly wants the fingerprint format alone.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex colour to fingerprint e.g. '#4A2A50'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

readOnlyHint=true already covers safety, and the description adds that this is a compact semantic fingerprint and a component of colour_passport. However, it doesn't describe output details or any behavioral nuances beyond what annotations and the output schema already imply. No contradiction.

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?

Two sentences with no fluff. The first sentence states the core purpose; the second gives usage guidance. Information is front-loaded and every word earns its place.

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 simple read-only tool with a single parameter and an output schema, the description fully covers purpose, usage, and differentiation from the closely related colour_passport. No gaps.

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% (hex is described with format and example). The description's 'single hex colour' reinforces the param but adds no new meaning beyond the schema, so baseline 3 is appropriate.

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 'Compact semantic fingerprint for a single hex colour,' using a specific verb (fingerprint) and resource (single hex colour). It further distinguishes from siblings by explicitly noting it is a component of colour_passport.

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?

Provides explicit when-to-use guidance: 'Use colour_passport for a general colour profile; use this only when the user explicitly wants the fingerprint format alone.' This names the alternative and specifies the exact condition for using this tool.

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

colour_forensicsColour Specification Safety CheckA
Read-only
Inspect

Assess whether a hex colour can be safely specified for a physical application. Returns: specification_safe verdict (yes / conditional / avoid), risks, required actions, light behaviour under three illuminants (north daylight, warm artificial, direct sun), substrate-specific notes, and a recommended alternative. Backed by CIEDE2000 archive matching and Claude material knowledge. Examples: ultramarine on lime plaster, lead white on exterior timber, verdigris on north-facing interior wall, red ochre on historic brick.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex colour to assess e.g. '#2A5498'
useNoSpecific use context e.g. 'heritage repair', 'new build interior', 'conservation project'
finishNoPaint finish e.g. 'matt', 'eggshell', 'gloss', 'limewash'matt
substrateYesPhysical substrate e.g. 'lime plaster', 'gypsum board', 'brick', 'timber', 'canvas'
orientationNoRoom or surface orientation e.g. 'north-facing', 'south exterior', 'east bedroom'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds valuable behavioral context by detailing the return structure (verdict, risks, required actions, light behaviour under three illuminants, substrate notes, recommended alternative) and the method (CIEDE2000 archive matching, Claude material knowledge). This goes beyond the annotation baseline, though it does not mention limitations or edge cases, so a 4 is appropriate.

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 concise and front-loaded: it states the purpose in the first sentence, then enumerates return values, underlying method, and illustrative examples. Every sentence earns its place, and the structure is scannable. It is appropriately sized for the tool's complexity.

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?

Given the readOnly annotation, 100% schema coverage, and an output schema, the description is quite complete. It covers purpose, outputs, method, and use-case examples. It could additionally mention limitations or explicit alternatives, but overall it provides sufficient context 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.

Parameters3/5

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

Schema description coverage is 100%, meaning all five parameters are already documented with descriptions in the schema. The tool description does not add specific parameter-level semantics beyond what the schema provides, though it does give examples of hex and substrate values. With full schema coverage, the baseline of 3 is appropriate.

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 specific verb+resource: 'Assess whether a hex colour can be safely specified for a physical application.' This clearly distinguishes it from sibling tools by emphasizing safety for physical applications, and the listed outputs (verdict, risks, actions, light behaviour, substrate notes) reinforce its unique purpose.

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 provides clear context for when to use the tool: when a physical application safety check is needed. It does not explicitly name alternatives or exclusions, but the purpose is sufficiently distinct from siblings like colour_compare or colour_metrics. Examples further illustrate appropriate use cases, earning a 4 rather than a 5.

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

colour_harmoniesGet Colour HarmoniesB
Read-only
Inspect

Return complementary, triadic, analogous, and split-complementary harmonies matched to named archive colours.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex value e.g. '#3A5C8C'
harmony_typesNoHarmony types to include

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

The readOnlyHint annotation already declares the safety profile, and the description adds a modest behavioral detail about matching to 'named archive colours.' However, this phrasing is ambiguous and does not clearly explain the matching process or any limitations. No contradictions with annotations, but the added context is limited.

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 a single, focused sentence that efficiently communicates the core function. Every word contributes to the meaning, with no redundant or filler content.

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

Completeness3/5

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

Given the simple two-parameter tool, the schema covers all parameters, and an output schema exists, the description is mostly adequate. However, the phrase 'named archive colours' is vague and unexplained, leaving ambiguity about how the matching works and what 'archive' refers to, which creates a minor completeness gap.

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?

The input schema provides 100% description coverage for both parameters, so the schema already documents hex and harmony_types. The description lists some harmony types, but this adds little beyond what the schema offers, and it does not clarify the relationship between the hex and 'named archive colours.'

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?

The description clearly states what the tool does: it returns complementary, triadic, analogous, and split-complementary harmonies. It specifies the resource (colour harmonies) and the scope (matched to named archive colours), but it does not explicitly distinguish itself from sibling tools like colour_combination or colour_mix, so it stops short of a 5.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives. It simply states the function without mentioning use cases, prerequisites, or alternative tools, which is a significant gap given the large number of sibling colour-related tools.

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

colour_hooksMake Any Colour MemorableA
Read-only
Inspect

Generate a hook sentence, three-sentence story, tweet, image prompt, and follow-up questions for any hex colour. Backed by the nearest archive colour's cultural provenance. Tunable by audience (general public, designers, historians, children) and tone (dinner party, academic, social media, brand copy). Use to make archive colours shareable, to generate content, or to power a public-facing colour chat experience.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex colour e.g. '#154F20'
toneNoDesired tone e.g. 'dinner party', 'academic', 'social media', 'brand copy'dinner party
audienceNoTarget audience e.g. 'general public', 'interior designers', 'children'general public

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The readOnlyHint annotation already indicates a safe read operation. The description adds valuable behavioral context by mentioning the provenance backing ('nearest archive colour's cultural provenance') and tunability by audience and tone, which goes beyond the annotation.

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 sentences, each with a distinct purpose: what it generates, how it is backed, and how it can be used. No redundant information, and the primary action is front-loaded.

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 read-only content generation tool with an output schema, the description covers the core functionality, customization options, provenance, and use cases. It avoids over-explaining return values, which are handled by the output schema.

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% with descriptions for all parameters. The description enriches parameter understanding by naming example values for audience ('general public, designers, historians, children') and tone ('dinner party, academic, social media, brand copy'), reinforcing the tunable nature.

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 clearly states the tool's action ('Generate a hook sentence, three-sentence story, tweet, image prompt, and follow-up questions') and its resource ('any hex colour'). The specific list of output types distinguishes it from sibling tools like colour_story, which focus on a single narrative output.

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 provides usage contexts: 'to make archive colours shareable, to generate content, or to power a public-facing colour chat experience.' It does not mention alternatives or when-not-to-use, but the intended scenarios are clear.

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

colour_match_paintMatch to Commercial Paint SystemA
Read-only
Inspect

Find the nearest named colour in commercial paint systems including Farrow and Ball and Little Greene.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNoNumber of matches (default 3)
brandNoOptional brand filter: 'farrow' or 'little_greene'
hex_valYesHex value e.g. '#003153'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

The readOnlyHint annotation already covers the safety profile, so the description does not need to reiterate that. However, the description adds no additional behavioral context beyond the core purpose—such as whether multiple matches are returned (though the 'n' parameter hints at this) or any limitations. It is not misleading, but does not enrich beyond the annotation.

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 a single, well-formed sentence that is immediately understandable. It conveys the essential information without any fluff or repetition, earning a high score for conciseness.

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?

Given the tool's simplicity, the presence of an output schema, and full schema parameter coverage, the description is sufficiently complete. It does not explicitly describe the return format, but the output schema presumably addresses that. A small gap is that it does not mention the optional brand filter or the 'n' parameter, but these are documented in the schema.

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?

The input schema covers all three parameters with descriptions (100% coverage), so the description does not need to add parameter-level details. The description does not mention the optional 'brand' filter or 'n' parameter, but the schema provides adequate semantics.

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 clearly states the tool's function with a specific verb ('Find') and resource ('nearest named colour in commercial paint systems'), and it explicitly names the brands covered (Farrow and Ball and Little Greene). This distinguishes it from sibling tools like colour_mix or colour_namer, which likely serve different purposes.

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

Usage Guidelines3/5

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

The description implies usage for converting a hex value to a named commercial paint colour, but does not explicitly state when to prefer this over alternatives or provide any exclusions. The brand filter is mentioned in the schema but not in the description, so guidance on optional narrowing is absent.

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

colour_metricsGet Colour Metrics and PropertiesA
Read-only
Inspect

Returns raw perceptual metrics (LRV, chroma, hue angle, warmth, undertone) for a single colour. This is one component of colour_passport. Use colour_passport for a general colour profile; use this only when the user explicitly wants isolated numeric values.

ParametersJSON Schema
NameRequiredDescriptionDefault
hex_valYesHex value e.g. '#8B4513'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations include readOnlyHint=true, so the tool's safe read-only nature is already declared. The description adds value by listing the specific metrics returned and positioning the tool as a component of colour_passport, which gives context 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?

The description is two sentences, front-loaded with the action and result, followed by concise usage guidance. Every sentence earns its place with no redundancy or filler.

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 tool's simplicity (one parameter), the presence of an output schema, and readOnly annotation, the description fully covers purpose, usage, and relationship to related tools. It does not need to explain return values because the output schema exists, and no gaps remain.

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?

The input schema has full coverage (100%) with a description for hex_val including a type and example. The description does not add additional parameter-specific semantics, so the baseline score of 3 is appropriate since the schema adequately documents the parameter.

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 clearly states the tool 'Returns raw perceptual metrics (LRV, chroma, hue angle, warmth, undertone) for a single colour.' It uses a specific verb and resource, and distinguishes itself from the sibling colour_passport by noting it is a component and is meant for isolated numeric values.

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 explicitly provides usage guidance: 'Use colour_passport for a general colour profile; use this only when the user explicitly wants isolated numeric values.' This gives clear when-to-use and alternative tool guidance, exceeding basic context.

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

colour_mixMix Two Colours (Pigment Simulation)A
Read-only
Inspect

Simulate perceptually modelled subtractive mixing of two colours in CIE Lab space (not RGB screen blending). Returns the resulting mixed hex value and its nearest archive match with cultural context. Uses CIE Lab subtractive model for perceptual accuracy. Example: mixing Prussian Blue and Yellow Ochre gives a muted green — the tool identifies which archive colour that green most closely matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
hex_aYesFirst colour hex e.g. '#003366'
hex_bYesSecond colour hex e.g. '#C8A600'
ratioNoMix ratio 0.0-1.0 where 0.5 is equal parts (default 0.5)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds valuable context: the perceptual model used, the output structure, and an example. It does not contradict annotations. While it doesn't disclose edge cases or limitations, it provides more behavioral context beyond what annotations alone offer.

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 only three sentences, with the main purpose front-loaded. The example sentence is illustrative and earns its place. No redundant or filler content.

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?

Given the tool has an output schema and read-only annotations, the description sufficiently covers the purpose, model, and example output. It does not explicitly list use-case alternatives, but for selecting this tool among many colour siblings, it provides enough context to make an informed choice.

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%, and the input schema already describes each parameter clearly. The description's example references two hex values but does not add additional semantic meaning beyond what the schema provides. Thus, baseline 3 is appropriate.

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 uses a specific verb 'Simulate' and resource 'mixing of two colours', and clearly distinguishes from RGB blending by mentioning CIE Lab subtractive model. It also specifies the output (mixed hex value and nearest archive match), making its purpose unmistakable and distinct from siblings like colour_compare or colour_harmonies.

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 clearly implies usage for subtractive pigment mixing by contrasting with RGB screen blending, and provides an example scenario. However, it does not explicitly name alternative tools or state when not to use it, so it falls slightly short of full explicit guidelines.

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

colour_namerGenerate Archive-Grounded Colour NamesA
Read-only
Inspect

Generate memorable, archive-verified colour names for any hex value. Choose from naming styles: geographical, poetic, material, literary, botanical, industrial, or mixed. Every name is grounded in a real archive source. The core of the Shopify product naming use case.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex colour to name e.g. #8B4A2A
styleNogeographical | poetic | material | literary | botanical | industrial | mixed
marketNoTarget market e.g. UK luxury
n_namesNoNumber of name options (default 5)
product_typeNoProduct type e.g. candle, paint, leather bag

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already mark this as read-only, which is not contradicted. The description adds value by disclosing that every name is 'grounded in a real archive source' and that the tool offers 'naming styles', giving insight into output quality and behavior beyond the annotation.

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 three sentences, each earning its place: the first states the core action, the second lists style options, and the third reinforces archive grounding and the primary use case. It is front-loaded and free of fluff.

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?

With an output schema present, return values need not be described. The description covers purpose, styles, archive grounding, and the Shopify context, making it complete for a generation tool. Optional parameters are left to the schema, which is acceptable given high schema coverage.

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%, so the baseline is 3. The description lists style options already present in the schema and adds no extra meaning for parameters like market or n_names beyond what the schema descriptions already provide. It does not compensate with additional parameter details.

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 uses a specific verb ('Generate') with a clear resource ('colour names for any hex value') and differentiates from sibling tools by emphasizing archive-verified grounding and naming styles. It also mentions the Shopify product naming use case, which clarifies the intended domain.

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

Usage Guidelines3/5

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

The description implies usage for Shopify product naming and any hex value, but it does not explicitly state when to use this tool over siblings like ecommerce_namer or colour_hooks, nor does it provide exclusions. The 'core of the Shopify product naming use case' gives some context, but no alternatives are named.

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

colour_passportColour Passport -- Complete Colour Truth ObjectA
Read-only
Inspect

Canonical single-call colour truth object. Returns everything known about a hex value: colour science (Lab, LCh, hue, chroma, depth, temperature, LRV), archive anchor with dE2000, claim_strength, do_not_say and evidence grade, hex provenance (status, confidence, spectrophotometric flag), physics (illuminant behaviour, gamut, print risk), and cultural reading (colour family, warnings, positives). Use this as the foundation call when you need the complete picture. Every other tool is built on this data. Replaces chaining colour_dna + archive_provenance + colour_cultural_risk + colour_metrics separately. Examples: '#31559B' (anchors to Henry VIII Manuscript Blue Initials), '#8B1A1A' (Penny Post Sealing Wax Dark Red), '#D4AF37' (Sutton Hoo Great Gold Buckle).

ParametersJSON Schema
NameRequiredDescriptionDefault
hexNoSingle hex colour e.g. #31559B
hexesNoMultiple hex colours for batch lookup e.g. ['#31559B', '#8B1A1A']. Max 20.
n_archiveNoNumber of archive matches to return (default 3)
include_physicsNoInclude illuminant behaviour and gamut data (default true)
include_culturalNoInclude cultural risk and associations (default true)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations declare readOnlyHint=true, so no destructive behavior needs disclosure. The description adds value by explaining the tool returns a canonical, exhaustive dataset and gives concrete examples, which helps set expectations. It doesn't discuss rate limits or auth, but for a read-only tool with a rich output schema, the disclosure is sufficient.

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 longer than average but well-structured: definition, content summary, usage guidance, and examples. Every sentence contributes, though the list of data categories could be slightly more compact. It is appropriately detailed for a complex tool with many optional parameters.

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?

Given the tool's complexity, the description provides enough context to understand its role, what it returns, and when to use it. The output schema covers specific return values, and examples ground the behavior. Minor missing context like default archive count or batching behavior is already in the schema.

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 baseline is 3. The description doesn't add parameter-level detail, but it doesn't need to; the schema already explains hex, hexes, n_archive, include_physics, and include_cultural with defaults and examples.

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 'Canonical single-call colour truth object' and 'Returns everything known about a hex value', clearly stating the tool's purpose and scope. It explicitly distinguishes itself from siblings by naming colour_dna, archive_provenance, colour_cultural_risk, and colour_metrics, and positions itself as the foundational call ('Every other tool is built on this data').

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?

Provides clear guidance on when to use: 'Use this as the foundation call when you need the complete picture.' It also explains when not to chain separate tools by stating it 'Replaces chaining colour_dna + archive_provenance + colour_cultural_risk + colour_metrics separately', offering a direct alternative comparison.

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

colour_passportsBatch Colour Passport LookupA
Read-only
Inspect

Batch version of colour_passport. Submit up to 20 hex values in one call. Returns a full Colour Passport for each unique hex: colour science, archive anchor, evidence grade, do_not_say constraints, hex provenance, accessibility, and physics. Deduplicates hex values automatically. Use for multi-colour workflows, Figma palette analysis, or any case where calling colour_passport separately for each colour would be slow.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexesYesList of hex colours e.g. ['#31559B', '#8B1A1A']
n_archiveNoNumber of archive matches per colour (default 3)
include_physicsNoInclude illuminant behaviour and gamut data (default true)
include_culturalNoInclude cultural associations (default false)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds valuable behavioral context: it accepts up to 20 hex values, automatically deduplicates, and returns a full Colour Passport with listed components. It does not describe error behavior for >20 or invalid hexes, but this is acceptable given the read-only nature and 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 description is concise and well-structured. It immediately identifies the tool as a batch version, then explains the input limit, output contents, deduplication, and use cases. Every sentence adds essential information without unnecessary filler.

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?

Given the output schema exists, return values don't need detailed explanation. The description covers the main use cases, input constraints, and deduplication behavior. It is complete enough for a batch tool but could optionally mention error handling for excessive inputs or invalid hex values.

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. The description adds meaning beyond the schema by highlighting the 'up to 20 hex values' limit and the automatic deduplication behavior, which directly clarifies how the hexes array input is processed.

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?

Clearly identifies itself as the batch version of colour_passport with a specific verb+resource+scope: submit up to 20 hex values and receive full Colour Passports. It distinguishes itself from the singular sibling tool by explicitly mentioning batch processing and deduplication.

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?

States exactly when to use this tool: multi-colour workflows, Figma palette analysis, or any case where calling colour_passport separately would be slow. This explicitly points to the alternative (colour_passport) and provides clear use cases.

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

colour_slugsColour Name Developer TokensA
Read-only
Inspect

Return every developer token format for a hex value: CSS variable, kebab-case, camelCase, PascalCase, Tailwind class, TypeScript const, SCSS variable. Archive-grounded name source with dE2000 distance.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex value e.g. #D4A829
archiveNoOptional archive filter

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With readOnlyHint=true annotation, the safety profile is already known. The description adds useful behavioral context: names are 'archive-grounded' and use 'dE2000 distance', which informs how the tokens are derived. No contradiction.

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?

Two tightly crafted sentences. The first sentence lists concrete outputs, and the second adds source and matching detail. No filler or redundancy.

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?

An output schema exists, so return values are documented. The description covers purpose, input hex, optional archive dimension, and the naming logic (archive-grounded, dE2000 distance), making it sufficiently complete for the tool's complexity.

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%, so the parameters are already documented (hex, archive). The description mentions 'hex value' and 'archive-grounded' but does not add significant new parameter-level semantics beyond the 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 description clearly states the tool returns every developer token format for a hex value, enumerating specific formats (CSS variable, kebab-case, etc.), which distinguishes it from sibling naming tools like colour_namer or colour_variants.

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 implies clear usage: when you need developer token formats for a hex value. It does not explicitly mention alternatives or exclusions, but the scope is unambiguous and the sibling list shows related tools with different purposes.

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

colour_storyGet the Cultural Story of a ColourA
Read-only
Inspect

Given a hex value, returns a rich narrative about that colour's cultural journey — where it has appeared in history, what it has meant to different civilisations, and what archive names it carries. Essential for image generation prompts, brand storytelling, and creative briefs. Example: '#DC143C' returns the story of crimson from Byzantine imperial courts through Tudor England to modern sport.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex value e.g. '#DC143C'
n_archivesNoNumber of archive sources to draw from (default 5)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context beyond that: it explains the output is a narrative covering history, cultural meanings, and archive names, with a concrete example. It does not disclose internal mechanics but the example and output description give a solid sense of behavior, so no contradiction and good added value.

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 three sentences: the main action, the use-case rationale, and a concrete example. It is front-loaded with the core purpose, every sentence earns its place, and there is no fluff or redundancy.

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 tool's low complexity (2 parameters), the presence of an output schema, and clear annotations, the description is complete. It covers what the tool does, when to use it, what the output looks like via the example, and how it differs from siblings, so no critical gaps remain.

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%, with both 'hex' and 'n_archives' already described in the schema. The description's example hex value '#DC143C' repeats the schema's example and adds no new parameter meaning. While the description implies the narrative's breadth, it does not enhance parameter understanding beyond the schema, so baseline 3 is appropriate.

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 clearly states the tool takes a hex value and returns a rich narrative about that colour's cultural journey, including historical appearances, meanings across civilisations, and archive names. This specific verb+resource+outcome distinguishes it from siblings like colour_timeline or colour_dna, which likely focus on different aspects.

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 provides clear usage context by listing use cases: 'Essential for image generation prompts, brand storytelling, and creative briefs' and gives a concrete example output. However, it does not explicitly mention when not to use this tool or name alternative tools for other scenarios, so it falls short of a 5.

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

colour_strategyComplete Colour StrategyA
Read-only
Inspect

Single-call commercial colour strategy report. Combines archive grounding, verdict, brand fit, market risk, category cliche check, material behaviour, copy hooks, and usage rules. Input: hex + brand_context (category, positioning, audience, channels) + constraints (avoid, must_work_on) + markets + medium. Output: verdict, strategy summary, archive anchor, commercial signal, category cliche risk level, market reading per market, material notes, usage rules (primary use, secondary use, avoid, pair_with), copy hooks (one_liner, social, brand_rationale), and alternatives. Examples: luxury fragrance brand UK/France/Japan, heritage interior specification, premium ecommerce packaging, SaaS brand identity.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex colour to evaluate e.g. '#4A2A50'
mediumNoPrimary medium e.g. 'packaging', 'interior', 'digital'general
marketsNoTarget markets e.g. ['UK', 'France', 'Japan']
constraintsNoConstraints object
brand_contextNoBrand context object

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

The description goes well beyond the readOnlyHint annotation by detailing what the tool computes and returns: archive grounding, verdict, brand fit, market risk, category cliche check, material behaviour, copy hooks, and usage rules. It also lists the structured output fields and provides concrete examples. No contradiction with 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?

The description is dense but well-structured: it opens with the one-line purpose, then lists the combined analyses, inputs, outputs, and examples. Every sentence provides essential information, and the use of 'Input:' and 'Output:' labels makes it scannable. No wasted words.

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 tool with 5 parameters, nested objects, and an output schema, the description is remarkably complete. It covers all input types, enumerates the major output sections, and gives four varied examples. The existence of an output schema reduces the burden to explain return values, so this description is fully 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.

Parameters3/5

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

The schema has 100% parameter description coverage, so the baseline is 3. The description's 'Input:' line simply recaps the parameter names already present in the schema (hex, brand_context, constraints, markets, medium) without adding new semantic detail. It does not deepen the meaning of any parameter beyond what the schema already 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 clearly states a specific verb+resource: 'Single-call commercial colour strategy report.' It enumerates the combined analyses (archive grounding, verdict, brand fit, market risk, etc.), which distinguishes it from the many sibling tools that focus on individual aspects. This is a definitive, non-tautological purpose.

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 phrase 'Single-call commercial colour strategy report' clearly implies using this tool when a complete strategy is needed in one call rather than assembling it from separate tools. However, it does not explicitly name alternatives or state when not to use this tool, so it falls short of a 5.

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

colour_timelineTrace a Colour Concept Through HistoryA
Read-only
Inspect

Given a concept or colour name, traces its documented appearances across cultures and centuries in chronological order. Returns a dated sequence of archive entries showing when and where the colour appeared, with primary sources. Use for historical research, provenance chains, and understanding why a colour carries the cultural weight it does. Example: 'indigo' traces from ancient Indian trade routes through Roman imports to Tudor sumptuary law to synthetic aniline displacement in 1897.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNoNumber of timeline entries to return (default 10, max 20)
conceptYesColour name or concept to trace e.g. indigo, imperial purple, mourning black

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds behavioral context by stating the output is 'dated sequence', 'chronological order', and includes 'primary sources.' The example with 'indigo' illustrates the multi-century scope, giving agents a clear model of how the tool behaves.

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 compact and well-structured: first sentence states the action and output, second gives usage scenarios, third provides an illustrative example. No redundant words, and each sentence adds distinct value.

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 tool has a good output schema and read-only annotation. The description covers functionality, usage, and parameter semantics with an example that ties everything together. For a tool of this complexity, it is fully self-contained and leaves no critical gaps.

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% for both parameters, so the baseline is 3. The description enriches the 'concept' parameter by providing concrete examples ('indigo', 'imperial purple', 'mourning black'), which helps agents understand what constitutes a valid input beyond the schema's generic description.

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 clearly states the tool's function with a specific verb ('traces') and resource ('documented appearances across cultures and centuries'), and specifies the output format (dated sequence of archive entries with primary sources). This distinguishes it from sibling tools like archive_provenance or colour_story, which likely focus on different aspects of history or narrative.

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 lists use cases: 'historical research, provenance chains, and understanding why a colour carries the cultural weight it does.' While it doesn't name alternative tools or state when not to use it, these concrete scenarios provide clear guidance for 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.

colour_variantsGet Colour Variants and SiblingsA
Read-only
Inspect

For any named archive colour, return historical variants, lighter and darker versions with archive matches, and cultural siblings. Essential for designers exploring around a colour.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNamed archive colour e.g. Bourton Honey

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds behavioral detail by enumerating the types of results returned (historical, lighter/darker, archive matches, cultural siblings). It does not contradict annotations and provides useful context beyond the flag.

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?

Two sentences, front-loaded with the core action and output, no redundant words. The second sentence adds a brief audience/use-case note without bloat.

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?

With an output schema present and a simple one-parameter input, the description fully covers what the tool does and when to use it. No gaps remain for the agent to select and 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% and the single parameter 'name' already has an example ('Bourton Honey'). The description reinforces 'named archive colour' but does not add substantive meaning beyond the schema, so baseline 3 is appropriate.

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 uses a specific verb ('return') and clearly identifies the resource: 'historical variants, lighter and darker versions with archive matches, and cultural siblings.' This distinguishes it from sibling tools like colour_compare or colour_harmonies by specifying the unique output.

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?

States 'Essential for designers exploring around a colour,' which conveys a clear use case and context. It does not explicit mention when not to use or name alternatives, but the context is strong enough for a one-parameter tool.

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

colour_verdictShould I Use This Colour?A
Read-only
Inspect

Evaluate a hex colour for a specific use case, market, and medium. Returns a decisive verdict: use_with_confidence, use_with_caution, or avoid. Includes strengths, risks, avoid-if scenarios, and better alternatives where needed. Backed by CIEDE2000 archive matching and Claude cultural intelligence. Examples: 'luxury hotel brand in Japan', 'ecommerce CTA button UK', 'heritage interior lime plaster wall', 'premium packaging Middle East'.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex colour to evaluate e.g. '#31559B'
mediumNoApplication medium e.g. 'digital', 'interior', 'print', 'fashion', 'packaging'general
marketsNoTarget markets e.g. ['UK', 'Japan', 'UAE']
audienceNoOptional: target audience e.g. 'high net worth travellers', 'young professionals'
use_caseYesWhat the colour will be used for e.g. 'luxury hotel brand', 'heritage interior wall'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With readOnlyHint=true, the annotation already declares safety. The description adds meaningful context by detailing the verdict options, output components (strengths, risks, alternatives), and the underlying methodology (CIEDE2000 + cultural intelligence). This goes beyond the minimal annotation, though it doesn't discuss response size or edge cases.

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 three sentences plus examples. It is front-loaded with the core action and returns, then adds methodology and concrete examples. Every sentence contributes, though the example list is slightly longer than strictly needed—still well under any verbosity threshold.

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?

Given the tool's moderate complexity (5 parameters) and the presence of an output schema, the description covers the essential context: what it does, what it returns, and practical usage scenarios. It doesn't need to enumerate return fields, but it could have briefly mentioned how the verdict is derived for full 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 description coverage is 100%, so baseline is 3. The description adds extra value by illustrating parameter combinations through examples (e.g., 'heritage interior lime plaster wall' ties use_case and medium together). It clarifies how parameters interact without duplicating schema definitions.

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 clearly states the tool evaluates a hex colour for a specific use case, market, and medium, and returns a decisive verdict. This specific verb+resource combination distinguishes it from sibling tools like colour_cultural_risk (which focuses only on cultural risk) and palette_verdict (which likely targets whole palettes).

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 implies when to use via examples like 'luxury hotel brand in Japan' and 'ecommerce CTA button UK', showing applicability across use cases and markets. It doesn't explicitly name alternative tools or exclusion scenarios, but the context is clear enough for an agent to select this for single-colour use-case evaluations.

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

design_sessionFull Design Session — Concept to Complete PaletteA
Read-only
Inspect

One-call compound tool. Submit a concept, medium, audience, and constraints — receive a complete design package: historically grounded palette, cultural narrative, commercial paint matches, WCAG accessibility check, illuminant behaviour, and a ready-made image generation prompt. Replaces chaining query_conceptual + palette_from_concept + colour_story + match_paint_system + accessibility_check + get_colour_metrics. Use when an AI agent or user needs a complete, deployable colour direction in a single call. Not for iterative refinement — use individual tools for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
avoidNoArchive names or colour terms to exclude e.g. ['neon', 'ScreenDigital']
mediumNoApplication context e.g. 'interior', 'brand identity', 'fashion', 'digital', 'print'general
conceptYesCultural theme, mood, or brief e.g. 'Victorian mourning', 'Ottoman court', 'Scandinavian minimal'
n_coloursNoPalette size (default 5, max 8)
include_promptNoInclude image generation prompt (default true)
include_accessibilityNoInclude WCAG contrast check (default true)
include_paint_matchesNoInclude commercial paint matches (default true)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations only include readOnlyHint=true. The description adds meaningful behavioral context: it is a compound tool that internally chains multiple operations, returns a package with multiple components, and is not suited for iterative refinement. It doesn't mention potential performance implications or limitations, but for a read-only operation, the provided transparency is solid.

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 concise and well-structured: only two sentences, front-loaded with the core concept ('One-call compound tool'), and efficiently enumerates the outputs and usage context. Every sentence contributes value without redundancy.

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 complex compound tool, the description covers purpose, output components, usage scenarios, and exclusions. Output schema handles return values, so that is not a gap. The only minor omission is not explaining how 'audience' (mentioned in the description) maps to parameters, but overall it is fairly complete.

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?

Input schema covers 100% of parameters with descriptions, so baseline is 3. The description adds a high-level summary of inputs ('concept, medium, audience, and constraints') but introduces ambiguity by mentioning 'audience' which is not an actual parameter. It does not add significant format or syntax details beyond what the schema already 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 clearly identifies the tool as a 'one-call compound tool' that takes a concept and produces a complete design package, listing concrete outputs (palette, cultural narrative, paint matches, accessibility check, etc.). It distinguishes itself from siblings by explicitly naming the individual tools it replaces (query_conceptual, palette_from_concept, colour_story, etc.).

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 explicit usage guidance: 'Use when an AI agent or user needs a complete, deployable colour direction in a single call' and 'Not for iterative refinement — use individual tools for that.' It also names the alternatives, making the when/when-not distinction very clear.

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

ecommerce_copyEcommerce Product Copy from Archive ColourA
Read-only
Inspect

Generate complete ecommerce product copy for any colour. Input: hex + product type + tone + channel. Output: colour name, product title, short description, long description, SEO title, meta description, alt text, Instagram caption, and cross-sell suggestion. Every piece of copy is grounded in archive provenance -- never generic AI colour copy. The colour name comes from the nearest archive match, not invented. Examples: velvet cushion in Murex Luxury, ceramic vase in Woad Vat Blue, linen throw in Standlake Silt. Directly useful for Shopify, WooCommerce, and editorial product pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex colour of the product e.g. '#4A2A50'
toneNoCopy tone e.g. 'premium but not pompous', 'warm and accessible', 'heritage and serious'premium but not pompous
channelNoSales channel e.g. 'shopify', 'etsy', 'instagram', 'editorial'shopify
brand_nameNoOptional brand name to include in copy
product_typeYesProduct type e.g. 'velvet cushion', 'ceramic vase', 'linen throw', 'candle'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations provide readOnlyHint=true, and the description adds meaningful behavioral context: every piece of copy is grounded in archive provenance, the colour name comes from the nearest archive match (not invented), and output is never generic AI copy. This goes beyond the annotation by setting expectations about grounding and provenance behavior.

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 dense but every sentence contributes: purpose, input/output summary, provenance guarantee, examples, and target use cases. It is front-loaded with the main action and structured logically, making it easy to scan.

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 fully explains what the tool does, the output items, key behavioral traits (archive provenance), examples, and relevant channels. Since an output schema exists, return values need not be detailed. Given the tool's complexity, this is complete.

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?

The input schema covers 100% of parameters with descriptions, so baseline is 3. The description adds value through examples that illustrate parameter combinations (e.g., 'velvet cushion in Murex Luxury') and clarifies the purpose of hex and product_type, but does not deeply explain each parameter beyond schema coverage.

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 clearly states the tool generates complete ecommerce product copy for any colour, with specific outputs listed. It distinguishes itself from siblings like ecommerce_namer and palette tools by focusing on full product copy grounded in archive provenance, not just naming or palette analysis.

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 clearly indicates the tool is for ecommerce product copy generation and mentions channels like Shopify, WooCommerce, and editorial. It does not explicitly name alternatives or when-not-to-use, but the context is clear enough for an agent to select it appropriately.

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

ecommerce_namerProduct Line Colour NamerA
Read-only
Inspect

Generate archive-grounded colour names for up to 40 product SKUs. Input: list of hex values, product category, brand name, naming style. Output: for each hex -- archive name, source citation, one-line product description, dE2000 match distance, match quality, and confidence score. Every name is archive-sourced, not invented. Each carries a primary source citation that can be defended to buyers, press, and brand teams. Use for paint ranges, candle collections, fashion lines, homeware, cosmetics. Style options: geographical, poetic, material, literary, mixed.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexesYesList of hex values e.g. ['#D4A829', '#1A5C6E']
styleNogeographical | poetic | material | literary | mixed (default)
max_dENoMax dE2000 distance to accept (default 25)
brand_nameNoBrand name for context
product_categoryNoe.g. 'paint', 'candle', 'fashion', 'homeware'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations declare readOnlyHint=true, and the description does not contradict this. It adds valuable behavioral context: 'Every name is archive-sourced, not invented' and 'Each carries a primary source citation that can be defended to buyers, press, and brand teams', which clarifies the guarantee of traceability.

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 well-organized with a clear input/output structure, and every sentence contributes meaningful information: scope, use cases, guarantees, and options. It is detailed yet efficient, avoiding redundancy with the schema by specifying unique attributes like 'up to 40 SKUs' and 'dE2000 match distance'.

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?

With an output schema present and full schema coverage, the description need not repeat return structures, but it enriches understanding by explaining the output semantics (source citation, dE2000, confidence). It covers input, output, use cases, and constraints, making the tool fully comprehensible to an agent.

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 all five parameters. The description mentions the general input types (hex values, category, brand, style) but does not add new details beyond what the schema provides, keeping this at the baseline.

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 specific verb phrase 'Generate archive-grounded colour names for up to 40 product SKUs', clearly defining both the action and resource. It also distinguishes itself from sibling tools like colour_namer by emphasizing 'archive-grounded' and 'product SKUs'.

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 provides clear use contexts: 'Use for paint ranges, candle collections, fashion lines, homeware, cosmetics.' However, it does not explicitly name alternatives or state when not to use this tool, though the archive-grounded nature implies differentiation.

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

extract_image_coloursExtract Colours from ImageA
Read-only
Inspect

Extract dominant colours from a photograph using Colour Memory's proprietary k-means++ algorithm. Requires either a public image_url, or an image_id. If you only have a raw uploaded file with no public URL (e.g. a local file path or a ChatGPT file attachment without a usable download_url), call ingest_image first to get an image_id, then pass that image_id here. Returns hex values with proportional weights. Optionally matches colours against the archive with style_context for coherent cultural naming. Use this before image_brief when you have an uploaded photograph.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNoNumber of colours to extract (3-12, default 6)
imageNoImage file attachment from ChatGPT
analyseNoIf true, match colours against archive and return names
image_idNoEphemeral image_id returned by ingest_image. Use this if you only have a local file path or raw file attachment with no public URL.
image_urlNoPublic URL of image
grey_card_hexNoHex from a grey/white card for white balance
style_contextNoe.g. English cottage garden, Victorian, Japanese

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds behavioral context like optional archive matching (analyse, style_context) and the ingest_image dependency flow. However, it doesn't describe the return shape or what happens with conflicting inputs (both image_url and image_id given), and 'ephemeral' image_id isn't elaborated.

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?

Description is compact and front-loaded with the core purpose, then branches into usage guidance. No wasted words. Minor deduction for slight redundancy between the ingest_image explanation in prose and the image_id parameter description.

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?

With 7 params, 0 required, an output schema, and readOnlyHint annotation, the description covers the key decision points: which input to use and when, plus the optional analysis features. Missing behavioral details like behavior on conflicting inputs or error conditions, but the output schema covers return values. Adequate for the tool's complexity.

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 parameters are already documented. The description adds some value by linking image_id to ingest_image and explaining when each input source applies, plus clarifying style_context's purpose (cultural naming coherence). But with full schema coverage, the description correctly leaves heavy lifting to the 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?

Description clearly states verb+resource ('Extract dominant colours from a photograph') and differentiates method (proprietary k-means++). It distinguishes from siblings: mentions ingest_image for raw uploads and positions it 'before image_brief'.

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?

Provides explicit when-to-use ('Use this before image_brief when you have an uploaded photograph') and when-not-to ('If you only have a raw uploaded file... call ingest_image first'). Also clearly explains alternative path when no public URL exists.

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

house_specifyMulti-Room House Colour Scheme — Provenance-Grouped Where DocumentedA
Read-only
Inspect

Generate a complete multi-room house colour scheme from a single archive. Where the retrieved evidence supports it, rooms are grouped by documented provenance (same object, same pattern colourway, same source citation, same designer, same period+institution); where it does not, they are grouped by perceptual similarity and the response says so -- grouping_basis reports which, and provenance_credit reports how many delivered colours are individually evidenced versus documented as a GROUP (often zero). Every colour is a real archive record either way. Each room gets a full colour card set (dominant/secondary/joinery/textile/accent roles) with paint matches, LRV, illuminant behaviour, and WCAG data. A documentary grouping states exactly which documented fact ties its colours together (e.g. 'documented on the same Fitzwilliam Museum record for the Artichoke hanging, accession T.1-1979') and its weighted grouping_strength score -- historical claims are templated only from fields the archive record actually states; room/surface assignment is disclosed as editorial, never as historical fact. Orientation (north/south/east/west) is recorded as room context and surfaced in each room's light_context; in the current model it does not alter palette selection. Example: concept='Arts and Crafts movement family house', archive='ArtsAndCrafts', rooms=[{label:'Entrance Hall', room_type:'hallway', orientation:'north'}, {label:'Living Room', room_type:'living', orientation:'south'}]. Use interior_specify instead for a single room without cross-room grouping. The response includes house_ref -- pass that (not the full response) to palette_pdf's house_ref input to render the flagship document; the full response is often 60-100KB+, too large to safely resend as another tool call's input.

ParametersJSON Schema
NameRequiredDescriptionDefault
avoidNoTerms to exclude from retrieval.
roomsYesOne entry per room, e.g. [{label:'Entrance Hall', room_type:'hallway', orientation:'north'}]
archiveYesSingle archive to draw every room's colours from, e.g. 'ArtsAndCrafts'. Required -- invalid names return a clear error listing valid archives.
conceptYesHouse-level concept or brief, e.g. 'Arts and Crafts movement family house'
narrative_modeNoDefault 'evidence_only'.evidence_only
colours_per_roomNoDefault 5.
shared_house_coloursNoDefault 2.
minimum_claim_strengthNoEvidence-grade floor, default 'B'.B
strict_semantic_colourNoDefault true -- excludes entries whose quoted colour language contradicts their stored hex.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond the readOnlyHint annotation, it discloses the grouping logic (provenance vs perceptual), the meaning of grouping_basis and provenance_credit, that historical claims are only templated from actual record fields, and that orientation doesn't affect selection. It also warns about response size, adding rich context beyond the annotation.

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?

It's a long description, but each sentence contributes: purpose, grouping rules, output contents, evidence disclosure, orientation caveat, example, sibling guidance, and house_ref handoff. It's front-loaded with the core purpose, though it could be tightened without losing value.

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 tool's complexity (multi-room, provenance grouping, output schema), the description covers the key behaviors, limitations, and downstream usage. The presence of an output schema means return values needn't be detailed here, and the description still mentions house_ref for PDF generation, making it very complete.

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?

The schema already provides 100% coverage of all 9 parameters with explanations. The description only adds an example and restates the orientation caveat already present in the schema, so it adds little beyond the baseline.

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 'Generate a complete multi-room house colour scheme from a single archive' — a specific verb and resource. It explicitly contrasts with the sibling 'interior_specify' for single-room use, making differentiation clear.

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?

It states 'Use interior_specify instead for a single room without cross-room grouping,' which is an explicit alternative and exclusion. The opening phrase also establishes the multi-room, single-archive context, giving clear when-to-use guidance.

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

image_briefGenerate Creative Brief from ImageA
Read-only
Inspect

Compound endpoint: one image in, full creative brief out. Extracts dominant colours, matches them to the Colour Memory archive with coherent cultural naming, understands the scene, identifies the style period, suggests product directions by category (textiles, interiors, fashion), generates an image generation prompt, and returns a swatch URL. Use instead of chaining palette_extract + palette_analyse + agent_brief separately. Pass style_context for coherent archive matching e.g. 'English cottage garden', 'Victorian', 'MarsColour'.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNoNumber of colours to extract (3-12, default 6)
modelNoImage model: midjourney | flux | dalle | stable_diffusion (default midjourney)
archiveNoExplicit archive name override e.g. 'MarsColour', 'Japan'
image_urlNoPublic URL of the image
image_base64NoBase64-encoded image data
product_typeNoProduct focus e.g. 'tea towel', 'wallpaper', 'ceramic', 'textile'
grey_card_hexNoHex value from a grey/white card for white balance correction
style_contextNoPlain English style e.g. 'English cottage garden', 'Victorian', 'Japanese', 'MarsColour'. Restricts archive matching to coherent cultural set.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With readOnlyHint=true, the safety profile is already covered by annotations. The description adds meaningful behavioral context by outlining the internal pipeline (extract, match, understand, identify, suggest, generate, return) and mentioning the swatch URL output. It does not disclose limitations like auth, rate limits, or failure modes, but the added context goes beyond what annotations provide.

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 3 sentences with no filler. The first sentence is dense but information-rich, front-loading the compound nature and outputs. The second and third sentences provide alternatives and usage tips. While not as minimal as a two-sentence example, every sentence earns its place.

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?

The tool is complex with 8 parameters and an output schema. The description covers the compound workflow, mentions the alternatives it replaces, and gives usage guidance for style_context. Since the output schema exists, return values are covered, and schema covers all parameters. The description is sufficiently complete for an agent to select and call the tool.

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?

Input schema covers 100% of the 8 parameters with their descriptions, so the baseline is 3. The description adds value for style_context with specific examples ('English cottage garden', 'Victorian', 'MarsColour') and notes product categories (textiles, interiors, fashion) that align with product_type. However, most parameter semantics live in the schema, and the description does not compensate for any uncovered gaps.

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 'Compound endpoint: one image in, full creative brief out' and enumerates specific outputs: colour extraction, archive matching, cultural naming, scene understanding, style period, product directions, prompt generation, and swatch URL. This clearly states the tool's function and differentiates it from siblings by explicitly mentioning the alternative chaining workflow.

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 provides explicit usage guidance: 'Use instead of chaining palette_extract + palette_analyse + agent_brief separately' and instructs to 'Pass style_context for coherent archive matching'. This clearly indicates when to use the compound endpoint versus alternatives. It lacks explicit 'when not to use' conditions, but the guidance is substantial.

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

image_paletteExtract and Name Colours from an ImageA
Read-only
Inspect

Upload an image (base64 encoded) and extract its dominant colour palette, with each colour matched to its nearest named archive entry with full cultural provenance. Uses K-means++ extraction plus Bradford chromatic adaptation for accuracy. Returns up to 5 dominant colours, each with archive name, cultural story, nearest RAL standard, and WCAG accessibility data. Works for product photography, interior photos, artwork, brand assets, and mood boards. The image is never stored — processed in memory only.

ParametersJSON Schema
NameRequiredDescriptionDefault
archiveNoOptional: restrict archive matching to a specific archive
n_coloursNoNumber of dominant colours to extract (default 5, max 5)
media_typeNoImage MIME type e.g. 'image/jpeg'image/jpeg
image_base64YesBase64 encoded image (JPEG, PNG, WebP)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description goes beyond structural data by adding meaningful behavioral details: the image is never stored and is processed in memory only. It also discloses the algorithm (K-means++ and Bradford chromatic adaptation) and the specific output fields, which helps the agent understand what to expect.

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 highly concise, with three sentences that each serve a distinct purpose: stating the core function, explaining the technical approach, and listing use cases plus a privacy guarantee. No filler or redundant phrases are present.

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 tool has an output schema and modest complexity (4 parameters, 1 required), the description covers all key aspects: input format, algorithm, output contents, supported use cases, and data handling. It is complete enough for an agent to select and invoke the tool correctly without further clarification.

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?

The schema documentation covers 100% of parameters (image_base64, archive, n_colours, media_type) with clear descriptions, so the description does not need to compensate. It reinforces that the image is base64 encoded and that n_colours is capped at 5, but adds no new semantic details beyond the 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 description uses a specific verb ('extract') and resource ('image') to clearly state the core function: extracting a dominant colour palette and matching each colour to named archive entries. It also distinguishes itself from sibling tools like palette_extract by highlighting cultural provenance, RAL standard matching, and WCAG accessibility data in the output.

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 provides clear context for when to use the tool by listing supported image types (product photography, interior photos, artwork, brand assets, mood boards). However, it does not explicitly name alternative tools or state when not to use this tool, which prevents a 5.

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

image_personalPersonal Colour Analysis — Find Your ColoursA
Read-only
Inspect

Upload a portrait photo and receive a full personal colour analysis. Determines your seasonal type (Spring, Summer, Autumn, or Winter), colour depth (light, medium, or deep), and undertone (warm, cool, or neutral). Returns a curated palette of archive colours that genuinely suit you — each with full historical provenance and cultural context — plus colours to avoid. Uses Claude Vision for skin, hair, and eye analysis, then matches to the archive by CIEDE2000 perceptual distance. The photo is never stored. Example: a Deep Winter might wear Ottoman Carbon Ink while a True Spring suits Kogi Mango.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional: person's name for the report e.g. 'Sarah'
image_urlNoURL of a portrait photo hosted online. Easier than base64 for MCP use. Either image_url or image_base64 required.
media_typeNoImage MIME type e.g. 'image/jpeg'image/jpeg
image_base64NoBase64 encoded portrait photo (JPEG or PNG). Face should be clearly visible in natural light. Either image_base64 or image_url required.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Beyond the readOnlyHint annotation, the description adds valuable behavioral context: 'The photo is never stored' and details the underlying process ('Uses Claude Vision... matches by CIEDE2000 perceptual distance'). This gives the agent a richer sense of side effects and mechanisms without contradicting the annotation.

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 moderately long but every sentence earns its place: action, outputs, method, privacy, and an example. It is front-loaded with the core purpose and structured logically. No fluff, though it could be slightly tighter.

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?

Given the output schema exists, the description needn't detail return structure. It fully explains the analysis, the palette with provenance, the avoidance list, and privacy. Missing pieces like error conditions are minor and not required for selection. It is complete for an agent to decide when to invoke this tool.

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 baseline is 3. The description adds semantic value by clarifying the mutual requirement: 'Either image_url or image_base64 required' — a constraint not captured in the schema's `required: []`. It also clarifies input type ('portrait photo') beyond individual parameter descriptions.

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 specific verb+resource ('Upload a portrait photo and receive a full personal colour analysis') and clearly enumerates the outputs: seasonal type, depth, undertone, and a curated palette. It distinguishes itself from sibling palette tools by emphasizing personal portrait analysis and unique outputs like seasonal classification.

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

Usage Guidelines3/5

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

The description implies usage context (when you have a portrait photo and need personal colors) but never explicitly contrasts with sibling tools or states when not to use it. No alternatives are named, so while the context is clear, the guidance is implicit rather than explicit.

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

index_resonanceResonance IndexA
Read-only
Inspect

Colour Memory's proprietary semantic metric. Score how tightly the material origin of a colour aligns with its social consequence. 1.00 = material and consequence are indistinguishable (blood as prognosis, ash as finality). 0.80 = institution mediates the colour (paint as deterrence, flag as authority). 0.50 = symbolic or associative only. Input: list of colour entries with name, hex, archive, source, notes. Output: resonance score, material origin, social function, alignment reason, confidence. Use for investigative reports, forensic briefs, museum content, editorial PDFs. This is the metric that separates Colour Memory from palette generators.

ParametersJSON Schema
NameRequiredDescriptionDefault
entriesYesList of colour entries to score for resonance
score_basisNoScoring basis (default: material_origin_to_social_consequence)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The description adds behavioral context beyond the readOnlyHint annotation by explaining the scoring scale (1.00, 0.80, 0.50) and the nature of the computation. It does not contradict annotations and provides useful detail about what the tool evaluates and outputs.

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 compact and well-structured: it opens with a clear definition, then the scoring scale, input/output, usage context, and a concluding differentiation sentence. Every sentence earns its place without unnecessary wordiness.

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 tool's complexity, the description covers purpose, scoring semantics, input, output, and use cases. It also benefits from an output schema (though not shown), so return values are already documented. No critical gaps are apparent for an agent to decide when and how to invoke this tool.

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 baseline is 3. The description adds an informal list of input fields ('name, hex, archive, source, notes') but this slightly mismatches the schema's 'primary_source' property. It does not add detail about the score_basis parameter beyond what the schema already includes.

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 action ('Score how tightly the material origin of a colour aligns with its social consequence') and names the resource ('Colour Memory's proprietary semantic metric'). It clearly distinguishes itself from sibling tools by emphasizing its uniqueness ('separates Colour Memory from palette generators').

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 provides clear usage context: 'Use for investigative reports, forensic briefs, museum content, editorial PDFs.' It implies a specialized analytical use case compared to palette generators, but it does not explicitly name alternative tools or 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.

ingest_imageIngest Image for ProcessingA
Read-only
Inspect

Upload an image to Colour Memory for ephemeral processing. Returns image_id valid 5 minutes. Pass image_id to palette_extract or image_brief. Use for any image over 50 KB.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageNoMCP file reference {download_url, mime_type, file_name}
source_urlNoHTTPS URL of the image
image_base64NoBase64-encoded image data. Use this for locally uploaded files with no public URL. No size limit here (unlike palette_extract's image_base64).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations declare readOnlyHint=true, so the safety profile is already known. The description adds valuable context: ephemerality (5-minute expiry), the return of image_id, and downstream usage patterns. This is meaningful behavioral context beyond what annotations provide, though it doesn't address potential failure modes or rate limits.

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 efficient sentences with zero waste. Each sentence adds distinct value: what it does, what it returns and its validity, and when to use it. The size threshold heuristic is compact and actionable.

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?

Tool has 3 optional params, nested objects, and an output schema — moderate complexity. The description covers the purpose, output, validity window, downstream consumers, and size guidance. It doesn't document edge cases (what happens on invalid image, error responses), but the ephemeral design is simple enough that this is acceptable. The 'unlike palette_extract' contrast adds helpful cross-tool context.

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%, establishing baseline 3. The description adds value by clarifying the image_base64 parameter is for locally uploaded files with no public URL, and notes 'No size limit here (unlike palette_extract)' — a cross-tool contrast that helps disambiguate. The ephemeral processing context also clarifies why ingestion matters.

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?

Description uses a specific verb+resource ('Upload an image to Colour Memory') and clearly states the output (ephemeral image_id valid 5 minutes). It also names downstream consumers (palette_extract, image_brief), distinguishing this as an ingest step from the many sibling analysis 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 on lifecycle ('valid 5 minutes') and references downstream tools by name, but doesn't explicitly state when NOT to use it or name specific alternatives. The 'use for any image over 50 KB' hint gives size-based guidance, though the alternative path for smaller images isn't stated.

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

interior_specifyInterior Colour Specification — Full Room BriefA
Read-only
Inspect

Generate a complete interior colour specification from a concept or brief. Input a room concept, type, and style — receive a professionally structured colour scheme with 60/30/10 surface assignments, archive colour names with full cultural provenance, Farrow and Ball and Little Greene paint matches, three-illuminant light behaviour (D65 daylight, F11 atrium, Illuminant A incandescent), WCAG accessibility for digital use, and a written cultural rationale explaining why each colour belongs in this room. Examples: 'bold maximalist living room', 'calm Scandi bedroom', 'Victorian study', 'coastal kitchen', 'gallery hallway'. Pass archive to lock the whole scheme to one named archive (e.g. 'ArtsAndCrafts', 'GeorgianPleasures') -- every returned colour will belong to it, or you get a clear error listing valid archive names rather than a silent unrestricted search. Use /interior-specification/pdf for a downloadable branded PDF version. Use house_specify instead for a multi-room scheme with cross-room provenance grouping. This is the tool that replaces a colour consultation.

ParametersJSON Schema
NameRequiredDescriptionDefault
avoidNoColours, pigments or topics to exclude e.g. ['arsenic green']. Applied before selection.
styleNoStyle direction e.g. 'heritage', 'contemporary', 'maximalist', 'minimal', 'scandi', 'industrial', 'coastal'heritage
archiveNoOptional: restrict the candidate pool to this single archive before scoring, e.g. 'ArtsAndCrafts' or 'GeorgianPleasures'. Invalid names return a clear error listing valid archives rather than silently searching everything. Omit for unrestricted cross-archive search (default, unchanged behaviour).
conceptYesRoom concept or brief e.g. 'bold maximalist living room' or 'calm Scandi bedroom'
n_coloursNoNumber of colours in scheme (default 5, max 7)
room_typeNoRoom type e.g. 'living', 'bedroom', 'kitchen', 'study', 'bathroom', 'hallway', 'dining'living
orientationNoRoom orientation e.g. 'north', 'south', 'east', 'west' — affects light advice

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, so the operation is safe. The description adds valuable behavioral detail: passing `archive` locks results to one archive and returns a clear error listing valid names rather than silently unrestricted search. This is beyond the annotations and enriches the agent's expectations.

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 core purpose, then methodically lists outputs, examples, archive behavior, and alternatives. Every sentence carries information—no filler. Though long, it remains scannable and perfectly sized for a complex tool with 7 parameters.

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 tool's complexity (7 params, 100% schema coverage, rich output schema), the description covers all essential aspects: inputs, outputs, example prompts, archive-specific behavior, and sibling alternatives. The output schema already documents return values, so no further explanation is needed. The description is comprehensive and self-contained.

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. The description adds extra meaning by explaining the `archive` parameter's error-handling behavior and illustrating the `concept` parameter with tangible examples. It also implies `room_type` and `style` via 'Input a room concept, type, and style', reinforcing the schema's field descriptions.

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 specific verb+resource: 'Generate a complete interior colour specification from a concept or brief.' It clearly distinguishes itself from siblings by naming house_specify as the multi-room alternative and explicitly listing outputs (60/30/10, paint matches, light behaviour) that no other sibling appears to offer.

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?

Explicit guidance is given: 'Use /interior-specification/pdf for a downloadable branded PDF version' and 'Use house_specify instead for a multi-room scheme.' Examples like 'bold maximalist living room' show when to invoke the tool. This fully covers when-to-use and alternatives.

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

meta_capabilitiesAPI Capabilities InventoryA
Read-only
Inspect

Return a live inventory of all active endpoints and MCP tools. Use this first to discover what the API can do before making calls. Returns tool count, endpoint list, MCP-exposed tools, and usage notes. Deterministic -- no LLM cost.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond the readOnlyHint annotation, the description adds behavioral traits: 'live inventory' (dynamic), 'Deterministic -- no LLM cost' (predictable and free). These are meaningful insights not present in annotations, helping the agent understand the tool's operational characteristics.

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 three sentences, front-loaded with the main action, and every sentence adds value: what it returns, when to use it, and a distinctive behavioral trait. No wasted words.

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 zero-parameter discovery tool with an output schema, the description is complete: it states the purpose, usage timing, return contents, and determinism. No critical gaps for an agent to invoke it 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?

The input schema has zero parameters with 100% coverage, so the description doesn't need to explain parameters. The baseline for no-parameter tools is 4, and the description adds context about what the tool returns without describing parameters, which is appropriate.

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 clearly states the tool returns a live inventory of all active endpoints and MCP tools, using a specific verb ('Return') and resource. It distinguishes itself from sibling tools that are domain-specific actions (e.g., palette_generate, colour_compare) by serving as a meta-level discovery tool.

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 says to 'Use this first to discover what the API can do before making calls,' providing clear usage context. It doesn't mention alternatives or exclusions, but for a discovery tool, this guidance is sufficient and actionable.

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

palette_analyseAnalyse Palette Against ArchiveA
Read-only
Inspect

Analyse a palette of hex colours against the Colour Memory archive. For each colour returns the nearest named archive entry with cultural name, source, claim_strength (A-E), do_not_say guardrails, and alternatives when confidence is low. Palette-level deduplication ensures no two colours map to the same archive entry. Use after extracting colours from a photo or generating a palette.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNoMax alternatives per colour when confidence is low (1-3, default 1)
archiveNoOptional: restrict to one archive e.g. China, Pigment, ArtsAndCrafts
coloursYesArray of colour objects

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations declare readOnlyHint=true, so no contradiction. The description adds valuable behavioral details beyond the annotation: returns nearest named entry with specific fields, claim_strength (A-E), do_not_say guardrails, alternatives when confidence is low, and palette-level deduplication. This gives a clear picture of what happens when invoked.

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 sentences: purpose, output/behavior, and usage context. Each sentence earns its place, no redundancy, and the most important information is front-loaded. Excellent structure.

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?

The tool has a clear purpose, moderate complexity, and an output schema (though not shown) that covers return values. The description covers what the tool does, what it returns, a key behavior (deduplication), and when to use it. This is complete for an agent to select and invoke correctly, though it doesn't mention edge cases like error handling or palette size limits, which are not essential.

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%, with each parameter fully described in the schema. The description mentions 'alternatives when confidence is low,' which relates to the `n` parameter, but does not add new semantic detail beyond the schema. The baseline of 3 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?

The description clearly states the tool analyzes a palette of hex colours against the Colour Memory archive and specifies the exact output: nearest named archive entry with cultural name, source, claim_strength, guardrails, and alternatives. It distinguishes itself from sibling tools like palette_extract or palette_compare by making the archive-analysis purpose explicit.

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 says 'Use after extracting colours from a photo or generating a palette,' providing clear when-to-use context. It doesn't explicitly mention alternatives or when not to use, but the 'Use after' phrasing and the nature of the analysis versus sibling tools (e.g., palette_audit, archive_search) imply the intended workflow.

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

palette_auditPalette Quality AuditA
Read-only
Inspect

Full palette quality audit. Scores on accessibility, cultural risk, tonal balance, colour diversity, and archive naming strength. Returns overall score 0-100, grade, and prioritised fix list. Enterprise quality gate -- use before shipping any palette. Deterministic, no LLM cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoTarget marketglobal
mediumNodigital | print | bothdigital
paletteYesHex values to audit
use_caseNoUse case contextbrand identity

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations declare readOnlyHint=true, so the safety profile is covered. The description adds valuable behavioral context that 'Deterministic, no LLM cost' and positions it as an 'Enterprise quality gate,' which conveys reliability and cost implications beyond the annotations. No contradictions.

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 sentences, all dense with information: purpose, output, usage, and behavioral trait. Front-loaded with the main action, no filler, every sentence earns its place.

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 read-only analysis tool with output schema, the description covers purpose, outputs, usage context, and deterministic nature. The sibling tool list is broad, but the description clearly distinguishes this as the final quality gate. Parameter details are in the schema, so no critical information is missing.

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%, so the baseline is 3. The description's scoring dimensions (e.g., cultural risk, tonal balance) indirectly hint at how parameters like market and medium might affect results, but it does not explicitly explain parameter interactions or add new meaning beyond the schema descriptions.

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 clearly states what the tool does: 'Full palette quality audit' with specific scoring dimensions (accessibility, cultural risk, tonal balance, colour diversity, archive naming strength) and output (overall score 0-100, grade, prioritised fix list). This specific verb and resource scope distinguishes it from sibling tools like palette_analyse or palette_verdict.

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?

Provides explicit usage context: 'Enterprise quality gate -- use before shipping any palette.' This clearly signals when to use the tool, though it does not explicitly name alternatives or exclusion scenarios, which would merit a 5.

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

palette_compareCompare Two PalettesA
Read-only
Inspect

Deep perceptual, cultural, and commercial comparison between two palettes. Returns timelessness scores, commercial strength, cultural depth, emotional difference, and a winner verdict for the stated use case.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketsNoTarget markets
use_caseNoContext for comparison e.g. luxury packaging
palette_aYesFirst palette hex values
palette_bYesSecond palette hex values

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, so safety is known. The description adds that it returns scores and a verdict, which is useful, but doesn't disclose any additional behavioral traits such as data handling, rate limits, or edge cases. This meets the baseline with annotations present.

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 a single, focused sentence that front-loads the core function and then lists concrete output dimensions. Every word contributes value; no redundancy or filler.

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?

With an output schema present, the description doesn't need to explain return values. It conveys the purpose, output categories, and use-case context. The 'markets' parameter is not explicitly described, but the schema covers it, so the description remains adequately complete for a read-only analysis tool.

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 covers 100% of parameters with descriptions, so baseline is 3. The description doesn't add parameter-specific syntax or format details but references the 'stated use case,' aligning with the use_case parameter. This provides marginal value over schema alone.

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?

Description clearly states the tool performs a deep perceptual, cultural, and commercial comparison between two palettes and lists the specific output dimensions (timelessness, commercial strength, etc.). This distinguishes it from sibling tools like colour_compare by emphasizing depth and specific evaluative lenses.

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 implies when to use the tool—when a deep cultural/commercial/perceptual comparison is needed—based on the word 'deep' and the nature of returned metrics. It does not explicitly name alternatives or exclusions, but the context is clear enough for an agent to infer appropriate usage.

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

palette_conceptGenerate Heritage Palette from Cultural ConceptA
Read-only
Inspect

Generate a historically grounded colour palette from a cultural concept or theme. Returns 4-6 coordinated archive colours with hex values, proportions, and provenance. Examples: 'Victorian mourning', 'Ottoman court', 'Japanese wabi-sabi', 'Scandinavian winter', 'West African kente', 'Renaissance Florence'. Every colour returned is sourced from the archive with documented history.

ParametersJSON Schema
NameRequiredDescriptionDefault
avoidNoColours, pigments or topics to exclude e.g. ['arsenic green']. Applied before selection.
conceptYesCultural theme or historical period e.g. 'Victorian mourning' or 'Ottoman court'
n_coloursNoNumber of colours to return (default 5, max 8)
include_neutralsNoInclude neutral/background colours

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

The description adds useful context beyond the readOnlyHint annotation by stating that all colours are sourced from the archive with documented history, and that the output is historically grounded. However, it claims 'Returns 4-6' colours while the input schema allows n_colours up to 8, creating an inconsistency between the description and the configurable behavior. This flaw prevents a higher score.

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 concise, using three sentences to state purpose, output composition, and provenance guarantee. The examples are helpful but slightly expansive. Overall, every sentence earns its place without redundant filler or repetition of schema information.

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

Completeness3/5

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

Given the presence of an output schema and readOnly annotation, the description does not need to explain return values or safety. It covers purpose and provenance well but lacks explicit usage guidelines versus sibling tools and contains the 4-6 vs max 8 discrepancy. The tool is simple enough that this level of completeness is adequate but not exemplary.

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 baseline is 3. The description does not detail individual parameters, but the example list provides concrete semantics for the 'concept' parameter. No additional meaning is added for 'avoid', 'n_colours', or 'include_neutrals' beyond what the schema already clearly explains.

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 specific verb ('Generate') and a clear resource ('historically grounded colour palette from a cultural concept or theme'). It explicitly defines the output scope (4-6 coordinated archive colours with hex values, proportions, and provenance) and differentiates from generic palette tools by emphasizing cultural/historical grounding and archive sourcing. The example list further clarifies the intended input types.

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

Usage Guidelines3/5

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

Usage context is implied through examples like 'Victorian mourning' and 'Ottoman court', which suggest culturally or historically themed queries. However, the description does not explicitly state when to prefer this tool over siblings such as palette_generate or palette_heritage, nor does it provide any exclusion criteria. The guidance is present but not formalized.

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

palette_exportExport Palette to Design FormatsA
Read-only
Inspect

Export a palette to CSS custom properties, Figma design tokens, Tailwind config, ASE hex list, or JSON. Each colour is automatically named from the archive. Embeds Colour Memory directly into design workflows.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesNoOptional custom names
formatNocss | figma | ase_hex | tailwind | json
prefixNoToken prefix e.g. cm, brand (default: cm)
paletteYesHex values to export

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations declare readOnlyHint=true, so the read-only nature is covered. The description adds valuable behavioral context: each colour is automatically named from the archive, which impacts the output and the optional names parameter.

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 two sentences, front-loaded with the primary purpose and formats, followed by a useful behavioral note. Every sentence earns its place with no filler.

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 rich schema, output schema, and annotations, the description is complete enough. It covers purpose, formats, auto-naming, and workflow integration, leaving no significant gaps.

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?

The input schema already describes all parameters with enum values and defaults, so the baseline is 3. The description adds a note about automatic naming that clarifies the names parameter, but this is a minor addition over the 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 description clearly states the tool exports a palette to specific design formats (CSS, Figma, Tailwind, ASE, JSON), using a specific action verb and resource. This distinguishes it from sibling tools like palette_pdf.

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 provides clear context, mentioning that it embeds Colour Memory into design workflows, which implies usage for design integration. It does not explicitly list alternatives or exclusions, but the context is sufficient.

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

palette_extractExtract Dominant Palette ColoursA
Read-only
Inspect

Extract dominant colours from an image using k-means++ clustering. Accepts a public image URL or base64-encoded image. Returns hex values with proportional weights sorted by luminance. Optionally runs palette_analyse on the results. Use this instead of image_palette when you need hex values with proportions for palette_analyse or palette_swatch.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNoNumber of colours to extract (3-12, default 6)
analyseNoIf true, also run palette_analyse on the extracted colours and return archive names
archiveNoExplicit single archive name to restrict matching to e.g. 'MarsColour', 'Japan', 'Victorian'.
image_idNoEphemeral image_id from ingest_image (preferred for images over 50 KB)
image_urlNoPublic URL of the image to extract colours from
image_base64NoBase64-encoded image data (small images only, under 50 KB)
grey_card_hexNoHex value sampled from a grey or white card in the image for white balance correction e.g. #C8C8C8
style_contextNoPlain English style description that restricts archive matching to a coherent set e.g. 'English cottage garden', 'Victorian', 'Japanese', 'MarsColour', 'Arts and Crafts'. Prevents palette colours from being named across unrelated archives.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The readOnlyHint annotation already indicates a non-destructive operation, but the description adds valuable behavioral details: the clustering method (k-means++), the sorted-by-luminance return format, input constraints (URL/base64, image_id for large images), and the optional chaining to palette_analyse. This goes beyond the annotation without contradicting it.

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 three sentences, front-loaded with the core action, then input/output details, then usage guidance. No fluff or redundancy—every sentence earns its place.

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?

The description covers the tool's purpose, inputs, outputs, and differentiation from a key sibling, which is sufficient given the presence of a detailed schema and output schema. It doesn't mention some optional parameters like style_context or grey_card_hex, but these are well-documented in the schema. The description provides complete contextual guidance for agent selection and invocation.

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?

The input schema has 100% coverage with detailed parameter descriptions, so the description doesn't need to add much. It does implicitly reference the image input parameters and the 'analyse' option, but most parameter semantics are already in the schema. Baseline 3 is appropriate.

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 clearly states the tool extracts dominant colours from an image using k-means++ clustering, and explicitly distinguishes it from the sibling image_palette by noting when to use this tool instead. This is a specific verb+resource definition.

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?

Explicit usage guidance is provided: 'Use this instead of image_palette when you need hex values with proportions for palette_analyse or palette_swatch.' It also mentions the optional chaining to palette_analyse and notes the preferred input method for large images, giving clear context on when and how to use the tool.

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

palette_generateLock-and-Fill Palette from ArchiveA
Read-only
Inspect

Send a palette of up to 8 slots, locking some with hex values and leaving others empty. Empty slots are filled with the nearest CIEDE2000 archive match, interpolated from the locked anchors. Optional archive filter restricts fills to one archive. Returns full citation — name, archive, primary source, colour notes — for every filled slot. Example: lock a client's existing wall colour and fill a 5-colour scheme from Oxfordshire.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoTotal palette size 2-8 (default 5)
slotsYesList of palette slots. Each has index (0-7), optional hex, and locked flag.
archiveNoOptional: restrict fills to one archive e.g. 'Oxfordshire', 'Shakespeare', 'Japan'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses significant behavioral details: empty slots are filled via nearest CIEDE2000 match, interpolation from locked anchors is used, archive filtering restricts fills, and the return includes full citation with name, archive, primary source, and colour notes. This is rich context that goes far beyond the annotation.

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 efficiently structured: first sentence describes the input format, second the core behavior, third the optional parameter, fourth the output, and fifth a practical example. Every sentence contributes unique value and the text is front-loaded with the action. No filler or redundancy.

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 tool has a moderate complexity with 3 parameters and an output schema, and the description covers all essential aspects: input format, core algorithm (CIEDE2000, interpolation), optional filtering, return contents, and a usage example. With an output schema present, the description does not need to detail return structure but does enough to make the tool's behavior fully understandable.

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 already documents each parameter (size, slots with index/locked/hex, archive). The description reinforces these but does not add significantly new parameter meaning beyond what the schema provides. It provides useful context like 'up to 8 slots' and 'optional archive filter', but these are also present in the schema. Baseline 3 is appropriate.

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 clearly states the tool's function with a specific verb and resource: sending a palette with locked slots and filling empty ones with archive matches. It distinguishes itself from sibling palette tools by describing the unique lock-and-fill mechanism and interpolation from locked anchors.

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 provides a concrete example of when to use this tool ('lock a client's existing wall colour and fill a 5-colour scheme from Oxfordshire'), which clearly establishes use case context. It does not explicitly name alternative tools or state when not to use it, but the example gives practical guidance.

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

palette_gradientArchive Gradient — Lab-Interpolated Colour JourneyA
Read-only
Inspect

Generate a perceptually smooth gradient between 2-5 archive anchor colours. Each interpolated stop snaps to the nearest real archive colour by CIEDE2000. Anchor stops are kept true to their source. Choose linear (physically accurate Lab interpolation) or chroma_preserved (LCh interpolation, short-arc hue, avoids desaturated midpoints). Returns stop array, CSS linear-gradient string, or SVG swatch bar. Use for design briefs, colour journey visualisations, and gradient systems.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNolinear: straight Lab lerp (may have neutral midpoint). chroma_preserved: LCh short-arc, saturation maintained.chroma_preserved
stepsNoTotal stops including anchors (default 7, max 20)
anchorsYes2-5 hex values (#RRGGBB) or exact archive colour names
archiveNoRestrict snapping to this archive name e.g. Victorian
output_formatNostops: array of colour objects. css: linear-gradient string. svg: swatch bar.stops
snap_to_archiveNoSnap each stop to nearest archive colour (default true)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses key behaviors: interpolated stops snap to the nearest archive colour via CIEDE2000, anchor stops are preserved, and the two interpolation paths (linear Lab vs chroma_preserved LCh) are explained with their trade-offs. This gives the agent a strong mental model of how results are produced.

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 compact and front-loaded: first sentence states the core purpose, second and third explain algorithmic behavior, fourth lists output formats and use cases. Every sentence contributes new information without redundancy or fluff.

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?

With 6 parameters, an output schema, and no nested objects, the description covers all essential aspects: purpose, algorithmic details, parameter semantics, output formats, and use cases. The presence of an output schema means return values need not be elaborated. There is no significant gap.

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?

The schema already provides 100% coverage, but the description adds valuable semantics for the 'path' parameter by explaining the difference between linear and chroma_preserved in perceptual terms, and for 'output_format' by listing concrete return types. Other parameters like 'steps' and 'archive' are left to the schema, but the added context goes beyond the baseline.

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 specific verb ('Generate') and a precise resource ('a perceptually smooth gradient between 2-5 archive anchor colours'), clearly distinguishing it from sibling tools like palette_translate or palette_light_dark. It conveys both the action and the unique value proposition (perceptual smoothness, CIEDE2000 snapping).

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 ends with 'Use for design briefs, colour journey visualisations, and gradient systems,' providing concrete application contexts. It doesn't explicitly state when not to use this tool or reference alternatives, but the context is clear enough for an agent to select it among the many palette-related siblings.

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

palette_heritageHeritage Palette EvolutionA
Read-only
Inspect

Given a legacy palette, generate an archive-grounded premium support system. For each existing colour: identifies its historical archive anchor, names it, and scores its provenance confidence. Detects palette gaps and fills them from the archive. Returns full palette with roles, confidence scores, CSS tokens, and production notes. Every addition has a named historical origin.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoTarget market
contextNoBrand context
paletteYesExisting hex values
brand_nameNoBrand name for CSS tokens
n_additionsNoArchive colours to add (default 3)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

The description goes beyond the readOnlyHint by detailing the analytical process (naming colors, scoring confidence) and return structure (roles, CSS tokens, production notes). No behavioral side effects are hidden, and it aligns with the read-only annotation.

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 concise and front-loaded with the main purpose, using five sentences that each add distinct information about the process, outputs, and guarantees. There is no redundancy.

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?

With annotations, full schema coverage, and an output schema, the description provides a complete picture: it explains inputs, processing, and return values, leaving no critical gaps for such a complex tool.

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 covers all five parameters, and the description adds meaning by linking 'legacy palette' to historical anchors and 'archive colours to add' to gap-filling with named historical origins. It doesn't elaborate on market/context/brand_name, but schema descriptions suffice.

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 clearly states a specific function: evolving a legacy palette into an archive-grounded support system. It names core actions (identifying historical anchors, scoring provenance, detecting gaps, filling from archive) and output components, distinguishing it from sibling palette tools like palette_generate or palette_analyse.

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 clear context (use with a legacy palette for archive-grounded evolution), but does not explicitly mention when not to use it or list alternative tools. However, the context is unambiguous enough to infer use cases.

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

palette_iterateIterate and Refine a PaletteA
Read-only
Inspect

Refine an existing palette using natural language feedback. Submit your current palette and feedback such as more melancholic, too corporate add warmth, or better for Gen Z luxury. Returns a refined palette with archive grounding and change rationale.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketsNoTarget markets
paletteYesCurrent hex palette to refine
feedbackYesNatural language refinement e.g. more melancholic
use_caseNoUse case context e.g. luxury homewares
directionNoAlias for feedback — natural language direction e.g. more dangerous, more historical, warmer
n_resultsNoNumber of variants to return (default 1)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations declare readOnlyHint=true, so the agent knows this is a safe read/analysis operation. The description adds that results include 'archive grounding and change rationale', which is useful output context. However, it doesn't disclose how refine conflicts between feedback and palette are resolved, nondeterminism, or archive behavior — but with a read-only annotation and output schema present, the description adequately complements 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.

Conciseness4/5

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

Three sentences, front-loaded with the primary purpose and inputs. Example feedback phrases give practical grounding in minimal space. Could trim the trailing 'with archive grounding and change rationale' but it's a meaningful behavioral detail, not padding. Efficient and structured.

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?

The description covers the essence: input (palette + feedback), output (refined palette with rationale), and usage context with examples. With 100% schema coverage, output schema present, and readOnly annotation, the tool is well-specified. The only gap is not clarifying the feedback/direction alias ambiguity, but given the rich surrounding structure this is minor.

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% with all 6 parameters described. The description adds meaning by explaining the feedback parameter through examples and clarifying its relationship to output quality. However, the description doesn't clarify the `direction` parameter serves as an alias for `feedback`, which could confuse an agent deciding which to populate since both accept identical phrasing.

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?

The description clearly states it refines an existing palette using natural language feedback, naming the two required inputs (palette + feedback) and the output (refined palette with rationale). It distinguishes from generation tools like palette_generate and concept tools like palette_concept since it explicitly targets refinement of an existing palette, though it doesn't name sibling tools 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?

The description gives concrete examples of feedback ('more melancholic, too corporate add warmth') and clarifies the input is an existing palette, implying when-not: this is for refinement, not creation. It doesn't explicitly name alternative tools for generation but the refinement vs. creation distinction, combined with 'Submit your current palette', gives adequate usage context.

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

palette_light_darkPalette Light and Dark Mode MapsA
Read-only
Inspect

Generate light-mode and dark-mode role maps from a palette. Analyses LRV, assigns background/surface/text/accent roles for each mode, checks body text contrast safety, and flags missing neutrals.

ParametersJSON Schema
NameRequiredDescriptionDefault
paletteYesArray of hex values
use_caseNoUse case context e.g. UI, dashboard, reportUI

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The readOnlyHint annotation already signals safe read-only behavior. The description builds on this by detailing exactly what analysis is performed (LRV analysis, role assignment per mode, contrast safety check, missing neutrals flagging), which is valuable context beyond the annotation.

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 two sentences, front-loaded with the main purpose, and every clause adds meaningful detail. No filler or redundancies.

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?

With an output schema present and readOnlyHint annotation, the description sufficiently covers the tool's core behavior. It does not discuss return format or edge cases, but those are likely covered by the existing structured data.

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 baseline is 3. The description mentions 'from a palette,' aligning with the palette parameter, but does not elaborate on the use_case parameter. However, the schema description for use_case is clear enough that no extra explanation is needed.

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 uses a specific verb ('Generate') and resource ('light-mode and dark-mode role maps from a palette'), clearly stating what the tool does. It also lists distinct analysis actions (LRV, role assignment, contrast safety, missing neutrals) that separate it from sibling palette tools like palette_analyse or palette_generate.

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 implies a clear use case: deriving light/dark role maps for UI design. It does not explicitly mention alternatives or exclusions, but the level of specificity gives an agent enough context to infer when to select this tool over generic palette analysis tools.

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

palette_pdfGenerate Palette PDFA
Read-only
Inspect

Generate a premium branded PDF specification sheet from a palette of archive entries. Returns a downloadable PDF with full-bleed colour panels, archive names, provenance notes, RAL nearest match, LRV, chroma, WCAG contrast data, and Colour Memory branding. Use this to create client deliverables, specification sheets, and print assets. Two supported entry sources: (1) the flat entries array from query_hex or palette_from_concept -- each item needs name, hex, archive_source, colour_notes, primary_source, zone; or (2) archive_report_brief's output -- pass report['presented_cards'] as entries, NOT report['colour_cards'] (the legacy field is kept only for backward compatibility and does not carry family-card presentation). presented_cards may mix three card shapes, all rendered as exactly one page each regardless of how many underlying records they represent: single_cultivar (a normal flat card), colour_family (card_type='colour_family', many near-identical records summarised as one card with member_count/supported_by/family_delta_e_max), and conservative-mode hero cards (a single_cultivar card carrying family_grouping_suppressed=true and also_supported_by, representing a larger natural family that was folded into one promoted cultivar instead of shown as a group). delivery controls how the PDF is returned: 'url' (default) gives a signed, time-limited R2 download link; 'base64' returns the PDF bytes inline in the response for callers that need the file directly rather than a link. Alternative input mode: pass sections instead of entries for a grouped, multi-section document (e.g. house_specify's rooms) instead of one page per flat colour card. Each section has a title, rationale, and its own entries. presentation.template picks the layout: 'sectioned_specification' (clean grid-per-section spec sheet) or 'colour_drenched_lookbook' (hero colour fills the page, swatches cover most of it, citations collected into a final appendix rather than shrunk onto every page). Third input mode: pass house (house_specify's full response object, unmodified) for the flagship document-plan pipeline -- a complete, editorial multi-archetype publication: a cover, a house_thesis argument page, a whole_house_progression chart, one room_hero + one implementation (practical specification) page per room, and a redesigned source_appendix, all sharing one design system. Takes priority over sections/entries when supplied.

ParametersJSON Schema
NameRequiredDescriptionDefault
houseNoAlternative to `entries`/`sections` -- pass house_specify's full response object unmodified (house_title, house_thesis, progression, shared_house_palette, rooms) to render the complete flagship document-plan publication instead of a flat or sectioned layout. PREFER `house_ref` instead when available -- a real house response is easily 60-100KB+, which can be rejected before it reaches this API; house_ref avoids sending it at all.
queryNoOptional title for the palette e.g. Ottoman imperial luxury
sourceNoOptional source label e.g. brand, conceptualarchive
entriesNoArray of colour cards. Either the flat entries array from query_hex/palette_concept, or report['presented_cards'] from archive_report_brief (single_cultivar, colour_family, and conservative-mode hero cards are all supported -- see tool description). Omit if using `sections` instead.
deliveryNo'url' (default): signed, time-limited R2 download link. 'base64': PDF bytes returned inline as pdf_base64 for callers that need the file directly.
sectionsNoAlternative to `entries` -- one entry per document section, e.g. house_specify's rooms. Each: {title, subtitle?, rationale, grouping_basis?, hero_hex?, entries: [...colour cards...], application_notes?: [{surface, colour_name, instruction}]}.
house_refNoPreferred alternative to `house` -- the house_ref string house_specify returns in its own response (valid for 30 minutes after that call, or per project_persistence for a durable/temporary project). Renders the identical flagship document without resending the (often large) house object over the wire.
project_idNoAlternative to house_ref for an authenticated (keyed) caller's own durable project -- the project_id house_specify returned. Requires the same API key that created the project.
presentationNoUsed with `sections` or `house`. {template: 'sectioned_specification'|'colour_drenched_lookbook' (sections only), page_size?: 'A4-portrait'|'A4-landscape'|'16:9', minimum_colour_coverage?: number (default 0.55 for lookbook), source_display?: 'inline'|'appendix', max_body_words_per_page?: integer, min_body_font_pt?: number (default 10.5, rationale/application-note body text), min_label_font_pt?: number (default 9, swatch colour-name labels), min_citation_font_pt?: number (default 7.5, appendix citations and page furniture)}. No rendered text falls below its category's floor -- names that don't fit are truncated with an ellipsis, never shrunk past the floor.
project_versionNoUsed with either house_ref or project_id -- render this specific immutable version instead of the project's current version. Omit to render the current version.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond the readOnlyHint annotation, the description richly discloses behavioral details: signed time-limited R2 links for 'url' delivery, base64 inline return, the legacy colour_cards caveat, card-shape mixing with one-page-per-card rule, conservative-mode hero card behavior, and typography floor enforcement with ellipsis truncation. This goes far beyond annotations to help the agent understand side effects and edge cases.

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 every sentence carries unique information; it front-loads the core purpose and then systematically covers input modes, delivery, and presentation options. It could be slightly condensed by removing some parenthetical examples, but overall it is efficiently structured for its complexity.

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 10 optional parameters, nested objects, and an output schema, the description fully covers all modes of operation, including the flagship house pipeline and the house_ref optimization. It explains output delivery options and font/minimum-coverage rules, making it complete for an agent to select and invoke the tool correctly without further clarification.

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?

Even though schema coverage is 100%, the description adds substantial meaning to parameters: it explains the required fields for entries, the difference between presented_cards and colour_cards, the exact shape of sections, the meaning of presentation templates, and the priority of house over sections/entries. This significantly enhances the schema's basic definitions.

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 specific verb and resource: 'Generate a premium branded PDF specification sheet from a palette of archive entries.' It clearly states the output format and content (full-bleed colour panels, RAL nearest match, LRV, etc.), distinguishing it from sibling tools like palette_export by focusing on PDF deliverable generation rather than data export or analysis.

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 says 'Use this to create client deliverables, specification sheets, and print assets,' providing clear usage context. It also gives detailed guidance on choosing input modes (entries vs sections vs house vs house_ref) and delivery methods, but it doesn't explicitly mention when to use an alternative sibling tool, so a small gap remains.

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

palette_specifySpecify Colour Palette for a RoomA
Read-only
Inspect

Generate a complete interior specification from 2-8 hex values. Returns surface assignments, 60-30-10 proportions, lighting behaviour, and archive colour names.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoe.g. 'heritage', 'contemporary', 'minimal'
coloursYesList of 2-8 hex values
room_typeNoe.g. 'living', 'bedroom', 'kitchen', 'study'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The annotation readOnlyHint is true, which already tells the agent this is a safe read operation. The description adds valuable context beyond the annotation by detailing what the tool returns (surface assignments, proportions, lighting behaviour, archive colour names). It does not discuss limitations or edge cases, but with the read-only annotation and the output schema, the behavioral profile is well covered.

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 two sentences, with the main action front-loaded ('Generate a complete interior specification') and no filler. It efficiently conveys purpose and key outputs without any wasted words.

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?

The tool has a clear input schema (3 params, 1 required) and an output schema, and the description covers the core function and what the output includes. It does not explain optional parameter behavior or edge cases, but those are available in the structured data. For the tool's complexity, the description is sufficiently complete to understand its role.

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 descriptions cover 100% of the parameters, so the baseline is 3. The description does not add per-parameter details beyond the schema, but it does clarify the purpose of the colours input by connecting it to the specification output (e.g., 60-30-10 proportions). It does not add syntax or format details beyond what the schema already 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 clearly states the tool's function: 'Generate a complete interior specification from 2-8 hex values.' It lists specific outputs (surface assignments, 60-30-10 proportions, lighting behaviour, archive colour names) that distinguish it from sibling tools like palette_generate or palette_analyse. This is a specific verb+resource statement with clear scope.

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

Usage Guidelines3/5

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

The description implies the main use case (creating a full specification from a colour palette for a room) but does not explicitly mention when to use this tool over alternatives such as palette_generate or interior_specify. It lacks 'when not to use' guidance. However, the detailed outputs give some context that this is for complete room specifications, so usage is partially clear.

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

palette_strictStrict Archive-Filtered Palette from ConceptA
Read-only
Inspect

Like palette_concept but with archive filtering and relevance controls. Use allowed_archives to restrict results to specific cultural traditions e.g. ['Japan'] for Japanese only. Use min_relevance to filter weak concept matches. Fixes cross-archive drift when cultural specificity matters.

ParametersJSON Schema
NameRequiredDescriptionDefault
conceptYesCultural concept e.g. Japanese wabi-sabi
n_coloursNoNumber of colours (default 5)
min_relevanceNoMinimum relevance score 0-1 (default 0.3)
allowed_archivesNoArchive names to restrict results e.g. ['Japan', 'China']
include_neutralsNoInclude neutral tones (default true)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds behavioral context about filtering and relevance, but does not disclose additional behaviors such as output format or pagination. Since annotations cover the main safety concern, a score of 3 is appropriate.

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 concise at four sentences, front-loads the relationship to palette_concept, and each sentence serves a purpose. No filler or redundancy.

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?

Given the tool's moderate complexity (5 params, output schema, read-only annotation), the description covers key differentiators and usage guidance. It does not describe return values, but the output schema exists, so that is not required. It could benefit from mentioning edge cases, but is otherwise complete.

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 descriptions cover 100% of parameters, so baseline is 3. The description adds value by explaining the purpose of min_relevance (filter weak matches) and providing an example for allowed_archives, which goes beyond the schema's basic descriptions.

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 clearly states this is a variant of palette_concept with added archive filtering and relevance controls, making its purpose distinct from sibling tools. It names specific parameters (allowed_archives, min_relevance) and the problem it solves (cross-archive drift).

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?

Provides explicit usage instructions for allowed_archives and min_relevance, including a concrete example ('['Japan'] for Japanese only'). It also states when to choose this tool: 'when cultural specificity matters', which helps with alternative selection.

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

palette_swatchGenerate Palette Swatch ImageA
Read-only
Inspect

Generate a clean, text-free PNG swatch image from hex colours. Returns a URL to the PNG. Use for Midjourney --sref style references or design mood boards. Supports photo-proportional weights from palette extraction, equal distribution, grid layout, a true smooth LCh-interpolated gradient (no hard colour edges, best for mood/atmosphere/colour-grade references rather than literal composition), and 13 fixed design ratios (6310, 7020, triptych, quad, filmstrip, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
hNoOutput height in pixels (default 630)
wNoOutput width in pixels (default 1200)
hexesYesComma-separated hex values e.g. #d4a829,#1a5c6e,#0a0a0b
layoutNophoto | equal | grid | gradient | filmstrip | 6310 | 7020 | 5030 | 8010 | 5050 | 6040 | triptych | quad | 55-25-20 | quint | 70-10-20 | 40-30-20-10 | 33-33-24-10. gradient is a true smooth perceptual blend with no hard edges, unlike every other layout here.
weightsNoComma-separated proportional weights from k-means extraction. Used only when layout=photo.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already state readOnlyHint=true, and the description adds useful behavioral detail: it returns a URL to a PNG, and the gradient layout is a 'true smooth LCh-interpolated gradient' without hard edges. This goes beyond the annotations without contradicting them, though it doesn't mention potential failures or rate limits.

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 compact and front-loaded with the main action ('Generate a clean, text-free PNG swatch image'), followed by the output format and use cases. Every sentence carries meaning—no filler or redundancy.

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 5 parameters, 100% schema coverage, read-only annotation, and presence of an output schema, the description sufficiently covers purpose, usage context, and key behavioral nuances. It provides enough information 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.

Parameters3/5

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

The input schema covers all parameters with descriptions (100% coverage), so the description isn't required to explain each parameter. It does add a helpful summary of layout families ('13 fixed design ratios') but doesn't significantly expand beyond the schema's parameter descriptions, meriting the baseline score.

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 clearly states the tool's core function: generate a clean, text-free PNG swatch image from hex colours and return a URL. It also distinguishes the tool from siblings by naming specific use cases like Midjourney style references and mood boards, and by outlining distinctive layout capabilities (gradient and ratios).

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 the tool for Midjourney --sref references or design mood boards, and advises when to use the gradient layout over others (best for mood/atmosphere, not literal composition). While it doesn't name alternative tools for exclusions, it gives clear context for when 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.

palette_translateTranslate Any Palette into a Named ArchiveA
Read-only
Inspect

Map any list of hex values into a target archive using CIEDE2000 nearest-neighbour matching. Each input hex is matched to the closest named colour in the chosen archive, with a delta-e relevance band (exact / close / approximate / loose) and full provenance. Use to translate a client's paint colours into Shakespeare language, map a brand palette into historical Japanese pigments, or find the nearest Oxfordshire equivalents to a French scheme.

ParametersJSON Schema
NameRequiredDescriptionDefault
paletteYesList of hex values to translate e.g. ['#F5F0E8', '#8B6B3D']
max_delta_eNoMax acceptable CIEDE2000 distance — above this is flagged out-of-threshold (default 40)
target_archiveYesArchive to translate into e.g. 'Shakespeare', 'Japan', 'Oxfordshire'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The description explains the matching process (CIEDE2000), the relevance bands (exact/close/approximate/loose), and that full provenance is included, which goes beyond the simple readOnly annotation. It does not discuss potential edge cases or errors, but for a read-only mapping tool this is sufficient.

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 compact, front-loaded with the core action, and each sentence adds value: the first explains the mechanism, the second details output features, and the third provides concrete use cases. No redundant or filler content.

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?

Given the tool has an output schema and annotations, the description covers the essential behavior, method, and example use cases. It doesn't describe return format, but that is likely handled by the output schema. It is slightly generic regarding edge cases, but for a read-only translation tool the context is sufficient.

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?

The input schema covers all three parameters with descriptions and default values (100% coverage), so the description doesn't need to add much. It does reinforce the meaning of 'palette' and 'target_archive' through examples, but does not elaborate on max_delta_e beyond what the schema already states.

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 uses specific verbs ('Map', 'translate') and identifies the exact resource ('any list of hex values into a target archive') with a clear method (CIEDE2000 nearest-neighbour matching). It clearly distinguishes this tool from sibling palette tools by emphasizing translation into named archives.

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 provides concrete use cases ('translate a client's paint colours into Shakespeare language', 'map a brand palette into historical Japanese pigments'), giving clear context for when to use it. It does not explicitly mention when not to use it or name alternatives, but the examples effectively convey the intended scenarios.

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

palette_verdictIs This Palette Working?A
Read-only
Inspect

Evaluate a palette of 2-8 hex values for a use case, market, and medium. Returns a verdict (strong / strong_with_adjustment / weak / avoid), a score 0-100, the role of each colour, the single biggest weakness, and a concrete suggestion for what to add to fix it. Each colour is matched to the nearest archive entry for cultural grounding. Examples: 'premium cushion collection UK ecommerce', 'hotel lobby interior', 'SaaS brand identity global digital'.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoOptional: target market e.g. 'UK', 'Japan', 'global'
mediumNoApplication medium e.g. 'interior', 'digital', 'fashion', 'print'general
paletteYesList of 2-8 hex values e.g. ['#31559B', '#E8D898', '#4A2A50']
use_caseYesWhat the palette will be used for e.g. 'luxury cushion collection', 'brand identity'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

ReadOnlyHint is already present, but the description adds meaningful context by detailing the output (verdict, score, role of each color, weakness, suggestion) and the internal behavior of matching colors to archive entries for cultural grounding. This goes beyond the annotation without contradicting it.

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 three sentences, front-loaded with the core action and inputs, followed by output specifics and illustrative examples. Every sentence contributes meaning without redundancy or fluff.

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?

With an output schema present, the return values are already documented. The description covers inputs, behavior, and examples, making it sufficient for an agent to select and invoke the tool correctly. Minor gaps like edge-case handling are not critical given the output schema and read-only nature.

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?

The schema already provides descriptions for all parameters (100% coverage), but the description adds crucial constraints like the 2-8 hex value range and enriching examples for use_case, market, and medium. It clarifies the expected format and context, adding value 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?

The description clearly states the tool evaluates a palette of hex values against a use case, market, and medium, and specifies the verdict and score outputs. It distinguishes itself from siblings like colour_verdict (single color) or palette_audit by focusing on holistic palette evaluation and providing actionable suggestions.

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

Usage Guidelines3/5

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

The description provides examples of valid use cases, which imply when the tool is appropriate, but it does not explicitly contrast it with alternatives like palette_analyse or palette_compare, nor does it state when not to use it. The context is clear but lacks explicit exclusions.

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

project_deleteDelete a Durable ProjectA
DestructiveIdempotent
Inspect

Soft-delete a durable house project you own. Idempotent -- deleting an already-deleted, unknown, or not-owned project_id returns the same successful-shaped response either way, and never discloses which case occurred. Version rows are never physically erased. Once deleted, a project can no longer be resolved by project_id or house_ref.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project_id returned by house_specify for an authenticated (keyed) call.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

The description adds substantial behavior beyond the annotations: soft-delete semantics, idempotence across all edge cases, non-disclosure of which case occurred, explicit statement that version rows are never physically erased, and the post-delete resolution effects. These details are critical for an agent to trust and safely invoke the tool.

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 three sentences with no fluff, front-loaded with the core purpose, and every sentence adds meaningful behavioral detail. It is efficiently structured and easy to parse.

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 single-parameter tool with an output schema and strong annotations, the description covers all essential behavioral context: ownership, idempotence, non-disclosure, physical row retention, and post-delete resolution. No significant gaps remain.

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?

The input schema already provides 100% coverage for project_id, including its origin ('returned by house_specify for an authenticated (keyed) call'). The description adds context about ownership and house_ref effects, but does not need to elaborate on the parameter itself. Baseline 3 is appropriate given schema coverage.

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 'Soft-delete a durable house project you own,' clearly identifying the specific verb (soft-delete), resource (durable house project), and ownership constraint. It is immediately distinguishable from sibling tools like project_get, project_list, and project_versions.

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 clearly states the tool applies to projects 'you own' and explains idempotent behavior for already-deleted, unknown, or not-owned IDs, setting expectations for when it can be safely invoked. It does not explicitly name alternatives, but the context is sufficient for a destructive single-resource operation.

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

project_exportExport House Project as Editable DOCX or XLSXA
Read-onlyIdempotent
Inspect

Export the same house-flagship content palette_pdf renders as a genuinely editable Word document or Excel workbook -- for a client who needs to annotate the scheme, or a contractor building a materials/procurement schedule from it. Accepts exactly one of house, house_ref, or project_id (same resolution and ownership rules as palette_pdf: an authenticated project_id or house_ref requires its owner; an anonymous temporary house_ref works bearer-only). Never calls house_specify, never re-runs reasoning or re-matches archives -- it renders exactly what was already resolved and stored. DOCX mirrors the PDF flagship's structure (title page, house thesis, whole-house progression, one section per room, implementation details with the same historical/digital-estimate/commercial-candidate distinction, and a deduplicated source appendix) as real editable paragraphs and tables, never images. XLSX produces three sheets: Finishes Schedule (one row per room-surface-colour assignment), Evidence Register (one row per unique colour, the full citation/claim-strength/do_not_say trail), and Paint Procurement (one row per unique paint product, deduplicated for ordering). Every field left blank where the underlying stored data doesn't have it -- nothing is invented. delivery="url" (default) gives a signed R2 download link; delivery="base64" returns the file inline unless the encoded result is too large, in which case it fails closed with OUTPUT_TOO_LARGE_FOR_INLINE_DELIVERY and a repair instruction to use delivery="url" instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
houseNohouse_specify's full response object, unmodified -- alternative to house_ref/project_id. PREFER house_ref or project_id when available.
formatYesWhich editable format to produce.
deliveryNo'url' (default): signed, time-limited R2 download link. 'base64': file bytes returned inline as file_base64, unless too large -- see OUTPUT_TOO_LARGE_FOR_INLINE_DELIVERY.url
house_refNoThe house_ref string house_specify returns. For a durable (authenticated) project this also requires the same API key that created it.
project_idNoThe project_id returned by house_specify for an authenticated (keyed) call. Requires the same API key that created the project.
project_versionNoUsed with either house_ref or project_id -- export this specific immutable version instead of the project's current version. Omit to export the current version.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations declare readOnlyHint=true and idempotentHint=true, and the description reinforces and enriches this by stating it 'renders exactly what was already resolved and stored' and never re-runs reasoning or re-matches archives. It also discloses the failure behavior for base64 delivery (fails closed with a repair instruction) and the 'nothing is invented' rule for blank fields, adding significant behavioral context well beyond what annotations provide.

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 a single dense paragraph that front-loads the core action, use case, and constraints before detailing output structure. Every sentence carries substantive information, but the lengthy enumeration of DOCX and XLSX layouts could be trimmed or restructured for even faster scanning. Still, for a tool with this complexity, it is appropriately detailed and mostly efficient.

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 identifier exclusivity and ownership rules, the exact content structure for both formats, delivery modes with fallback behavior, and the no-invention guarantee. An output schema exists, so the description appropriately avoids repeating return values. This is fully 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.

Parameters4/5

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

With 100% schema coverage, the baseline is 3, but the description adds critical semantics: 'Accepts exactly one of house, house_ref, or project_id' and explains ownership/resolution rules. It also clarifies the delivery enum's default and fallback behavior, and that project_version targets a specific immutable version. These details go beyond the schema descriptions, improving parameter understanding and correct usage.

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 'Export the same house-flagship content palette_pdf renders as a genuinely editable Word document or Excel workbook', naming the specific verb, resource, and target formats. It distinguishes from sibling palette_pdf by explicitly targeting editable DOCX/XLSX rather than a PDF render, making the tool's unique purpose unmistakable.

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 provides clear use cases ('for a client who needs to annotate the scheme, or a contractor building a materials/procurement schedule') and clarifies when it should not trigger re-reasoning ('Never calls house_specify, never re-runs reasoning or re-matches archives'). It also gives fallback guidance via the OUTPUT_TOO_LARGE_FOR_INLINE_DELIVERY error. However, it does not explicitly name alternative export tools for other scenarios, so it stops short of a fully explicit when/not-to-use matrix.

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

project_getGet Durable Project (Summary Only)A
Read-only
Inspect

Retrieve summary metadata for a durable house project you own -- title, project type, current version number, schema/archive revision, created/updated timestamps, and the content hash of the requested version. Requires an API key; the project must belong to the calling key. Does NOT return the full house specification (rooms, colours, sources) -- use house_ref with palette_pdf to render a document from a project, or project_versions to see its version history. An unknown, deleted, expired, or not-owned project_id all return the same generic not-found response, by design.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionNoSpecific version number to describe. Omit for the project's current version.
project_idYesThe project_id returned by house_specify for an authenticated (keyed) call.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond readOnlyHint, description adds meaningful behavioral context: requires API key, project ownership verification, and uniform generic not-found response for unknown/deleted/expired/not-owned IDs. No contradiction with 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?

Four sentences, front-loaded with main purpose, each sentence adds value: purpose, auth/ownership, exclusion, and error obfuscation. No redundancy or filler.

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?

With output schema present, description doesn't need to list return values; it covers auth, ownership, error behavior, and alternative tools. Complete for the tool's complexity and target use case.

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 baseline 3. The description adds minimal parameter insight beyond schema—only mentions 'requested version' which schema already explains. No additional semantics needed.

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?

Specific verb 'Retrieve summary metadata' identifies the operation and resource, lists fields, and explicitly distinguishes from siblings by stating what it does NOT return and pointing to house_ref/palette_pdf and project_versions for other use cases.

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?

Clearly states when to use (retrieve summary metadata) and explicitly excludes full specification rendering, directing to house_ref/palette_pdf and project_versions. Also mentions API key ownership requirement, giving clear usage context.

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

project_listList Your Durable ProjectsA
Read-only
Inspect

List durable house projects owned by the calling API key, most recently updated first. Anonymous (keyless) calls always return an empty list -- temporary anonymous projects are never listable, only resolvable directly by their house_ref. Requires an API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax projects to return, default 50, capped at 200.
cursorNoOpaque pagination cursor -- pass the previous response's next_cursor to get the next page.
project_typeNoFilter by project type, e.g. 'house'. Omit for all types.
updated_sinceNoISO 8601 timestamp -- only return projects updated after this time.
include_deletedNoInclude soft-deleted projects (still owner-scoped). Default false.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond the readOnlyHint annotation, the description adds meaningful behavioral details: anonymous calls return empty, durable vs temporary distinction, and the need for an API key. This goes well beyond annotations and helps the agent anticipate outcomes without making 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.

Conciseness5/5

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

The description is three sentences long, front-loaded with the core purpose in the first sentence. Every subsequent sentence adds essential behavioral or auth context without repetition or fluff.

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 tool has a rich output schema and fully documented parameters, the description covers the key aspects: scope, ordering, anonymous behavior, and auth requirements. No critical gaps remain for selecting and invoking the tool 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?

All five parameters have rich descriptions in the schema (100% coverage), so the description adds no additional parameter-level meaning. The baseline of 3 applies since the schema does the heavy lifting and the description doesn't need to compensate.

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 clearly states the tool lists durable house projects owned by the calling API key, with ordering by most recent update. It also distinguishes this from anonymous temporary projects, which are never listable, effectively differentiating it from sibling tools like project_get and project_delete.

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 explicitly warns that anonymous (keyless) calls return an empty list and that temporary anonymous projects are only resolvable directly by house_ref, implying the alternative tool. It also states that an API key is required, giving clear when-to-use and when-not-to-use guidance.

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

project_versionsList a Project's Version HistoryA
Read-only
Inspect

List every stored version of a durable house project you own, oldest first, with each version's content hash, build/schema/archive revision, and creation time. Version 1 is always immutable and always present. Earlier versions remain renderable via palette_pdf's project_version input even after a newer version exists. Requires an API key and ownership.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project_id returned by house_specify for an authenticated (keyed) call.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint: true, and the description reinforces this by stating it lists versions. It adds behavioral details beyond annotations: the immutability of version 1, the guarantee of presence, the ordering, and the fact that earlier versions remain renderable. It also notes the API key and ownership requirement, which is useful context. No contradictions.

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 two sentences, front-loaded with the main function ('List every stored version...'), followed by important guarantees and links to other tools. Every sentence adds value, with no repetition or filler.

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 tool is simple (one parameter, no nested objects) and has an output schema, so the description doesn't need to explain return structure. It covers ordering, immutability, cross-tool compatibility, and authentication requirements. This is complete for the tool's complexity.

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?

The input schema has 100% coverage: the only parameter (project_id) has a description explaining it comes from house_specify for an authenticated call. The tool description itself adds no additional parameter semantics, so it relies on the schema. Baseline 3 is appropriate because the schema fully documents the parameter.

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 clearly states the tool lists every stored version of a house project, specifying the ordering (oldest first) and the exact fields returned (content hash, build/schema/archive revision, creation time). It uses a specific verb ('List') and resource ('version history'), and the scope ('house project you own') distinguishes it from sibling tools like project_get or project_list.

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 provides useful context: version 1 is always present and immutable, and earlier versions remain renderable via palette_pdf's project_version input. This implies when to use this tool (to inspect version history before rendering) and mentions the alternative palette_pdf for rendering. However, it doesn't explicitly state when not to use this tool versus other listing tools, so it falls short of a 5.

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

query_conceptualSearch Colours by Concept or CultureA
Read-only
Inspect

Ask a cultural, historical, or material colour question. Returns named archive colours with provenance and cultural context. Works for abstract queries like 'grief' (returns Ophelia Violet, Titan's Grief), 'toxic Victorian pigments' (returns Nightshade Poison Berry Purple, Victorian Arsenic Mirror Silver), or 'the sea at dusk' (returns Evening Sea, Thames Blue Dusk). Even a vague or personal-sounding query never comes back empty -- result_path in the response tells you honestly whether this was a 'direct' hit, a 'broadened' retry (relaxed match threshold), or a 'redirected' fallback (dropped an archive restriction or switched to full-corpus semantic search).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe colour concept or cultural question to search for
archiveNoOptional: restrict to a named archive e.g. 'Japan', 'Pigment', 'OttomanEmpire'
n_resultsNoNumber of results (default 5)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With readOnlyHint annotation already covering safety, the description adds valuable behavioral context: it discloses that even vague queries never return empty, and explains the result_path field honestly indicates direct, broadened, or redirected match types. This goes beyond the annotation without contradicting it.

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?

Four sentences, each earning its place: main purpose, return details, examples, and the honest fallback behavior. No repetition of schema, no fluff, well front-loaded.

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?

With output schema present, the description needn't explain return structure. It explains the crucial result_path behavior, gives rich examples, and covers the main edge case (vague queries). Complete for the tool's complexity.

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 baseline is 3. The description enriches query semantics with specific examples and reveals that the archive parameter can be dropped in the 'redirected' fallback, giving additional meaning beyond the schema's basic descriptions.

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 clearly states a specific verb ('Ask'), a resource ('cultural, historical, or material colour question'), and what it returns ('named archive colours with provenance and cultural context'). Concrete examples like 'grief' and 'toxic Victorian pigments' distinguish it from hex-based siblings like query_hex.

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 provides clear when-to-use context through examples of abstract, cultural, and vague queries. It implies these are the intended use cases but does not explicitly name alternatives or state exclusions, so it falls short of a 5.

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

query_hexFind Named Colours by Hex CodeA
Read-only
Inspect

Find the closest named archive colours to a hex value using CIEDE2000 perceptual distance.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex value with or without # e.g. '#8B4513'
archiveNoOptional: restrict to a named archive
n_resultsNoNumber of results (default 5)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Beyond the readOnlyHint annotation, the description adds meaningful behavioral context by specifying the use of CIEDE2000 perceptual distance for closeness. It does not contradict annotations and clarifies how 'closest' is computed, which is valuable for the agent. The lack of detail on return format is mitigated by the presence of an 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 description is a single succinct sentence that immediately states the action and key qualifiers. It contains no redundant words and is front-loaded with the verb 'Find', making it easy to parse quickly.

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?

With a clear purpose, a read-only annotation, full schema coverage, and an output schema, the description covers the essential aspects of the tool. The only minor omission is explicit context on what 'archive colours' means, but the title and parameter schema sufficiently convey that it refers to a named archive. Overall, it is complete for a simple query tool.

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 baseline is 3. The description mentions 'hex value' which aligns with the required parameter, but adds no additional meaning beyond what the schema already provides for the archive and n_results parameters. It does not compensate for any gaps because there are none.

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 uses a specific verb 'Find' with a clear resource 'the closest named archive colours to a hex value' and the method 'CIEDE2000 perceptual distance'. This clearly distinguishes it from sibling tools like colour_match_paint or query_conceptual, which have different inputs or outputs.

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 implies the use case: when you have a hex value and want the closest named colours from an archive. It provides clear context but does not explicitly mention alternatives or exclusions, so it falls short of a 5 but is stronger than merely implied usage.

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

session_briefForensic BriefA
Read-only
Inspect

Single-call forensic colour brief generator. Runs coverage gap analysis, pulls best archive colours, checks for anachronisms, scores claim roles (anchor/support/analogue/provocation/reject), auto-rejects stubs, generates editorial argument, act structure, pull quote, closing line, and image prompt via Claude. This replaces chaining coverage_gap + archive_report_brief + anachronism_guard + resonance_index + evidence_gap separately. Input: title, audience, themes, archives, period, tone. Output: complete deliverable package ready for PDF or editorial use. Tone options: forensic (default), editorial, clinical, narrative.

ParametersJSON Schema
NameRequiredDescriptionDefault
toneNoforensic | editorial | clinical | narrative
avoidNoThemes to suppress
titleNoBrief title e.g. 'The Colours of Pleasure'
themesYesResearch themes
archivesNoArchives to draw from
audienceNoTarget audience e.g. 'serious collector'
n_coloursNoNumber of colour cards (default 8)
period_endNoEnd year e.g. 1830
period_startNoStart year e.g. 1714
target_periodNoHistorical period e.g. 'Georgian England 1714-1830'
strict_sourcesNoOnly include entries with named primary sources
confidence_thresholdNoMin confidence 0-1 (default 0.6)
minimum_claim_strengthNoHard evidence-grade floor: A, B, C, D, or E. Never silently relaxed.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations declare readOnlyHint=true, and the description adds rich behavioral context by detailing the internal pipeline (e.g., 'auto-rejects stubs', 'scores claim roles', 'generates editorial argument'). It goes beyond the annotation without contradicting it, though it doesn't mention any side effects or prerequisite conditions.

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 dense but well-structured: it opens with the core purpose, lists the main capabilities, provides an explicit replacement note, and ends with inputs, outputs, and tone options. Every sentence conveys valuable information without redundancy, making it highly efficient.

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 tool's complexity (13 parameters, output schema present, read-only annotation), the description fully covers purpose, usage, inputs, outputs, and tone variants. The output schema already handles return values, so no further explanation is needed. It is complete for an agent to select and invoke 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?

The input schema provides 100% coverage with detailed descriptions for all 13 parameters. The description adds a brief input list ('title, audience, themes, archives, period, tone') but no additional semantics beyond the schema, so the baseline of 3 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?

The description begins with 'Single-call forensic colour brief generator' and enumerates specific actions like 'runs coverage gap analysis, pulls best archive colours, checks for anachronisms'. It clearly distinguishes itself from siblings by stating it 'replaces chaining coverage_gap + archive_report_brief + anachronism_guard + resonance_index + evidence_gap separately'.

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?

Explicitly states when to use: 'This replaces chaining coverage_gap + archive_report_brief + anachronism_guard + resonance_index + evidence_gap separately.' It also lists expected inputs and outputs, giving the agent a clear decision framework.

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

style_matchStyle Match — Does This Go With That?A
Read-only
Inspect

The colour question every stylist gets asked: does this bag go with this outfit? Submit your outfit items as hex values with labels (dress, bag, shoes, coat, belt, scarf, etc.) and receive a verdict on what works, what clashes, what is missing, and what to add. Every recommendation is backed by archive colour names and historical context — not generic colour theory, but documented cultural combinations. Also suggests one missing archive colour that would complete the look. Examples: 'I have a navy dress (#1C3A6E) and a tan bag (#C8A87A) — what shoes?' or 'Does this burgundy coat work with olive trousers?'

ParametersJSON Schema
NameRequiredDescriptionDefault
askNoOptional: specific question e.g. 'what bag colour works?' or 'do the shoes work?'
itemsYesList of outfit items with label and hex colour
occasionNoOptional: occasion context e.g. 'daytime', 'evening', 'office', 'casual', 'wedding guest'general

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, lowering the bar. The description adds valuable behavioral context: recommendations are 'backed by archive colour names and historical context — not generic colour theory', and it 'suggests one missing archive colour'. This goes beyond 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.

Conciseness4/5

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

The description is front-loaded with the main purpose and includes examples, but it's slightly longer than necessary. Nevertheless, every sentence contributes useful context and no redundant filler is present.

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?

With an output schema present, the description need not explain return values. It covers the tool's purpose, input format, output nature, backing knowledge, and typical usage examples, making it complete 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.

Parameters4/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 all parameters. The description adds extra meaning by providing example labels (dress, bag, shoes, etc.) and example ask phrases, which helps the agent understand how to populate the items and ask fields correctly.

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 clearly states the tool's function: 'does this bag go with this outfit?' and explains it submits outfit items as hex values and labels to receive a verdict on what works, clashes, is missing, and what to add. It uses a specific verb ('receive a verdict') and resource ('outfit items'), and the focus on style matching distinguishes it from sibling colour/palette 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 provides clear usage context with examples of typical questions ('I have a navy dress... what shoes?') and the occasion parameter. However, it does not explicitly mention when not to use the tool or direct users to alternatives, so it falls short of a 5.

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

system_statusColour Memory Diagnostic / Version StatusA
Read-only
Inspect

Zero-argument diagnostic call: returns exactly what build is live right now (build_sha, schema_version, schema_hash, archive_revision, tool_count, generated_at, server_environment). Use this to confirm you're seeing the current deployed schema -- e.g. if a tool you expect (like house_specify) seems to be missing, call this first and compare schema_hash against another connection before assuming the server is wrong; a mismatch usually means one connection is holding a stale cached manifest, not a real deployment gap.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations provide readOnlyHint=true, and the description reinforces this as a 'diagnostic' call. The description adds valuable transparency about what data is returned (enumerates all 7 fields) and the logical interpretation of that data (mismatch semantics). While it doesn't discuss rate limits or auth, the description meaningfully extends beyond the annotation for a benign zero-arg 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?

Two sentences, well-structured and front-loaded with the core purpose before giving a practical use case. The second sentence is a bit long and runs into a single lengthy clause, but it earns its place by conveying a real-world diagnostic workflow. Slightly verbose relative to the simplest possible version, but not padded.

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?

Given there is an output schema available, the return-value enumeration is somewhat redundant with structured data, but the tool description still adds a complete diagnostic narrative. The tool is simple (zero args, benign), so the description is arguably complete. Minor gap: doesn't mention that this is the safe/cheap way to introspect the environment beyond schema staleness.

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?

Zero parameters, so schema coverage is 100% with nothing to document. The description does not need to add parameter meaning since there are no parameters; however, it compensates by explaining the semantic meaning of the returned fields (schema_hash comparison workflow), which functions as the equivalent value-add here.

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?

Clear verb+resource: 'Zero-argument diagnostic call' returning exactly the listed fields (build_sha, schema_version, etc.). The purpose is specific and unambiguous, and it distinguishes itself from sibling tools by being the one diagnostic/version-status function among a large set of domain tools.

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?

Explicitly states when to call it ('confirm you're seeing the current deployed schema', 'if a tool you expect like house_specify seems to be missing, call this first'), provides a concrete workflow (compare schema_hash against another connection), and explains the diagnostic interpretation (mismatch = stale cached manifest, not deployment gap).

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

tool_guideTool Routing GuideA
Read-only
Inspect

Deterministic tool-routing lookup -- not an LLM call, always instant, never consumes archive or LLM credit. Give it a goal in plain words (e.g. 'I have a brand colour and want to check it against competitors', 'I want to paint a whole house', 'I have a photo and want the colours from it') and it returns exactly which tool to call first, what to call next, and which superficially-similar tools NOT to start with and why. Use this before guessing between similarly-named tools (e.g. palette_specify vs interior_specify vs house_specify, or colour_passport vs colour_dna).

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesPlain-English description of what you're trying to do.

Output Schema

ParametersJSON Schema
NameRequiredDescription
thenNo
reasonNo
start_withNo
do_not_start_withNo
Behavior4/5

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

Annotations provide readOnlyHint=true, and the description adds meaningful behavioral context: it's deterministic (not an LLM call), always instant, and never consumes archive or LLM credit. It also discloses the return behavior (returns which tool to call, what next, and what NOT to start with). This adds value well beyond the annotation.

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 a single dense paragraph, front-loaded with the core purpose and value proposition (deterministic, instant, no credit consumed). It packs substantial guidance efficiently, though it is slightly long near the end with the example goal enumeration and tool-name list.

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 single-parameter, deterministic routing tool with readOnlyHint annotation and an output schema, the description fully covers what the agent needs: what it does, when to invoke it (before guessing between similarly-named tools), the expected input format, and the nature of the output. No gaps identified.

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% for the single 'goal' parameter, which is described as 'Plain-English description of what you're trying to do.' The tool description elaborates with concrete examples of valid goal phrasings, adding value beyond the bare schema. Baseline 3 is appropriate given high schema coverage.

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 clearly states this is a deterministic routing lookup that returns which tool to call first/next and which similar tools NOT to use. The verb+resource is specific ('give it a goal, returns exact routing'), and it explicitly distinguishes itself from sibling tools by naming them (palette_specify vs interior_specify vs house_specify).

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 gives explicit when-to-use guidance ('Use this before guessing between similarly-named tools') and provides concrete example goals ('I have a brand colour and want to check it against competitors'). It names the classifications of tools it disambiguates between, giving clear alternatives-defining context.

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

ui_statesUI State Palette GeneratorA
Read-only
Inspect

Generate a complete WCAG-compliant UI state palette from a brand hex. Returns colours for: brand, hover, active, disabled, focus ring, success, warning, error, info, surface subtle, surface strong. All states computed for contrast against your background colour. Returns hex, contrast ratio, WCAG grade, and usage note for each state. Includes CSS custom properties ready to paste. Supports light and dark mode. Use before building any UI component system.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_hexYesBrand colour hex e.g. '#D4A829'
dark_modeNoGenerate for dark mode (default false)
background_hexNoBackground hex (default #FFFFFF)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already indicate readOnlyHint=true, so the tool is known to be safe. The description adds valuable behavioral detail: contrast computation against background, light/dark mode support, return fields (hex, contrast ratio, WCAG grade, usage note), and CSS custom properties. No contradiction with 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?

The description is front-loaded with the main purpose and each sentence provides distinct value: states list, contrast behavior, output fields, CSS property inclusion, and usage timing. No filler or redundancy.

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?

With an output schema present, return values need not be fully explained, yet the description still covers outputs, use case, and behavior. The tool has only one required parameter, and the description gives sufficient context for an agent to select and invoke it correctly. Complete for the stated complexity.

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%, with each parameter described. The description adds little beyond the schema; it mentions 'brand hex' and 'background colour' but these are already clear in the parameter descriptions. Baseline 3 is appropriate since schema carries the semantic weight.

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 uses a specific verb 'Generate' with a clear resource: 'WCAG-compliant UI state palette' from a brand hex. It enumerates the exact states returned and distinguishes itself from sibling palette tools by focusing on UI states and contrast compliance.

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 provides explicit usage context with 'Use before building any UI component system,' indicating when to invoke the tool. However, it does not explicitly mention alternatives or when not to use it, so it lacks full exclusion guidance.

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

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    40-tool colour intelligence API for AI agents. Cultural risk, archive-verified colour naming, palette generation, WCAG accessibility, material physics, ecommerce copy, and image generation briefs. 16,682+ named colours across 43 cultural archives.
    66
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    Cultural Intelligence Infrastructure for AI Agents. Analyze cultural context, check sensitivity, localize content across 200+ markets with 15 tones and 8 specialized tools.
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    A comprehensive toolkit for color conversion, manipulation, and accessibility analysis supporting formats like OkLCH and WCAG compliance. It enables AI agents to manage design systems by generating harmonious palettes, transforming color spaces, and performing contrast checks.
    2
    MIT
  • A
    license
    -
    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

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources