Colour Memory
Server Details
Cultural color and colour intelligence API. Every colour anchored to a named person, a documented year, and a consequence. 34 archives spanning literary, cultural, pigment, and national traditions. Ask it what color could get you executed in the Ottoman Empire.
- 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.
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.
Tool Definition Quality
Average 4.4/5 across 85 of 85 tools scored. Lowest: 3.6/5.
Many tools overlap significantly, e.g., multiple palette generation tools (palette_concept, palette_strict, palette_generate, palette_iterate, palette_heritage) and multiple brand tools (brand_audit, brand_report, brand_system, brand_asset_pack) that produce similar outputs. Even with descriptions, an agent would struggle to pick the right one without reading every detail. The presence of a tool_guide to disambiguate is a symptom of the problem.
Most tools use snake_case with verb_noun structure (accessibility_check, palette_generate), but there are inconsistencies: several tools are noun phrases (colour_story, style_match, tool_guide), some use query_ vs search_ interchangeably (query_conceptual vs archive_search), and some are compound phrases (brand_guideline_specify, meta_capabilities). Overall readable but not fully consistent.
85 tools is an extreme size for any MCP server. Even with a broad colour intelligence domain, this is far beyond the typical well-scoped server. It suggests a lack of pruning and consolidation of overlapping functionality.
The tool surface is remarkably comprehensive, covering colour science, cultural research, accessibility, image extraction, branding, interiors, ecommerce, and project management. There are no obvious gaps in the stated domain; in fact, the set is over-complete, with many tools explicitly described as replacing chains of others. If anything, completeness is not a concern.
Available Tools
85 toolsaccessibility_checkCheck WCAG AccessibilityARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex_val | Yes | Foreground hex value | |
| background | No | Background hex (default 'FFFFFF') | FFFFFF |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true, so the safe read-only nature is already known. The description adds the scope constraint 'single foreground/background pair' but no further behavioral details like return format or edge cases. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff, front-loading the core function and then giving a concise alternative recommendation. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter read-only tool with an output schema, the description covers purpose and usage adequately. The alternative guidance adds context. It lacks mention of output specifics, but the output schema likely covers that, so no major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear descriptions for both parameters (hex_val and background). The description adds no additional parameter-level meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Evaluates contrast for a single foreground/background pair' with a specific verb and resource, clearly distinguishing it from accessibility_matrix for palettes. It answers what the tool does unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when-to-use guidance: 'For palettes or multiple colours, use accessibility_matrix instead, it replaces multiple accessibility_check calls in one response.' This names the alternative and clarifies scope, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accessibility_fontFont Colour AdvisorARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| palette | Yes | Candidate foreground hex values | |
| background | Yes | Background hex value |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the behavioral outcome (ranked list with WCAG grades and recommendations), which adds context beyond the readOnlyHint annotation. It does not contradict the annotations, and no side effects or prerequisites are hidden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of approximately 30 words, clearly front-loaded with the main action and without redundancy. Every phrase contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two required parameters and an output schema, the description adequately covers its inputs, processing (contrast ratio ranking), and output (WCAG grades and recommendations). No further context is necessary for successful invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are documented in the schema with descriptions, achieving 100% coverage. The description adds semantic context by explaining that the background is the base for ranking and the palette contains candidate foreground colors, enriching the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'return' with the resource 'ranked by contrast ratio' and specifies WCAG grades and recommendations, making its function clear. It distinguishes itself from siblings like accessibility_check by focusing on ranking candidate foreground colors for a given background.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when comparing multiple foreground colors against a background, but it does not explicitly state when to use it instead of other accessibility or color tools. No exclusions or alternatives are mentioned, so it earns an 'implied usage' score.
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 MatrixARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| palette | Yes | Array of hex values e.g. ['#D4A829', '#1A5C6E', '#0F2D6B', '#0A0A0B'] |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation. The description adds meaningful behavioral context by explaining the tool computes all combinations with specific pass/fail grades and summary, and that it is a batch operation to avoid repeated calls. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, and the second sentence gives a clear alternative. No extraneous information or repetition of schema details. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown), so return values are already covered. The description fully explains the tool's role and provides context for when to use it, complementing the complete schema and readOnlyHint annotation. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the palette parameter already described as an array of hex values with example and min/max constraints. The description only echoes 'palette array' without adding further nuance, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool accepts a palette array and returns every foreground/background combination with contrast ratios, WCAG pass/fail grades, and a summary. It uses specific verbs and resource, and explicitly distinguishes itself from accessibility_check by noting it should be used instead of calling that tool multiple times.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this instead of calling accessibility_check multiple times for a palette,' providing clear guidance on when to choose this tool over the named alternative. This is direct and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accessibility_rulesAccessibility Usage RulesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| palette | Yes | Array of hex values |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds that the tool is deterministic and has no LLM cost, which are meaningful behavioral traits beyond the annotation. It also enumerates return categories, providing transparency about what the tool produces. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The first sentence states the action, the second lists outputs and performance characteristics. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 covered. The description explains what the tool does, its inputs, and deterministic nature. The only gap is not explaining the prerequisite 'WCAG matrix' or when to call it relative to siblings, but this is a minor omission for a single-parameter read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description needn't repeat parameter details. The description mentions 'palette' in context but adds no syntax or formatting details beyond the schema's 'array of hex values'. Baseline 3 is appropriate since the schema fully documents the only parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts a WCAG matrix into design-system rules, listing specific outputs (safe pairs, AA-only pairs, etc.). This distinguishes it from sibling tools like accessibility_check or accessibility_matrix by focusing on derived rules rather than validation or raw matrix generation. However, it does not explicitly name a sibling for contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: 'Deterministic, no LLM cost' suggests it should be used when a rule-based, inexpensive conversion is needed. But there is no explicit 'use this when' or alternatives listed. It assumes the agent knows to call this after obtaining a palette matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accessibility_simulateSimulate Colour BlindnessARead-onlyInspect
Return simulated hex values for protanopia, deuteranopia, and tritanopia using the Brettel-Vienot-Mollon model.
| Name | Required | Description | Default |
|---|---|---|---|
| hex_val | Yes | Hex value e.g. '#BE0032' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, confirming a safe read operation. The description adds value by naming the specific transformation model (Brettel-Vienot-Mollon) and the three output variants, providing 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the action and output, with no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, the description sufficiently states the purpose and model. No further behavioral details are needed for this simple pure function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with hex_val fully described. The description doesn't add extra parameter semantics; it only mentions 'hex values' generically, so it meets the baseline without further enrichment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and resource ('simulated hex values'), listing the three colour blindness types. This clearly distinguishes it from sibling tools like accessibility_check, which focus on checking rather than simulating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for colour blindness simulation via the listed conditions (protanopia, deuteranopia, tritanopia). However, it does not explicitly mention when not to use it or name alternative tools, though the context is clear from the sibling set.
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 AIARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | What the other AI needs to generate e.g. 'luxury hotel bedroom image' | |
| avoid | No | Optional: terms/associations to keep out of retrieval e.g. ['mourning', 'funeral black']. Affects retrieval directly, not just post-hoc flagging. | |
| model | No | Target model: midjourney, flux, dalle, stable_diffusion | midjourney |
| archive | No | Optional: restrict palette query to this archive e.g. georgianpleasures, japan, china | |
| concept | Yes | Colour 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_notes | No | Optional: additional style direction e.g. 'matte surfaces only', 'no gold' | |
| palette_size | No | Number of archive colours to include (default 5, max 8) | |
| locked_palette | No | Optional: 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_archives | No | Optional: list of allowed archive names. Query restricted to these archives only. | |
| minimum_claim_strength | No | Evidence-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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
ReadOnlyHint already says no mutation; the description adds substantial behavioral detail: evidence filtering rules, honest incomplete results (ok:false, INSUFFICIENT_EVIDENCE_ELIGIBLE_PALETTE), negative constraints applied at retrieval time, and locked_palette skipping all filtering. This far exceeds the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long and organized in paragraphs, but every section adds necessary behavior context for a 10-param tool. It is front-loaded with a clear summary sentence, then details filters, error handling, and special modes. No filler, though the length keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 doesn't need to list return fields, but it still enumerates the package components (brief, tokens, prompt, negative prompt, lighting notes), covers error codes and edge cases, and gives supported models. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 10 parameters have schema descriptions (100% coverage), so baseline is 3. The description adds meaning beyond schema by explaining how avoid and negation phrases affect retrieval, what minimum_claim_strength means in practice (reject entries excluded regardless), and that locked_palette uses colours as-is. It doesn't cover every parameter but the critical ones get enriched, so 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb+resource: 'Generate a complete colour direction package for another AI agent or image generation model.' It explicitly names the deliverable and distinguishes from sibling palette/image tools by the 'for another AI' framing. Example task/concept/model anchors real usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Use this to make Colour Memory the colour layer for other AI systems,' providing clear when-to-use context. It also contrasts locked_palette vs archive-grounded retrieval paths, but it does not explicitly name alternatives among siblings or give when-not-to-use exclusions, so a 4.
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 FidelityARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| image_url | No | URL of the generated image | |
| image_base64 | No | Base64 encoded generated image | |
| target_palette | Yes | Hex values from agent_brief colour_tokens e.g. ['#ED9921', '#E29937'] |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds behavioral detail by specifying the return format: fidelity score 0-100, dE2000 distances, match quality categories, and a verdict. This goes beyond the annotation to clarify what the tool computes and reports.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four focused sentences cover purpose, inputs, outputs, and usage timing with no filler. The structure is front-loaded with the core action, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Combined with a rich output schema and readOnly annotation, the description covers the tool's role in the workflow, input options, and output semantics. It leaves little ambiguity about when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage so baseline is 3. The description adds nuance by indicating that the image can be supplied via URL or base64 (implying either/or), and ties target_palette to agent_brief colour_tokens, which is not explicit in the schema. This extra guidance supports correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Verify') and a specific resource (AI-generated image colour fidelity against agent_brief). It distinguishes from siblings by referencing agent_brief colour_tokens and dE2000 metrics, making it unique among 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use 'after agent_brief + image generation to close the colour loop', providing a clear usage context. It also describes what inputs to supply. However, it does not mention when not to use or name alternative tools, so it falls 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.
archive_clicheBreak a Colour ClicheARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| concept | Yes | Colour concept to subvert e.g. 'love', 'grief', 'luxury', 'betrayal', 'power' | |
| n_results | No | Number of archive entries to search (default 8) | |
| expected_colour | No | Optional: the cliche colour to contradict e.g. 'red', '#FF0000'. Hex or colour name. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the behavioural process: 'The archive finds the contradiction and Claude writes the one-liner, short story, and tweet,' and shows an example. This adds value beyond the readOnlyHint annotation, which only indicates no side effects. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose, followed by input instructions, an illustrative example, and a use-case sentence. It is compact and every sentence contributes meaningful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, input details, example output, and target use cases. Since an output schema exists, the return format is already documented. It does not mention n_results explicitly, but the schema covers that, so no significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already cover all three parameters (100% coverage), so baseline is 3. The description adds semantics by providing concrete examples (e.g., 'love', 'red') and illustrating how they interact (love + red returns Shakespeare's dark green), which helps the agent choose appropriate values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: find the most surprising archive colour for a concept and generate a one-liner, short story, and tweet subverting expectations. This specific verb+resource combination and the mention of creative outputs distinguish 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this for public-facing demos, content, and brand storytelling,' providing a clear when-to-use context. It does not explicitly state when not to use it or name alternatives, but the use case is sufficient.
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 ReportARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| themes | Yes | Themes to check e.g. ['opium', 'gin', 'gambling', 'racing'] | |
| archives | No | Optional archives to search e.g. ['EIC', 'Dickens'] |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description is consistent with a read-only reporting tool. The description adds context about the coverage matrix output and the strategic benefit, but does not disclose additional behavioral traits such as limitations, data sources, or performance characteristics. With annotations covering the safety profile, this is a baseline score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, front-loading the core purpose before output details and usage guidance. Each sentence contributes useful information, though the final sentence about 'beautiful reports' is slightly promotional and could be trimmed without losing essential guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with full schema documentation and an output schema, the description provides sufficient context to select and invoke the tool correctly. It explains when to use it, what it returns, and why it matters, making it self-sufficient for an agent to understand its role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (themes and archives) already well-documented. The description only restates that it takes a list of themes, adding no new semantic detail beyond the schema. Baseline 3 applies because the schema carries the parameter documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reports which themes are well-evidenced versus under-evidenced or missing, with a specific output format. It distinguishes itself from archive_report_brief and brief_forensic by positioning as a pre-flight check, but does not explicitly differentiate from the similarly named sibling archive_evidence_gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to use this tool BEFORE building an archive_report_brief or brief_forensic, providing strong contextual timing. It also explains the rationale (preventing reports that ignore evidence gaps). However, it does not mention when not to use it or name alternative tools like archive_evidence_gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_cultural_anachronismAnachronism GuardARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| entries | Yes | Colour entries to check | |
| period_end | No | End year e.g. 1830 | |
| period_start | No | Start year e.g. 1714 | |
| target_period | No | Period description e.g. 'Georgian England 1714-1830' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the bar is lower. The description adds useful behavioral context: it detects whether primary_source date falls outside the period, flags known modern archives (RacingSilks, FootballStrips), and returns specific fields (risk level, period_relevance, safe/unsafe phrasing). This goes beyond the annotation without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is composed of four purposeful sentences covering definition, detection logic, a use-case example, and output fields. No wasted words, though it is a bit longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and read-only annotation present, the description adequately explains the tool's role and return values. It could be more explicit about expecting entries to contain archive and primary_source fields, but that is inferable from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, so baseline is 3. The description adds semantic value by explaining that 'archive' values like 'RacingSilks' are known modern sources and linking 'primary_source' to date checking, giving meaning beyond the schema's bare descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('check') and resource ('colour entries') and defines the exact risk detection criteria (source date vs period, known modern archives). It clearly distinguishes from sibling tools like archive_coverage_gap or colour_cultural_risk by focusing on anachronism, with a concrete example.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Essential for historical documents' and a tangible example of a 2011 racing silk being misdated as Georgian. However, it does not explicitly mention alternatives or when NOT to use the tool, which would elevate it to a 5.
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 AnalysisARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex colour to analyse e.g. '#4A535C' | |
| archive | No | Optional archive to search e.g. 'DarkHistory' | |
| n_candidates | No | Number of archive candidates to return (default 5) | |
| proposed_claim | Yes | What you want to say about this colour e.g. 'cyanosis in a death chamber' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, and the description adds meaningful behavioral context: it turns absence of evidence into a forensic finding, returns support levels (supported/partial/unsupported), and provides safe agent wording. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core behavior and is about five sentences long. The example is helpful, though the output list is partly repeated between the first sentence and the example, making it slightly less concise than it could be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, output, and target workflows. Given that an output schema exists, it does not need to enumerate return fields in detail. It lacks explicit sibling differentiation and limitations, but overall provides enough context for an agent to select and use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 a concrete example ('#4A535C' + 'cyanosis in a death chamber') and explains the intent of proposed_claim, but it does not add new parameter-level syntax or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('return') and precisely names both inputs ('hex value' and 'proposed claim') and outputs (support decision, missing evidence, source type, safe wording). It also positions the tool as Colour Memory's anti-hallucination endpoint, clearly distinguishing it from siblings like archive_search or archive_coverage_gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the tool is 'essential for museum, documentary, editorial, legal, and forensic workflows' and gives an example scenario. It implies use when an agent has a proposed claim about a colour and needs evidence validation, but it does not explicitly name alternatives or state 'when not to use'.
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 ProvenanceARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| colour_name | Yes | Name of the archive colour e.g. 'Love Idleness', 'Woad Vat Blue', 'Murex Luxury' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint: true, and the description aligns by using 'explains' without implying mutation. The description adds meaningful behavioral context by enumerating what the provenance categories are and that confidence and citation format are returned. It goes beyond the annotation but doesn't discuss potential delays or limitations, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, then immediately provides usage guidance. Every phrase earns its place with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 string), the presence of an output schema, and readOnly annotation, the description is sufficient. It explains what the tool returns at a conceptual level, when to use it, and how it differs from the closest sibling, making it complete for the complexity involved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'colour_name' is fully described in the schema with examples, and the description repeats the notion of a 'named archive colour' without adding additional syntax or format details. Since schema coverage is 100%, the description adds marginal value here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool explains provenance of an archive colour and specifies the types of provenance (documented fact vs computational derivation vs cultural interpretation) along with confidence and citation format. It also distinguishes this from the sibling tool colour_passport by positioning it as a standalone deep-research tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool versus the alternative: 'Use colour_passport for a general profile; call this directly for research workflows needing full source-chain detail.' It also names target use cases (museum, documentary, editorial), providing clear context.
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 BriefARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| avoid | No | Topics to suppress e.g. ['arsenic wallpaper', 'Wedgwood blue'] | |
| title | No | Document title e.g. 'The Colours of Georgian Power' | |
| themes | Yes | Research themes e.g. ['racing silks', 'EIC trade', 'Keats'] | |
| archives | No | Archives to search e.g. ['RacingSilks', 'EIC', 'Keats', 'Dickens'] | |
| audience | No | Target audience e.g. 'serious Georgian collector' | |
| n_colours | No | Number of colours to return (default 8, max 16) | |
| period_end | No | Hard period gate: exclude entries dated after this year. Default 9999 (no upper bound). | |
| period_start | No | Hard period gate: exclude entries dated before this year. Default 0 (no lower bound). | |
| allow_partial | No | If 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_format | No | Reserved for future use -- currently accepted but has no effect on the response shape (the endpoint always returns the full report). | |
| strict_sources | No | Only return entries with named primary sources (default true) | |
| family_card_mode | No | How 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_threshold | No | Minimum confidence score (0.0-1.0) for an entry to be included. Default 0.5 filters out weakly-matched stubs. | |
| max_family_card_share | No | Conservative 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_strength | No | Hard evidence-grade floor: A, B, C, D, or E. Never silently relaxed. | |
| strict_semantic_colour | No | Default 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that it makes 'Two Claude calls total', which is a behavioral trait beyond the readOnlyHint annotation. It also describes the composite nature, replacing multiple tools, and the full output list. This adds meaningful context without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with an 'Input:' and 'Output:' list, front-loading the core purpose. Each section earns its place; the alternative naming and usage instruction are not filler. It is appropriately dense for a complex 16-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (16 params) and presence of an output schema, the description does not need to explain return values. It covers purpose, inputs, outputs, alternatives, and usage in enough detail. It could mention edge cases or error behavior, but the output schema likely handles that, so 4 is fair.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% coverage with descriptions for all 16 parameters. The description's input list ('title, audience, themes, archives to draw from, things to avoid, number of colours') just summarizes the schema and adds no new per-parameter semantics. Therefore baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this is a 'one-call complete archive research package' for documents/PDFs/briefs, explicitly distinguishing it from chaining individual tools like archive_search and get_colour_card. It names the tool as the endpoint for document workflows, providing specific verb + resource + scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this first for any document workflow' and identifies alternatives by naming the tools it replaces ('Replaces chaining archive_search + get_colour_card + cliche_breaker + agent_brief separately'). However, it doesn't explicitly state when to avoid it in favor of those individual tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_searchArchive Keyword SearchARead-onlyInspect
Full-text keyword search across all archive colour names and notes. Find colours by name fragment, material, cultural reference, pigment type, or historical period. Complements conceptual embedding search with exact keyword matching. Examples: 'cerulean' (28 matches, e.g. Bourton Cerulean), 'Prussian' (187 matches spanning pigment history), 'medieval' (over 1,000 matches across period archives). Never returns a bare empty result for a genuinely obscure query -- result_path in the response is 'direct' (exact keyword hit), 'broadened' (archive restriction dropped), or 'redirected' (fell back to conceptual/semantic search) so you always know which one fired. Set entity_mode='exact' to search by botanical identity rather than by word: a plain query for 'Rose' matches any cultivar name containing it (including Sweet Peas called 'Rose Pink'), whereas entity_mode='exact' returns genus Rosa only and discloses how many off-genus records were excluded.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Alias for n_results | |
| query | Yes | Search term e.g. cerulean, Prussian, Ottoman, ochre, medieval | |
| archive | No | Optional archive filter e.g. oxfordshire, japan, pigment, keats, eic, racingsilks | |
| year_to | No | Boost entries on or before this year e.g. 1600 for Renaissance, 1901 for Victorian | |
| n_results | No | Number of results (default 10, max 50) | |
| year_from | No | Boost entries on or after this year e.g. 1400 for Renaissance, 1837 for Victorian | |
| entity_mode | No | 'text' (default): ordinary keyword search -- 'rose' finds any name containing the word, across genera. 'exact': resolve the query to a botanical entity and return ONLY records whose structured identity matches. Use 'exact' when you mean the plant, not the word: entity_mode='exact' with query='Rose' returns genus Rosa only and excludes Sweet Pea cultivars named 'Rose Pink'. The response carries an entity_resolution block showing the resolved genus and how many off-genus rows were excluded. | text |
| include_full | No | Return complete notes and source fields. Default false returns 150-char snippets. Set true for report workflows. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses non-obvious behaviors: never returns a bare empty result, may fall back to semantic search, and how entity_mode changes results (e.g., 'Rose' excludes Sweet Peas named 'Rose Pink'). This adds rich context that annotations alone cannot provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and information-rich, with every sentence serving a purpose. It could benefit from paragraph breaks for readability, but it is not verbose or redundant; it wisely front-loads the core purpose and then layers examples and edge-case behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 8 parameters and an output schema, the description covers all essential context: matching behavior, fallback logic, entity mode, result_path semantics, and parameter interplay. It is complete enough for an agent to use the tool correctly without additional lookups.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even with 100% schema coverage, the description adds meaning: it clarifies entity_mode with a concrete example, mentions limit as an alias for n_results, and explains include_full's snippet vs full notes behavior. This is substantial semantic enrichment beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Full-text keyword search across all archive colour names and notes' with a specific verb and resource. It distinguishes itself from sibling tools by explicitly comparing to 'conceptual embedding search' with 'exact keyword matching', making its unique role obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage guidance by saying it 'Complements conceptual embedding search' and even describes fallback behavior (result_path: 'direct', 'broadened', 'redirected'). The entity_mode='exact' explanation tells the agent when to use an alternative search mode, which is actionable guidance.
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 ExportARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Target market | global |
| medium | No | digital | print | both | digital |
| palette | Yes | Hex values | |
| use_case | No | Use case | brand identity |
| brand_category | No | Optional brand name or category |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With the readOnlyHint annotation already declaring a safe read operation, the description adds valuable behavioral context: it is deterministic, has no LLM cost, and returns a predefined set of artifact types. This goes beyond the annotation and helps the agent anticipate the tool's reliability and output characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long with front-loaded purpose: the first sentence names the resource, the second lists the exact outputs, and the third adds key behavioral traits (deterministic, no LLM cost). Every sentence earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly explains the tool's output scope and purpose. Given the presence of an output schema and full parameter schema coverage, the agent has enough information to select and invoke the tool correctly. It could add more detail on how optional parameters influence the pack, but this is not critical for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage with descriptions for all parameters, so the description does not need to elaborate. It adds no additional parameter semantics beyond what the schema already provides, but schema coverage is sufficient, making this a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it returns a complete brand asset pack with specific artifacts (CSS variables, Tailwind config, Figma tokens JSON, citation cards, and a Markdown brand guide). This specific verb+resource distinguishes it from sibling tools like palette_export, which focus on single asset types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through phrases like 'Complete brand asset pack' and 'Everything a brand team needs to ship,' suggesting it is for comprehensive brand asset generation. However, it does not explicitly state when to use it vs. alternatives or mention exclusions, so guidance is only implied but not explicit.
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 AuditARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Target market e.g. 'UK luxury', 'global', 'Japan' | global |
| medium | No | digital | print | both | digital |
| palette | Yes | Array of hex values e.g. ['#D4A829', '#1A5C6E', '#0F2D6B', '#0A0A0B'] | |
| use_case | No | Use case e.g. 'brand identity', 'packaging', 'app UI' | brand identity |
| brand_category | No | Optional brand category e.g. 'developer tool', 'food', 'fashion' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses that the tool is deterministic and makes no model call, that it previously hid LLM calls causing 43-45s delays, and that certain keys are returned with interpretation_status='not_computed' plus continuation arguments. This is rich behavioral context that significantly helps the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although the description is long, every sentence adds necessary information: deterministic nature, excluded functionality, migration from hidden LLM calls, and next-step continuation. It is front-loaded with the core purpose and organized clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 covers key aspects: what is computed, what is not computed, how to proceed for interpretation, and relationships with alternative tools. It provides a complete picture for safe and effective invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a description. The tool description simply lists the parameter names without adding new format or semantics beyond the schema, so this is baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'brand colour audit' with specific outputs (WCAG matrix, cultural risk, CSS variables, etc.). It explicitly differentiates from siblings by noting it replaces chaining accessibility_matrix + cultural_risk_assessment and that palette_verdict is a separate follow-up call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: use this tool for the deterministic, synchronous audit, and use palette_verdict for the interpretation (verdict, score, narrative). Names the alternative tools that it replaces, making the usage boundary clear.
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 CheckARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Market context e.g. 'UK luxury food retail' | |
| region | No | Region code e.g. 'GB', 'UAE', 'JP' | |
| brand_hex | Yes | Brand hero colour hex e.g. '#D4A829' | |
| brand_name | No | Brand name e.g. 'Fortnum and Mason' | |
| competitor_hexes | No | List of competitor hex colours | |
| competitor_names | No | Competitor names matching hex order |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 no further behavioral context such as limitations (e.g., not legal advice), dependencies on competitor data accuracy, or how the archive context is sourced. It does describe the return payload in detail, but that's expected behavior rather than a transparency disclosure. Given the annotation coverage, a 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. The first sentence front-loads the core purpose as a direct question, then the second enumerates outputs and usage context. Every clause earns its place, and the structure makes scanning easy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists and annotations are present, the description is nearly complete for a complex tool. It covers purpose, inputs, outputs, and when to use. The only gaps are minor: it does not mention potential limitations or explain 'archive context' semantics, but the output schema likely handles return structure. A 4 reflects strong completeness without being exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented with type and example. The description lists the same inputs ('brand hex, brand name, competitor hexes and names, market, region') without adding new semantic nuance or format details beyond the schema. With high schema coverage, the baseline is 3, and no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific question that defines the tool's purpose: assessing colour ownership/collision in a market. It enumerates exact inputs and outputs, and explicitly differentiates from manual checks and competitor palette analysis. This distinguishes it from siblings like colour_compare by emphasizing market/region context and ownership verdicts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use the tool ('Use before committing to a brand colour in a competitive market') and what it replaces ('manual colour distance checks and competitor palette analysis'). It does not explicitly name alternative sibling tools or give exclusion criteria, but the context is clear. A 4 reflects clear usage context without explicit 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.
brand_guideline_claimsResolve Brand Colour Standard Claim DetailARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| brand_ref | No | The brand_ref returned by brand_guideline_specify or brand_guideline_select. | |
| claim_ids | No | Which claim_id values to resolve. Omit (or pass an empty list) to return every claim on the brand_ref. | |
| project_id | No | Alternative to brand_ref for an authenticated (keyed) brand project. Requires the same API key that created it. | |
| project_version | No | Resolve claims against this specific immutable version instead of the project's current version. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, but the description adds meaningful context: reads an 'already-persisted, frozen brand_ref snapshot', never re-runs generation, and mutates nothing. It also discloses a critical parameter constraint ('exactly one of brand_ref or project_id') not obvious from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences: first states purpose and output, second emphasizes read-only safety, third covers the omit-all behavior and parameter constraint. Every sentence earns its place, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of a full output schema and rich annotations, the description covers purpose, usage, parameter relationships, and behavioral safety. It lists the key return components (source, permitted text, restrictions, role) and explains the important 'omit claim_ids' behavior. Nothing important is missing for a read-only resolver.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 extra meaning beyond schema: claim_ids are returned inline by sibling tools and can be omitted to return all; brand_ref and project_id are mutually exclusive (same as brand_guideline_pdf). It does not explicitly describe project_version, but the schema handles that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Resolves') and clearly states the resource ('claim_id values') and the output components (source, text, do_not_say, claim_role). It explicitly distinguishes itself from sibling tools brand_guideline_specify and brand_guideline_select, which return these claim_ids inline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that claim_ids are produced by brand_guideline_specify and brand_guideline_select, so this tool is used when you need full claim records. It also clarifies the optional 'omit claim_ids for all' behavior and references brand_guideline_pdf for the parameter acceptance pattern. No explicit 'when not to use' statement, but context is clear.
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 PDFARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| delivery | No | 'url' (default): signed, time-limited R2 download link. 'base64': PDF bytes returned inline. | url |
| brand_ref | No | The brand_ref returned by brand_guideline_specify or brand_guideline_select. | |
| project_id | No | Alternative to brand_ref for an authenticated (keyed) brand project. Requires the same API key that created it. | |
| project_version | No | Render this specific immutable version instead of the project's current version. Omit to render the current version. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (read-only, idempotent, non-destructive), the description discloses significant behavioral traits: it reads only the frozen snapshot, never mutates the project, indicates conditional page structure (sections omitted when irrelevant), notes that derived colours are never presented as documented-source language, and clarifies that the accessibility matrix is computed upstream rather than hand-drawn. These details significantly enrich the agent's understanding of the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose, but it is quite verbose. Several sentences detail the document's contents (e.g., coverage of direction, assessment, packaging, accessibility matrix) which may not be essential for tool selection or invocation. While each sentence adds some information, the description could be more concise without losing critical guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, conditional rendering logic, no required parameters, and an output schema), the description is remarkably thorough. It covers input constraints, selection behavior, page structure variability, safety guarantees, and preview labeling. The presence of an output schema means return value details need not be explained, and the description does not waste space on them. It is complete for an agent to correctly select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% description coverage, so the baseline is 3. The description adds a crucial constraint not present in the schema: 'Accepts exactly one of brand_ref or project_id.' It also reinforces that brand_ref must be existing and ties the selection logic to brand_guideline_select. This additional meaning beyond the schema justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: 'Renders a client-facing brand colour standard from an existing brand_ref.' It clearly distinguishes itself from siblings like brand_guideline_specify and brand_guideline_select by stating it is the rendering step and that it never re-runs specification or rematches archives. The scope is precisely defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: it requires an existing brand_ref or project_id, and it clarifies when it produces a provisional preview versus the selected candidate. It also states what it never does ('never re-runs brand_guideline_specify, never rematches an archive'), which serves as exclusion guidance. However, it does not explicitly name alternative tools for when not to use this one, so it falls short of full alternative enumeration.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional free-text rationale, e.g. "Client prefers the quieter system." | |
| brand_ref | Yes | The brand_ref returned by brand_guideline_specify. | |
| locked_colour_ids | No | colour_id values to lock for future iteration. | |
| suppressed_claim_ids | No | claim_id values to suppress (marked superseded). | |
| selected_candidate_id | Yes | Which candidate_id to make canonical. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly=false, destructive=false), the description discloses that the tool creates a new version under the same brand_ref, locks colours, suppresses claims, and produces a revised brand_ref. It also clarifies that suppression means marked superseded, and that reviewer states are not yet included—valuable behavioral context beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that efficiently packs purpose, inputs, outputs, and limitations without fluff. Every clause contributes meaningful information, and it remains readable despite covering multiple aspects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and all parameters are self-describing, the description covers the essential behavior: what is recorded, what is produced, versioning semantics, and the current scope (no approval workflow). It is complete for an agent to select and invoke effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter already described. The description aligns with the schema but adds limited new parameter-level detail; it reinforces the purpose of locked_colour_ids and suppressed_claim_ids but does not exceed what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 and action: recording a manual brand colour decision from brand_guideline_specify candidates, locking colours, and suppressing claims. It also distinguishes itself by noting the output is a revised brand_ref with a new version, and explicitly separates it from 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use after brand_guideline_specify by referencing its candidate output, and states when-not using it: 'No accounts or reviewer states yet -- this demonstrates decision-making, not a full approval workflow.' It lacks an explicit alternative tool name, but the exclusion and context make usage reasonably clear.
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 StandardARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| brand_name | Yes | The brand's name. | |
| brand_brief | No | Category, positioning, audience, personality, values, channels, markets, and named competitors with their hex colours. | |
| constraints | No | Structured negative/positive retrieval constraints, checked before archive-diversity capping. avoid_concepts takes precedence over any sentiment inferred from brand_brief prose. | |
| preferences | No | ||
| palette_input | Yes | Exactly how to source the candidate colours. | |
| identity_assets | No | ||
| output_preferences | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description extensively discloses behavioral nuances beyond annotations: the ~55s race window, the compact processing response for slow generations, the guarantee that generation continues and is never lost, and the instruction to poll with brand_guideline_status. It also exposes the nuanced evidence-floor semantics (minimum_claim_strength) and the distinction from palette_specify. This is exemplary transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized, with a natural flow from purpose to follow-up to timing. The TIMING section is clearly delimited and provides critical operational detail. Every sentence earns its place, though the single-paragraph format is slightly heavy; a bit more visual separation could improve scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, nested objects, output schema, async behavior), the description is remarkably complete. It covers the async race, fallback response, polling mechanics, follow-up tools, and the unique claim semantics. The presence of an output schema relieves the need to explain return values, but the description still covers the essential non-obvious behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 57%, so the description compensates with key semantic distinctions. The description adds meaning to minimum_claim_strength by clarifying it is an evidence floor, not a design admission filter, and that the difference from palette_specify matters. It also contextualizes the palette_input modes within the archive-grounding workflow. However, it does not systematically elaborate on every parameter, so a small gap remains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: generating a case for brand colours with three archive-grounded candidate palettes, distinctiveness scoring, and accessibility checks. It distinguishes itself from sibling tools by naming brand_guideline_claims, brand_guideline_select, and brand_guideline_status as follow-ups. The verb 'Generates' plus specific resource ('brand colour standard') makes the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use and follow-up guidance: 'Follow with brand_guideline_select to record which candidate was chosen' and 'resolve those into full source/permitted-claim/do_not_say text with brand_guideline_claims'. It also provides a direct alternative contrast: 'Note this differs from palette_specify, where the floor IS a hard admission filter.' This clearly orients the agent on when to use this tool vs related ones.
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 ResultARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| brand_job_ref | Yes | The brand_job_ref returned by brand_guideline_specify's processing response. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds crucial context: it never re-runs generation, and it details all possible return states (processing, complete, failed) plus the structured BRAND_JOB_NOT_FOUND error for unknown/expired refs. This exceeds what annotations alone convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the core purpose. All sentences add value, though the third sentence is lengthy. It is appropriately sized for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the tool's role, all status values, error handling, and the correct follow-up workflow with sibling tools. Given the output schema exists, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the parameter semantics ('The brand_job_ref returned by brand_guideline_specify's processing response'). The description repeats this and adds the notion of expiry, but the schema already tells the agent where the ref comes from. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a status lookup for async brand_guideline_specify jobs, using the verb 'resolves' and specifying the resource (brand_job_ref). It distinguishes itself from sibling tools by explaining it is a read-only, in-process lookup that never re-runs generation, and it points to brand_guideline_select/pdf/claims for full detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the triggering condition ('when its race-to-complete window elapsed before generation finished') and directs users to alternative tools for full detail after completion. This provides clear when-to-use guidance and names specific sibling tools as alternatives.
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 ReportARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hero hex colour e.g. '#4A2A50' | |
| medium | No | Medium e.g. 'packaging', 'digital', 'interior' | general |
| concept | No | Optional concept to search for cliche contradiction e.g. 'luxury', 'eco', 'wellness' | |
| markets | No | Target markets e.g. ['UK', 'France', 'Japan'] | |
| product_type | No | Product type for copy e.g. 'velvet cushion', 'fragrance', 'cleaning spray' | |
| target_model | No | Image model for agent brief e.g. 'midjourney', 'flux', 'dalle' | midjourney |
| brand_context | No | Brand context: category, positioning, audience, channels |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint annotation already conveying safety, the description adds useful behavioral context: it explains the tool is a composite that aggregates outputs from multiple sub-tools and mentions the internal 'Two Claude calls' detail. It also lists the full set of outputs, giving transparency into what the report includes. No contradiction with annotations is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear 'Input:' and 'Output:' sections and a final usage sentence. It is front-loaded with the main concept, and while the output list is long, each item is relevant and earns its place. It is not verbose or repetitive, and it avoids unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, output schema, nested objects), the description covers inputs, outputs, and usage guidance, making it reasonably complete. The existence of an output schema means it does not need to detail return structures. It could optionally mention more about prerequisites or limitations, but overall it provides sufficient context for an agent to decide and invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, with each parameter described in detail. The description itself lists the inputs ('hex + brand context + markets + medium + product type') but adds little semantic value beyond grouping them. It does not provide additional format, constraints, or relationships to outputs that aren't already in the schema. Thus, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'complete brand colour intelligence report' with a specific verb ('report') and resource ('brand colour intelligence'). It explicitly differentiates from sibling tools by naming them: 'colour_strategy + cliche_breaker + ecommerce_product_copy + memory_hooks + agent_brief', and positions itself as the composite alternative. This is a strong, specific purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use this instead of chaining ... separately' and mentions 'Two Claude calls total. One complete response.' This tells the agent when to choose this tool over chaining individual tools. However, it does not explicitly state when NOT to use it (e.g., when only one specific output is needed), so it falls short of a perfect 5.
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 SystemARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Target market e.g. global, UK, Japan | global |
| medium | No | digital | print | both | digital |
| palette | Yes | Hex values | |
| use_case | No | Use case e.g. brand identity, packaging | brand identity |
| brand_category | No | Optional e.g. developer tool, luxury, food |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds 'Deterministic. No LLM cost.' which helps set expectations about consistency and cost. It also lists the specific return categories, giving a transparent view of behavior, though it omits details like response size or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no waste. The key value proposition is front-loaded in the first sentence, and the second lists outputs and qualifiers efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with five parameters and a rich output schema, and the description covers the main purposes and output categories. The presence of an output schema reduces the need to enumerate return values, and the deterministic/no-cost traits add completeness. It could mention edge cases like market-specific outputs, but the schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes all five parameters with 100% coverage. The description does not delve into parameter interactions, but it indirectly reinforces that palette is the core input. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool provides a 'Complete brand colour system in one call' and enumerates specific outputs (colour roles, light/dark mode maps, typography guidance, usage rules, design tokens, citation cards). This clearly distinguishes it from siblings like colour_card or palette_export, which focus on narrower scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'in one call' implies a comprehensive alternative to piecemeal tools, giving clear context for when to use it. However, it does not explicitly name sibling tools or provide when-not-to-use guidance, 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_cardGet Colour Details by NameARead-onlyInspect
Look up a named colour and return its hex, archive, provenance, and cultural notes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Colour name e.g. 'Prussian Blue' or 'Ottoman Carbon Ink' | |
| slug | No | Stable colour slug from archive_search e.g. 'keats:keats-s-lung' -- preferred over name for reliable retrieval |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals safe read-only behavior, and the description adds value by specifying the exact kind of data returned (hex, archive, provenance, cultural notes). It does not introduce contradictions or hidden side effects, making the behavior clear for a lookup tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the primary action and outcome. It contains no filler or repetition, earning its place efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, a readOnlyHint annotation, and detailed parameter descriptions, the concise description is largely sufficient. It could benefit from a note about fallback behavior when a name is not found or when to prefer slug over name, but the current coverage is adequate for straightforward usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with clear descriptions for both parameters (name and slug), including the suggestion that slug is preferred. The tool description adds no additional parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('look up') and resource ('named colour') and lists the return contents (hex, archive, provenance, cultural notes). It distinguishes itself from colour_* siblings by focusing on details by name, though it doesn't explicitly differentiate from similar lookup tools like colour_passport.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 named colour'), but it does not provide explicit guidance on when to use it vs alternatives or mention prerequisites like using archive_search to obtain a slug. No exclusions or alternatives are noted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
colour_combinationColour Combination CheckARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| colours | Yes | 2-5 hex values to assess as a combination | |
| context | No | Usage context: UI | data viz | fashion | interior | print | branding | UI |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already indicates a safe read operation. The description adds meaningful behavioral context by specifying the tool returns harmony type, clash warnings, contrast summary, and deployment rules. No side effects are disclosed because none exist, and this is consistent 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the action verb 'Assess' and the resource, followed by a compact list of return categories. Every clause adds value and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two well-documented parameters, an output schema present, and a read-only annotation, the description sufficiently covers the tool's purpose, scope, and outputs. The return details are handled by the output schema, and the description provides the needed situational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both parameters (colours and context) are described with details like hex values and allowed contexts. The description repeats this information without adding new semantics such as default behaviour, hex format specifics, or validation rules. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Assess' and identifies the resource as '2-5 colours as a combination' for a defined context list (UI, data viz, fashion, interior, print, branding). It enumerates return types (harmony type, clash warnings, contrast summary, deployment rules), distinguishing it from sibling tools like colour_compare 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use the tool: evaluate a combination of 2-5 colours for a given context, listing six specific contexts. It does not name alternative tools or state exclusions, but the context list and 'combination' scope imply appropriate usage. This is clear context without explicit alternatives.
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 CulturalARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex_a | Yes | First colour hex e.g. '#003366' | |
| hex_b | Yes | Second colour hex e.g. '#1877F2' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already discloses non-destructive behavior. The description adds meaningful behavioral context by enumerating the return content — LRV, chroma, hue angle, warmth, CIEDE2000 distance, and cultural context — and notes the tool's decision-support function, going 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, followed by output details and usage guidance. Every sentence contributes distinct information: what it does, what it returns, and when to use it. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a simple 2-parameter interface and an output schema present, the description is fully sufficient. It explains the tool's purpose, output categories, usage contexts, and explicitly rejects the harmony-tool role. An agent can confidently select and invoke this tool without ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both hex_a and hex_b described and example formats provided. The description phrases them as 'any two hex values,' reinforcing the relationship between parameters, but does not need to add further detail since the schema already carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: 'Deep perceptual and semantic comparison between any two hex values.' It lists concrete output dimensions and clearly distinguishes itself from harmony tools with 'Not a harmony tool — this is a decision and reasoning tool,' setting it apart from siblings like colour_harmonies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use when choosing between two colours or explaining why one works better than another.' It also states an exclusion ('Not a harmony tool'), which helps an agent decide against this tool when harmony-related tasks arise.
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 PaletteARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | No | Single hex value to assess e.g. '#FF9900' | |
| markets | No | Optional market focus e.g. ['China', 'Middle East', 'India'] | |
| palette | No | Optional list of hex values to assess as a palette |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds context beyond annotations by explaining the tool handles both hex and palette inputs and that it serves as a component of colour_passport. No contradictions, and it clarifies scope without needing to restate safety since annotations cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, then a concise usage comparison. Every sentence carries meaning with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the readOnly annotation, output schema, and full parameter coverage, the description sufficiently addresses what the tool does, when to use it, and how it relates to colour_passport. It is complete for an agent to select this tool among many colour-related siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all 3 parameters at 100%, so the baseline is 3. The description connects 'hex value or palette' to the hex/palette parameters but does not add per-parameter syntax or nuance beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool assesses cultural risk for a hex value or palette, enumerating specific dimensions (symbolic weight, taboos, religious associations, market flags). It explicitly distinguishes itself from colour_passport by positioning as a component and direct-call for palette-level risk checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 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 an alternative and gives concrete decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
colour_dnaColour DNA FingerprintARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex colour to fingerprint e.g. '#4A2A50' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, covering safety. The description adds that it is a 'semantic fingerprint' and a component of colour_passport, but does not elaborate on output behavior, limitations, or side effects beyond that. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, and no unnecessary words. Every sentence contributes to purpose or usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool with an output schema, the description fully covers what, when, and why. It references its relationship to colour_passport and provides a clear usage condition. The meaning of 'semantic fingerprint' is likely explained by the output schema, so no further detail is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description includes a format example ('#4A2A50'). The tool description only reiterates 'single hex colour', adding no new semantic detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool produces a 'compact semantic fingerprint' for a single hex colour, using a specific verb and resource. It directly distinguishes itself from colour_passport, making the purpose unmistakable among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructionates when to use this tool versus colour_passport: '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 provides a clear condition.
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 CheckARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex colour to assess e.g. '#2A5498' | |
| use | No | Specific use context e.g. 'heritage repair', 'new build interior', 'conservation project' | |
| finish | No | Paint finish e.g. 'matt', 'eggshell', 'gloss', 'limewash' | matt |
| substrate | Yes | Physical substrate e.g. 'lime plaster', 'gypsum board', 'brick', 'timber', 'canvas' | |
| orientation | No | Room or surface orientation e.g. 'north-facing', 'south exterior', 'east bedroom' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with readOnlyHint annotation, the description adds substantial behavior: verdict types (yes/conditional/avoid), risks, required actions, illuminant analysis, substrate notes, and recommended alternatives. It also discloses methodology (CIEDE2000 archive matching and Claude material knowledge), going 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear front-loaded purpose and a compact list of returns. The final 'Backed by...' sentence adds credibility but is not purely functional, and the four examples are useful though slightly expand length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, output categories, methodology, and concrete usage scenarios, and is paired with a full output schema and readOnlyHint. It is sufficiently complete for correct invocation despite the tool's complexity and the large sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all 5 parameters, so the baseline is 3. The description does not add parameter-specific syntax or details beyond what the schema provides, though its examples reinforce valid substrate and orientation values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool assesses whether a hex colour can be safely specified for a physical application, using a specific verb and resource. It distinguishes itself from colour_verdict or colour_metrics siblings by focusing on physical/material safety rather than generic colour analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: use when assessing safety for a physical substrate, reinforced by concrete examples like 'ultramarine on lime plaster' and 'lead white on exterior timber'. However, it does not explicitly mention alternatives or exclusions, 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.
colour_harmoniesGet Colour HarmoniesARead-onlyInspect
Return complementary, triadic, analogous, and split-complementary harmonies matched to named archive colours.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex value e.g. '#3A5C8C' | |
| harmony_types | No | Harmony types to include |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows it is a read operation. The description adds a small detail about matching against named archive colours, implying a lookup dependency, but it does not disclose edge-case behavior or data requirements. This is moderate added context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that immediately states the action and the range of outputs. Every word earns its place, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only annotation, full schema coverage, and presence of an output schema, the description does not need to explain return formats. It explains the specific harmony types and the archive matching. A minor gap is the lack of detail about how archive matching works or failure behavior, but it is sufficient for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds value by enumerating the harmony types (complementary, triadic, etc.), which hints at valid values for harmony_types, but it does not clarify default behavior when the optional parameter is omitted. It aligns with the schema but adds only minimal extra meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns specific colour harmonies (complementary, triadic, analogous, split-complementary) matched to named archive colours. This is a specific verb+resource and distinguishes it from sibling tools like colour_combination or colour_metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when harmonious colour schemes are needed, but it does not explicitly state when to prefer this tool over alternatives like colour_combination. No exclusions or alternative tool references are provided, leaving usage context implied rather than explicit.
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 MemorableARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex colour e.g. '#154F20' | |
| tone | No | Desired tone e.g. 'dinner party', 'academic', 'social media', 'brand copy' | dinner party |
| audience | No | Target audience e.g. 'general public', 'interior designers', 'children' | general public |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only state readOnlyHint: true. The description adds valuable behavioral context by disclosing that outputs are 'backed by the nearest archive colour's cultural provenance' and that the tool is tunable by audience and tone. This goes beyond the annotation's simple safety hint and explains what the tool actually does with inputs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences that front-load the primary action and outputs, followed by concise use cases. No wasted words; every sentence earns its place. This is an example of efficient, well-structured tool documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's generative nature, the description lists all output types (hook, story, tweet, image prompt, follow-up questions) and presents relevant usage scenarios. An output schema exists to detail return values, so the description does not need to cover those. The description is complete for an agent to decide when and how to use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for hex, tone, and audience. The description's mention of tunable audience/tone examples ('general public, designers, historians, children') largely mirrors the schema's own examples. It adds minimal extra meaning, such as 'any hex colour', which does not significantly exceed what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 lists concrete outputs (hook sentence, three-sentence story, tweet, image prompt, follow-up questions) for a hex colour. It clearly distinguishes this tool from siblings like colour_story or colour_namer by focusing on multi-format content generation grounded in archive provenance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases ('Use to make archive colours shareable, to generate content, or to power a public-facing colour chat experience'), giving clear context for when to invoke it. It does not explicitly mention when not to use it or name alternatives, so it falls short of a 5 but is well above vauge guidance.
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 SystemARead-onlyInspect
Find the nearest named colour in commercial paint systems including Farrow and Ball and Little Greene.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Number of matches (default 3) | |
| brand | No | Optional brand filter: 'farrow' or 'little_greene' | |
| hex_val | Yes | Hex value e.g. '#003153' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares this as a safe operation. The description adds value by specifying the brand scope ('Farrow and Ball and Little Greene'), which is not in the annotation. However, it does not clarify whether the tool supports additional brands beyond these two, and the 'including' wording could be ambiguous. The behaviour of matching a hex to a named colour is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the verb and resource, containing no filler. It efficiently conveys the essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has low complexity, a complete input schema, an output schema, and a readOnlyHint annotation. The description covers the core purpose and specific brands. It is slightly ambiguous about whether other paint brands are supported, but the overall context is sufficient for an agent to understand what the tool does and what it returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already having clear descriptions (n: 'Number of matches', brand: 'Optional brand filter', hex_val: 'Hex value'). The description does not need to add parameter details. It does not go beyond the schema, but that is acceptable given the high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Find the nearest named colour in commercial paint systems including Farrow and Ball and Little Greene.' This uses a specific verb ('find') and resource ('nearest named colour in commercial paint systems'), and explicitly names the included brands, which distinguishes it from sibling tools like colour_namer or colour_compare that may handle generic colour naming or comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for matching a hex value to a commercial paint system colour, which is clear context. It does not explicitly list alternatives or when-not-to-use, but the mention of 'commercial paint systems' and specific brands provides sufficient guidance for selection among the many sibling palette/colour tools.
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 PropertiesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex_val | Yes | Hex value e.g. '#8B4513' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already covers safety, and the description adds context beyond that by specifying the exact metrics returned and the single-colour scope. This helps set expectations for the response without contradicting 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with what the tool returns, followed by usage guidance. Every sentence serves a purpose with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter input, the presence of an output schema, and a read-only annotation, the description fully covers scope and usage. It is complete and leaves no significant gaps for an agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for hex_val with a clear type and example. The description does not add parameter-specific details beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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', using a specific verb and resource. It distinguishes itself from siblings by explicitly positioning it as 'one component of colour_passport' and contrasting with 'colour_passport' for general profiles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Use colour_passport for a general colour profile; use this only when the user explicitly wants isolated numeric values.' This directly addresses alternatives and sets clear exclusions, making it easy for an agent to select the right tool.
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)ARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex_a | Yes | First colour hex e.g. '#003366' | |
| hex_b | Yes | Second colour hex e.g. '#C8A600' | |
| ratio | No | Mix ratio 0.0-1.0 where 0.5 is equal parts (default 0.5) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true is consistent with the description, which adds rich behavioural context: the CIE Lab subtractive model, perceptual accuracy, and the nature of the output (nearest archive match with cultural context). This goes well beyond what the annotation alone conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each earning its place: the core function, the output, the model reinforcement, and a concrete example. It is front-loaded with the most important information and has no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, method, output, and a worked example. Given the existence of an output schema and annotations, it is complete without needing to detail return structures or safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 through the example (Prussian Blue + Yellow Ochre gives a muted green), illustrating the intended meaning of the hex inputs as pigment colours. This helps the agent understand the parameters beyond their raw format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool does: simulate subtractive mixing of two colours in CIE Lab space, distinct from RGB screen blending, and returns the mixed hex plus nearest archive match. This is a specific verb+resource+method and distinguishes it from other colour tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly notes 'not RGB screen blending', which is a clear when-not situation. However, it does not name alternative tools for additive mixing or colour comparison, leaving the guidance slightly implicit. The example provides a concrete use context but no explicit alternatives.
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 NamesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex colour to name e.g. #8B4A2A | |
| style | No | geographical | poetic | material | literary | botanical | industrial | mixed | |
| market | No | Target market e.g. UK luxury | |
| n_names | No | Number of name options (default 5) | |
| product_type | No | Product type e.g. candle, paint, leather bag |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the safe, read-only nature is already known. The description adds useful behavioral context beyond that: names are 'archive-verified' and 'grounded in a real archive source,' and it lists the naming styles. It does not contradict annotations, and it supplements them with meaningful details about the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise, front-loaded sentences. The first sentence states the core action, the second lists options, and the third explains the unique value and primary use case. There is no filler or repetition; every sentence contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, 1 required) and the presence of an output schema, the description is adequately complete. It covers purpose, style options, archive grounding, and a concrete use case. It could mention when to prefer alternative tools, but that is more of a usage guideline matter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 lists the style options ('geographical, poetic, material, literary, botanical, industrial, or mixed'), which mirrors the schema's style property but adds no extra meaning. It does not elaborate on parameters like market, n_names, or product_type, relying on the schema to carry that information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 memorable, archive-verified colour names for any hex value.' It uses a specific verb ('Generate'), a specific resource ('colour names'), and adds scope ('for any hex value') and differentiators ('archive-verified', 'grounded in a real archive source'). This distinguishes it from sibling tools like colour_card or palette_generate, which focus on palettes or analysis rather than naming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context: 'The core of the Shopify product naming use case,' implying when the tool is appropriate. However, it does not explicitly mention when not to use it or compare it to sibling naming tools like ecommerce_namer, so it lacks exclusions or alternatives.
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 ObjectARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| hex | No | Single hex colour e.g. #31559B | |
| hexes | No | Multiple hex colours for batch lookup e.g. ['#31559B', '#8B1A1A']. Max 20. | |
| n_archive | No | Number of archive matches to return (default 3) | |
| include_physics | No | Include illuminant behaviour and gamut data (default true) | |
| include_cultural | No | Include cultural risk and associations (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which the description does not contradict and actually supports by describing a read-style retrieval. The description adds rich behavioral context by listing the exact domains of information returned (colour science, archive anchor, provenance, physics, cultural reading) and stating its canonical/single-call nature, exceeding what annotations alone convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is logically structured: opening definition, content enumeration, usage instruction, and examples. It is somewhat verbose but each sentence adds productive detail (e.g., specific examples). The length is justified by the tool's comprehensive nature, 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's high complexity, the description gives a thorough overview of the returned data and its role in the tool ecosystem. Since an output schema exists and the description outlines the major return categories, it provides enough context for an agent to select and invoke the tool appropriately. The examples clarify input expectations and output anchoring.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 add significant parameter-level meaning beyond the schema; it only includes example hex values which are illustrative but not semantically additive. The description mentions the equivalent of parameters (hex values) but does not clarify the other fields, though the schema already handles that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Returns') and resource ('everything known about a hex value'), enumerating the exact categories of data. It clearly distinguishes itself from siblings by declaring it the canonical foundation call and explicitly naming the tools it replaces (colour_dna, archive_provenance, etc.), making its scope and role unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to 'Use this as the foundation call when you need the complete picture' and contrasts it with chaining multiple separate tools, naming those alternatives. This gives clear when-to-use guidance and identifies the alternative approach for more granular needs.
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 LookupARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hexes | Yes | List of hex colours e.g. ['#31559B', '#8B1A1A'] | |
| n_archive | No | Number of archive matches per colour (default 3) | |
| include_physics | No | Include illuminant behaviour and gamut data (default true) | |
| include_cultural | No | Include cultural associations (default false) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=true. The description adds behavioral details such as the 20-value limit, automatic deduplication, and the full set of returned fields (colour science, archive anchor, evidence grade, etc.). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded. The first sentence names the tool as a batch version, then immediately states the limit and return behavior. Every sentence adds value with no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 parameter descriptions, the description covers the core purpose, constraints, deduplication, and usage scenarios. It is complete for a batch lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 a maximum batch size of 20 hex values and states that deduplication occurs, which are constraints not present in the schema. It does not discuss the optional parameters, but those are fully described in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it is the 'Batch version of colour_passport' with a clear verb 'submit' and resource 'hex values', and lists the returned product. It distinguishes itself from the singular colour_passport sibling by batching up to 20 values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases: 'multi-colour workflows, Figma palette analysis, or any case where calling colour_passport separately for each colour would be slow.' This provides clear context and names the alternative (colour_passport), though it does not explicitly list when not to use it.
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 TokensARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex value e.g. #D4A829 | |
| archive | No | Optional archive filter |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, establishing the safe read-only nature. The description adds valuable behavioral context by explaining that the name source is archive-grounded and uses dE2000 distance for color matching, which helps the agent anticipate how results are produced. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundancy. The first sentence front-loads the action and lists all output formats; the second provides the naming source. Every word earns its place, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description, combined with a complete input schema and the presence of an output schema, provides sufficient context for a read-only transformation tool. It lacks explicit edge-case handling (e.g., invalid hex) and prerequisites, but these are not critical given the tool's simplicity and the schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, as both hex and archive parameters are already described in the input schema. The description mentions 'hex value' and 'Archive-grounded' which loosely connects to the archive parameter, but it adds no new parameter-specific 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (return every developer token format) for a given hex value, listing concrete outputs (CSS variable, kebab-case, camelCase, PascalCase, Tailwind class, TypeScript const, SCSS variable). This clearly distinguishes it from sibling tools like colour_namer by focusing on developer token formats and mentioning archive-grounded naming with dE2000 distance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when developers need naming conventions from a hex value, but it does not explicitly state when to prefer this tool over alternatives or provide exclusions. No alternative tools are mentioned, so usage context is only implied, not explicit.
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 ColourARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex value e.g. '#DC143C' | |
| n_archives | No | Number of archive sources to draw from (default 5) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation already indicates read-only behavior, and the description does not contradict it. The description adds valuable context by specifying what the narrative contains (history, civilisations, archive names) and provides a concrete example. It does not discuss potential latencies or edge cases, but the output schema and read-only hint lower the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: what it does, when to use it, and an example. It is concise, front-loaded with the core purpose, and every sentence earns its place. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of a complete input schema, an output schema, and a read-only annotation, the description needs only to convey the tool's purpose and when to use it. It does so effectively, including a rich example. There is no significant missing information for a tool of this moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters, so the baseline is 3. The description does not add much beyond the schema—it repeats the hex requirement via the example but does not elaborate on n_archives or how it affects the output. The schema already documents the parameters adequately, and the description adds minimal additional value here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('returns') and clearly identifies the resource and scope ('cultural story of a colour'), describing exactly what the tool does. It also distinguishes this from siblings like colour_timeline or colour_dna by focusing on the narrative and historical journey. The concrete example reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear use cases ('image generation prompts, brand storytelling, and creative briefs') which indicate when to apply the tool. However, it does not explicitly state when not to use it or mention alternative tools for other colour-related analyses, so it falls short of a 5 but provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
colour_strategyComplete Colour StrategyARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex colour to evaluate e.g. '#4A2A50' | |
| medium | No | Primary medium e.g. 'packaging', 'interior', 'digital' | general |
| markets | No | Target markets e.g. ['UK', 'France', 'Japan'] | |
| constraints | No | Constraints object | |
| brand_context | No | Brand context object |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already disclosing the non-destructive nature, the description adds meaningful context about what the tool produces: a report with verdict, strategy summary, archive anchor, market readings, usage rules, and copy hooks. This goes beyond the annotation by explaining the actual deliverable, though it doesn't detail any internal processes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense but well-structured, opening with a clear one-line purpose then organizing inputs, outputs, and examples. It is somewhat long due to the many output fields listed, but every sentence contributes meaningful information. The front-loading of 'Single-call commercial colour strategy report' is effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 all essential aspects: it explains what the tool does, what inputs are needed, what outputs to expect, and provides representative use cases across industries. An output schema exists, so detailed return-value documentation is unnecessary. The description is sufficiently complete 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.
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 each parameter. The description's input summary mostly restates the schema structure (brand_context with categories, constraints with avoid/must_work_on), but it adds helpful examples like 'luxury fragrance brand UK/France/Japan' that clarify intended parameter usage. No additional syntax or relationship details are provided beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Single-call commercial colour strategy report'—a specific verb and noun combination that clearly defines the tool's purpose. It then distinguishes itself from sibling tools by enumerating the combined components ('archive grounding, verdict, brand fit, market risk...'), making it obvious this is the comprehensive strategy option rather than a single-purpose tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The descriptor 'Single-call' and the list of combined analyses clearly signal when to use this tool (when a complete strategy report is needed in one call) versus using individual sibling tools like colour_verdict or colour_hooks. It provides clear context and examples of suitable use cases, though it doesn't explicitly state 'use instead of X' or 'don't use when Y'.
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 HistoryARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Number of timeline entries to return (default 10, max 20) | |
| concept | Yes | Colour name or concept to trace e.g. indigo, imperial purple, mourning black |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the readOnlyHint annotation by explaining that the output is a dated sequence of archive entries with primary sources, emphasizing chronological ordering and cultural/historical scope. It does not mention limitations like pagination or failure cases, but with the annotation and output schema, this is sufficient. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the tool's core function. Each sentence earns its place, including the illustrative example that clarifies the concept and shows the historical trace. It is appropriately sized without unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 params, 1 required), full schema coverage, existing output schema, and readOnlyHint annotation, the description is complete for an agent to select and invoke the tool correctly. It covers purpose, usage, return format, and an example, leaving no significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full descriptions for both parameters (concept and n) with 100% coverage. The description adds an example (indigo) that illustrates the concept parameter, but does not provide additional syntax or semantic details beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: given a concept or colour name, it traces documented appearances chronologically across cultures and centuries, returning dated archive entries with primary sources. This specific verb+resource+scope distinguishes it from sibling tools like colour_story or archive_provenance, and includes a concrete example for the 'indigo' concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use for historical research, provenance chains, and understanding why a colour carries the cultural weight it does.' This provides clear context on when to use the tool, but does not explicitly list alternative tools or exclusions, 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.
colour_variantsGet Colour Variants and SiblingsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Named archive colour e.g. Bourton Honey |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 by detailing the types of data returned (historical variants, lighter/darker versions, cultural siblings), 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core function and a brief context for designers. Every word earns its place, with no unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a simple one-parameter tool, output schema present, and a read-only annotation, the description fully covers purpose and usage. It explains what the tool returns and who it's for, making it complete for the given complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% coverage for the 'name' parameter, describing it as a 'Named archive colour e.g. Bourton Honey.' The description merely restates this ('For any named archive colour') without adding significant new meaning, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'return historical variants, lighter and darker versions with archive matches, and cultural siblings' for a named archive colour. This specific verb+resource phrasing distinguishes it from sibling 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.
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: 'Essential for designers exploring around a colour.' It does not explicitly name alternatives or exclusions, but the use case is well implied.
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?ARead-onlyInspect
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex colour to evaluate e.g. '#31559B' | |
| medium | No | Application medium e.g. 'digital', 'interior', 'print', 'fashion', 'packaging' | general |
| markets | No | Target markets e.g. ['UK', 'Japan', 'UAE'] | |
| audience | No | Optional: target audience e.g. 'high net worth travellers', 'young professionals' | |
| use_case | Yes | What the colour will be used for e.g. 'luxury hotel brand', 'heritage interior wall' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses valuable behavioral context beyond the readOnlyHint: it explains that the tool is 'Backed by CIEDE2000 archive matching and Claude cultural intelligence' and lists what the output includes ('strengths, risks, avoid-if scenarios, and better alternatives'). This adds a methodological understanding and sets expectations without contradicting 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.
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, followed by the output verdicts, content included, underlying method, and relevant examples. Every sentence contributes value without redundancy, and the structure is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, an output schema, and a readOnlyHint, the description is remarkably complete. It covers purpose, output values, output contents, methodology, and practical examples, leaving no major gaps. The presence of an output schema means return values need not be described in detail, and the description does not over-explain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents each parameter (hex, medium, markets, audience, use_case). The description's examples (e.g., 'luxury hotel brand in Japan') illustrate how parameters combine but do not add new semantic meaning beyond what the schema provides, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Evaluate a hex colour for a specific use case, market, and medium.' It specifies a decisive verb (Evaluate) and the resource (hex colour), and goes beyond by explicitly naming the three possible verdicts (use_with_confidence, use_with_caution, avoid), distinguishing it from sibling tools that assess other aspects like cultural risk or palettes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys when to use the tool through its focus on evaluating a colour for a specific use case, market, and medium, and it provides illustrative examples. However, it does not explicitly mention when not to use it or compare it with alternatives like colour_cultural_risk or palette_verdict, so it lacks explicit exclusions but gives a clear context.
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 PaletteARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| avoid | No | Archive names or colour terms to exclude e.g. ['neon', 'ScreenDigital'] | |
| medium | No | Application context e.g. 'interior', 'brand identity', 'fashion', 'digital', 'print' | general |
| concept | Yes | Cultural theme, mood, or brief e.g. 'Victorian mourning', 'Ottoman court', 'Scandinavian minimal' | |
| n_colours | No | Palette size (default 5, max 8) | |
| include_prompt | No | Include image generation prompt (default true) | |
| include_accessibility | No | Include WCAG contrast check (default true) | |
| include_paint_matches | No | Include commercial paint matches (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description does not contradict that. The description adds behavioral context by explaining it is a compound tool that replaces chaining multiple other tools and lists the full set of delivered outputs. It does not mention possible latency or resource usage, but the read-only annotation lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense. It front-loads the 'compound tool' nature, enumerates the outputs, lists the chained tools it replaces, and provides explicit when/not-to-use guidance. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 the purpose, outputs, usage context, and exclusions. An output schema exists, so return values are already documented. The read-only annotation is present, and the description's scope is fully adequate 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, so the baseline is 3. The description's mention of 'audience' is not represented in the schema, which is a minor mismatch, but the schema itself adequately documents all parameters. The description does not add significant parameter-level information beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'One-call compound tool' that submits concept, medium, audience, and constraints and receives a complete design package. It lists concrete outputs and explicitly distinguishes itself from individual sibling tools by saying it 'Replaces chaining' several specific tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: 'Use when an AI agent or user needs a complete, deployable colour direction in a single call.' It also gives a clear exclusion: 'Not for iterative refinement — use individual tools for that.' This effectively differentiates when to use this tool versus alternatives.
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 ColourARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex colour of the product e.g. '#4A2A50' | |
| tone | No | Copy tone e.g. 'premium but not pompous', 'warm and accessible', 'heritage and serious' | premium but not pompous |
| channel | No | Sales channel e.g. 'shopify', 'etsy', 'instagram', 'editorial' | shopify |
| brand_name | No | Optional brand name to include in copy | |
| product_type | Yes | Product type e.g. 'velvet cushion', 'ceramic vase', 'linen throw', 'candle' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds meaningful behavioral context: copy is grounded in archive provenance, colour names come from the nearest archive match rather than being invented. This goes beyond the annotation by explaining the underlying data source and generation philosophy, providing useful transparency about the tool's behaviour.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and information-dense, covering what it does, inputs, outputs, unique value, examples, and use cases in a single paragraph. Every sentence adds value, and the most important action is stated first. It avoids unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a thorough overview of the tool's purpose, inputs, outputs, examples, and applicability. Given the output schema exists and there are no complex side effects or destructive actions, the description is nearly complete. It could mention edge cases like unavailable archive matches, but that is not essential for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 reinforces parameter purposes through examples (velvet cushion, ceramic vase, linen throw) and mentions the input combination (hex + product type + tone + channel). It does not add significant new semantic detail beyond what the schema already documents, but the examples provide practical context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 from a hex colour, listing specific inputs and outputs. It distinguishes itself from sibling tools like ecommerce_namer by covering full copy (titles, descriptions, SEO, social) rather than just naming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for use ('Directly useful for Shopify, WooCommerce, and editorial product pages'), implying suitable scenarios. However, it does not explicitly exclude alternatives or state when not to use this tool versus other colour/copy tools.
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 NamerARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hexes | Yes | List of hex values e.g. ['#D4A829', '#1A5C6E'] | |
| style | No | geographical | poetic | material | literary | mixed (default) | |
| max_dE | No | Max dE2000 distance to accept (default 25) | |
| brand_name | No | Brand name for context | |
| product_category | No | e.g. 'paint', 'candle', 'fashion', 'homeware' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, so safety is already declared. The description adds meaningful behavioral context: every name is 'archive-sourced, not invented' and carries a defensible citation. It also states the 40-SKU limit. These go 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action. It covers input, output, and use cases in a few sentences. The redundancy between 'Every name is archive-sourced, not invented' and the following citation sentence is minor but slightly bloats the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, an output schema, and read-only annotations, the description is complete: it states the input types, output format, use cases, and quality guarantees. It does not explain the behaviour of max_dE, but the schema describes it, so the gap is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter descriptions are self-sufficient. The description repeats some parameter names (hexes, style, brand, category) and mentions style options already in the schema, but adds no new meaning beyond the schema. Baseline 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource+constraint: 'Generate archive-grounded colour names for up to 40 product SKUs.' It clearly distinguishes from siblings like colour_namer by emphasizing 'archive-grounded' and the ecommerce context, and it enumerates the exact output fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names target use cases ('Use for paint ranges, candle collections, fashion lines, homeware, cosmetics'), giving clear context. However, it does not state when to avoid this tool or name alternatives such as colour_namer, so it lacks the when-not/exclusion guidance for a 5.
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 ImageARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | Number of colours to extract (3-12, default 6) | |
| image | No | Image file attachment from ChatGPT | |
| analyse | No | If true, match colours against archive and return names | |
| image_id | No | Ephemeral 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_url | No | Public URL of image | |
| grey_card_hex | No | Hex from a grey/white card for white balance | |
| style_context | No | e.g. English cottage garden, Victorian, Japanese |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it uses a 'proprietary k-means++ algorithm', returns 'hex values with proportional weights', and clarifies that image_id is ephemeral (returned by ingest_image). The readOnlyHint annotation already covers the non-mutating guarantee, so the bar is lower, and the description adds meaningful context beyond that (algorithm, return format, optional archive matching). It could add pagination/limit behavior or error cases but 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused paragraph with clear logical flow: primary function → input prerequisites → fallback workflow → output → optional feature → sequencing. Every sentence earns its place with no filler. It's slightly dense, which is why it doesn't get a 5, but there is zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (so return values are documented there), the complexity is well covered: it handles the dual-input scenario (URL vs upload), the ingest_image fallback, optional analysis features, and the relationship to sibling tools. The 7-parameter tool with nested objects is fully addressed. Genuinely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 7 parameters. The description adds value by explaining the relationship between image_url/image_id (that image_id comes from ingest_image and is ephemeral), and the style_context's purpose for coherent cultural naming (also present in schema). The description reinforces but doesn't go far beyond the schema's own parameter descriptions, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 a photograph using a specific algorithm (k-means++), distinguishes it from siblings by mentioning the ingest_image prerequisite workflow, and positions it relative to image_brief ('Use this before image_brief'). The verb+resource is specific and the tool's role in a multi-step pipeline is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use this tool vs alternatives: it requires a public image_url OR image_id, and explicitly instructs calling ingest_image first if the user only has a raw file with no public URL. It also names the alternative (image_brief) and states sequencing ('Use this before image_brief'). This is exemplary usage guidance.
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 DocumentedARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| avoid | No | Terms to exclude from retrieval. | |
| rooms | Yes | One entry per room, e.g. [{label:'Entrance Hall', room_type:'hallway', orientation:'north'}] | |
| archive | Yes | Single archive to draw every room's colours from, e.g. 'ArtsAndCrafts'. Required -- invalid names return a clear error listing valid archives. | |
| concept | Yes | House-level concept or brief, e.g. 'Arts and Crafts movement family house' | |
| narrative_mode | No | Default 'evidence_only'. | evidence_only |
| colours_per_room | No | Default 5. | |
| shared_house_colours | No | Default 2. | |
| minimum_claim_strength | No | Evidence-grade floor, default 'B'. | B |
| strict_semantic_colour | No | Default true -- excludes entries whose quoted colour language contradicts their stored hex. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses rich behavioral details: grouping_basis and provenance_credit reporting, the provenance vs perceptual similarity grouping logic, that historical claims are templated only from documented fields, that room/surface assignment is editorial, and that the response can be 60-100KB+ requiring house_ref for PDF rendering. This fully informs the agent of side effects and output characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although long, the description is well-structured and every sentence earns its place. It is front-loaded with the core purpose, then covers grouping, provenance reporting, example, alternative tool, and output handling. No fluff; all content is operational guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 covers all necessary context: usage, example, alternative, output size, and downstream handoff. It does not need to repeat return schema details, and it offers critical practical information about response size that agents would otherwise miss.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 value by providing a full example of the rooms array and clarifying nuances like orientation not affecting palette selection and invalid archive names yielding clear errors. This goes beyond the schema's own field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 multi-room house colour scheme from a single archive.' It clearly distinguishes from sibling interior_specify by noting the multi-room grouping scope and explicitly directs single-room use to that alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use guidance, a concrete example, and names the alternative tool ('Use interior_specify instead for a single room without cross-room grouping'). It also explains how to pass the response's house_ref to palette_pdf, covering downstream usage.
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 ImageARead-onlyInspect
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | Number of colours to extract (3-12, default 6) | |
| model | No | Image model: midjourney | flux | dalle | stable_diffusion (default midjourney) | |
| archive | No | Explicit archive name override e.g. 'MarsColour', 'Japan' | |
| image_url | No | Public URL of the image | |
| image_base64 | No | Base64-encoded image data | |
| product_type | No | Product focus e.g. 'tea towel', 'wallpaper', 'ceramic', 'textile' | |
| grey_card_hex | No | Hex value from a grey/white card for white balance correction | |
| style_context | No | Plain English style e.g. 'English cottage garden', 'Victorian', 'Japanese', 'MarsColour'. Restricts archive matching to coherent cultural set. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so safety is covered. The description goes well beyond this by disclosing the compound internal behavior: colour extraction, archive matching with cultural naming, scene understanding, style period identification, product category suggestions, prompt generation, and swatch URL return. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with a one-line summary of value, followed by concrete output enumeration and a usage pointer. Every sentence carries distinct information; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a compound tool with 8 optional parameters and an output schema, the description covers core functionality, alternatives, and style context. However, it doesn't explicitly state that one of image_url/image_base64 must be supplied despite 'one image in' suggesting it; with zero required params in schema, this could leave an agent uncertain about invocation prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 reinforces style_context examples and product categories but these mostly duplicate the schema's own parameter descriptions (style_context already lists the same examples). It adds no new syntax, default, or relationship information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with 'Compound endpoint: one image in, full creative brief out' and enumerates concrete outputs (colours, archive matching, scene understanding, style period, product directions, prompt, swatch URL). It distinguishes from siblings by explicitly recommending it over chaining palette_extract + palette_analyse + agent_brief.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: 'Use instead of chaining palette_extract + palette_analyse + agent_brief separately' names the alternative workflow, and advises passing style_context with concrete examples for coherent archive matching. This clearly tells an agent when to invoke this tool over alternatives.
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 ImageARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| archive | No | Optional: restrict archive matching to a specific archive | |
| n_colours | No | Number of dominant colours to extract (default 5, max 5) | |
| media_type | No | Image MIME type e.g. 'image/jpeg' | image/jpeg |
| image_base64 | Yes | Base64 encoded image (JPEG, PNG, WebP) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds valuable behavioral context: 'The image is never stored — processed in memory only' and details the algorithm (K-means++ with Bradford chromatic adaptation). These go beyond the structured annotations and disclose privacy and processing traits, though no failure modes or rate limits are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured, starting with the core action and then detailing outputs, use cases, and privacy. It is slightly longer than necessary due to algorithm details, but each sentence contributes value and it remains focused. It is appropriately sized for a tool with this complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and schema coverage is complete, the description covers the essential aspects: purpose, input format, use cases, algorithm, output highlights, and privacy. It does not explain every return field, but that is unnecessary with an output schema present. The tool is well contextualized for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. The description reinforces the base64 image input and the n_colours behavior (max 5) but does not add substantial meaning beyond the schema. It mentions archive matching generically, which aligns with the archive parameter, but no new syntax or format details are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it extracts a dominant colour palette from an uploaded image, with each colour matched to a named archive entry with cultural provenance. It distinguishes itself from siblings like palette_extract by mentioning cultural story, RAL standard, and WCAG data, making it specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by listing applicable domains (product photography, interior photos, artwork, brand assets, mood boards). It does not explicitly name alternative tools or state when not to use it, but the context is helpful enough for an agent to infer appropriate use.
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 ColoursARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional: person's name for the report e.g. 'Sarah' | |
| image_url | No | URL of a portrait photo hosted online. Easier than base64 for MCP use. Either image_url or image_base64 required. | |
| media_type | No | Image MIME type e.g. 'image/jpeg' | image/jpeg |
| image_base64 | No | Base64 encoded portrait photo (JPEG or PNG). Face should be clearly visible in natural light. Either image_base64 or image_url required. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already discloses the read-only nature. The description adds valuable behavioral context: the photo is never stored, the analysis uses Claude Vision, and matching uses CIEDE2000 perceptual distance. It does not cover failure modes or limitations, but the combination of annotation and description provides a solid behavioral profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then systematically expands into outputs, method, privacy, and an example. Each sentence earns its place without redundancy or bloat, making it well-structured and highly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (present, though not shown), so the description does not need to detail return values. The description covers the input type, analysis dimensions, output highlights, underlying technique, and privacy guarantee, making it complete for an agent to understand when and how to invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all four parameters with descriptions, including the conditional requirement that either image_url or image_base64 is needed. The description does not add parameter-specific details beyond what the schema states, so the baseline of 3 applies given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear action and object: 'Upload a portrait photo and receive a full personal colour analysis.' It then enumerates specific outputs (seasonal type, colour depth, undertone) and distinctive features (archive colours with provenance, colours to avoid), which clearly distinguishes it from sibling tools like image_palette or palette_extract. The concrete example further anchors the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes the tool's context explicitly (personal colour analysis from a portrait photo) and includes an illustrative example, making it obvious when to use it. However, it does not name alternative tools or state when not to use it, though the uniqueness of 'personal' analysis makes the usage guidance sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
index_resonanceResonance IndexARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| entries | Yes | List of colour entries to score for resonance | |
| score_basis | No | Scoring basis (default: material_origin_to_social_consequence) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, and the description adds meaningful behavioral detail by defining the scoring scale (1.00, 0.80, 0.50) and listing output components (resonance score, material origin, social function, etc.). This goes beyond the annotation, though it doesn't disclose potential edge cases or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. It includes the scoring thresholds and use cases, which are valuable, though the final marketing-style sentence ('This is the metric...') is slightly extraneous. Overall, every sentence contributes functional context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 annotations, so the description doesn't need to detail return values. It provides a complete picture of input, output, scoring logic, and use cases. Minor gap: no mention of how scores are calculated beyond ordinal thresholds, but that's acceptable given the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions for 'entries' and 'score_basis'. The description restates the input structure ('list of colour entries with name, hex, archive, source, notes'), which mostly mirrors the schema and adds minimal additional semantics. It does clarify the default for score_basis ('material_origin_to_social_consequence') but this is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states a specific action ('Score how tightly the material origin of a colour aligns with its social consequence') on a defined resource (colour entries). It differentiates from simple palette tools by calling it a proprietary semantic metric, distinguishing it from siblings like palette_generate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists intended use cases: 'investigative reports, forensic briefs, museum content, editorial PDFs.' It also implies when not to use by noting 'This is the metric that separates Colour Memory from palette generators,' steering agents away from basic colour generation tasks.
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 ProcessingARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | MCP file reference {download_url, mime_type, file_name} | |
| source_url | No | HTTPS URL of the image | |
| image_base64 | No | Base64-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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true (upper-scope readable safety), and the description adds useful transient context: image_id valid for 5 minutes — a meaningful expiry constraint. However, it doesn't disclose whether uploads persist, are deleted after processing, or what failure behaviors occur. With readOnlyHint already covering the safety profile, the added expiry context earns a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler. State purpose, return contract, consumers, and usage threshold in under 40 words. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% param coverage, the description needn't document return format. The description covers purpose, transient validity, downstream consumers, and the size threshold — adequate for a simple upload tool. Minor gap: no error/limit info (e.g., max file size) but that's acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning by explaining the ephemeral output contract and naming the two consumers. Notably, the image_base64 parameter description adds a size-limit clarification ('No size limit here (unlike palette_extract's image_base64)') that clarifies cross-tool constraints. The description reinforces how to pass image_id downstream.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb (ingest/upload) + resource (image to Colour Memory for ephemeral processing), and explicitly names the downstream tools (palette_extract, image_brief) that consume the result. It distinguishes its purpose from siblings by defining it as the entry-point upload tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States when to use (any image over 50 KB) and names the consuming tools (palette_extract, image_brief), implying it's the prerequisite step. However, it doesn't state when NOT to use it or explicitly name alternatives for the opposite case (small images), though the size threshold implies a heuristic.
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 BriefARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| avoid | No | Colours, pigments or topics to exclude e.g. ['arsenic green']. Applied before selection. | |
| style | No | Style direction e.g. 'heritage', 'contemporary', 'maximalist', 'minimal', 'scandi', 'industrial', 'coastal' | heritage |
| archive | No | Optional: 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). | |
| concept | Yes | Room concept or brief e.g. 'bold maximalist living room' or 'calm Scandi bedroom' | |
| n_colours | No | Number of colours in scheme (default 5, max 7) | |
| room_type | No | Room type e.g. 'living', 'bedroom', 'kitchen', 'study', 'bathroom', 'hallway', 'dining' | living |
| orientation | No | Room orientation e.g. 'north', 'south', 'east', 'west' — affects light advice |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include readOnlyHint=true, so the description's disclosure of archive-lock behavior (clear error on invalid names rather than silent fallback) adds meaningful context. It also states the default unrestricted cross-archive search and that avoid is applied before selection. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured: purpose, outputs, examples, archive behavior, alternatives, and value proposition. Every sentence serves a distinct function, and the structure front-loads the core purpose. Slightly longer than strictly necessary but justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 7 parameters, the description covers inputs, outputs, special behaviors, alternatives, and usage context thoroughly. It leaves no critical gaps for an agent to misuse the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all 7 parameters with 100% coverage, so per rubric the baseline is 3. The description reinforces the archive constraint with examples but does not add new parameter-level semantics beyond the schema's rich descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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') and enumerates concrete deliverables (60/30/10 assignments, paint matches, light behaviour, WCAG, cultural rationale). It explicitly contrasts with house_specify for multi-room and points to the PDF variant, distinguishing it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear alternatives: 'Use /interior-specification/pdf for a downloadable branded PDF version' and 'Use house_specify instead for a multi-room scheme with cross-room provenance grouping' — an explicit when-not. It also includes example inputs and notes the archive option's behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_capabilitiesAPI Capabilities InventoryARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds useful context by noting it is 'Deterministic -- no LLM cost.' This goes beyond the annotation by explaining cost and predictability. It also mentions returning 'usage notes,' which adds behavioral context. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: purpose, usage, and return details plus a cost note. It is front-loaded with the core action and is appropriately sized for a simple no-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 params, read-only, output schema exists), the description is complete. It covers what it returns (tool count, endpoint list, MCP tools, usage notes), when to use it, and its deterministic/cost behavior. No critical information appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, so the baseline is 4 per the rubric. The description does not need to explain parameters, and the input schema is empty. The focus on return values is appropriate and is backed by the presence of an output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: 'Return a live inventory of all active endpoints and MCP tools.' It clearly distinguishes itself from sibling tools by being a meta-level discovery tool, while siblings are domain-specific (color, accessibility, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises 'Use this first to discover what the API can do before making calls,' giving clear when-to-use guidance. It does not mention when not to use it, but the meta-tool nature makes that less critical. No alternatives are named, but none exist for this purpose.
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 ArchiveARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Max alternatives per colour when confidence is low (1-3, default 1) | |
| archive | No | Optional: restrict to one archive e.g. China, Pigment, ArtsAndCrafts | |
| colours | Yes | Array of colour objects |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=true, so the description carries the behavioral burden. It adds meaningful details beyond the annotation: the return fields (cultural name, source, claim_strength A-E, do_not_say guardrails, alternatives) and the deduplication constraint (no two colours map to same entry). It does not cover edge cases like 'no match found' or any limits, but the disclosed behavior is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 function, the second details output and deduplication, and the third gives usage context. It is front-loaded with the most important information and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and full parameter descriptions, the description covers the essential operational aspects: what the tool does, what it returns, key behavioral constraints (dedup), and when to use it. It also differentiates from sibling tools enough for an agent to select it correctly. No critical gaps are evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 three parameters (colours, n, archive) including defaults and optionality. The description adds context by referencing 'alternatives when confidence is low' (which maps to n) and the archive concept, but it does not need to restate parameter syntax. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb 'analyse' and the specific resource 'Colour Memory archive', with a precise output: nearest named archive entry, cultural name, source, claim_strength, do_not_say guardrails, and alternatives. It also distinguishes itself from sibling palette tools by describing palette-level deduplication and the archive-matching focus, which is not covered by other palette_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it: 'Use after extracting colours from a photo or generating a palette.' This gives a clear trigger context. However, it does not name alternative tools or explicitly say when not to use it, so it lacks the exclusion guidance required for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
palette_auditPalette Quality AuditARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Target market | global |
| medium | No | digital | print | both | digital |
| palette | Yes | Hex values to audit | |
| use_case | No | Use case context | brand identity |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true, the bar is lower, but the description adds valuable behavioral context: 'Deterministic, no LLM cost' and the nature of the output ('Returns overall score 0-100, grade, and prioritised fix list'). This goes beyond the annotation by disclosing determinism and cost implications, which are useful for an agent deciding to 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact two-sentence block. The first sentence front-loads the primary purpose and output, while the second adds usage timing and a key behavioral trait (deterministic, no LLM cost). Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, scoring dimensions, output, usage timing, and a unique property (deterministic, no LLM cost). An output schema exists, so return value details need not be repeated. It is sufficiently complete for a read-only audit tool, though it does not mention potential edge cases or prerequisites, which would warrant a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter already has a description. The tool description does not add specific parameter details but does set the overall context (e.g., scoring dimensions) that indirectly relates to the parameters. This is baseline 3, where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource ('Full palette quality audit') and enumerates the exact scoring dimensions (accessibility, cultural risk, tonal balance, colour diversity, archive naming strength). It also describes the output (overall score 0-100, grade, prioritised fix list), making it easy to distinguish 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for use: 'Enterprise quality gate -- use before shipping any palette.' This indicates when to use the tool, but it does not explicitly mention alternatives or when not to use it. Since it does not name sibling tools or exclusions, it falls short of a 5 but is clearly above no guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
palette_compareCompare Two PalettesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| markets | No | Target markets | |
| use_case | No | Context for comparison e.g. luxury packaging | |
| palette_a | Yes | First palette hex values | |
| palette_b | Yes | Second palette hex values |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint: true, so the description only needs to add context beyond that. It lists the return values (timelessness scores, etc.), which is useful, but does not disclose additional behavioral aspects like input validation, handling of invalid hex values, or dependence on optional parameters (markets, use_case). Overall, it adds moderate value 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences: the first states the core function and the second lists outputs. It is front-loaded with the purpose and contains no repetitive or irrelevant information, earning every word.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a read-only annotation, a fully described schema, and an output schema (per context signals), the description covers the essential purpose and outputs. It could be improved by clarifying the optionality or default behavior of markets and use_case, and by distinguishing from the sibling 'colour_compare' tool, but overall it is sufficiently complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all 4 parameters with descriptions (100% coverage), so the baseline is 3. The description adds minimal parameter-specific meaning, only mentioning 'the stated use case' which loosely ties to use_case. It does not clarify the expected format or behavior of markets or how palettes are structured beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Deep perceptual, cultural, and commercial comparison between two palettes' and enumerates specific outputs (timelessness scores, commercial strength, cultural depth, emotional difference, winner verdict). This distinguishes it from sibling tools like colour_compare or palette_verdict by focusing on a comprehensive comparison with unique return fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for comparing two palettes in a specified use case, but it does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives. The context is clear enough for an agent to select it for pair comparison tasks, but there is no explicit exclusion or alternative differentiation.
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 ConceptARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| avoid | No | Colours, pigments or topics to exclude e.g. ['arsenic green']. Applied before selection. | |
| concept | Yes | Cultural theme or historical period e.g. 'Victorian mourning' or 'Ottoman court' | |
| n_colours | No | Number of colours to return (default 5, max 8) | |
| include_neutrals | No | Include neutral/background colours |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=true, so the description carries the burden for behavioral disclosure. It discloses that colours are sourced from an archive with documented history, mentions the range (4-6 colours), and explains the purpose of 'avoid' (applied before selection). It does not detail pagination or response structure, but this is covered by the output schema, and the read-only nature is already in annotations, so this is above average.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the main purpose, and every clause adds value: action, examples, and key constraint (archive-sourced, documented history). No fluff or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 does not need to explain return values. It provides sufficient context for a read-only generation tool: examples of input concepts, the range of output colours, and the provenance guarantee. It does not mention output format (hex, proportions) which is already in the description, and the read-only annotation covers safety. This is complete for typical usage, though a note about the 'n_colours' max (8) being a schema-level constraint is not highlighted in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 value by explaining the overall selection logic (archive-sourced, historically grounded) and the concept parameter examples, but the individual parameter details already exist in the schema. The 'avoid' parameter's behavior is explicitly mentioned ('Applied before selection'), adding context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('heritage palette from cultural concept'), clearly distinguishing it from sibling tools like palette_generate or palette_heritage by emphasizing cultural/historical grounding and archive sourcing. It provides concrete examples and a clear return type (4-6 hex colours with proportions and provenance).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete example concepts ('Victorian mourning', 'Ottoman court') that imply when to use this tool, and the emphasis on 'archive colours with documented history' implies it is for heritage-driven palettes rather than generic generation. However, it does not explicitly state when not to use it or name alternatives, so no exclusion criteria are provided.
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 FormatsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| names | No | Optional custom names | |
| format | No | css | figma | ase_hex | tailwind | json | |
| prefix | No | Token prefix e.g. cm, brand (default: cm) | |
| palette | Yes | Hex values to export |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true, the description adds value by disclosing automatic colour naming from the archive and positioning the tool for embedding into design workflows. It doesn't contradict annotations and provides behavioral context beyond what the annotation alone conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action and formats. No repetition, no filler, every phrase contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and annotations, the description covers the essential purpose and key behaviors (export formats, auto-naming). It is sufficiently complete for an agent to invoke the tool correctly without additional detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already explains all four parameters. The description adds only slight nuance (automatic naming for names, and enumerating formats already in the schema), which is marginally beneficial but not substantial beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Export') and resource ('a palette'), enumerating exact output formats (CSS, Figma, Tailwind, ASE, JSON). This clearly distinguishes it from sibling tools like palette_generate or palette_extract, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys a clear use case: exporting palettes into design-integrated formats. While it doesn't explicitly name alternatives or exclusions, the context is strong enough for an agent to infer when to select 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.
palette_extractExtract Dominant Palette ColoursARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | Number of colours to extract (3-12, default 6) | |
| analyse | No | If true, also run palette_analyse on the extracted colours and return archive names | |
| archive | No | Explicit single archive name to restrict matching to e.g. 'MarsColour', 'Japan', 'Victorian'. | |
| image_id | No | Ephemeral image_id from ingest_image (preferred for images over 50 KB) | |
| image_url | No | Public URL of the image to extract colours from | |
| image_base64 | No | Base64-encoded image data (small images only, under 50 KB) | |
| grey_card_hex | No | Hex value sampled from a grey or white card in the image for white balance correction e.g. #C8C8C8 | |
| style_context | No | Plain 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already establishes the operation as safe. The description adds useful behavioral context beyond this, including the algorithm (k-means++ clustering), the output structure (weights sorted by luminance), and the optional chaining of palette_analyse. It provides transparency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of four sentences with no redundancy. It follows a logical structure: core function, input methods, output format, optional behavior, and usage comparison. Every sentence serves a distinct purpose and is front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core function, input types, output characteristics, and usage guidance. Although the tool is complex with 8 params, the schema fully documents each parameter, and the output schema covers return values. The only minor omission is the 50 KB base64 size limit, but that is present in the schema, so the description is contextually complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 8 parameters have detailed descriptions in the schema, achieving 100% coverage. The tool description loosely references input types (URL vs base64) and the analyse option, but it adds no new semantic information beyond what the schema already provides for individual parameters. The baseline of 3 is appropriate because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: extracting dominant colours from an image using k-means++ clustering. It specifies the output format (hex values with proportional weights sorted by luminance) and explicitly distinguishes it from the sibling tool image_palette, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use this instead of image_palette when you need hex values with proportions for palette_analyse or palette_swatch.' This tells the agent exactly when to choose this tool over a specific alternative, which is strong and actionable guidance.
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 ArchiveARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Total palette size 2-8 (default 5) | |
| slots | Yes | List of palette slots. Each has index (0-7), optional hex, and locked flag. | |
| archive | No | Optional: restrict fills to one archive e.g. 'Oxfordshire', 'Shakespeare', 'Japan' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behavioral traits beyond the readOnlyHint annotation: explains the matching algorithm (CIEDE2000), interpolation from locked anchors, and that the output includes full citations (name, archive, primary source, colour notes). This adds significant context about what the tool computes and returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured, front-loaded with the core function, then adding constraint details and an illustrative example. Three sentences carry substantial information without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 key aspects: input slots, filling logic, optional archive restriction, and return value (citations). It is self-contained and sufficient for an agent to understand scope and behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description enriches semantics by explaining the slots concept ('locking some with hex values and leaving others empty') and the optional archive filtering. The description clarifies the interplay between locked anchors and filled slots beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: sending a palette with locked hex slots and empty slots, which are filled via CIEDE2000 archive matching and interpolation. It names the exact resource ('archive') and mechanism, distinguishing it from siblings like palette_analyse or palette_compare.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context with the example 'lock a client's existing wall colour and fill a 5-colour scheme from Oxfordshire' and mentions an optional archive filter. However, it does not explicitly state when not to use this tool or name alternative tools.
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 JourneyARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | linear: straight Lab lerp (may have neutral midpoint). chroma_preserved: LCh short-arc, saturation maintained. | chroma_preserved |
| steps | No | Total stops including anchors (default 7, max 20) | |
| anchors | Yes | 2-5 hex values (#RRGGBB) or exact archive colour names | |
| archive | No | Restrict snapping to this archive name e.g. Victorian | |
| output_format | No | stops: array of colour objects. css: linear-gradient string. svg: swatch bar. | stops |
| snap_to_archive | No | Snap each stop to nearest archive colour (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, which signals a safe read operation. The description adds meaningful behavioral details: snapping to nearest archive colour via CIEDE2000, anchor stops preserved true, and the contrast between linear (Lab) and chroma_preserved (LCh) interpolation. No contradictions with annotations, and the added context goes beyond the baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, front-loaded with the core action ('Generate a perceptually smooth gradient...'). Each sentence adds distinct information: interpolation mechanics, snapping behavior, mode choices, output formats, and use cases. No redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters (1 required), 100% schema coverage, and an output schema present, the description does not need to repeat all parameter details. It adds the essential 'why' and 'when' context, and explains the interpolation algorithms. Minor gaps like step limits and archive restrictions are already in the schema, so the description is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 value beyond the schema by explaining the path enum: 'linear (physically accurate Lab interpolation) or chroma_preserved (LCh interpolation, short-arc hue, avoids desaturated midpoints).' It also previews the output_format via 'Returns stop array, CSS linear-gradient string, or SVG swatch bar,' enriching the meaning of the output_format parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 well-defined resource: 'perceptually smooth gradient between 2-5 archive anchor colours.' This clearly distinguishes it from sibling tools like palette_generate or palette_compare. The title 'Archive Gradient — Lab-Interpolated Colour Journey' reinforces the unique niche.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence, 'Use for design briefs, colour journey visualisations, and gradient systems,' provides explicit context for when this tool is appropriate. It does not name alternative tools or state when not to use it, but the usage context is clear enough for an agent to differentiate among the many palette and colour 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 EvolutionARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Target market | |
| context | No | Brand context | |
| palette | Yes | Existing hex values | |
| brand_name | No | Brand name for CSS tokens | |
| n_additions | No | Archive colours to add (default 3) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, but the description adds rich, non-redundant behavioral detail: per-color archive anchoring, naming, provenance scoring, gap detection/filling, and the exact composition of the returned output (roles, confidence scores, CSS tokens, production notes). No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is remarkably efficient: four sentences with each earning its place. It front-loads the primary purpose, then details the step-by-step process, and concludes with output composition. No filler, no redundancy, and the structure mirrors the workflow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 does not need to detail return types, yet it still lists the key output elements. It covers the full workflow (input, processing, output) and provides enough context for an agent to invoke it correctly. For a tool with 5 parameters and moderate complexity, this is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 semantic value beyond the schema by explaining the purpose of the 'palette' parameter (legacy palette to evolve) and 'n_additions' (archive colours to add during gap-filling), while also clarifying how 'brand_name' is used for CSS tokens. It does not explicitly elaborate on 'market' or 'context', but those are already well-documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('archive-grounded premium support system') and details the exact workflow: anchoring existing colors, naming them, scoring provenance confidence, detecting/filling gaps, and returning roles, CSS tokens, and production notes. This clearly distinguishes it from sibling tools like palette_generate (creates from scratch) and palette_analyse (analysis only).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the input condition ('Given a legacy palette') and implies the use case of enhancing an existing palette with historical archive grounding. It does not explicitly name alternative tools or provide when-not-to-use guidance, so it falls short of a perfect 5.
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 PaletteARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| markets | No | Target markets | |
| palette | Yes | Current hex palette to refine | |
| feedback | Yes | Natural language refinement e.g. more melancholic | |
| use_case | No | Use case context e.g. luxury homewares | |
| direction | No | Alias for feedback — natural language direction e.g. more dangerous, more historical, warmer | |
| n_results | No | Number of variants to return (default 1) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and description adds that results include 'archive grounding and change rationale' — useful behavioral content beyond annotations. However, it doesn't clarify what 'archive grounding' means, whether palette input is returned changed in place or a new palette is produced, or how many results are returned by default vs configurable via n_results. Description is consistent with readOnlyHint=true (refining/returning new output rather than mutating stored state).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero wasted words. Front-loaded with the core action ('Refine an existing palette'), followed by input requirements and output expectations. Every sentence earns its place with concrete, enabling detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has 6 params including a potentially confusing alias pair (feedback/direction), and an output schema exists. The description clarifies the refinement workflow and return contents (refined palette, archive grounding, change rationale) without needing to duplicate output schema details. Given the moderate complexity and good annotations, this is adequately complete, though it could note which param takes precedence when both feedback and direction are provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description adds value by clarifying what feedback should look like ('more melancholic, too corporate add warmth') and mentions that direction is an alias for feedback at the semantic level, which is useful given they're two separate fields. However, n_results is only explained in the schema ('number of variants to return'), not in the description beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'refine' + resource 'existing palette', with clear examples of feedback input ('more melancholic', 'too corporate add warmth'). It distinguishes from siblings like palette_generate (which would create new) and palette_translate/palette_analyse, clearly positioning this as an iterative refinement tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description clearly states 'Submit your current palette and feedback', implying the tool requires an existing palette to iterate on. It gives concrete example phrasings of feedback but does not explicitly state when NOT to use it versus siblings like palette_generate or palette_variants. The phrase 'Refine an existing palette' and listing feedback examples provides usable 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 MapsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| palette | Yes | Array of hex values | |
| use_case | No | Use case context e.g. UI, dashboard, report | UI |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint: true. The description adds meaningful behavioral context: 'Analyses LRV, assigns background/surface/text/accent roles... checks body text contrast safety, and flags missing neutrals.' This explains what the tool computes and what outcomes to expect, going 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two well-structured sentences: the first states the primary purpose, and the second enumerates specific processing steps. No unnecessary words, front-loaded, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 core functionality and key behavioral details (LRV, role assignment, contrast check, missing neutrals). Minor gaps like exact output format are addressed by the output schema, so the description is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with clear descriptions for both 'palette' and 'use_case'. The description adds no extra parameter semantics beyond mentioning 'from a palette', 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.
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 light-mode and dark-mode role maps from a palette.' It further details specific analyses (LRV, background/surface/text/accent roles, contrast safety, missing neutrals), clearly distinguishing it from sibling tools like palette_generate or accessibility_check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool's use case: converting a palette into light/dark role maps. It does not explicitly name alternatives or state when not to use it, but the detailed second sentence provides enough context 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_pdfGenerate Palette PDFARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| house | No | Alternative 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. | |
| query | No | Optional title for the palette e.g. Ottoman imperial luxury | |
| source | No | Optional source label e.g. brand, conceptual | archive |
| entries | No | Array 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. | |
| delivery | No | 'url' (default): signed, time-limited R2 download link. 'base64': PDF bytes returned inline as pdf_base64 for callers that need the file directly. | |
| sections | No | Alternative 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_ref | No | Preferred 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_id | No | Alternative 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. | |
| presentation | No | Used 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_version | No | Used 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only provide readOnlyHint=true, but the description extensively discloses behavioral traits: delivery modes (url vs base64), precedence of the `house` parameter over sections/entries, how different card shapes are rendered (single_cultivar, colour_family, conservative-mode heroes), truncation with ellipsis for text overflow, and font-size floors. This exceeds the annotation by a wide margin and does not contradict the read-only hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very long and dense, covering many edge cases and modes. It is logically sequenced (purpose → entry sources → delivery → sections → presentation → house), but it is a wall of text that could be better formatted with bullets or shorter paragraphs. Some details are repeated in the schema (e.g., presented_cards), adding verbosity. It is adequate for the tool's complexity but not concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 optional parameters, multiple input modes, and a complex rendering pipeline, the description is exceptionally complete. It covers all input modes, the legacy-field warning, card-shape handling, delivery options, presentation templates, and font-size floors. Since an output schema exists, return values are adequately described, and no critical aspect of usage is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all 10 parameters have descriptions), so the baseline is 3. The tool description adds cross-parameter meaning not in the schema: the relationship between `house` and `sections`/`entries` (priority order), the distinction between `house` and `house_ref` (avoiding large payloads), and the caveat about `presented_cards` vs `colour_cards`. This elevates it beyond what each parameter description provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Generate a premium branded PDF specification sheet from a palette of archive entries,' which clearly states the verb ('generate') and the resource ('PDF specification sheet'). It enumerates the PDF's contents (colour panels, provenance notes, RAL match, LRV, etc.) and frames it for 'client deliverables, specification sheets, and print assets,' distinguishing it from sibling tools like palette_export or palette_swatch by emphasizing the branded spec-sheet purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use the tool ('Use this to create client deliverables, specification sheets, and print assets') and provides rich guidance on input-mode selection: entries, sections, house, house_ref, and project_id. It also warns against using the legacy colour_cards field. However, it does not mention alternative sibling tools or explicitly state when not to use this tool, so it lacks the explicit exclusions needed for a 5.
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 RoomARead-onlyInspect
Generate a complete interior specification from 2-8 hex values. Returns surface assignments, 60-30-10 proportions, lighting behaviour, and archive colour names.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | e.g. 'heritage', 'contemporary', 'minimal' | |
| colours | Yes | List of 2-8 hex values | |
| room_type | No | e.g. 'living', 'bedroom', 'kitchen', 'study' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds behavioral context by detailing what the output includes (surface assignments, 60-30-10 proportions, lighting behaviour, archive colour names). This goes beyond the annotation's safety signal and gives the agent a clear picture of the tool's behavior, though it does not mention any limitations beyond the 2-8 hex range.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and purpose, followed by specific output details. Every word contributes to understanding the tool's function, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 do not need to be fully described. The description provides the key input constraint (2-8 hex values) and output highlights, which, combined with schema details, gives a complete picture for selecting and invoking the tool. It lacks explicit guidance on optional parameters, but the schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description does not need to compensate for missing parameter info. The description mentions the 2-8 hex constraint for 'colours' but does not add meaning to 'style' or 'room_type' beyond the schema's examples. Overall, the description adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Generate a complete interior specification') and resource ('from 2-8 hex values'), and it distinguishes itself from sibling tools like palette_generate or palette_analyse by explicitly focusing on interior specification outputs such as surface assignments and 60-30-10 proportions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage by stating the tool generates an interior specification from hex values, but it does not explicitly say when to use this tool over alternatives. Sibling tools like interior_specify or palette_generate overlap, and no exclusions or alternative recommendations are provided.
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 ConceptARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| concept | Yes | Cultural concept e.g. Japanese wabi-sabi | |
| n_colours | No | Number of colours (default 5) | |
| min_relevance | No | Minimum relevance score 0-1 (default 0.3) | |
| allowed_archives | No | Archive names to restrict results e.g. ['Japan', 'China'] | |
| include_neutrals | No | Include neutral tones (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 by explaining the archive-filtering and relevance-control behavior to prevent cross-archive drift, which is meaningful beyond the annotation. No contradictions detected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, with the first sentence establishing the tool's relationship to palette_concept, the second providing concrete parameter guidance, and the third stating the problem it solves. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values need no explanation. The description covers purpose, usage context, parameter semantics, and the problem it addresses. With readOnlyHint and full schema coverage, 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.
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 value by giving concrete usage examples (['Japan'] for Japanese only) and explaining the purpose of min_relevance (filter weak concept matches), enriching the semantic understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description immediately states 'Like palette_concept but with archive filtering and relevance controls', which clearly identifies the tool as a specialized variant. The verb 'filter' and resource 'palette' are specific, and the mention of palette_concept distinguishes it from the closest sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage guidance is explicit: use allowed_archives to restrict to cultural traditions and min_relevance to filter weak matches. The phrase 'Fixes cross-archive drift when cultural specificity matters' provides a clear condition for when to choose this tool. However, it does not explicitly state when to prefer the simpler palette_concept alternative, so it falls slightly 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.
palette_swatchGenerate Palette Swatch ImageARead-onlyInspect
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.).
| Name | Required | Description | Default |
|---|---|---|---|
| h | No | Output height in pixels (default 630) | |
| w | No | Output width in pixels (default 1200) | |
| hexes | Yes | Comma-separated hex values e.g. #d4a829,#1a5c6e,#0a0a0b | |
| layout | No | photo | 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. | |
| weights | No | Comma-separated proportional weights from k-means extraction. Used only when layout=photo. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true annotation, the description aligns (generating an image is non-mutating). It adds valuable behavioral detail: the output is text-free, gradient uses true smooth LCh interpolation with no hard edges, and the photo layout relies on proportional weights from palette extraction. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose first, then usage, then feature list. It is packed with information in a compact form, though the final sentence lists many layout types and parentheticals, making it slightly dense. Every sentence earns its place as it covers purpose, use, and key distinctions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 params, many layout options), the description covers the core functionality, use cases, and unique gradient behavior. It mentions the return of a URL and the photo-only weights. With an output schema present, not explaining return values is acceptable. It could mention default dimensions but schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 explaining the gradient layout's unique behavior ('true smooth perceptual blend with no hard edges, unlike every other layout here') and clarifying that weights are used only with 'layout=photo.' This enriches parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 clean, text-free PNG swatch image from hex colours.' It clearly states the output (URL to PNG) and differentiates from sibling tools by emphasizing the swatch generation and layout features. This is more specific than generic palette tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases: 'Use for Midjourney --sref style references or design mood boards.' It also provides context for the gradient layout, noting it is 'best for mood/atmosphere/colour-grade references rather than literal composition,' which implies when not to use it. It names no alternative tools directly but the use-case guidance is strong.
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 ArchiveARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| palette | Yes | List of hex values to translate e.g. ['#F5F0E8', '#8B6B3D'] | |
| max_delta_e | No | Max acceptable CIEDE2000 distance — above this is flagged out-of-threshold (default 40) | |
| target_archive | Yes | Archive to translate into e.g. 'Shakespeare', 'Japan', 'Oxfordshire' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint annotation already indicating a safe read operation, the description adds meaningful behavioral context: it discloses the matching algorithm (CIEDE2000 nearest-neighbour), the delta-e relevance bands (exact/close/approximate/loose), and full provenance. This exceeds what annotations alone provide, though it doesn't detail output schema specifics (covered by 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, fully front-loaded with the primary action and method, and every clause adds value — from the matching logic to use cases. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has moderate complexity, complete schema documentation, an output schema, and an annotation confirming read-only behavior. The description sufficiently covers the purpose, methodology, output bands, and practical applications, making it 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive parameter entries, so the baseline is 3. The description adds extra semantic meaning by naming concrete archive examples ('Shakespeare', 'Japan', 'Oxfordshire'), explaining the mapping behavior per input hex, and elaborating the delta-e band concept. This enriches the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Map'/'Translate') and clearly identifies the resource (a list of hex values into a named archive) and method (CIEDE2000 nearest-neighbour matching). It distinguishes itself from sibling palette tools by its focus on translation into named archives, reinforced with concrete examples like translating into Shakespeare language or Japanese pigments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers explicit use cases ('Use to translate a client's paint colours...', 'map a brand palette...', 'find the nearest Oxfordshire equivalents...'), giving clear context on when to invoke this tool. It does not explicitly state when not to use it or name alternative tools, but the examples establish a strong usage guidance.
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?ARead-onlyInspect
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Optional: target market e.g. 'UK', 'Japan', 'global' | |
| medium | No | Application medium e.g. 'interior', 'digital', 'fashion', 'print' | general |
| palette | Yes | List of 2-8 hex values e.g. ['#31559B', '#E8D898', '#4A2A50'] | |
| use_case | Yes | What the palette will be used for e.g. 'luxury cushion collection', 'brand identity' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true, and the description adds value by disclosing that each color is matched to the nearest archive entry for cultural grounding and by listing the exact output components. This is additional behavioral context beyond the annotation, and there is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: the first states the function and inputs, the second lists outputs, and the third explains cultural grounding and gives examples. It is concise, front-loaded, and free of unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only annotation and the presence of an output schema, the description is complete: it explains what the tool does, what it returns, and provides concrete examples. No critical information appears to be missing for an evaluation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for all four parameters (100% coverage). The description adds example use_case strings and reaffirms the 2-8 hex value limit, but it does not significantly extend the parameter semantics beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 2-8 hex values for a use case, market, and medium, and lists specific outputs (verdict, score, color roles, weakness, suggestion). It does not explicitly differentiate from sibling tools like palette_analyse or colour_verdict, but the output structure is distinctive enough to suggest 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides examples of valid use cases and implies when to use the tool (evaluating a palette against a context). However, it does not explicitly state when to use this tool over alternatives or when not to use it, so the guidance is implied rather than explicit.
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 ProjectADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project_id returned by house_specify for an authenticated (keyed) call. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations. Annotations already indicate destructive and idempotent, but the description explains the soft-delete nature, the idempotent behavior (same response for already-deleted/unknown/not-owned, never disclosing which case), that version rows are never physically erased, and the post-delete resolution behavior. This is rich, non-redundant transparency that fully informs the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying essential information: the action, the idempotency details, and the consequence. Front-loaded with the primary purpose, no redundancy, and no extraneous content. Well-structured for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the behavioral contract for a destructive idempotent operation, including edge cases and side effects. With an output schema present and only one parameter, this is complete for the agent to select and invoke the tool correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter project_id is fully described in the schema as 'The project_id returned by house_specify for an authenticated (keyed) call.' The description adds no additional parameter-level semantics beyond the ownership implication in the first sentence. With 100% schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description immediately states the specific action: 'Soft-delete a durable house project you own.' This matches the name and title exactly, and the ownership constraint distinguishes it from other project tools like project_get or project_list. It is unambiguous and clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when this tool is appropriate: it's for soft-deleting a project you own, and it notes that after deletion the project cannot be resolved by project_id or house_ref. It does not explicitly name alternatives or exclusions, but the purpose is evident and the sibling tool list allows inference. A brief 'use project_versions to see history' would have made this a 5.
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 XLSXARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| house | No | house_specify's full response object, unmodified -- alternative to house_ref/project_id. PREFER house_ref or project_id when available. | |
| format | Yes | Which editable format to produce. | |
| delivery | No | '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_ref | No | The house_ref string house_specify returns. For a durable (authenticated) project this also requires the same API key that created it. | |
| project_id | No | The project_id returned by house_specify for an authenticated (keyed) call. Requires the same API key that created the project. | |
| project_version | No | Used 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive. The description adds rich behavioral context: it never calls house_specify, never re-runs reasoning, never invents blank fields, and fails closed for base64 overflow. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the primary purpose. Each sentence contributes necessary information, though the format-specific details could be bulleted for scannability. Still, no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two output formats, six parameters, and complex ownership/delivery rules, the description is exceptionally complete. It covers structure of both DOCX and XLSX, fidelity guarantees, delivery options, failure modes, and ownership rules. An output schema exists, so return values are already specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 the 'exactly one of' constraint among house/house_ref/project_id and explains ownership rules, which are not encoded in the schema. This raises the score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports house-flagship content as an editable DOCX or XLSX, explicitly distinguishing it from palette_pdf by focusing on editability. It also states what it does not do (never calls house_specify, never re-runs reasoning), removing any ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit use cases are provided: for clients annotating the scheme or contractors building procurement schedules. The description also gives when-not-to-use guidance by stating it only renders already-resolved data, and clarifies ownership rules (authenticated vs anonymous) similar to palette_pdf.
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)ARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Specific version number to describe. Omit for the project's current version. | |
| project_id | Yes | The project_id returned by house_specify for an authenticated (keyed) call. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description adds substantial behavioral context: requires an API key, enforces ownership of the project, and deliberately returns the same generic not-found response for unknown/deleted/expired/not-owned project IDs. This goes far beyond the annotation to explain security and error-handling behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each earning its place: purpose, auth/ownership, exclusions/alternatives, and error behavior. Front-loaded with the core action, then essential caveats. No redundant wording or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with an output schema, the description fully covers purpose, constraints, alternatives, and error handling. The presence of an output schema means return-value details need not be in the description, so nothing important is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaningful semantics by tying project_id to ownership ('must belong to the calling key') and clarifying that version selects which version's summary/content hash is returned. This enhances the schema definitions, warranting a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb ('Retrieve') and resource ('durable house project summary metadata'), listing exact fields returned (title, type, version, timestamps, content hash). It explicitly distinguishes from the full-spec retrieval tool by naming house_ref and project_versions, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear when-to-use context ('summary metadata') and explicit when-not-to-use guidance: 'Does NOT return the full house specification' with named alternatives (house_ref with palette_pdf, project_versions). Also states the ownership requirement, aiding the agent in deciding applicability.
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 ProjectsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max projects to return, default 50, capped at 200. | |
| cursor | No | Opaque pagination cursor -- pass the previous response's next_cursor to get the next page. | |
| project_type | No | Filter by project type, e.g. 'house'. Omit for all types. | |
| updated_since | No | ISO 8601 timestamp -- only return projects updated after this time. | |
| include_deleted | No | Include soft-deleted projects (still owner-scoped). Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses several non-obvious behaviors: the scope is 'owned by the calling API key,' ordering is 'most recently updated first,' anonymous calls return an empty list, and temporary anonymous projects are never listable. These are meaningful behavioral traits that are not already captured by the annotation or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no waste. The first sentence delivers the primary purpose and ordering, the second adds a critical edge case about anonymous calls, and the third states the authentication requirement. Every sentence earns its place, making it both concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with five parameters, an output schema, and a readOnly annotation, the description is complete. It covers the core functionality, authentication requirements, and the key anonymous edge case. The output schema handles return value details, and the schema covers parameter semantics, so no critical information is missing for an agent to correctly select and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with detailed descriptions for all five parameters. The tool description adds no per-parameter meaning beyond this, but it does provide context about the list's default ordering which indirectly relates to updated_since. Per the rubric, baseline 3 is appropriate since schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 a specific sort order ('most recently updated first'). It explicitly distinguishes from related operations by noting anonymous calls return an empty list and temporary projects are not listable, directly separating it from project_get or project_delete in the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: requires an API key, and anonymous keyless calls always return an empty list, with temporary projects to be resolved directly via house_ref instead. While it doesn't explicitly name an alternative tool like project_get, the guideline is sufficiently clear for an agent to know when not to use this tool and what to do instead.
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 HistoryARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project_id returned by house_specify for an authenticated (keyed) call. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses key behavioral facts: Version 1 is always immutable and present, earlier versions remain renderable after newer ones exist, and API key + ownership are required. This adds significant context about access and invariants that annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, with four sentences each carrying distinct information: the main action and outputs, the immutable v1 invariant, the cross-tool renderability, and the auth requirement. No wasted words and the main verb is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, simple list operation), the description covers purpose, output fields, ownership, immutability, and cross-tool integration. The output schema exists, so detailed return-value documentation is not needed. The description is fully complete for an AI agent to understand and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the only parameter, project_id, explaining it is the ID returned by house_specify for an authenticated call. The description adds no additional parameter-specific semantics 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and identifies the resource ('every stored version of a durable house project you own'), with details on ordering and returned fields. It clearly distinguishes this tool from siblings like project_get and project_list by focusing on version history, not project details or listing projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context by mentioning ownership and API key requirements, and explicitly notes that earlier versions can be rendered via palette_pdf's project_version input, which implies a cross-tool use case. However, it does not explicitly name alternative tools or state when not to use this tool, so it doesn't fully reach 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 CultureARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The colour concept or cultural question to search for | |
| archive | No | Optional: restrict to a named archive e.g. 'Japan', 'Pigment', 'OttomanEmpire' | |
| n_results | No | Number of results (default 5) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, it discloses fallback behavior: result_path honestly reports direct/broadened/redirected outcomes, and 'never comes back empty' reveals relaxed matching. This is meaningful behavioral context not captured in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each carrying distinct value: purpose, examples, and fallback transparency. No filler; front-loaded with the primary intent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full output schema and 100% parameter docs, the description need only cover behavior and use cases, which it does thoroughly. It could add explicit sibling comparisons, but that's optional given its clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already documents all 3 parameters with examples and defaults (100% coverage). The description adds context about 'archive restriction' but does not elaborate on parameter syntax beyond the schema, so it meets the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb+resource ('Ask a cultural, historical, or material colour question') and clarifies returns ('named archive colours with provenance and cultural context'). Concrete examples ('grief', 'toxic Victorian pigments') distinguish it from sibling query_hex or archive_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Examples demonstrate ideal query types ('abstract queries like grief'), and the phrase 'Even a vague or personal-sounding query never comes back empty' implies tolerance for ambiguity. However, it does not explicitly name alternatives or state when NOT to use it, stopping 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 CodeARead-onlyInspect
Find the closest named archive colours to a hex value using CIEDE2000 perceptual distance.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex value with or without # e.g. '#8B4513' | |
| archive | No | Optional: restrict to a named archive | |
| n_results | No | Number of results (default 5) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true, the safe read behavior is already disclosed. The description adds valuable behavioral context by mentioning the CIEDE2000 perceptual distance algorithm and 'closest', which implies ranked results. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the main action, input, and method without filler. Every word earns its place, making it highly concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explain return values. The tool is simple (3 params, 1 required) and the description covers the core operation and algorithm. The reader understands what the tool does and how it behaves. Minor details like error handling are absent, but not essential for this read-only query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for all three parameters (hex, archive, n_results), with 100% coverage. The tool description only reinforces 'hex' and does not add detail about 'archive' or 'n_results', so it adds no significant meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Find'), the resource ('named archive colours'), the input ('hex value'), and the method ('CIEDE2000 perceptual distance'). This specific combination distinguishes it from sibling tools like colour_compare or colour_match_paint, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool: when you have a hex value and need to map it to named archive colours. It does not explicitly mention alternatives or exclusions, but the purpose is specific enough that an agent can infer appropriate usage. No prerequisites are mentioned, but none are apparent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_briefForensic BriefARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tone | No | forensic | editorial | clinical | narrative | |
| avoid | No | Themes to suppress | |
| title | No | Brief title e.g. 'The Colours of Pleasure' | |
| themes | Yes | Research themes | |
| archives | No | Archives to draw from | |
| audience | No | Target audience e.g. 'serious collector' | |
| n_colours | No | Number of colour cards (default 8) | |
| period_end | No | End year e.g. 1830 | |
| period_start | No | Start year e.g. 1714 | |
| target_period | No | Historical period e.g. 'Georgian England 1714-1830' | |
| strict_sources | No | Only include entries with named primary sources | |
| confidence_threshold | No | Min confidence 0-1 (default 0.6) | |
| minimum_claim_strength | No | Hard evidence-grade floor: A, B, C, D, or E. Never silently relaxed. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true, so the description doesn't need to repeat that. It adds useful behavioral details beyond annotations: it 'runs coverage gap analysis, pulls best archive colours, checks for anachronisms, scores claim roles, auto-rejects stubs, generates... via Claude.' This discloses the computational pipeline and dependencies. It also notes tone options and the 'auto-rejects stubs' behavior. Not everything is fully detailed (e.g., what 'auto-rejects' entails), but it adds meaningful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with the purpose in the first sentence, followed by what it does, what it replaces, and input/output. It is a bit dense with many clauses, but every sentence adds value. It avoids fluff and maintains clear structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, pipeline of analyses, external Claude call), the description covers the key contextual points: what it does, what it replaces, input/output, tone options, and the fact that it is a single-call package. With an output schema present, it doesn't need to detail return values. It could mention edge cases or requirements for the 'auto-rejects stubs' behavior, but current level is adequate 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.
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 add significant new parameter semantics; it summarizes input as 'title, audience, themes, archives, period, tone,' which maps to existing schema fields but doesn't clarify the relationship between 'period' and the three period-related parameters (period_start, period_end, target_period). Tone options listed in the description duplicate schema values. Overall, no new insight beyond structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific and clear purpose: 'Single-call forensic colour brief generator.' It distinguishes itself from sibling tools by explicitly stating it replaces chaining several other tools (coverage_gap, archive_report_brief, anachronism_guard, resonance_index, evidence_gap). This makes the tool's unique role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage guidance is explicit: 'This replaces chaining coverage_gap + archive_report_brief + anachronism_guard + resonance_index + evidence_gap separately.' This tells the agent exactly when to use this tool instead of alternatives. It also clarifies it is a single-call comprehensive generator, and lists input and output expectations.
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?ARead-onlyInspect
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?'
| Name | Required | Description | Default |
|---|---|---|---|
| ask | No | Optional: specific question e.g. 'what bag colour works?' or 'do the shoes work?' | |
| items | Yes | List of outfit items with label and hex colour | |
| occasion | No | Optional: occasion context e.g. 'daytime', 'evening', 'office', 'casual', 'wedding guest' | general |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses the full output behavior: a verdict covering what works/clashes is missing/what to add, backed by archive colour names and historical context, plus a suggestion for a missing colour. This adds significant context about what the tool returns and how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a well-structured paragraph that front-loads the purpose and then provides examples. It is slightly long but every sentence contributes useful information, and the examples enhance understanding without being redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 still covers purpose, usage, parameters, and output behavior thoroughly. It is complete for a query tool of this complexity, and the examples fill in contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes all parameters including items, ask, and occasion with examples. The description reinforces the items format (hex values with labels) and gives usage examples for the ask parameter. It doesn't mention occasion explicitly, but the schema covers it well, so the description adds value on top of the 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Submit your outfit items as hex values with labels... and receive a verdict on what works, what clashes, what is missing, and what to add.' It uses specific verbs and resources, and distinguishes itself from sibling tools like colour_harmonies by focusing on outfit items and historical context rather than generic colour theory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description sets a clear context with the opening question 'does this bag go with this outfit?' and provides concrete examples ('what shoes?', 'Does this burgundy coat work with olive trousers?'). While it doesn't explicitly mention alternatives or exclusions, the intended usage is strongly implied.
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 StatusARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 useful context about the diagnostic purpose (confirming deployed schema) and the exact fields returned, which adds value beyond the annotation. However, it doesn't discuss rate limits, caching behavior, or freshness guarantees of the returned data itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single dense paragraph, front-loaded with the core purpose and return fields, then a well-integrated usage scenario. Slightly longer than the TDQS-high example but every sentence earns its place — the troubleshooting scenario is genuinely instructive rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 format is already documented), zero parameters, and readOnly annotation. The description adds the operational context — how to use this diagnostic to distinguish stale-cache issues from real deployment gaps — which fully rounds out the tool's purpose for an agent. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the description has no parameter burden to carry. The baseline for 0 params is 4, and the description goes further by explaining what the return value semantically means (confirming the live deployed schema) and why each field matters (schema_hash comparison for stale manifest detection).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb+resource: 'returns exactly what build is live right now' with an explicit enumerated list of return fields. Clearly distinguishes from siblings by being a zero-argument diagnostic tool, distinct from functional tools like accessibility_check or palette_extract.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance ('if a tool you expect seems to be missing, call this first'), a concrete troubleshooting scenario, and even explains how to interpret results (compare schema_hash against another connection to detect stale cached manifests). Names the alternative interpretation to avoid ('before assuming the server is wrong').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_guideTool Routing GuideARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | Plain-English description of what you're trying to do. |
Output Schema
| Name | Required | Description |
|---|---|---|
| then | No | |
| reason | No | |
| start_with | No | |
| do_not_start_with | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description reinforces this by stating it is 'not an LLM call, always instant, never consumes archive or LLM credit' — adding meaningful behavioral context (fast, cost-free, deterministic) beyond what annotations already provide. It doesn't describe output format, but an output schema exists to cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a well-structured single paragraph with strong front-loading (purpose first) and concrete examples embedded. It is informative and relatively compact given the asset-heavy sibling set. Slightly long overall but every sentence earns its place; could be trimmed modestly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single parameter, 100% schema coverage, an output schema present, and readOnlyHint annotation, the description is quite complete. It covers what the tool does, how to phrase the goal, and when to use it. The only minor gap is not describing the exact shape of the returned routing result, but the output schema presumably handles this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single 'goal' parameter is well-documented in the schema. The description adds value by giving concrete example goal phrases, which clarifies expected input format beyond the schema's generic 'Plain-English description.' However, this is marginal enrichment over an already-complete schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb+resource: it is a 'deterministic tool-routing lookup' that returns which tool to call. It explicitly positions itself against the huge sibling set (routing/guidance) and even names examples (palette_specify vs interior_specify vs house_specify). The purpose is unmistakable and distinct from all siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance: 'Use this before guessing between similarly-named tools' with concrete example pairs. It also gives clear usage examples of what goal phrases look like ('I have a brand colour...', 'I want to paint a whole house'). This is effectively explicit alternatives + context guidance.
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 GeneratorARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| brand_hex | Yes | Brand colour hex e.g. '#D4A829' | |
| dark_mode | No | Generate for dark mode (default false) | |
| background_hex | No | Background hex (default #FFFFFF) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, but the description adds substantial behavioral context: it computes colors for contrast against the background, returns hex, contrast ratio, WCAG grade, and usage note per state, and includes CSS custom properties. This goes well beyond the annotation and fully discloses the tool's behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place. The description is front-loaded with the core purpose, then lists outputs, explains computation logic, and ends with usage guidance. It is compact yet information-dense, with no filler or redundant repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 is complete: it covers inputs (brand hex, background, dark mode), outputs (hex, contrast, WCAG grade, usage note, CSS variables), and usage context (before building UI component system). The presence of an output schema reduces the need to explain return structure, but the description still provides a useful overview.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 value by explaining that 'all states computed for contrast against your background colour', clarifying the purpose of background_hex, and by stating 'Supports light and dark mode', which maps to dark_mode. It enriches the parameter semantics without over-explaining what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Generate a complete WCAG-compliant UI state palette') on a specific resource ('from a brand hex'), listing the exact outputs (brand, hover, active, disabled, etc.). This distinguishes it from sibling palette tools like palette_generate and colour_variants, which target broader or different palette generation tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context: 'Use before building any UI component system.' It also indicates support for light and dark mode, clarifying when the dark_mode parameter is relevant. However, it does not explicitly state when not to use this tool or name alternative tools, so it misses the full 'when-not/alternatives' bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseAqualityAmaintenanceGTM signal intelligence suite for AI agents. Six tools: hiring signals, tech stack detection, company-to-LinkedIn resolution, ICP scoring, job board scanning, and a combined signals aggregator. Built for outbound sales workflows.117371MIT

industrylens-mcpofficial
Flicense-qualityCmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
Sociality MCPofficial
Alicense-qualityDmaintenanceSocial media analytics, post insights, and competitor benchmarking for AI agents.6MIT- AlicenseAqualityAmaintenanceDetects hiring intent signals by scanning job boards for specific companies. Returns structured role data for outbound sales targeting.1761MIT