Colour Memory
Server Details
Colour intelligence API with 23,000+ historically grounded colours across 59 archives. Maps hex values to named archive colours with provenance, cultural risk, WCAG accessibility, and brand palette analysis.
- 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.3/5 across 71 of 71 tools scored. Lowest: 3.4/5.
Many tools have closely related purposes (palette_extract vs image_palette, colour_passport vs colour_dna, palette_concept vs palette_strict). The descriptions do a good job of differentiating them, but the sheer number of tools (71) creates a real risk of misselection.
The overwhelming majority follow a clear domain_prefix pattern (colour_*, palette_*, archive_*, brand_*, accessibility_*, etc.). A few exceptions stand out: ingest_image, query_conceptual, meta_capabilities, index_resonance, and style_match break the pattern, but these are minor deviations.
71 tools is far beyond any reasonable tool count for a single server. The domain is broad, but many tools are compound endpoints that subsume others (e.g., colour_passport replaces four separate tools), adding redundancy and bloat. This is an extreme mismatch.
The tool surface is remarkably complete for the stated domain: colour science, cultural archive research, branding, ecommerce, interior design, accessibility, image analysis, and AI agent integration are all covered with no obvious dead ends. Compound tools provide end-to-end workflows, and individual tools fill the gaps.
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?
The description correctly indicates a read-only evaluation, consistent with the readOnlyHint annotation. It does not add extra behavioral details (e.g., error handling), but the annotation already provides the key behavioral trait of no mutation. Sufficient for a simple 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?
Two sentences, front-loaded with the core action, and immediately provides alternatives. No unnecessary words 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?
For a simple, two-parameter, read-only tool with an output schema, the description is complete. It covers purpose, scope, and alternative tool. No gaps 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% with descriptions for both parameters. The tool description does not add additional parameter semantics beyond what the schema already provides. 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?
Clearly states the tool evaluates contrast for a single foreground/background pair. The description explicitly specifies the scope (single pair) and distinguishes from sibling tool accessibility_matrix for palettes or multiple colours.
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 states when to use this tool (single pair) and when to use the alternative accessibility_matrix (palettes or multiple colours). Provides direct guidance on tool selection.
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?
Annotations already indicate readOnlyHint=true, so no destructive actions. The description adds behavioral context such as WCAG grading and rankings, which is not in annotations. It does not contradict 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, well-structured sentence that front-loads the input and output. Every word is necessary; no wasted 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?
With a rich output schema (not shown, but presence known), the description adequately explains return values: ranked list with WCAG grades and recommendations. No gaps 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?
Schema description coverage is 100% for both parameters. The description rephrases the parameters (background hex, candidate foreground colours) without adding new details like format constraints or validation rules. At 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: given a background hex and a palette of candidate foreground colors, it returns them ranked by contrast ratio with WCAG grades and recommendations. This distinguishes it from sibling tools like accessibility_check or colour_compare.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used for selecting accessible font colors but does not explicitly state when to use versus alternatives like accessibility_matrix or palette_analyse. No exclusions or prerequisites are mentioned.
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?
Annotations already declare readOnlyHint=true, so the safe, non-destructive nature is covered. The description adds that the tool returns contrast ratios and pass/fail grades per combination, which provides some output context. No additional behavioral traits (e.g., auth needs, rate limits) are disclosed, but with annotations present, the burden is lower.
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 concise sentences. The first states the action and output; the second provides usage guidance. No wasted words, and front-loaded with the core 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 tool's simplicity (one parameter) and existence of an output schema, the description covers the purpose, alternative, and summary of outputs. It lacks mention of error handling or default behavior but is sufficient for a straightforward 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 has 100% coverage with a detailed description of the 'palette' parameter as an array of hex values. The description does not add extra meaning beyond confirming it accepts a palette. Thus, 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 contrast ratios and pass/fail grades for every foreground/background combination. It explicitly contrasts with sibling 'accessibility_check' by recommending this tool instead of multiple calls, effectively distinguishing its batch 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 a clear alternative: 'Use this instead of calling accessibility_check multiple times for a palette.' This guides the agent to choose this tool for full-palette analysis. However, it does not specify scenarios where the matrix might not be needed (e.g., single combo check), slightly reducing completeness.
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, so description's 'Deterministic, no LLM cost' adds modest behavioral context. Does not mention prerequisites, side effects, or limitations 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?
Two sentences efficiently convey purpose, outputs, and behavioral traits. No wasted words; front-loaded with action and resource.
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 one simple parameter, clear output (listed), and output schema exists. Description covers input, output, and behavior sufficiently for an agent to understand the tool's scope.
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 with 'Array of hex values'. Description adds meaning by clarifying the palette is a 'WCAG matrix' and that results are actionable rules, enhancing 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?
Description specifies verb 'Convert' and resource 'palette WCAG matrix', lists specific outputs (safe pairs, AA-only pairs, etc.), and clearly distinguishes from sibling tools like accessibility_check or accessibility_matrix.
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?
Implied usage (for generating design-system rules from a WCAG matrix), but no explicit guidance on when to use vs. alternatives like accessibility_check or accessibility_simulate. The note 'deterministic, no LLM cost' hints at efficiency but doesn't replace clear context.
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, so the description carries a lower burden. It adds the model name (Brettel-Vienot-Mollon) as context but does not disclose any additional behavioral traits (e.g., input validation, error handling, or output format). Score 3 is appropriate as the description adds some value 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?
A single sentence of 15 words efficiently conveys the purpose, method, and outputs. No wasted words; front-loaded with the key action and result.
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 one simple parameter, a described output (simulated hex values for three types), and an explicit model, the description is fully sufficient for an AI agent to understand the tool's capabilities. The existence of an output schema further reduces the need for additional details.
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 a clear description for the sole parameter 'hex_val' (including an example). The tool description does not add further meaning, so baseline 3 is correct.
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: returning simulated hex values for three types of colour blindness using a specific model. The verb 'Return' and resource 'simulated hex values' are precise, and the mention of protanopia, deuteranopia, and tritanopia distinguishes it from sibling tools like accessibility_check or colour_forensics.
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 simulating colour blindness effects but does not provide explicit guidance on when to use this tool versus alternatives (e.g., accessibility_check for contrast, or colour_compare for general colour difference). No exclusions or prerequisites are stated.
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?
Annotations provide readOnlyHint=true, and the description adds extensive behavioral detail: evidence filtering with claim_role='reject', exclusion of weak entries, returning an honest incomplete result with error_code, and applying negative constraints at retrieval time. It also explains locked_palette behavior, going far beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information-dense single paragraph with no filler, including an example and explicit error behavior. Length is justified by the tool's complexity, though a bulleted or segmented structure would improve scannability.
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?
Covers purpose, outputs, model support, example, evidence filtering, negative constraints, locked_palette mode, and error result. With an output schema present and the description already explaining non-obvious behaviors, it is contextually complete for a 10-parameter 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 descriptions already cover all 10 parameters (100% coverage). The narrative adds semantics for locked_palette (exact colours used as-is, no archive query), minimum_claim_strength (evidence-grade floor, not applied to locked_palette), and clarifies how avoid and negation phrases affect retrieval, enriching beyond 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 'Generate a complete colour direction package for another AI agent or image generation model' and enumerates exact outputs (prose brief, colour tokens, prompts, lighting notes), distinguishing it from sibling brief tools by specifying the recipient and deliverables.
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 'Use this to make Colour Memory the colour layer for other AI systems' and clarifies when locked_palette is appropriate vs. archive-grounded retrieval. It doesn't explicitly name alternative tools, but the context is clear enough for an agent to decide when this tool fits.
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 reinforces a read-only operation ('Verify', 'Returns'). It adds behavioral details beyond the annotations, such as the specific return fields (fidelity score, dE2000, match quality, verdict), providing transparency 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 two concise sentences: the first states purpose and inputs, the second lists outputs and usage context. Every sentence adds value with no redundancy or 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?
Given the output schema exists (inferred), annotations are complete, and parameters have full schema coverage, the description is sufficient. It explains the workflow context (post-generation, closing the colour loop) that structured fields do not capture, making it complete for an AI agent to 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% (baseline 3), but the description adds semantic value by specifying that the image can be supplied as URL or base64 and that target_palette comes from 'agent_brief colour_tokens', clarifying the relationship between parameters and workflow 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 verifies colour fidelity of an AI-generated image against a target palette, using specific verbs ('verify', 'supply', 'returns') and explicitly references the predecessor tool (agent_brief) and sibling context (image generation), distinguishing 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?
The description provides explicit usage context: 'Use after agent_brief + image generation to close the colour loop.' It clearly indicates when to use, though it does not mention when not to use or offer alternative tools.
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 that the tool searches an archive and generates creative text (one-liner, short story, tweet). It adds value beyond the readOnlyHint annotation by specifying the outputs and their purpose. No destructive behavior is implied, and the description does not contradict 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 concise at three sentences, each serving a distinct purpose: stating the core functionality, detailing parameters with an example, and listing outputs and use cases. It is front-loaded with the main action and contains no redundant or extraneous 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?
Given the tool's moderate complexity (3 parameters, 1 required, output schema present), the description sufficiently covers what the tool does and what it returns. It explains the creative output types and use cases. While it could mention potential limitations or required access to the archive, it is largely 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?
Although the input schema already describes all three parameters with 100% coverage, the description adds contextual meaning by providing an example ('love + red returns...') and explaining how each parameter is used in the tool's logic. This helps agents understand the interplay between parameters 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 the tool's purpose: 'Find the most surprising archive colour for a concept and generate a memorable one-liner subverting the obvious expectation.' It specifies the verb 'find' and 'generate', the resource 'archive colour' and 'one-liner', and distinguishes itself from siblings by focusing on creative contradiction rather than basic color lookup or palette generation.
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: 'Supply a concept (e.g. 'love', 'grief', 'luxury', 'power') and optionally the expected colour.' It includes an example and suggests use cases ('public-facing demos, content, and brand storytelling'). However, it does not explicitly state when not to use this tool or mention alternative tools for similar tasks.
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?
The description details the output (coverage matrix with entries, grade, best match, source type needed), adding context beyond the readOnlyHint annotation. 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 a clear usage note, front-loading the purpose. Every sentence adds value 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?
Given the output schema, full parameter descriptions, and readOnlyHint annotation, the description fully covers the tool's purpose, usage, and return value. No 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% (both 'themes' and 'archives' have descriptions). The description provides an example ('e.g. ['opium', 'gin', 'gambling', 'racing']') but adds little beyond the schema. 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 explicitly states the tool's function: 'Given a list of themes, report which are well-evidenced in the archive and which are under-evidenced or missing.' This provides a specific verb ('report') and resource ('coverage gap'), clearly distinguishing it from siblings like 'archive_report_brief' and 'brief_forensic'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives direct usage guidance: 'Use this BEFORE building an archive_report_brief or brief_forensic to know where the evidence is strong and where gaps will appear.' It also explains the benefit: 'Prevents building beautiful reports that quietly ignore half the brief.'
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 declare readOnlyHint=true, which the description does not contradict. The description adds behavioral details: it detects primary source date, checks for modern archives (RacingSilks, FootballStrips), and returns risk levels, scores, and phrasing. 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?
Two sentences with front-loaded purpose and clear details. Every sentence adds value: first states function, second provides example and output fields. 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?
Given the complexity (4 params, 1 required) and presence of output schema in the description (listing return fields), the description is complete. It explains inputs, logic, and outputs, adequately covering the tool's functionality.
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 adds value by explaining that it checks primary_source date and archive for modern sources, providing context beyond the schema. However, it does not detail each parameter's format, but schema already covers 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 clearly states the tool checks colour entries for anachronism risk, detecting source date vs period and known modern archives. It distinguishes from sibling tools like archive_cliche by focusing on anachronism, providing a specific verb-resource combination.
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 it is essential for historical documents and gives a concrete example (2011 racing silk vs Georgian). While it does not explicitly say when not to use, the sibling tool list implies alternatives for other archive tasks, 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_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 declare readOnlyHint=true which matches the description of a read-only analysis tool. Description explains it returns support levels, needed source types, and safe wording, and emphasizes it avoids hallucination by treating absence as a finding. 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?
Single paragraph front-loads the core action, then provides an example and use cases. Every sentence contributes meaning; 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 4 parameters and presence of an output schema, the description thoroughly explains the tool's purpose, example usage, and target workflows. It does not need to repeat output schema details.
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 with clear descriptions. The description adds value by giving a concrete example (hex #4A535C + 'cyanosis in a death chamber') and explaining the output structure, which enhances understanding 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?
Clearly states the tool takes a hex value and a proposed claim and returns archive support, missing evidence, needed source type, and safe wording. It explicitly calls itself an 'anti-hallucination endpoint' and distinguishes from sibling tools like archive_search by focusing on evidence gaps.
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?
Mentions essential use cases (museum, documentary, legal, forensic workflows) and implies use when verifying a specific claim against an archive. Does not explicitly state when not to use or name alternative tools, but the context and sibling list provide indirect guidance.
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 already declare readOnlyHint=true, and the description consistently indicates a non-destructive research tool. Adds useful behavioral context (standalone vs component of colour_passport) but does not override 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?
Three sentences, front-loaded with purpose, then usage context and differentiation. Every sentence adds value, 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?
Given the tool's purpose (provenance explanation), presence of an output schema (covering return values), and only one parameter, the description is complete. It covers use cases, alternatives, and scope.
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 has 100% schema coverage with a description. The description adds example values ('Love Idleness', 'Woad Vat Blue') which add minimal extra meaning; baseline 3 is appropriate as 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 that the tool explains provenance of a named archive colour, distinguishing documentation types (fact, derivation, interpretation) and providing confidence and citation. It differentiates from sibling colour_passport by targeting deep provenance workflows.
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 specifies when to use this tool (deep provenance work in museum, documentary, editorial contexts) vs when to use colour_passport (general profile). Provides clear decision guidance.
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?
Annotations declare readOnlyHint=true, and the description adds extra behavioral context: 'Two Claude calls total' (resource cost), and the output package details (ranked cards, provenance, flags). It also positions the tool as 'the endpoint for building premium archive documents.' 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 a single dense paragraph that front-loads the core value ('One-call complete archive research package') and every sentence earns its place: inputs, outputs, replacement guidance, call count, and use case. Slightly longer than the ideal two-sentence example but 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?
For a complex tool with 16 parameters and an output schema, the description gives a clear overall picture: what it produces, when to use it, and how it compares to alternatives. It doesn't need to explain return values since an output schema exists. Minor gap: no mention of when NOT to use it (e.g., simple single-colour queries), but the replacement guidance implies 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 baseline is 3. The description lists input categories (title, audience, themes, archives, avoid, colours) but doesn't add syntax or detailed semantics beyond the schema. It offers high-level organization but no extra parameter-specific insight.
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+resource+scope: 'One-call complete archive research package for a document, PDF, or editorial brief.' It clearly distinguishes from siblings by explicitly naming the tools it replaces ('Replaces chaining archive_search + get_colour_card + cliche_breaker + agent_brief separately').
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 when-to-use and alternative guidance: 'Use this first for any document workflow' and 'Replaces chaining archive_search + get_colour_card + cliche_breaker + agent_brief separately.' This tells the agent exactly when to choose this tool over chaining simpler 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 substantial behavioral detail: it never returns a bare empty result for obscure queries, and explains the fallback mechanism through result_path. It also reveals that entity_mode='exact' returns only genus-matched records and discloses how many off-genus records were excluded, which is non-obvious and valuable state information.
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 packed with useful information but every sentence adds value: core purpose, examples, fallback behavior, and entity_mode distinction. It is front-loaded with the primary function and uses examples to cement understanding. There is no fluff or repetition; even the long entity_mode explanation earns its place by clarifying a subtle mode.
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 (8 params, output schema present), the description covers the essential context: what it searches, how it behaves on obscure queries (result_path), how entity_mode changes semantics, and examples of expected matches. The output schema can handle return values, so the description need not repeat them. This is a complete and self-sufficient 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?
The input schema already provides 100% parameter coverage, so the baseline is 3. The description adds meaningful enrichment, especially for entity_mode with a concrete example of 'Rose' vs 'Rose Pink', query examples, and the guarantee about never returning empty results. However, it does not add extra meaning to parameters like limit, year_from, or include_full beyond what the schema already states, so it falls short of a 5.
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: 'Full-text keyword search across all archive colour names and notes.' It lists concrete search facets (name fragment, material, cultural reference, pigment type, historical period) and includes illustrative examples with match counts. It also distinguishes itself from a sibling by stating it 'Complements conceptual embedding search with exact keyword matching.'
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 contrasts this tool with conceptual embedding search, signaling the right context for exact keyword matching. It provides clear guidance on when to use entity_mode='exact' versus plain text search, using the 'Rose' example to illustrate the difference. The behavior of result_path ('direct', 'broadened', 'redirected') tells the user what to expect for different query outcomes.
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?
Annotations declare readOnlyHint true, and the description adds that it is deterministic with no LLM cost, which reassures about consistency and cost. It does not cover failure modes or edge cases, but given annotation coverage, the additional context is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with core purpose. Every sentence adds value: first lists outputs, second emphasizes completeness and key traits. 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 lists all output types, and an output schema exists for further detail. Input is fully described. Some missing context like output format size or behavior with invalid palette values, but overall adequate for a well-annotated 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?
Input schema has 100% description coverage, so the schema already documents parameters. The description does not add any parameter-specific meaning beyond what is in the schema, meeting the baseline but not exceeding it.
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 a complete brand asset pack with specific outputs (CSS variables, Tailwind config, Figma tokens, citation cards, Markdown guide). It distinguishes from sibling tools like palette_export by emphasizing completeness for shipping.
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 suggests use for final brand delivery ('Everything a brand team needs to ship') and notes deterministic behavior with no LLM cost, implying efficiency. However, it does not explicitly exclude alternatives or provide when-not-to-use guidance compared to siblings like brand_system.
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
Complete brand colour intelligence audit in one call. Accepts a palette array plus market, use_case, medium, and brand_category. Returns: colour roles with archive names, full WCAG accessibility matrix, cultural risk per colour, palette verdict with score and suggested addition, CSS variables, Tailwind config, and production notes. All computed data -- no LLM cost. Pass results to an LLM for written narrative. Replaces chaining accessibility_matrix + cultural_risk_assessment + palette_verdict separately.
| 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?
Annotations already mark the tool as readOnlyHint=true. The description adds transparency by stating 'All computed data -- no LLM cost', clarifying that no external API calls or costs are incurred. It also describes the return payload, providing 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 paragraph that efficiently conveys purpose, inputs, and outputs. It uses bullet-like listing ('Returns: ...') which helps readability. It is not overly verbose but could benefit from slight structural separation (e.g., lines or shorter sentences).
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, output schema exists), the description is comprehensive. It covers what the tool does, what inputs it accepts, what outputs it produces, and notes that it is computed (no LLM cost). It also provides usage guidance (pass results to LLM) and compares to alternatives, making it 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 input schema has 100% description coverage for all 5 parameters. The description merely repeats the parameter names (palette, market, medium, etc.) without adding new semantics or constraints. Since schema already documents parameters well, the description adds minimal 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 performs a 'complete brand colour intelligence audit in one call' and lists specific outputs (colour roles, WCAG matrix, cultural risk, palette verdict, etc.). It distinguishes from sibling tools by explicitly stating it replaces chaining separate tools like accessibility_matrix and cultural_risk_assessment.
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 when to use this tool (when a comprehensive audit is needed) and notes that it replaces chaining multiple tools. It also suggests passing results to an LLM for narrative. However, it does not explicitly state when not to use it or provide direct alternatives among siblings.
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?
The description goes beyond the readOnlyHint annotation by detailing the outputs: CIEDE2000 distances, distinctiveness score, ownership verdict, and recommendations. It confirms a read-only operation and provides behavioral expectations 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 two sentences, front-loading the key question and followed by a compact list of inputs and outputs. Every sentence is essential, 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 tool's moderate complexity (6 parameters, 1 required) and presence of an output schema, the description covers inputs, key outputs, and usage context. It lacks details on error handling or limitations, but is sufficiently complete for an AI agent to understand its 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%, so the schema already describes parameters. The description adds value by grouping inputs (e.g., brand hex and name, competitor hexes and names) and explaining their roles in the analysis, such as matching competitors in order.
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: checking if a brand can own a color against competitors in a market. It lists specific inputs and outputs, and distinguishes itself from sibling tools like colour_compare and palette_analyse by focusing on brand ownership and competitive 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?
The description explicitly says to use the tool before committing to a brand color in a competitive market, and that it replaces manual checks. While it does not mention when not to use it or contrast with specific siblings, the context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brand_guideline_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?
The description explicitly discloses behavioral traits beyond the annotations: it reads a 'frozen brand_ref snapshot', never re-runs generation, and mutates nothing. This directly complements the readOnlyHint/idempotentHint annotations by explaining what 'read-only' means in practice and the immutability of the data source.
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 but delivers a high density of useful information: purpose, return content, read-only behavior, parameter semantics, and reference to a sibling tool. No wasted words; every clause 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 has an output schema, the description does not need to explain return values. It covers the tool's role, input selection rules, behavioral constraints, and relationship to sibling tools. For a read-only lookup tool with good annotations and schema, 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?
While the schema already covers all parameter descriptions (100% coverage), the description adds valuable semantic context: it explains that claim_ids are returned inline by sibling tools, that omitting claim_ids returns every claim, and that brand_ref and project_id are mutually exclusive. This meaningfully enriches the bare 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 starts with 'Resolves claim_id values' and clearly specifies the resource (claim record) and the resolved fields (source, permitted claim text, do_not_say restrictions, claim_role). It also distinguishes itself from sibling tools by referencing brand_guideline_specify and brand_guideline_select, making the 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 guidance on when to use the tool: to resolve claim_ids returned inline by the specify/select tools, and how to omit claim_ids to get all claims. It also states the brand_ref/project_id constraint ('Accepts exactly one of brand_ref or project_id, same as brand_guideline_pdf'), offering a clear usage pattern. It does not explicitly mention when to use this tool over alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds rich behavioral context: it reads a frozen snapshot without re-running specify, never mutates the project, omits sections that have nothing to say, and never presents derived colors as documented-source language. This goes far beyond the annotations and clarifies 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?
Although longer than average, every sentence adds substantive detail about document contents, dynamic page count, candidate selection, or immutability. The description is front-loaded with the core action and avoids fluff, making the length justified.
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 comprehensively covers the tool's behavior, inputs, selection logic, edge cases, and non-mutating nature. Since an output schema exists, not explaining return values is fine. The detail is sufficient for an agent to invoke this correctly without confusion.
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 has a clear description. The description adds critical semantic value by specifying the mutual exclusivity of brand_ref and project_id, and clarifies the meaning of project_version for the current version. This is a meaningful supplement to 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 the tool renders a client-facing brand colour standard PDF from an existing brand_ref, with a comprehensive list of document contents. It distinguishes itself by explicitly referencing brand_guideline_select and brand_guideline_specify in context, marking it as the PDF rendering step in the brand guideline 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 provides clear context on when to use the tool and its exact input constraint ('Accepts exactly one of brand_ref or project_id'). It also explains the candidate-selection behavior (recorded choice vs provisional preview) and explicitly states what it never does (re-runs specify, mutates project), but lacks direct alternatives or when-not-to-use guidance relative to sibling tools like brand_report or palette_pdf.
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?
With annotations only indicating non-read-only/non-idempotent/non-destructive, the description adds important behavior: it produces a new version under the same brand_ref and marks suppressed claims as superseded. It also discloses that it does not yet involve accounts or reviewer states, providing useful side-effect 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?
Two sentences, front-loaded with the core action and immediately followed by the key behavioral details. No redundancy or filler; every clause adds meaningful 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?
The description covers purpose, the relationship to brand_guideline_specify, versioning behavior, optional vs. required actions, and limitations (no approval workflow). With an output schema present, return-value details are not needed, so this 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 coverage is 100%, so baseline is 3. The description adds value by explicitly tying selected_candidate_id to the chosen candidate, locked_colour_ids to colours locked for future iteration, and suppressed_claim_ids to suppressed/superseded claims, making parameter roles clearer than 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 clearly states the tool records a manual brand colour decision: choosing a brand_guideline_specify candidate, locking colours, and suppressing claims. It also distinguishes itself from the sibling brand_guideline_specify by describing the versioned revision output.
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 references brand_guideline_specify and clarifies that this tool is for decision-making, not a full approval workflow. It implies the right context (after candidates have been generated) and explicitly excludes account/reviewer states, though it does not name alternative tools.
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?
Despite having readOnlyHint=true and destructiveHint=false, the description goes far beyond annotations by disclosing the async generation race: 'This call races generation against a safe ~55s window: a fast generation returns the full result... A slower generation instead returns a compact status: processing... generation keeps running server-side regardless, and is never lost.' It also gives realistic timing estimates and explains that the response's claim_detail_available_via field names the proper follow-up tool. This is rich, non-obvious behavioral 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 long but every sentence earns its place: purpose, next-step tools, timing, async behaviour, and fallback instructions are all densely packed and clearly structured. The opening sentence states the key value proposition, and subsequent sentences front-load the most important operational details. 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?
Given the tool's high complexity (async generation, multiple response variants, follow-up tools, timing constraints), the description is remarkably complete. It covers both possible response forms, how to poll, what to do with the returned refs, and the validity window. The presence of an output schema further reduces the need to enumerate return fields. This description fully equips an agent to invoke the tool and handle its outcomes.
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 description contains no parameter-level explanations, but the input schema itself is detailed and covers most parameter semantics (e.g., palette_input modes, constraints fields, preferences with nested descriptions). With 57% schema coverage, the schema carries the burden reasonably well, and the description focuses on output and flow. The description adds no extra meaning to parameters, 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 highly specific verb and resource: 'Generates the case for a brand's colours, not just the colours themselves: three genuinely different, archive-grounded candidate palettes from a brand brief'. It clearly distinguishes itself from sibling palette tools by emphasizing archive grounding, competitor scoring, accessibility checks, and claim labelling. It also names downstream tools (brand_guideline_claims, brand_guideline_select, brand_guideline_status), making its unique role unmissable.
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 workflow guidance: 'Follow with brand_guideline_select to record which candidate was chosen' and 'Call brand_guideline_status with that brand_job_ref to retrieve the completed result'. It also points to brand_guideline_claims for resolving claim_ids, so the agent knows exactly how to chain calls. However, it lacks an explicit 'when not to use this tool, use palette_specify instead' style exclusion, so it falls just short of full when-to-use/alternative guidance.
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?
Even with readOnlyHint and idempotentHint annotations, the description adds substantial behavioral context: it's an 'in-process lookup' that never re-runs generation, returns specific status payloads (processing/complete/failed), and handles unknown/expired refs with a structured error 'BRAND_JOB_NOT_FOUND, never a crash or empty success.' This goes beyond annotations and fully discloses side effects and failure modes.
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 paragraph, but every sentence conveys necessary information: the trigger, the non-mutating nature, all possible return states, and follow-up tool references. It's longer than minimal but appropriately structured for the complexity, with no filler or redundant 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?
Given the tool has an output schema and a single parameter, the description is highly complete: it explains all response variants, the error case, the relationship to brand_guideline_specify, and how to proceed with sibling tools. It leaves no ambiguity about the tool's role or results.
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% for the single parameter brand_job_ref, with the schema already explaining its source. The description adds context by clarifying where the ref comes from and how it's used in the polling flow. This enriches but doesn't fundamentally extend the schema, meriting 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's specific purpose: 'Resolves a brand_job_ref returned by brand_guideline_specify when its race-to-complete window elapsed before generation finished.' It uses a specific verb (resolves) and identifies the resource (brand_job_ref). It also distinguishes itself from sibling tools by positioning as a status lookup, not a generation or full-detail 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 states when to use this tool (when the race-to-complete window elapsed) and provides alternatives: 'use the returned brand_ref with brand_guideline_select/brand_guideline_pdf/brand_guideline_claims for full detail.' It also clarifies what it doesn't do ('never re-runs generation'), preventing misuse.
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?
The annotation readOnlyHint=true already indicates a safe read operation, and the description adds valuable context about the tool's aggregate behavior (single complete response, two Claude calls total). It doesn't contradict annotations and provides extra behavioral context not available in 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?
The description is a compact paragraph that fronts the purpose, then efficiently lists inputs and outputs, and ends with a usage directive. It is somewhat list-heavy but each element earns its place; 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?
Given the tool's complexity (7 params, nested object, multiple outputs) and that an output schema exists, the description fully covers the tool's role, composition, and expected behavior. It explicitly lists all output types and explains how it replaces a multi-tool chain, making the context 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 parameters are well-documented structurally. The description lists key inputs (hex, brand context, markets, medium, product type) but adds little beyond what the schema already specifies. It does not introduce new semantic detail for individual parameters, 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 it produces a 'complete brand colour intelligence report' with specific inputs and outputs. It distinguishes itself from sibling tools by positioning as a composite alternative to chaining multiple tools (colour_strategy, cliche_breaker, etc.), 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?
Explicitly states 'Use this instead of chaining colour_strategy + cliche_breaker + ecommerce_product_copy + memory_hooks + agent_brief separately', providing a clear alternative and when-to-use. It also notes 'Two Claude calls total' to set expectations on interaction.
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?
Annotations indicate readOnlyHint=true, and the description confirms 'Deterministic' and 'No LLM cost,' which adds transparency about side effects and cost. It also lists outputs, providing behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the main purpose and listing key outputs efficiently. Every sentence adds value, 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?
Given the tool's complexity (5 parameters, output schema present), the description is complete. It explains what the tool returns and emphasizes determinism and cost-free operation, leaving no critical 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%, so the parameters are already well-documented in the schema. The description does not add new meaning to the parameters, but it lists the outputs, which indirectly clarifies what the parameters influence. 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 returns a 'complete brand colour system' with specific items like colour roles, light/dark mode maps, typography guidance, usage rules, and design tokens. It uses specific verbs and resources, distinguishing it from sibling tools that focus on individual aspects like accessibility or colour extraction.
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 'Complete brand colour system in one call' and highlights that it's 'Deterministic. No LLM cost.' This implies usage for obtaining a full system reliably. However, it does not explicitly state when not to use it or mention alternatives among the many sibling tools.
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?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds what data is returned (hex, archive, provenance, cultural notes) but does not mention potential errors (e.g., colour not found), rate limits, or other behavioral traits. It provides some additional context beyond annotations but not enough for a higher score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence of 12 words. It is front-loaded with the action ('look up') and immediately states the return fields. There is no wasted 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?
Given the tool's simplicity (2 optional parameters, output schema exists), the description is fairly complete. It lists the key return fields. However, it does not mention the existence of two input methods (name vs slug) or that slug is more reliable, though this is covered in the schema. Overall, it is adequate for a 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?
The input schema has 100% coverage with detailed descriptions for both parameters (name and slug). The description does not add new parameter semantics beyond what the schema provides. According to the rubric, high schema coverage means a baseline of 3, and the description does not enhance 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 clearly states the tool looks up a named colour and returns specific fields (hex, archive, provenance, cultural notes). The verb 'look up' is appropriate for a retrieval tool. However, given many sibling colour tools, it does not explicitly differentiate itself, e.g., from 'colour_story' which might return a narrative or 'colour_forensics' for 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?
The description implies usage for looking up a colour by name, but it does not provide when-not-to-use or alternative tools. The input schema includes a 'slug' field with a note that it is preferred for reliable retrieval, but this guidance is not in the description itself. The description lacks explicit usage context.
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?
Annotations already mark readOnlyHint=true. The description adds significant behavioral context: it returns harmony type, clash warnings, contrast summary, and deployment rules. No contradictions, and the description enhances understanding of what the tool produces.
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, each earning its place. First sentence states purpose and scope; second lists outputs. No fluff, front-loaded with key 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?
Given 2 parameters and an output schema (implied), the description covers return types and context options. Could be slightly more complete by noting error handling or bounds, but generally sufficient for a check 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% (both parameters described). The description adds no new details beyond what the schema provides (e.g., contexts are already listed in schema). 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 ('Assess') and clearly defines the resource ('2-5 colours as a combination') and context. It lists return types (harmony type, clash warnings, etc.), distinguishing it from siblings like colour_harmonies or colour_cultural_risk that focus on narrower aspects.
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 by listing contexts (UI, data viz, fashion, etc.) and outputs, but does not explicitly state when not to use this tool or compare it to alternatives. Clear context but lacking exclusions.
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?
Annotations already declare readOnlyHint=true, so the description's burden is lower. The description adds value by detailing what comparisons are made (LRV, chroma, hue, CIEDE2000, cultural context) and what it assesses (authority, saturation, stability). 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?
Every sentence contributes value: first explains what it is and returns, then when to use, then what it is not. Front-loaded with key info, 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?
With an output schema present (context signal), return values are covered. The description makes the tool's purpose and limitations clear. For a simple two-parameter tool with read-only annotations, 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?
Schema coverage is 100%, so baseline is 3. The description only rephrases that it takes two hex values without adding new constraints, examples, or format details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs 'deep perceptual and semantic comparison between any two hex values' and distinguishes itself from harmony tools, explicitly calling itself a 'decision and reasoning tool'. Among siblings like colour_combination and colour_harmonies, this sets it apart.
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 says 'Use when choosing between two colours or explaining why one works better than another. Not a harmony tool.' This provides clear context for when to use and what not to use, though it doesn't name specific alternative tools for harmony tasks.
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 declare readOnlyHint=true, so the description is not required to disclose safety. It adds value by explaining the nature of the assessment (symbolic weight, taboos, market flags), but does not elaborate on potential side effects or performance, which is acceptable given 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?
Two sentences, front-loaded with purpose, no wasted words. 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?
Given the complexity of cultural risk assessment, the presence of an output schema, annotations, and full parameter coverage, the description is complete. It tells the agent what the tool does, when to use it, and how parameters relate.
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 documents parameters. The description adds meaning by clarifying the relationship between 'hex' (single colour) and 'palette' (list for palette-level checks), which helps the agent decide which to use.
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, listing specific aspects (symbolic weight, regional taboos, religious associations, market flags). It distinguishes from the sibling tool 'colour_passport' by explaining this tool is for palette-level risk or when only cultural risk is needed.
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 guides when to use: '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 provides clear context and alternatives.
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 declare readOnlyHint=true, so the description adds minimal behavioral context. It does not contradict annotations but also does not elaborate on other behavioral aspects.
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?
One sentence with a clear purpose and usage guideline, no redundant words, front-loaded with essential 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?
Given high schema coverage, a single parameter, and presence of output schema, the description fully satisfies the information needs for an agent to invoke this 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%, and the description adds an example but does not significantly expand beyond what the schema already defines for the single parameter 'hex'.
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 'compact semantic fingerprint for a single hex colour' and distinguishes it from the sibling tool 'colour_passport', specifying when to use each.
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 says to use colour_passport for a general colour profile and this tool only when the user explicitly wants the fingerprint format alone, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
The description discloses the tool's read-only nature (consistent with readOnlyHint) and adds context about its methodology (CIEDE2000 archive matching, Claude material knowledge) and output structure. 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 concise, consisting of three well-structured sentences: purpose, output listing, and examples. No redundant information; every sentence adds 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?
Given the tool's complexity and existence of an output schema, the description covers purpose, output, and examples adequately. However, it lacks mention of error handling or limitations, which would improve 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?
Schema coverage is 100%, so the description adds minimal extra meaning beyond the schema's parameter descriptions. The examples implicitly show parameter usage, but no additional semantic guidance 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 clearly states the tool assesses whether a hex colour can be safely specified for a physical application. It lists specific outputs (verdict, risks, actions, light behaviour, etc.) and provides concrete examples, distinguishing it from sibling colour tools like colour_compare or colour_cultural_risk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through examples but does not explicitly state when to use this tool over alternatives or provide exclusion criteria. No contrast with sibling tools or prerequisites are mentioned, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
colour_harmoniesGet Colour HarmoniesBRead-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 indicate read-only behavior. The description adds that it matches to 'named archive colours,' implying reliance on an internal colour database, but doesn't clarify how the matching works or any limitations (e.g., number of colours returned). It does not contradict 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, information-dense sentence that efficiently communicates the tool's purpose. No extraneous 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?
Output schema documents the return structure, so the description needn't explain that. However, the description omits details about default behavior (if harmony_types is omitted) and error conditions (e.g., unrecognized hex). For a straightforward read operation, these gaps are minor.
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 fully described in the input schema with examples (hex) and a generic description (harmony_types). The tool description adds no further semantic context about parameter values, defaults, or constraints. With 100% schema coverage, a 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 the tool returns complementary, triadic, analogous, and split-complementary harmonies matched to named archive colours. It distinguishes the tool from generic colour combination tools, but does not explicitly differentiate from siblings like colour_hooks 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?
The description provides no usage context, such as when to use this tool versus other colour harmony tools (e.g., colour_combination) or what prerequisites exist. It leaves the agent to infer usage from the tool name and description alone.
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 already declare readOnlyHint: true. The description adds that the output is 'backed by the nearest archive colour's cultural provenance,' which provides some behavioral context beyond the annotation. 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 concise and well-structured, with the main action front-loaded. It lists all output types and tuning parameters efficiently without 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?
Given the presence of an output schema, the description sufficiently covers purpose, inputs, and use cases. It provides enough context for an agent to determine when 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 coverage is 100%, but the description adds meaning by explaining that audience and tone are tunable parameters, and hex is the input colour. This goes beyond the brief 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 clearly states the tool generates multiple types of content (hook sentence, story, tweet, image prompt, follow-up questions) for a hex colour. It distinguishes from sibling tools by focusing on content generation rather than colour analysis or accessibility.
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: making archive colours shareable, generating content, or powering a colour chat experience. It lacks explicit 'when not to use' guidance, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
colour_match_paintMatch to Commercial Paint 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?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds no behavioral details beyond listing included brands, but does not contradict 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 front-loads the main purpose with no unnecessary 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?
While output schema exists (so return values need no explanation) and parameters are fully described, the description could be more complete about the matching algorithm or scope of brands, but it is minimally adequate.
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 parameters. The description does not add significant meaning beyond the schema, such as value formats or examples, 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 verb 'Find' and the resource 'nearest named colour in commercial paint systems', and specifically mentions Farrow and Ball and Little Greene, which distinguishes it from siblings like colour_compare or colour_namer.
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 does not provide any guidance on when to use this tool versus its siblings, such as colour_compare or colour_namer. No context on prerequisites or 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_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?
Annotations include readOnlyHint=true, confirming no destructive side effects. The description adds that the tool returns raw perceptual metrics, aligning with read-only behavior. No contradictions or missing behavioral details 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?
Two sentences that efficiently convey purpose and usage guidance. No superfluous information; front-loaded with the core action and output.
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 simple (one parameter, read-only, output schema exists). The description fully covers purpose, usage, and constraints, making it complete for an AI agent to 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% (hex_val described with example). The description does not add parameter-specific details beyond the schema, but baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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' for a single colour, specifying the metrics (LRV, chroma, hue angle, warmth, undertone). It distinguishes from the sibling tool colour_passport by noting this is a component for isolated numeric values, eliminating 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 guidance is provided: 'Use colour_passport for a general colour profile; use this only when the user explicitly wants isolated numeric values.' This directly tells the AI agent when to choose this tool over its sibling.
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?
Annotations already declare readOnlyHint=true, consistent with a simulation. The description adds behavioral context: uses CIE Lab subtractive model for perceptual accuracy, and identifies the nearest archive match. 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?
Three sentences efficiently convey purpose, model, and an example. No unnecessary words. Front-loaded with key 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?
Given the presence of an output schema (context signal shows 'has output schema: true'), the description need not detail return values. It covers input requirements, the model, and provides a concrete example, making the tool fully understandable.
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 an example with specific hex values, illustrating the type of inputs. However, the ratio parameter is only mentioned by default value in schema; description doesn't elaborate on its effect beyond the example (0.5 as equal parts). Still adds moderate value.
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 simulates perceptual subtractive mixing of two colours in CIE Lab space, distinct from RGB blending. It specifies the output: mixed hex value and nearest archive match. This differentiates it from many colour-related sibling 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 says 'not RGB screen blending' and provides an example mixing Prussian Blue and Yellow Ochre, indicating the tool's purpose for realistic pigment mixing. This helps decide when to use it versus other mixing approaches.
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 description doesn't contradict. Adds behavioral context: names are grounded in real archive sources, enhancing trust. Does not mention any destructive actions or permissions.
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, no fluff. First sentence states purpose, second covers style choices, third reinforces archive grounding and use case. Information 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?
Adequately covers purpose, style variety, archive grounding, and use case. Output schema exists, so return values are documented elsewhere. Missing are prerequisites or market-specific behavior, but not critical.
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 provides 100% parameter descriptions, so baseline is 3. Description lists style options but doesn't add semantics beyond schema; no new constraints or format details.
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 the tool generates archive-verified colour names for any hex value, with specific verb 'Generate' and resource 'colour names'. It mentions naming styles and ties to Shopify product naming, distinguishing it from sibling tools like 'ecommerce_namer'.
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?
Implied usage for colour naming tasks, but no explicit guidance on when to use over alternatives like 'ecommerce_namer'. Lacks when-not-to-use or exclusion criteria.
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 only supply readOnlyHint=true, so the description carries some burden for behavioral disclosure. It adds context that this is a 'single-call' consolidating tool, and details what data is returned, which goes beyond the annotation. It does not mention potential error cases or performance characteristics, but given the read-only hint, the added return-context is valuable and non-contradictory.
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 and front-loaded with the primary purpose ('Canonical single-call colour truth object'). Every sentence carries useful information: return content, usage guidance, alternatives, and concrete examples. The examples add value, though they could be considered slightly verbose for a tool description.
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, rich output schema, many sibling tools), the description is quite complete: it states what data is returned, when to use it, how it relates to alternatives, and provides examples. It does not discuss output schema specifics, but the presence of an output schema reduces that burden. Missing a 'when not to use' or edge-case note, but overall it's sufficiently contextualized.
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 need not explain parameters. It adds minimal parameter meaning beyond schema, only implicitly referencing hex values via examples. The description does not elaborate on n_archive or include_physics semantics, but the schema already covers these, so a 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 a specific verb and resource: 'Canonical single-call colour truth object. Returns everything known about a hex value'. It clearly enumerates the data categories returned and distinguishes itself from siblings by explicitly naming the tools it replaces ('Replaces chaining colour_dna + archive_provenance + colour_cultural_risk + colour_metrics separately').
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 usage context: 'Use this as the foundation call when you need the complete picture.' It also names the alternative tools it consolidates, which implies when to use those instead (for specific sub-queries). However, it lacks explicit 'when not to use' exclusions or conditional guidance for different scenarios.
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 the 20-value limit, automatic deduplication, and the list of return components (colour science, archive anchor, evidence grade, etc.), going well beyond the annotation. This gives the agent important behavioral context for a batch operation.
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 zero filler. The first sentence front-loads the batch nature and input limit; the second adds use cases. Every word 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?
Given the moderate complexity and presence of an output schema, the description covers invocation limits, return contents, and use cases. It's complete enough for an agent to select and call 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?
Schema coverage is 100%, so baseline is 3. The description enhances parameter semantics by noting the 'up to 20 hex values' limit and 'deduplicates hex values automatically', which add constraints not present in the schema for the hexes 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 explicitly states it's the 'Batch version of colour_passport' and says it submits up to 20 hex values and returns a full Colour Passport for each, clearly distinguishing it from the singular sibling tool. The verb 'lookup' and 'returns' make the action and resource 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?
Provides explicit usage guidance: 'Use for multi-colour workflows, Figma palette analysis, or any case where calling colour_passport separately for each colour would be slow.' It names the alternative (colour_passport) and implies single-colour lookups should use that instead.
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 declare readOnlyHint=true, and the description adds value by explaining the output includes multiple token formats and that names are archive-grounded with dE2000 distance. 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?
Extremely concise: two sentences, front-loaded with the action verb 'Return', and lists specific outputs. No unnecessary 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?
Given the presence of an output schema (not visible but indicated as true), the description sufficiently covers purpose, supported formats, and data source. No gaps for a read-only listing 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 both parameters. The description does not add extra details beyond the schema, achieving baseline adequacy.
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 developer token formats for a hex value, listing specific formats (CSS variable, kebab-case, etc.). It distinguishes itself from siblings like colour_namer by specifying the comprehensive list of tokens.
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 generating multiple token formats, but does not provide explicit guidance on when not to use it or alternatives among siblings (e.g., colour_namer for a single name).
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?
Annotations already declare readOnlyHint=true, and the description adds relevant behavioral context about cultural journey, history, civilisations, and archive names. There is no contradiction, and the description enhances understanding of the output 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 two sentences plus an example, front-loading the core function. Every sentence adds value—purpose, use cases, and a concrete example—with no redundant or vague 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?
Given the simple tool (2 parameters, output schema present), the description covers the essential: what it does, expected input format, example, and typical use cases. The return format is handled by the output schema, so no further detail is needed.
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 tool description adds no additional meaning for parameters; the example '#DC143C' illustrates hex input but does not provide new semantic 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?
The description clearly states the tool returns a rich narrative about a colour's cultural journey given a hex value. It specifies the verb 'returns' and the resource 'cultural story', and distinguishes its use for image generation prompts, brand storytelling, and creative briefs, differentiating it from sibling 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?
The description provides clear usage context—'Essential for image generation prompts, brand storytelling, and creative briefs'—but does not explicitly state when not to use it or mention alternative tools. It implies appropriate scenarios but lacks exclusion guidance.
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?
Annotations already provide readOnlyHint: true, so the description doesn't need to restate safety. It adds 'Single-call' as a behavioral trait, but does not disclose potential limitations, rate limits, or external dependencies. This is adequate but not rich.
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 succinct yet information-dense, front-loading the core purpose ('Single-call commercial colour strategy report') and then efficiently listing inputs, outputs, and examples. Every sentence earns its place without 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 (5 parameters, nested objects, output schema exists), the description is complete enough. It explains what the tool does, what inputs it takes, what outputs to expect, and real-world usage examples, fully equipping an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter documented. The description adds value by summarizing the input structure (hex + brand_context + constraints + markets + medium) and providing examples, helping the agent understand how parameters combine. This goes slightly beyond the schema's individual 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 clearly states the tool's function: 'Single-call commercial colour strategy report' and lists the specific components it combines (archive grounding, verdict, brand fit, etc.). This distinguishes it from sibling tools like colour_verdict or colour_hooks, which focus on individual aspects.
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 comprehensive strategy needs by listing combined components and providing example scenarios (luxury fragrance, heritage interior). It does not explicitly name alternatives or state when not to use, but the context is clear enough for an agent to make a selection.
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?
Annotations indicate readOnlyHint=true, and the description aligns: 'traces documented appearances... Returns a dated sequence' – no destructive actions. Adds context about output format (archive entries with primary sources) beyond the annotation, 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?
Three sentences, no wasted words. Front-loaded with the core purpose, followed by usage guidance, then a concrete example. Each 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?
Given the presence of an output schema (not shown but stated as present), the description need not detail return values. It covers purpose, usage, and behavioral traits thoroughly for a 2-parameter tool. No gaps identified.
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 the example for the 'concept' parameter and mentions default/max for 'n', but doesn't significantly augment the schema descriptions. Adequate but not exceptional.
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 traces a colour concept through history, returns dated sequence with primary sources. The example 'indigo' concretely illustrates the scope. It distinguishes from sibling tools like colour_story or colour_dna by focusing on chronological historical research.
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 states 'Use for historical research, provenance chains, and understanding why a colour carries the cultural weight it does.' This gives clear context. Does not specify when not to use or name alternatives, but given the sibling list, it's implied that other tools serve different purposes.
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 mark this as read-only (readOnlyHint: true). The description adds that it returns variants, matches, and siblings, but does not disclose potential query behavior (e.g., exact match requirements or handling of unknown colours).
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 short sentences that pack the core functionality and use case without unnecessary words. It is front-loaded with the action and resource.
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 one required parameter and an output schema (not shown but present), the description covers what is returned. It lacks details on matching behavior or error cases, but overall it is sufficient for a simple 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 input schema already fully describes the one parameter 'name' with a clear example. The description restates 'any named archive colour' without adding new semantic information, so it 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 states the tool returns historical variants, lighter/darker versions, archive matches, and cultural siblings for a named colour. The title and description together make it distinct 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 says 'Essential for designers exploring around a colour,' which implies a usage scenario. However, it does not explicitly mention when not to use this tool or contrast it with alternatives like colour_compare or palette_generate.
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?
Adds context beyond readOnlyHint: describes backing by CIEDE2000 and Claude, and explains return fields (verdict, strengths, risks). 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?
Single well-structured paragraph, front-loaded with purpose. Every sentence adds value; no redundant or excessive 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?
Covers all aspects: purpose, inputs, output, examples, and backing technology. Could mention invalid hex handling, but output schema likely covers that. Adequate for the 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?
Schema coverage is 100%, but description adds meaning by explaining output verdicts and providing concrete usage examples, which helps agent understand parameter impact.
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?
Clearly states the tool evaluates a hex colour for specific use case, market, and medium. Provides decisive verdicts. Distinct from siblings with specific examples.
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?
Describes what it does and gives examples, but does not explicitly state when to use vs. alternatives like colour_cultural_risk or colour_metrics. No exclusions or alternative tool references.
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?
The description clearly lists all components of the returned design package (palette, narrative, paint matches, accessibility, etc.), adding context beyond the readOnlyHint annotation. It discloses that this is a compound tool that replaces multiple calls, but does not elaborate on error handling 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 two paragraphs, front-loaded with the most critical information (compound nature, inputs, outputs). Every sentence serves a purpose, 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 complexity (7 parameters, 1 required) and the presence of an output schema, the description covers the essential points: what the tool does, when to use it, and what it returns. It does not cover error cases but is sufficient for intended use.
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 documents all parameters adequately. The description mentions 'concept, medium, audience, and constraints' informally but does not add significant new meaning beyond the schema descriptions. 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 explicitly states it is a one-call compound tool that takes a concept and returns a complete design package including specific outputs. It distinguishes itself from sibling tools by naming the tools it replaces (e.g., query_conceptual + palette_from_concept + ...) and clearly identifies its scope as complete, deployable colour direction.
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 an AI agent or user needs a complete, deployable colour direction in a single call.' and 'Not for iterative refinement — use individual tools for that.' It names the alternative tools (query_conceptual, palette_from_concept, etc.) to differentiate usage contexts.
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, which is consistent with a generation tool. The description adds valuable behavioral context: all copy is grounded in archive provenance, colour names come from nearest archive match, and it lists nine distinct output components. This goes well beyond the annotation alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is four sentences, front-loaded with purpose, and every sentence provides essential information—inputs, outputs, differentiators, and use cases. 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?
Given the tool has 5 parameters (2 required), a detailed output schema (implied), and annotations, the description fully equips an agent to invoke it correctly. It covers the unique value proposition and practical applications for ecommerce platforms.
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 extra meaning through examples (e.g., 'velvet cushion in Murex Luxury') and explains that the colour name is archive-derived, which is not in the schema. This additional context justifies a score of 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 clearly states 'Generate complete ecommerce product copy for any colour' and lists specific inputs and outputs. It distinguishes itself from siblings like 'ecommerce_namer' by emphasizing archive-grounded content rather than generic AI copy.
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 indicates usefulness for Shopify, WooCommerce, and editorial product pages, implying when to use. However, it does not explicitly state when not to use or provide alternative tools for different tasks, leaving some guidance implicit.
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?
Beyond the readOnlyHint annotation, the description adds that names are archive-sourced, carries citations, and includes confidence scores. It does not mention performance or rate limits, but the disclosure 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 informative and well-structured, front-loading the core function. It is slightly lengthy but every sentence adds 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?
Given the complexity (5 parameters, output schema exists), the description covers inputs, outputs, use cases, and constraints thoroughly. No gaps identified.
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 lists inputs but doesn't add new meaning beyond what the schema provides; style options are mentioned but not elaborated.
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 archive-grounded colour names for product SKUs, with specific inputs and outputs. It distinguishes from siblings by emphasizing archive sourcing and citations, making it unique among tools like colour_namer 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?
The description specifies use cases for paint, candle, fashion, etc. It does not explicitly exclude alternatives but provides clear context. Among siblings, colour_namer exists but is not mentioned as an alternative.
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?
Annotations declare readOnlyHint=true, which aligns with the extraction (read-only) nature of the tool. The description adds useful behavioral context beyond this: the algorithm used (k-means++), the dual input path requirement (URL vs ID), and the fact that style_context optionally matches against an archive for cultural naming. It doesn't describe rate limits or error behaviour, but for a read-only extraction tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long with zero waste. It front-loads the core purpose and algorithm, covers the critical input logic (URL vs ID, ingest flow), notes functionality (hex weights, cultural matching), and ends with usage positioning. Every sentence contributes meaningful 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?
Given the output schema exists, the description doesn't need to explain return values. It adequately covers the dual input modes, the prerequisite ingest_image flow, and the optional analysis feature. The only minor gap is that it doesn't explicitly note grey_card_hex usage context (white balance calibration), but the schema covers that. For a 7-parameter tool with full schema coverage and an output schema, this is well-rounded.
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 all 7 parameters are documented in the schema. The description adds value by explaining the relationship between image_url/image_id (mutually exclusive input options) and clarifies the ingest_image prerequisite flow. However, the description doesn't add much beyond the schema for individual parameters like k, grey_card_hex, or style_context — those are already well-named and documented in the schema itself.
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 named algorithm (k-means++), and specifies the exact inputs (image_url or image_id) and outputs (hex values with proportional weights, optional cultural naming). It also distinguishes itself from siblings by explicitly positioning it before image_brief and referencing ingest_image for upload flow.
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 guidance: requires either public image_url OR image_id; if the user has a raw file without a public URL, call ingest_image first. It also states when to use this tool ('Use this before image_brief when you have an uploaded photograph') and mentions the optional style_context/analyse flow for archive matching. This is excellent when-to-use coverage.
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-GroupedARead-onlyInspect
Generate a complete multi-room house colour scheme from a single archive, grouped by documented provenance (same object, same pattern colourway, same source citation, same designer, same period+institution) rather than visual similarity alone. Each room gets a full colour card set (dominant/secondary/joinery/textile/accent roles) with paint matches, LRV, illuminant behaviour, and WCAG data. Every 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) constrains candidate selection, not just the written advice. 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?
The readOnlyHint=true annotation already covers the safety profile, so the description earns credit for adding meaningful context: it discloses that historical claims are templated only from documented fields, room/surface assignment is editorial (not historical fact), orientation constrains candidate selection rather than just narration, and the response is 60-100KB+ and should be referenced via house_ref. This exceeds what annotations alone 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 but front-loaded with the core purpose. It's on the longer side but every sentence earns its place: purpose, grouping logic, output structure, provenance integrity guarantees, orientation behavior, example, sibling differentiation, and downstream workflow guidance. The only minor deduction is that it is quite long and could arguably be tightened around the example block.
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 complex 9-parameter tool with an output schema, the description is remarkably complete. It explains the grouping methodology, delivers integrity guarantees about historical claims, clarifies editorial vs factual status, discloses orientation's functional role, warns about response size, and provides a complete workflow handoff to palette_pdf. The output schema handles return-value documentation, and the description covers everything else needed for correct 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 description coverage is 100%, so the schema does heavy lifting on all 9 parameters. The description adds value by clarifying that the 'archive' parameter must be a single archive ('Single archive to draw every room's colours from') and that rooms are cross-grouped, plus explaining that orientation is functional ('constrains candidate selection, not just narration'). It also highlights the house_ref output field which is critical for downstream use.
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+resource ('Generate a complete multi-room house colour scheme from a single archive') and explicitly distinguishes itself from interior_specify ('Use interior_specify instead for a single room without cross-room grouping'). It clearly defines the unique value proposition (provenance-grouped, not visual-similarity) and differentiates it from sibling 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 explicitly states when to use this tool (multi-room, single archive, provenance grouping) and when NOT to use it ('Use interior_specify instead for a single room without cross-room grouping'). It also includes a concrete example with concept, archive, and rooms array, plus a cautionary note about the large response and how to pass house_ref to palette_pdf.
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 provide readOnlyHint=true, and the description does not contradict it. Beyond annotations, the description discloses the compound nature, the extraction and matching steps, and the final output including a swatch URL. It also notes that style_context restricts archive matching, adding behavioral 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 compact and front-loaded with a clear problem summary: 'one image in, full creative brief out.' It lists capabilities in a single flowing sentence and ends with a practical usage hint, with no redundant 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?
The description covers the task, the alternative, and a key usage parameter. It does not list every possible input combination, but the output schema exists to explain return values. It doesn't explicitly require one of image_url/image_base64 despite 'one image in,' which is a minor completeness gap.
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. The description adds no new parameter-level details, except reinforcing the style_context examples already present in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Compound endpoint: one image in, full creative brief out,' clearly stating the function and output. It explicitly distinguishes itself from several sibling tools by naming palette_extract, palette_analyse, and agent_brief as separate alternatives.
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 recommends using this tool instead of chaining three separate tools, providing clear guidance on when to choose it. It also instructs to pass style_context with concrete examples like 'English cottage garden', 'Victorian', 'MarsColour' for coherent archive matching.
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 include readOnlyHint=true, and the description adds behavioral context beyond that, such as 'Uses K-means++ extraction plus Bradford chromatic adaptation for accuracy' and the privacy promise. 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 five concise, information-dense sentences with no fluff. Key information is front-loaded: first sentence states the core action and result; subsequent sentences add technical detail, output format, use cases, and privacy.
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, output schema exists), the description covers the purpose, usage guidelines, algorithm, output details, and privacy. It is fully adequate for an agent to understand 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 baseline is 3. The description adds value by explaining output structure ('Returns up to 5 dominant colours, each with archive name, cultural story, nearest RAL standard, and WCAG accessibility data') and the optional archive restriction, which goes 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 the tool's purpose: 'Upload an image and extract its dominant colour palette, with each colour matched to its nearest named archive entry with full cultural provenance.' It uses a specific verb+resource and distinguishes from sibling palette tools like palette_extract by emphasizing cultural matching.
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 lists use cases: 'Works for product photography, interior photos, artwork, brand assets, and mood boards.' It also provides a key privacy guideline: 'The image is never stored — processed in memory only.' However, it does not explicitly state when not to use or suggest alternatives.
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?
Beyond the readOnlyHint annotation, the description discloses key behaviors: photo is never stored, uses Claude Vision for analysis, matches colours via CIEDE2000 perceptual distance. This adds significant transparency about data handling and methodology.
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 concise paragraph front-loading purpose and key outputs. Every sentence adds value, including an illustrative example. 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 tool's complexity (4 parameters, no required, full schema, output schema exists), the description covers inputs, process, outputs (seasonal type, depth, undertone, palette with provenance, colours to avoid). It is complete for agent understanding.
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 clear (e.g., 'Face should be clearly visible in natural light' for image_base64). The tool description does not add new information beyond the schema but provides overall 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 performs personal colour analysis from a portrait photo, producing seasonal type, depth, undertone, and a curated palette. It gives a specific example (Deep Winter vs True Spring) and distinguishes from sibling tools by the unique service offered.
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 personal colour analysis but does not explicitly state when to avoid or alternative tools. However, the context of 'personal colour analysis' is sufficiently clear for an agent to select it over generic palette tools.
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 declare readOnlyHint=true, so the read-only nature is already captured. The description adds meaningful context about the metric's scale and output structure (resonance score, material origin, etc.), but does not disclose additional behavioral traits such as authorization needs, rate limits, or side effects. This aligns with the annotations without adding extra behavioral 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 well-structured, starting with the core purpose and followed by metric examples, input/output details, and use cases. It is front-loaded and informative, but contains some redundant phrasing (e.g., 'Colour Memory's proprietary semantic metric' and the output list) that could be tightened without losing clarity.
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 (proprietary metric with a defined scale) and the presence of an output schema, the description adequately explains the metric's levels (1.00, 0.80, 0.50), input requirements, and output fields. It also lists appropriate use cases. However, it does not address edge cases, error handling, or validation, leaving some gaps for a complete picture.
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 parameters ('entries' and 'score_basis') described. The description reiterates the input structure and elaborates on output fields, adding marginal value. Since the schema already provides clear parameter meaning, the description's extra detail is helpful but not essential, aligning with the baseline score of 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 specific purpose: a proprietary semantic metric scoring alignment between material origin and social consequence of a colour. It distinguishes itself from palette generators and lists specific use cases (investigative reports, forensic briefs, museum content, editorial PDFs), making the purpose highly specific and actionable.
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 context for when to use the tool (e.g., investigative reports, forensic briefs) and implies uniqueness by stating 'This is the metric that separates Colour Memory from palette generators.' However, it lacks explicit guidance on when not to use it or how it differs from sibling tools like 'colour_story' or 'colour_forensics'. The omission of alternatives slightly reduces the score.
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?
With readOnlyHint=true annotation already declaring a safe read operation, the description adds valuable behavioral context: the returned image_id is ephemeral (valid 5 minutes), implying a time-bound processing model. It doesn't contradict annotations. It explains the lifecycle of the resource but doesn't disclose details like error behavior or rate limits, keeping it just below 5.
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 waste. Each sentence earns its place: purpose+lifecycle, downstream targets, and a usage threshold. Front-loaded action and outcome.
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 3 params, an output schema, readOnly annotation, and a clear description covering purpose, lifecycle, downstream consumers, and parameter disambiguation. The 5-minute expiry is disclosed, which is a key operational detail. Minor gap: no mention of error handling for invalid uploads, but given the output schema and complete annotation coverage, this 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 parameters are well documented in the schema. The description adds meaningful context: it clarifies image_base64 is specifically for 'locally uploaded files with no public URL' and notes 'No size limit here (unlike palette_extract's image_base64)', which is a genuinely useful differentiation that wouldn't be obvious from schema alone. This cross-tool comparison adds real value.
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: upload an image for ephemeral processing, returns an image_id valid for 5 minutes. It names the downstream tools (palette_extract or image_brief) that consume the output, and specifies a usage threshold ('any image over 50 KB'). It's specific with verb+resource+scope, though it doesn't explicitly distinguish from sibling ingest-like tools beyond naming consumers.
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 on when to use this tool (for any image over 50 KB, as preprocessing for palette_extract or image_brief). It doesn't explicitly list alternatives or exclusions/when-not cases, which keeps it at 4 rather than 5, but the 50 KB threshold and downstream consumer names provide actionable guidance.
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?
Beyond the readOnlyHint, the description discloses critical behavior: passing an invalid 'archive' yields a clear error listing valid archives instead of a silent unrestricted search. It also promises that every returned colour will belong to the specified archive, and labels the tool as a full replacement for a colour consultation, providing operational expectations.
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 and each sentence adds information, but it is somewhat dense and includes marketing-style phrasing ('This is the tool that replaces a colour consultation') and a secondary PDF endpoint, which slightly dilutes conciseness. Still, it is efficiently structured for a complex 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 covers purpose, inputs, examples, archive restriction behavior, alternatives, and output components. With a fully documented schema and an output schema present, the agent has enough context to select and invoke the tool correctly without additional explanation.
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 all 7 parameters, so the baseline is 3. The description repeats the archive semantics and concept examples but adds no new parameter-specific meaning (e.g., it does not elaborate on 'avoid', 'n_colours', or 'orientation') beyond what the schema already states.
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 interior colour specification from a concept or brief.' It lists tangible outputs (60/30/10 assignments, paint matches, light behaviour, cultural rationale) and explicitly distinguishes itself from house_specify for multi-room schemes, 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?
The description provides explicit usage guidance: use house_specify for multi-room schemes, use /interior-specification/pdf for a related document, and it gives concrete concept examples ('bold maximalist living room', 'calm Scandi bedroom'). This clearly communicates when to choose this tool and when to pick an alternative.
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 already mark readOnlyHint=true. Description adds 'Deterministic -- no LLM cost', which provides useful behavioral 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?
Three sentences, no redundant words. Front-loaded with the main action 'Return a live inventory'. Every sentence adds 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?
For a zero-parameter discovery tool with output schema, the description is complete. It explains what the tool does, when to use it, and its deterministic nature.
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?
No parameters exist, so baseline is 4. Description adds value by listing the return content (tool count, endpoint list, etc.) which helps the agent understand what the output contains.
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 returns a 'live inventory of all active endpoints and MCP tools', specifying verb and resource. It is distinct from sibling tools which focus on colors, 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?
Explicitly says 'Use this first to discover what the API can do before making calls', providing clear context for use. No alternative or exclusion guidance, but the tool is self-contained.
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?
The description adds behavioral context beyond the readOnlyHint annotation by mentioning palette-level deduplication, do_not_say guardrails, and returning alternatives when confidence is low. These details help the agent understand the tool's behavior, though they are not exhaustive.
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 four sentences each providing distinct value: purpose, output details, deduplication behavior, and usage context. There is no fluff or repetition of schema fields, making it well-structured and 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 provides enough context for an agent to select and invoke the tool correctly: it explains the core function, the output, the deduplication guarantee, and the typical usage phase. Since an output schema exists, the return structure is already documented, and the description covers the essential behavioral nuances. Minor gaps like handling of the optional 'archive' parameter are covered by 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 description coverage is 100%, so the baseline is 3. The description does not add any extra meaning beyond the schema; it mentions 'alternatives when confidence is low' which loosely maps to the 'n' parameter, but this is already implied by the schema's description. Thus, no additional 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 clearly states the tool's function: analysing a palette of hex colours against the Colour Memory archive. It specifies the exact action, the resource, and the output (nearest named archive entry with cultural name, source, claim_strength, guardrails, and alternatives), which distinguishes it from sibling tools like palette_audit 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?
The description explicitly says to use it 'after extracting colours from a photo or generating a palette,' providing clear context for when the tool is appropriate. However, it does not explicitly name alternative tools or list exclusions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
Annotations indicate readOnlyHint=true, consistent with an audit. The description adds that the tool is 'Deterministic, no LLM cost', providing transparency about performance and consistency. No behavioral 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 concise with only three sentences. It is front-loaded with the core purpose and key details. Every sentence adds value 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 mentions output (score, grade, fix list) and notes determinism. An output schema exists (context signals), so return structure need not be fully detailed. However, could briefly explain the 'prioritised fix list' format for clarity, but overall it is sufficiently complete for a read-only audit 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 4 parameters with descriptions, yielding 100% coverage. The description does not add significant meaning beyond the schema; it only mentions 'hex values to audit' which aligns with the palette parameter. 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 'Full palette quality audit' and lists specific dimensions scored (accessibility, cultural risk, tonal balance, colour diversity, archive naming strength). It specifies the output (overall score 0-100, grade, prioritised fix list) and positions itself as an 'Enterprise quality gate' distinct from sibling tools like accessibility_check or colour_cultural_risk which cover individual aspects.
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 tells when to use: 'use before shipping any palette'. It also notes it is 'Deterministic, no LLM cost' but does not explicitly state when not to use or mention alternative tools for specific checks (e.g., for individual metrics like accessibility, use the sibling tools). Still provides clear context for appropriate usage.
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 declare readOnlyHint=true, and the description adds detail on the analysis outputs (timelessness, commercial strength, cultural depth, emotional difference, winner verdict), consistent with a read operation.
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 front-loads the purpose and lists key outputs. It is concise, though could be slightly improved by breaking into two sentences for readability.
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 (not shown but stated), the description is fairly complete, listing the return components. For a complex comparison tool, it covers the essential aspects.
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 meaning beyond the schema parameter descriptions, though it implicitly ties use_case to the 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 uses specific verbs ('compare') and resources ('palettes') and lists distinct outputs (timelessness scores, commercial strength, cultural depth, emotional difference, winner verdict), clearly distinguishing it from siblings like colour_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?
The description does not provide explicit when-to-use or when-not-to-use guidance. It mentions 'for the stated use case' but does not elaborate on contexts or alternatives among the many sibling tools.
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?
Description states colours are sourced from the archive with documented history, adding context beyond the readOnlyHint annotation. It confirms non-destructive, read-only behavior and explains the provenance of results.
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 two sentences and examples, front-loading the purpose. Every element adds value, though the examples could be slightly more compact.
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 4 parameters, full schema coverage, and an output schema, the description adequately covers behavior and output nature. It lacks details on error handling or edge cases, but these are plausibly covered by 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 coverage is 100%, so description adds limited new detail. It mentions returning 4-6 colours, but the parameter n_colours allows up to 8, creating a minor inconsistency. Examples for concept parameter provide useful 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 a historically grounded colour palette from a cultural concept, specifying the output format (4-6 colours with hex, proportions, provenance) and providing diverse examples. It distinguishes from sibling tools like palette_heritage by focusing on cultural concept input.
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 generating palettes from cultural themes, but does not explicitly state when to use this tool versus siblings like palette_heritage or palette_generate. No exclusions or alternatives are mentioned.
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?
Annotations declare readOnlyHint=true, and the description aligns by describing an export (read) operation. The description adds context about embedding Colour Memory but does not disclose additional behavioral traits such as side effects or constraints. Since annotations handle safety, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the core purpose and formats, and contains no superfluous words. Every sentence adds 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?
Given the presence of an output schema, the description does not need to elaborate on return values. It covers all formats and the auto-naming feature. Minor gap: it does not hint at the output structure (e.g., returns file contents), but the output schema likely fills that gap.
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 all parameters. The description adds no new parameter-level meaning beyond what the schema provides, such as format options or required fields. Baseline of 3 is correct.
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 exports a palette to multiple design formats (CSS, Figma, Tailwind, ASE, JSON) with automatic naming, which is a specific verb+resource that distinguishes it from sibling tools like palette_analyse or palette_audit.
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 lists the output formats but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. Among siblings, no other export tool exists, so it is implicitly the expected choice, but the guidance is minimal.
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 readOnlyHint annotation already establishes a safe read-only operation. The description adds valuable behavioral context beyond this: it reveals the clustering algorithm (k-means++), the accepted input formats (public URL or base64), and the output characteristics (hex values with proportional weights sorted by luminance). This is more transparent than a minimal description, though it doesn't disclose potential edge cases like rate limits or large image handling, which are covered in schema parameters.
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, front-loaded with the core purpose, followed by input/output details and usage guidance. Every sentence adds value: the first states the action, the second covers inputs and outputs, the third gives alternative guidance. No fluff or repetition exists.
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 (8 parameters, optional chaining, output schema), the description is sufficiently complete. It covers the core action, input types, output format, and when to use it. Since an output schema exists, the description does not need to detail return values. It does not mention every parameter (e.g., grey_card_hex, style_context), but those are fully documented in the schema, so the overall context is complete enough for an agent to act.
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 every parameter having a detailed description in the schema. The description does not add new parameter-level semantics beyond what the schema already provides; it reinforces input modes (URL/base64) and output sorting, but these are already implied by the schema. Therefore, 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 clearly states the tool's function: 'Extract dominant colours from an image using k-means++ clustering.' It specifies the resource (image) and the method, and distinguishes itself from the sibling tool image_palette by noting when to use it instead. This goes beyond a vague statement, making the purpose immediately understandable.
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 usage guidance is provided: '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 select this tool over alternatives, fulfilling the dimension completely. The optional palette_analyse run is also mentioned, adding contextual use case.
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 explains the filling algorithm (nearest CIEDE2000 match interpolated from locked anchors) and return format (full citation per slot). This adds value beyond the annotations (readOnlyHint=true), which already indicate no mutations. There is no contradiction; the description aligns with read-only 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 sentences plus an example, all essential. It front-loads the main action ('Send a palette...') and avoids fluff. Every sentence contributes to understanding the tool's purpose, behavior, and use case.
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 adequately covers return values (full citation). It explains the core algorithm and optional filtering. However, it omits potential error scenarios (e.g., invalid hex, insufficient locked slots for interpolation). For a simple tool, this is acceptable but not fully 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?
With 100% schema coverage, the description still adds meaning: it clarifies that 'slots' can be up to 8, locking some with hex values, and that 'archive' optionally restricts fills. The example demonstrates usage. This helps the agent understand the interplay between parameters beyond the schema's static 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 title 'Lock-and-Fill Palette from Archive' and description clearly state the tool's function: generating a palette with locked hex slots and filling empty slots from an archive. It specifies the slot limit (8), the algorithm (CIEDE2000), and return format (full citation). This distinguishes it from sibling tools like palette_extract or palette_heritage.
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 includes an example of locking a client's wall colour and filling a 5-colour scheme from Oxfordshire, implying a use case. However, it does not explicitly state when to avoid this tool or mention alternatives among the many siblings (e.g., palette_iterate, palette_strict). The guidance is implicit, leaving the agent to infer the appropriate context.
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 include readOnlyHint=true, and the description details the interpolation algorithms (linear vs chroma_preserved) and the snapping behavior. It provides transparency beyond the annotation, though no discussion of side effects or restrictions is needed given the read-only nature.
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 effectively convey the tool's purpose, behavior, and output options. No extraneous information, well 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 presence of an output schema and the richness of the description, all necessary information for an agent to select and invoke the tool is covered, including output formats and parameter defaults.
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 the two path options ('physically accurate Lab interpolation' vs 'LCh interpolation, short-arc hue, avoids desaturated midpoints') beyond the schema's enum 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 clearly states it generates a perceptually smooth gradient from 2-5 archive anchor colours, using Lab interpolation and snapping to nearest archive colour. This is specific and distinguishes it from sibling tools like palette_analyse 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 mentions use cases ('design briefs, colour journey visualisations, and gradient systems') but does not explicitly state when not to use or list specific alternative tools. However, the context is sufficiently clear 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_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?
The description adds context about the process (scoring, naming, gap-filling) that annotations do not cover. However, there is a mild contradiction: annotations set readOnlyHint=true, but the description uses verbs like 'generate' and 'fills', which could imply mutation. The description does not explicitly clarify that the tool is read-only (no side effects).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, efficiently summarizing the tool's action and outputs. The first sentence clearly states the main purpose, though it is slightly long. There is no waste, but it could be streamlined.
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 input schema covers all parameters and an output schema exists (so return format is documented), the description provides sufficient context about the tool's operation: how it processes each color, detects and fills gaps, and the content of the returned palette. It 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?
Schema coverage is 100% and each parameter already has a description. The tool description does not add meaningful detail beyond what the schema provides (e.g., explaining 'market' or 'context' in relation to heritage analysis). 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: given a legacy palette, it generates an archive-grounded premium support system. It details the specific actions (identify archive anchor, name, score provenance, detect gaps, fill from archive) and the output (full palette with roles, confidence scores, CSS tokens, production notes). This clearly distinguishes it from sibling tools like palette_analyse or palette_generate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a legacy palette that needs historical grounding, but it does not explicitly state when to use this tool versus alternatives such as palette_audit or palette_extract. No 'use when' or 'do not use' guidance is provided.
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?
The annotation declares readOnlyHint=true, and the description's 'refine' verb aligns with a non-destructive transformation — no contradiction. The description adds value by noting 'archive grounding and change rationale' in the return, which is behavioral context beyond the annotation. However, it doesn't clarify whether both palette and feedback are strictly required (they are), what n_results does behaviorally, or edge cases like empty feedback.
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 concrete examples, all earning their place. The front-loaded verb ('Refine an existing palette') immediately orients the agent. The examples are useful but slightly redundant — two feedback examples would suffice without losing meaning.
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 6-param tool with 100% schema coverage and an output schema present, the description is largely complete. It explains the core inputs, the mechanism, and the return characteristics (archive grounding, change rationale). It doesn't address the optional markets/use_case params, but with schema coverage at 100%, this is an acceptable gap. The n_results behavior is undocumented in both description and clear schema semantics beyond its type.
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 documents all 6 parameters. The description adds context around 'palette' and 'feedback' (usage examples), but the direction parameter being an alias for feedback is only visible in the schema, not reinforced in the description. The description maps to the two required params but doesn't add semantic nuance beyond the schema's own 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 clearly states the action (refine an existing palette), the resource (palette), and the mechanism (natural language feedback). It distinguishes itself from siblings like palette_generate (creation) and palette_analyse (analysis) by making explicit that it refines an existing palette via language feedback. The examples of feedback styles ('more melancholic, too corporate add warmth, better for Gen Z luxury') add concrete specificity.
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 defines the input expectation ('Submit your current palette and feedback'), giving practical when-to-use guidance. It names the feedback format with examples but does not explicitly state when NOT to use this tool or name alternative tools. The context of refining a palette distinguishes it from generation, but no exclusions are stated.
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?
The description adds behavioral details beyond the readOnlyHint annotation, such as analyzing LRV, assigning roles, checking body text contrast, and flagging missing neutrals. It does not contradict the annotation and provides useful context about the tool's operations.
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, one sentence that lists key actions without wasted words. However, it could benefit from slight structural separation for readability, but overall very 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?
Given the presence of an output schema and high schema coverage, the description adequately covers the tool's functionality. It explains what the tool does but does not describe the output format; however, the output schema is expected to cover 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 description does not need to add much on parameters. It mentions 'analyses LRV' but does not elaborate on parameter formats or constraints 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 it generates light/dark mode role maps from a palette, listing specific actions like analyzing LRV, assigning roles, checking contrast, and flagging missing neutrals. This distinguishes it from siblings such as palette_analyse and 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 implies usage for generating dual-mode role maps but does not explicitly state when to use this tool versus alternatives like palette_analyse or when not to use it. 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_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?
With only readOnlyHint as annotation, the description carries a heavy load and delivers. It discloses delivery mechanisms (signed time-limited URL vs base64), rendering behavior (each card exactly one page regardless of underlying records), card-shape nuances, and the full house pipeline. This goes well beyond annotations and provides critical execution 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 long (over 300 words) but well-structured, moving from purpose to output details to input modes. Each sentence contributes new information, and the key points are front-loaded. It is not as tight as it could be, but the tool's complexity justifies the length, so a 4 fits.
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 all three input modes, delivery options, presentation templates, and card-shape behaviors. However, it omits the house_ref/project_id shortcut that the schema describes, which is an important alternative to avoid sending large payloads. Given the rich schema, the description is still quite complete, but this omission prevents 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?
Because schema coverage is 100%, the baseline is 3. The description adds substantial meaning beyond the schema by detailing required entry fields (name, hex, archive_source, etc.), the three card shapes and their implications, and the structure of `sections`. It does not fully compensate for the schema's high coverage, but it does enhance understanding significantly, so a 4 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+resource: 'Generate a premium branded PDF specification sheet from a palette of archive entries.' It also enumerates the PDF's contents (colour panels, provenance, RAL, LRV, WCAG data), making its primary purpose unmistakable. It does not explicitly contrast with sibling palette_export, but the specificity and scope are clear enough to qualify as distinguishing.
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 states when to use the tool: 'Use this to create client deliverables, specification sheets, and print assets.' It provides detailed input-mode guidance, warns against using report['colour_cards'] instead of presented_cards, and explains the priority of `house` over `sections`/`entries`. 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.
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?
The description reveals outputs (surface assignments, proportions, etc.), adding value beyond the readOnlyHint annotation which already indicates no modifications. It transparently tells the agent what to expect, though it could mention that it works only with hex values.
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 with zero waste. It includes the action, input constraint, and a concise list of outputs. Every part is informative and 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 present, the description does not need to detail return structure, but it still lists key output categories. The input constraints and return types are covered. Could be slightly more comprehensive about the 60-30-10 rule, but it's sufficient.
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 parameters. The tool description repeats that colours requires 2-8 hex values but does not add new semantic details for style or room_type 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 'Generate a complete interior specification' which is a specific verb+resource. It distinguishes from siblings by specifying it works from 2-8 hex values and returns detailed outputs like surface assignments and proportions, setting it apart from other 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 implies usage when you have 2-8 hex values and need a full specification, but it does not explicitly compare to sibling tools like palette_generate or interior_specify. The constraint on input size provides some guidance, but no when-not-to-use or alternative recommendations.
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 declare readOnlyHint=true, indicating safe read operation. Description adds no further behavioral traits like auth needs or rate limits, but it does explain the filtering behavior. Adequate given annotations, but could mention if there are any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise, two sentences front-loaded with the core purpose and differentiation, then usage tips. Every word 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?
Given that there is an output schema and full parameter descriptions, the description covers the key differentiators and how to use the new parameters. It is complete enough for this level of complexity, though could optionally mention return format or example values.
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?
Although schema description coverage is 100%, the description adds context for allowed_archives and min_relevance beyond the schema, explaining their purpose in restricting cultural traditions and filtering weak matches. Enhances understanding without repeating 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?
Clearly states it is like palette_concept but adds archive filtering and relevance controls, with a specific use case: fixing cross-archive drift when cultural specificity matters. Distinguishes from siblings by naming the parent tool and the new features.
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 tells when to use (cultural specificity matters) and how to use allowed_archives and min_relevance. Mentions the problem it solves (cross-archive drift), but does not explicitly state when not to use it or compare to other siblings beyond palette_concept.
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?
The readOnlyHint annotation already signals a safe, non-mutating operation. The description adds meaningful behavior beyond this: it promises a 'clean, text-free' output, specifies the return format ('URL to the PNG'), and highlights a key differentiator of the gradient layout ('true smooth LCh-interpolated gradient with no hard edges'). These details help the agent set expectations and choose layouts appropriately, though it does not cover every possible edge case (e.g., size limits or error handling).
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 earning its place. The first states the core action and output, the second gives the two primary use cases, and the third enumerates supported layouts with a key differentiator. No filler or redundant phrasing. Information density is high but still readable.
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 having 5 parameters and a moderately complex set of layouts, the description is complete for an agent to invoke the tool correctly. It covers the purpose, return type, primary use cases, and layout-specific behavior. The existence of an output schema and fully-described input schema reduces the need for additional detail, and the description fills the remaining gaps (like the gradient's subtlety and the weights' 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?
The input schema provides 100% coverage of parameters, so the baseline is 3. The description adds value by explaining that 'photo-proportional weights' come from palette extraction and are used specifically for the photo layout, and it stresses that the gradient layout is a smooth perceptual blend unlike the others. These semantic hints go beyond the schema's terse property descriptions, clarifying how parameters interplay.
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 object: 'Generate a clean, text-free PNG swatch image from hex colours.' It immediately states the deliverable (a URL to the PNG) and explicitly names two distinct use cases (Midjourney --sref style references and design mood boards). This clearly differentiates the tool from siblings like palette_gradient or palette_export, as it focuses on swatch image generation for style references.
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 for Midjourney --sref style references or design mood boards.' It also gives a nuanced recommendation for the gradient layout: 'best for mood/atmosphere/colour-grade references rather than literal composition.' While it does not explicitly name alternative sibling tools, the use cases and layout-specific guidance are sufficient to steer an agent. The absence of explicit exclusions (e.g., 'do not use for...') keeps it from a 5.
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?
Description adds significant behavioral detail beyond the readOnlyHint annotation: it explains the matching algorithm (CIEDE2000 nearest-neighbour), output bands (exact/close/approximate/loose), and provenance. This gives the agent a clear mental model of the operation.
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: first states core action and algorithm, second lists example use cases. No redundant information; every sentence contributes meaning. Front-loaded with the critical verb and resource.
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 3 parameters and existing output schema, the description adequately covers the tool's purpose, behavior, and typical use cases. The mention of relevance bands and provenance gives sufficient context without over-specifying.
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 covers 100% of parameters with descriptions. Description does not add new parameter-specific semantics beyond the schema's; it reinforces the overall purpose but does not clarify individual parameters further. 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 the tool maps hex values into a target archive using CIEDE2000 nearest-neighbour matching. The verb 'Map' and resource 'hex values into target archive' are clear, and the tool is distinct from sibling palette tools 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?
Description provides concrete use cases (e.g., translating paint colours into Shakespeare language, mapping brand palette to Japanese pigments), which imply when to use. It does not explicitly state when not to use or mention alternatives, but the examples are sufficient to convey context.
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 declare readOnlyHint=true, and the description adds behavioral context: returns verdict, score, roles, weakness, suggestion, and matches colors to archive entries. This goes beyond annotations, though no destructive or permission details are conveyed.
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 plus examples convey purpose, inputs, output, and usage scope without extraneous text. Front-loaded with primary action, and examples are relevant and illustrative.
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 presence of an output schema, the description adequately details the output structure and archival matching. It covers input requirements and examples, though it could briefly mention output schema availability.
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% coverage with descriptions. The description reinforces parameter meaning (e.g., 'palette of 2-8 hex values', examples for use_case) and adds context for market and medium, enhancing schema completeness.
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, returning a verdict and supporting details. Examples differentiate it from sibling tools like 'palette_analyse' by emphasizing verdict and concrete suggestion.
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 evaluating palettes with specific inputs, but does not explicitly state when to use this tool over alternatives or when not to use it. Siblings like 'colour_verdict' or 'palette_audit' may overlap, but no exclusion guidance is given.
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 adds rich behavioral details beyond annotations: it is a soft delete (version rows never physically erased), returns identical responses for deleted/unknown/not-owned cases, and revokes resolution by project_id or house_ref. This complements the idempotentHint and destructiveHint annotations and does not contradict them.
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 written sentences: first states the action, second covers idempotency and security behavior, third states the consequence. 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?
For a simple one-parameter tool with output schema, the description covers the operation, edge cases (already-deleted, unknown, not-owned), and post-condition (cannot be resolved). All essential information is present.
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 full documentation for the sole parameter project_id (100% coverage), including its origin from house_specify. The description adds no additional parameter-level semantics, so the 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 'Soft-delete a durable house project you own' with a specific verb, resource, and ownership constraint, making it distinct from sibling tools like project_get and project_list.
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 ownership requirement and idempotent behavior for unknown/not-owned projects provide clear usage context, but no alternative tools are explicitly named or contrasted, 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.
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?
The description discloses critical behaviors beyond the readOnly/idempotent hints: it 'never re-runs reasoning or re-matches archives', renders only stored data, leaves blank fields where data is missing, and fails closed with OUTPUT_TOO_LARGE_FOR_INLINE_DELIVERY. This is rich behavioral context that annotations alone do not 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 a long paragraph, but each sentence adds unique value (purpose, resolution rules, DOCX structure, XLSX sheets, data fidelity, delivery options). It is verbose yet well-structured; it could be tighter but remains efficient for 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?
Given the tool's complexity (6 params, nested objects, output schema), the description is remarkably complete: it explains ownership rules, both format layouts, failure modes, and data-source behavior. The output schema covers return specifics, so the description needn't detail them, and it leaves 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 covers 100% of parameters, so baseline is 3. The description adds mutual exclusivity of house/house_ref/project_id and explains delivery failure behavior, but it does not elaborate on project_version or the house object structure beyond the schema, so it adds meaningful but not exhaustive extra value.
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 exports the house project as an editable DOCX or XLSX, with the specific verb 'Export' and clear resource. It distinguishes from the sibling palette_pdf by contrasting with 'palette_pdf renders' and clarifying it produces editable formats, not PDFs.
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 concrete use cases ('a client who needs to annotate the scheme, or a contractor building a materials/procurement schedule') and references palette_pdf for resolution/ownership rules, implying when to use the PDF alternative. It also clarifies that it never calls house_specify, guiding the agent to use prior resolved data.
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?
The readOnlyHint annotation aligns with 'Retrieve'. The description adds valuable context beyond annotations: API key requirement, ownership check, uniform not-found response for unknown/deleted/expired/not-owned IDs, and the exclusion of the full house specification. 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?
Three sentences, front-loaded with the core purpose. Every sentence earns its place: return value, auth/ownership, exclusions/alternatives, and error behavior. 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 tool is simple (get by ID, optional version) and an output schema exists, so return values are covered. The description handles all edge cases: auth, ownership, uniform not-found, and clearly delineates scope from related tools. 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 already covers 100% of parameters with descriptions. The description adds meaning by stating project_id comes from house_specify and that version refers to the 'requested version' whose content hash is returned, enriching the schema 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 opens with 'Retrieve summary metadata for a durable house project you own' — a specific verb, resource, and ownership scope. It also clearly states what the tool does NOT return and points to palette_pdf and project_versions, making it easy to distinguish 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?
It states the precondition ('Requires an API key; the project must belong to the calling key'), and explicitly says when to use alternatives: use house_ref with palette_pdf for full specs, or project_versions for version history. The not-found behavior is also disclosed.
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 adds valuable behavioral details: ordering, the empty-list behavior for anonymous calls, the non-listability of temporary anonymous projects, and the API key requirement. These are not inferable from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the main purpose, and every sentence carries useful information. There is no waste 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 5 fully-described parameters and the existence of an output schema, the description covers the essential contextual elements: purpose, ordering, auth requirements, and the key limitation for anonymous calls. It is sufficiently 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?
Schema description coverage is 100%, so the baseline is 3. The description does not add parameter-specific details beyond what the schema already provides. The ordering and anonymous behavior notes are tool-level behavior, not parameter semantics.
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 clearly identifies the resource ('durable house projects'), scoping it to 'owned by the calling API key' and specifying ordering ('most recently updated first'). This distinguishes it from sibling tools like project_get or project_delete.
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 context: this is for keyed calls and owned projects, and clearly states when not to use it (anonymous calls return empty, anonymous projects are not listable but resolvable directly via house_ref). However, it does not explicitly name alternative tools, though the direct resolution hint implies project_get.
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 reveals important behavioral traits: 'Version 1 is always immutable and always present' and 'Earlier versions remain renderable via palette_pdf's project_version input even after a newer version exists'. It also states the authentication and ownership requirements. These details provide meaningful context that annotations alone do not 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 compact yet informative, using three sentences to convey the action, ordering, return data, immutability guarantees, cross-tool behavior, and authentication requirements. There is no redundant or filler text; 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?
Given the tool's simplicity (one parameter), the readOnlyHint annotation, and the presence of an output schema, the description is sufficiently complete. It explains what the tool does, key behavioral guarantees, and prerequisites. The presence of an output schema means the description need not enumerate return fields, and it does not.
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 the single parameter project_id with a clear description (returned by house_specify for an authenticated call), achieving 100% schema description coverage. The tool description itself does not add additional parameter semantics beyond what the schema already states, 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 purpose with a specific verb and resource: 'List every stored version of a durable house project you own'. It specifies ordering ('oldest first') and the exact data returned (content hash, build/schema/archive revision, creation time). This distinguishes it from sibling tools like project_get and project_list, which handle project-level operations rather than version history.
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 on when to use the tool: it lists a project's versions and explicitly notes ownership and API key requirements. It also gives a concrete cross-tool usage hint by mentioning that earlier versions remain renderable via palette_pdf's project_version input, which helps an agent understand the relevance of version history. However, it does not explicitly name alternatives or exclusions (e.g., 'use project_get for current state'), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_conceptualSearch Colours by Concept or 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, the description reveals that vague queries never come back empty and that result_path distinguishes 'direct', 'broadened', and 'redirected' hits. It discloses fallback strategies such as relaxing match threshold, dropping archive restriction, or switching to full-corpus semantic search. This is rich behavioral context with no annotation 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 front-loaded with purpose in the first two sentences and uses examples efficiently to illustrate abstract queries. Every sentence earns its place, including the behavioral fallback note about result_path. Length is justified by the need to convey nuanced 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?
Given the simple 3-parameter schema, the presence of an output schema, and the readOnlyHint, the description is sufficiently complete. It covers purpose, usage context, and behavioral fallback logic without needing to explain return values. An agent can reliably predict tool behavior for both concrete and abstract queries.
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 enriches the query parameter with realistic examples and clarifies that the archive parameter can be dropped during a redirected fallback. It does not add much about n_results, but the schema already describes that parameter adequately.
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 the tool accepts cultural, historical, or material colour questions and returns named archive colours with provenance and cultural context. Concrete examples like 'grief' and 'toxic Victorian pigments' differentiate it from sibling tools such as query_hex or archive_search. This is a specific verb+resource with strong sibling differentiation.
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 opening 'Ask a cultural, historical, or material colour question' plus numerous query examples provide clear context for when to use this tool. It does not explicitly name alternatives or exclusions, so it falls short of a perfect score, but the examples and fallback description make the intended usage obvious.
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?
Annotations declare readOnlyHint=true, which the description reinforces as a query operation. The description adds value by revealing the use of CIEDE2000 perceptual distance, but does not detail edge cases (e.g., no close match) or auth requirements.
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, well-structured sentence that leads with the action and includes the key algorithm. No wasted words; every element 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 query tool with an output schema present, the description covers the core purpose and method. It could briefly mention optional parameters (archive, n_results) but schema already handles that. Overall sufficient.
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% for all three parameters, so the description's lack of parameter-specific details is acceptable. The baseline of 3 applies as the description adds no extra semantic 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?
Description clearly states verb 'Find', resource 'named archive colours', and method 'CIEDE2000 perceptual distance'. It distinguishes itself from sibling tools like colour_compare or colour_namer by specifying hex input and archive 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?
Description implies usage when a hex value needs matching to named archives, but lacks explicit 'when to use' or 'alternatives' guidance. With many sibling colour tools, providing clear use cases would improve decision-making.
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?
Despite having only readOnlyHint=true annotation, the description reveals behavioral traits: it runs multiple analyses, auto-rejects stubs, generates several output components, and uses Claude. It adds context about the single-call nature 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?
Four dense sentences, front-loaded with the main purpose, followed by capabilities, replacement note, and input/output. No fluff, 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?
Given the 13-parameter schema with full descriptions and an output schema, the description's summary of inputs/outputs and its explicit replacement guidance make it complete. It covers the tool's role and helps avoid unnecessary multi-tool calls.
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 the default tone (forensic) and a high-level input list (title, audience, themes, archives, period, tone), which provides a convenient summary beyond the schema's individual 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 'Single-call forensic colour brief generator' and enumerates specific capabilities (coverage gap analysis, anachronism checks, claim role scoring, etc.), clearly distinguishing it from sibling tools like coverage_gap and archive_report_brief by stating it replaces chaining them separately.
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 states 'This replaces chaining coverage_gap + archive_report_brief + anachronism_guard + resonance_index + evidence_gap separately,' which tells the agent when to use this tool instead of multiple alternatives. It also lists input fields and tone options for context.
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?
Annotations declare readOnlyHint: true, so the tool is read-only. The description adds behavioral context: it provides a verdict, suggests archive colors, and uses cultural combinations. It does not mention any destructive actions or side effects, which is consistent with the annotation. 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 moderately concise, with two main sentences plus examples. It is front-loaded with a relatable question. While it conveys essential information, it could be slightly streamlined without losing clarity.
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 (not shown but indicated by context signals), the description appropriately focuses on input and tool behavior. It covers the core functionality, input format, and output nature. No major gaps are evident for a styling advice 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%, providing baseline descriptions. The description adds value by explaining the `items` array structure with examples and clarifying the purpose of `ask` and `occasion` parameters. This enriches 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 clearly states the tool's purpose: to answer color matching questions for outfit items using hex values and labels. It provides concrete examples and specifies the output includes verdict, archive color names, and historical context. This distinguishes it from sibling tools like colour_combination or palette_analyse, which focus on generic color harmony or palette generation, not outfit-specific styling.
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 includes example queries and explains what the tool returns (verdict, clashing, missing, suggestions). It implies usage for outfit styling questions. However, it does not explicitly state when not to use it or mention alternative tools, which would enhance guidance.
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 declare readOnlyHint=true, which covers the safety profile. The description adds value by listing the exact return fields (build_sha, schema_version, schema_hash, archive_revision, tool_count, generated_at, server_environment), giving the agent a concrete sense of what the response contains and how to interpret schema_hash mismatches.
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 sentence plus a use-case example. Every clause earns its place: the field enumeration establishes what the call returns, and the conditional scenario explains deployment troubleshooting. 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?
This is a zero-parameter diagnostic tool with a rich output schema and readOnly annotation. The description fully covers what it returns, when to use it, and how to interpret results. Nothing meaningful is missing for a tool of this 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?
The tool has zero parameters, so there is nothing for the description to document about parameter semantics. The schema coverage is 100% trivially (empty properties). The description appropriately focuses on the diagnostic value rather than parameters; the 0-param baseline of 4 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 a specific verb+resource ('zero-argument diagnostic call returns exactly what build is live right now') and enumerates the exact returned fields. It clearly distinguishes itself as a diagnostic/version-check tool, unlike the sibling tools which are all domain-specific functions.
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 an explicit when-to-use scenario: 'if a tool you expect (like house_specify) seems to be missing, call this first'. It also gives the interpretative guidance (schema_hash comparison, stale cache vs real gap) that tells the agent exactly how to act on the result. No alternatives are named explicitly but the diagnostic-use context is unambiguous.
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 adds meaningful behavioral context beyond this: it states the tool is deterministic, not an LLM call, always instant, and never consumes archive or LLM credit. This is exactly the kind of operational transparency that helps an agent choose it confidently. It doesn't enumerate return semantics, but the 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 dense but purposefully so—every sentence carries routing-relevant information. It front-loads the core purpose and key traits (deterministic, instant, no cost) before usage examples. Slightly long but each clause earns its place; no filler 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?
With one parameter, full schema coverage, readOnlyHint annotation, and an output schema present, the description is complete. It covers what the tool does, when to use it, what inputs look like, and its operational characteristics. Nothing essential is left unexplained for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single 'goal' parameter described as 'Plain-English description of what you're trying to do.' The description substantially enhances this by giving concrete example phrases ('I have a brand colour and want to check it against competitors') that illustrate the acceptable free-text format. Given only one well-covered param, this is strong added value.
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+resource ('deterministic tool-routing lookup') with concrete examples of input goals and its output behavior. It explicitly distinguishes its role among siblings by naming similar tools it helps disambiguate (palette_specify vs interior_specify vs house_specify).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Use this before guessing between similarly-named tools' with concrete examples. It provides example input formats and describes the routing behavior (first tool, next tool, which NOT to start with), making the usage context unmistakable.
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?
Description fully discloses behavior: returns hex, contrast ratio, WCAG grade, usage notes, and CSS custom properties; supports light/dark mode. No hidden effects, consistent with readOnlyHint 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?
Packs all necessary info in a few sentences, but the first sentence is long. Efficient overall, 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?
Covers purpose, usage, parameters, output details comprehensively. Output schema exists, so return value explanation is sufficient.
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 descriptions are clear. Description adds little beyond schema, mainly restating parameter purposes. 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?
Clearly describes generating a WCAG-compliant UI state palette from a brand hex, listing all states and return values. Distinct from sibling palette tools by focusing on interactive UI states.
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 a specific use case ('Use before building any UI component system'), but does not explicitly mention when not to use or provide alternatives among siblings.
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.111111MIT

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.1901MIT