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.4/5 across 88 of 88 tools scored. Lowest: 3.4/5.
Several tool clusters perform near-identical functions: extract_image_colours, image_palette and palette_extract all extract dominant colours from images; colour_passport, colour_dna, colour_metrics and colour_cultural_risk all profile a single hex; and at least six compound 'complete package' tools (agent_brief, archive_report_brief, brand_report, design_session, image_brief, session_brief) overlap heavily in scope. The descriptions try to differentiate -- some even point to tool_guide for routing -- but the volume and similarity of clusters makes misselection likely.
The vast majority of tools follow a clear domain_prefix_suffix pattern (colour_, palette_, archive_, brand_, accessibility_, project_) and within families naming is very disciplined (brand_guideline_specify/select/pdf/claims/status, project_get/list/versions/delete). However, a handful of outliers invert the order (extract_image_colours, ingest_image, render_colour_result, query_hex) and some descriptions reference tools that don't exist as endpoints (palette_from_concept, match_paint_system, get_colour_metrics).
88 tools is far beyond any reasonable single-server surface, even for a platform spanning archives, branding, interiors and accessibility. The sheer number forces agents into a massive decision space, and many tools exist purely as convenience wrappers that replace chains of 3-6 other tools, suggesting aggressive consolidation was needed.
The surface covers an unusually broad domain -- archive search, colour science, palettes, branding, interiors, accessibility, image extraction, projects, and PDF/Word/Excel exports -- with very few dead ends for end-user workflows. Minor gaps: several compound-tool descriptions reference tools that no longer exist, and valid archive names are only discoverable via error messages rather than a dedicated listing endpoint.
Available Tools
91 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 | |
| offset | No | Skip this many ranked matches before returning results -- collection paging. The response's next_offset gives the value to pass here for the next page; it is absent on the last page. total_found always reports the full collection size. | |
| 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 | Results per page (default 10, max 50 per call). This is a PAGE size, not a collection limit -- for a large collection (tens or hundreds of records) page with offset until next_offset disappears, and never tell the user the product caps out at one page. | |
| 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 runtime behavior: it never returns a bare empty result, explains the result_path values ('direct', 'broadened', 'redirected'), and reveals that entity_mode='exact' excludes off-genus rows and reports that exclusion count. This goes well beyond what annotations could 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 longer than average but every sentence adds either scope clarification, a concrete example, an edge-case guarantee, or a parameter-use caveat. It front-loads the core purpose before diving into behavioral details, though it could be lightly restructured into shorter logical blocks for even easier scanning.
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 9-parameter search tool, the description covers the key decision points: result_path semantics, pagination with offset, entity_mode disambiguation, snippet vs full notes, and archive filtering. Since an output schema exists, the agent has the remaining return-shape details, making this definition complete 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%, and the schema already documents query, limit, offset, archive, year filters, n_results, entity_mode, and include_full with concrete examples. The description repeats some of this and adds extra illustrative match counts and behavior around paging, but the schema already carries the heavy lifting, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Full-text keyword search across all archive colour names and notes') and enumerates the axes of search ('name fragment, material, cultural reference, pigment type, or historical period'). It also distinguishes itself from conceptual embedding search by stating it performs exact keyword matching, which is relevant given sibling tools like query_conceptual.
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 says it complements conceptual embedding search, implying when exact keyword matching is preferred, and it explains when to switch entity_mode from 'text' to 'exact' for botanical identity. It does not explicitly name the sibling tools or state when NOT to use archive_search, but the context is strong enough for an agent to choose it appropriately.
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
Fast, fully deterministic brand colour audit. Accepts a palette array plus market, use_case, medium and brand_category. COMPUTED SYNCHRONOUSLY, no model call of any kind: colour roles with archive names, the full WCAG accessibility matrix, cultural risk per colour, CSS variables, Tailwind config, design tokens and production notes. NOT COMPUTED HERE: palette interpretation -- the verdict, its score and the written narrative copy. Those require an LLM call and used to be made inside this tool without saying so, which put a normal five-colour audit at 43-45s. The palette_verdict and verdict_copy keys are still returned, carrying interpretation_status='not_computed' plus a ready-to-send palette_verdict.continuation.arguments -- forward those verbatim to the palette_verdict tool to get the interpretation. Replaces chaining accessibility_matrix + cultural_risk_assessment; palette_verdict is now an explicit, optional second call rather than a hidden one. FOR A LIVE-SITE BRAND AUDIT ('audit this website'): inspect representative rendered pages FIRST (homepage, about, one deep page) and pass what you observed as site_evidence -- a CSS scrape alone is not an audit of what a visitor sees, and the response's audit_evidence.audit_status will say PARTIAL until real multi-page rendered evidence is supplied. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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 |
| site_evidence | No | Evidence for a LIVE-SITE audit, supplied by the host (Colour Memory does not browse). {pages: [{url, role: 'homepage'|'about'|'work'|'services'|'product'|..., screenshot: bool, tokens: bool, observations: [{hex, evidence_type: 'canonical_token'|'rendered_observation'|'source_verified_external'|'model_interpretation', prominence?: 'dominant'|'primary'|...}]}], competitors: [{name, colours: [hex], colour_provenance: 'verified_brand_guideline'|'verified_current_site'|'verified_identity_source'|'estimated'|'unverified', source?}]}. A FULL live-site audit needs a homepage, an about/company page and one meaningful deep page (work/approach/services/product/case study), with rendered evidence from at least two of them. Supply less and the response's audit_evidence.audit_status comes back PARTIAL or INSUFFICIENT with the specific gaps named -- it will not present as a completed multi-page audit. A competitor colour that is not verified is kept as a QUALITATIVE comparison and never enters a CIEDE2000 or distinctiveness number; do not invent a hex to fill the gap. | |
| 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?
The description discloses that the tool is deterministic and synchronous with no model call, and transparently reveals that verdict generation was previously hidden inside the tool and is now delegated. It also states that audit_status will be PARTIAL or INSUFFICIENT without proper rendered evidence. The readOnlyHint annotation is consistent; 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 long and heavily capitalized, but every section carries decision-relevant information: deterministic compute, hidden model call removal, live-site evidence requirements, and follow-up tool routing. It's dense rather than bloated, though a more structured layout 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?
The description covers input semantics, return-key behavior (palette_verdict, verdict_copy, audit_evidence.audit_status), downloadable artifacts, and required follow-up calls (palette_verdict, palette_finalize). Given an output schema exists, it doesn't need to detail return structure, but it provides enough for an agent to call and interpret results 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 the baseline is met by the schema. The description goes beyond the schema for site_evidence by explaining what counts as a full live-site audit (homepage, about, deep page; rendered evidence from at least two) and that CSS scrapes are insufficient. Other parameters (market, medium, use_case) are merely listed in the description without adding beyond their 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 opens with 'Fast, fully deterministic brand colour audit,' naming a specific verb and resource. It differentiates itself from siblings by stating what it replaces (chaining accessibility_matrix + cultural_risk_assessment) and what it does not compute (palette_verdict). This makes the tool distinguishable from palette_audit and related colour tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use palette_verdict as an optional second call for interpretation, and to call palette_finalize when choosing a final palette from the evidence. For live-site audits, it instructs to inspect rendered pages first and pass site_evidence, with a warning that a CSS scrape alone is insufficient. This is explicit when-to-use / when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brand_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 | |
| competitor_provenance | No | Where each competitor colour came from, positionally aligned to competitor_hexes. Only a verified value moves the distinctiveness score; an estimated or unverified one is kept as a QUALITATIVE comparison instead. Never invent a hex to fill a gap -- omit the competitor's colours and name them qualitatively. Omit this array entirely and the numbers are computed as before, with every competitor labelled 'unverified'. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true, the safety profile is already covered by annotations. The description goes beyond this by disclosing the computational approach (CIEDE2000 distance) and the full output set including verdict and recommendation. It does not mention rate limits or failure modes, but those are not essential for a read-only analytic tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: it opens with the core question, follows with a terse input/output summary, and closes with the intended use case and value. Every sentence earns its place, with no repetition 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?
The description gives enough high-level context for an agent to understand when and why to call the tool, and the schema plus output schema cover the remaining details. The only minor gap is that the 'Input:' list could imply all listed fields are required, when the schema only requires brand_hex, and the provenance parameter's subtle behavior is left entirely to 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 schema already documents every parameter clearly, including complex semantics like competitor_provenance. The description only lists parameter names ('brand hex, brand name, competitor hexes and names, market, region') without adding format details or constraints, so it adds little 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: assessing whether a brand can own a colour against competitors in a market, and lists concrete outputs such as an ownership verdict and distinctiveness score. This distinguishes it from generic colour tools by emphasising ownership/collision, but it does not explicitly name or contrast sibling tools, so it falls short of full 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 description gives explicit situational guidance: 'Use before committing to a brand colour in a competitive market' and says it replaces manual colour distance checks and competitor palette analysis. It does not state when not to use it or name alternative tools, so it lacks the full when/when-not/alternatives coverage.
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 | No | The brand_ref returned by brand_guideline_specify. Supply this OR project_id. | |
| project_id | No | The project_id returned by brand_guideline_specify. Use this after a refinement (a continued project has a project_id but no new brand_ref). Supply this OR brand_ref. | |
| 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 all three annotation hints false, the description carries the behavioral disclosure burden. It adds meaningful context: the operation produces a revised brand_ref with the same reference but a new underlying version, exactly like a versioned house_ref, and it can lock and suppress items. It also explicitly scopes out accounts and reviewer states, which helps the agent understand current limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense without fluff, and front-loads the core behavior before adding limitation context. Each clause earns its place: what is recorded, what is produced, and what is not yet included.
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 100% schema coverage, the presence of an output schema, and the annotations, the description completes the picture by explaining the versioning behavior, the manual nature, and the exclusion of approval states. An agent has enough context to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters thoroughly. The description adds framing around the decision-recording intent, but does not materially expand on parameter semantics beyond what the schema provides. 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 specifies a clear verb ('Records') and resource ('brand_guideline_specify candidate'), and details the three concrete outcomes: chosen candidate, locked colours, and suppressed claims. It also distinguishes the tool's output from the input-producing sibling, brand_guideline_specify, by explaining this records the decision rather than generating candidates.
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 situates the tool as a manual decision-recording step following brand_guideline_specify, and explicitly excludes the full approval workflow ('No accounts or reviewer states yet'). It does not name a specific alternative tool for approvals or other related workflows, so it stops short of a fully explicit when-to-use versus alternatives statement.
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. CREATE ONCE, THEN VERSION: the response returns project_id and current_version. When you refine or update a Brand Standard you already created in this conversation, pass that project_id back as continue_project_id rather than creating a second project. 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 | ||
| continue_project_id | No | The project_id returned by an earlier call, when this is a REFINEMENT of that same Brand Standard. Reuse it and the work joins that project as a new version; omit it and a second project is created. 'Make it warmer', 'change the secondary', 'render the PDF again' and 'show another option' are all continuations. Start a new project only when the customer asks for a genuinely separate brand. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation Contradiction: the description explicitly describes mutating state ('CREATE ONCE, THEN VERSION', 'pass that project_id back... rather than creating a second project', 'a second project is created') while annotations declare readOnlyHint=true. The description does add useful async/timing context, but the direct contradiction with the read-only hint forces a score of 1 per the rubric.
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 each segment earns its place: core purpose, downstream routing to claims/select/status, versioning rule, and timing/polling behavior. It is front-loaded with the main purpose and uses structural cues like 'CREATE ONCE, THEN VERSION' and 'TIMING' to make the length navigable. It loses one point for the dense opening sentence.
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 8 parameters, nested objects, an output schema, and asynchronous behavior, the description is nearly complete: it covers the deliverable, follow-up tools, project versioning, both fast and slow response shapes, and polling instructions. Minor omissions such as error conditions and permissions are not critical given the output schema and surrounding 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?
With schema description coverage at 63%, the input schema documents most parameters in detail, including constraints, preferences, palette_input, identity_assets, and continue_project_id. The tool description adds useful continuation semantics for continue_project_id and ties the behavior to the brand brief, but it does not meaningfully explain the remaining 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 opening sentence states a specific verb ('Generates'), resource ('brand colour standard'), and the concrete deliverable: three archive-grounded candidate palettes scored for distinctiveness, accessibility, and claim labels. It differentiates from siblings by explicitly naming brand_guideline_claims, brand_guideline_select, and brand_guideline_status.
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 workflow guidance: follow with brand_guideline_select, resolve claim_ids with brand_guideline_claims, and poll brand_guideline_status if a processing response is returned. It also explains create-once/version semantics via continue_project_id. It stops short of a 5 because it does not provide explicit 'use X instead' exclusions against the many sibling palette/brand tools.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Target market e.g. global, UK, Japan | global |
| medium | No | digital | print | both | digital |
| palette | Yes | Hex values | |
| use_case | No | Use case e.g. brand identity, packaging | brand identity |
| brand_category | No | Optional e.g. developer tool, luxury, food |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses determinism, zero LLM cost, that the result carries downloadable PNG/PDF/ASE/JSON/CSS artifacts that should be shown to the customer, and a critical anti-pattern warning: 'Never present the archive anchors a colour was derived from as the colours you are recommending.' This is exactly the kind of behavioral gotcha disclosure that prevents misuse, and it is consistent with readOnlyHint being true.
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 with zero filler: purpose, output inventory, determinism/cost, artifact-handling instruction, a behavioral warning, and a routing instruction. Every clause earns its place, and the most decision-relevant facts (breadth, determinism, cost) are front-loaded before the caveats.
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 five parameters, one required, plus an output schema, the description covers the full surface an agent needs: what is returned, which artifacts to surface to the customer, the evidence-vs-recommendation distinction, and the follow-up call to palette_finalize. The only omission — how parameters influence the output — is minor given 100% schema coverage and the existing 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 description coverage is 100%, so the schema already documents all five parameters and their defaults. The description adds no parameter-level meaning beyond the schema — it explains outputs and workflow but not how market, medium, use_case, or brand_category shape the result. This is the baseline 3 given full 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 opening phrase 'Complete brand colour system in one call' names a specific verb and deliverable, and the detailed output list (colour roles, light/dark role maps, typography guidance, usage rules, design tokens, citation cards) makes it unmistakable what this tool produces. The 'in one call' framing and the breadth of outputs clearly distinguish it from narrower siblings like palette_generate, colour_strategy, or brand_guideline_pdf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to invoke this tool (when the full brand system is wanted 'in one call') and explicitly routes a downstream scenario: 'If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours.' However, it does not state when-not-to-use it or name simpler alternatives for partial needs, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
colour_cardGet Colour Details by NameARead-onlyInspect
Look up a named colour and return its hex, archive, provenance, and cultural notes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Colour name e.g. 'Prussian Blue' or 'Ottoman Carbon Ink' | |
| slug | No | Stable colour slug from archive_search e.g. 'keats:keats-s-lung' -- preferred over name for reliable retrieval |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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?
Beyond the readOnlyHint annotation, the description discloses important behavioral details: the returned result already carries rendered palette downloads (PNG, PDF, ASE, JSON, CSS) and should be shown to the customer. It also warns specifically against presenting archive-derived anchors as recommended colours and mandates palette_finalize for any agent-chosen palette. These are valuable behaviors not inferable from 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?
The description is front-loaded with the core purpose, immediately explains the sibling distinction, and then gives terse but necessary behavioral instructions. Every sentence earns its place: the result-display note, the warning about archive anchors, and the palette_finalize handoff all contribute to correct agent behavior. Nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema and read-only annotation, the description is remarkably complete. It covers selection criteria, expected return artifacts, customer-facing display steps, and a critical correctness caveat about recommended colours. No essential guidance appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single required 'hex' parameter with a concrete example, so the schema already carries the semantic load. The description adds only that it fingerprints a single hex colour, which is consistent but does not materially extend parameter understanding. Baseline 3 is appropriate for full 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 states precisely that this tool produces a compact semantic fingerprint for a single hex colour, and it explicitly distinguishes itself from colour_passport as one component of that broader tool. It further clarifies when to use it, saying to use it only when the user wants the fingerprint format alone. This gives an agent a clear, unambiguous reason to select it over its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit routing guidance: use colour_passport for a general colour profile, and use colour_dna only when the user explicitly requests the fingerprint format alone. It also provides follow-up instruction to call palette_finalize if the agent constructs its own final palette. This fully covers when and when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 HarmoniesARead-onlyInspect
Return complementary, triadic, analogous, and split-complementary harmonies matched to named archive colours. Also available: 'hay_contrast' -- D.R. Hay's (1838) documented contrast pairing between six named hues (yellow/purple, orange/blue, red/green), with Field's proportional power for the pair. Unlike the fixed-angle types, this snaps the input to Hay's nearest named hue rather than rotating it, and returns covered:false with no invented partner when the input sits nearer a tertiary region (olive/citron/russet) than any of the six -- Hay records only an aggregate total for tertiaries, never a specific pair. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex value e.g. '#3A5C8C' | |
| harmony_types | No | Harmony types to include: 'complementary', 'analogous', 'triadic', 'split_complementary', 'tetradic', or 'hay_contrast' (D.R. Hay's 1838 documented contrast pairing, distinct from the geometric types -- see tool description). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already covering the safety profile, the description adds substantial behavioral context: hay_contrast snaps to Hay's nearest named hue, returns covered:false when the input is near a tertiary region, and never invents a partner. It also discloses that the result already contains downloads and instructs the agent not to present archive anchors as recommendations. This goes far beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the core purpose, and every clause carries relevant behavioral or usage information. It is longer than a minimal description, but the complexity of the hay_contrast mode and the downstream finalize instruction warrant the length. Some Hay context repeats what the input schema already says, which keeps it from a perfect 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool, the output schema presence, and the read-only annotation, the description covers everything an agent needs: what the tool returns, when it fails, what to show the customer, what not to present, and when to route to palette_finalize. No critical operational gap remains.
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 goes further by explaining the behavioral semantics of the hay_contrast parameter value: nearest-hue snapping, tertiary handling, and covered:false. It also clarifies how harmony_types values behave differently from one another. It doesn't add much about the hex parameter beyond the schema, but the hay_contrast detail justifies the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Return', names the resource ('colour harmonies'), and enumerates the harmony types, so an agent can tell what the tool does. It also meaningfully distinguishes the hay_contrast mode from the fixed-angle types within the tool. However, it does not explicitly differentiate this tool from similar siblings like colour_relationships or palette_generate, so it stops short of 5.
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 when-to-use guidance: it explains the hay_contrast option, says when the tool returns covered:false, and tells the agent to show the rendered palette assets to the customer. It also provides an explicit conditional for a sibling action: if the agent chooses its own final palette, call palette_finalize once with those exact colours.
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_relationshipsColour RelationshipsARead-onlyInspect
What is this archive record connected to, and why? One-hop lookup over Colour Memory's stored relationship graph -- today populated for PigmentLineage, whose 348 design_combination nodes are Wada's 1933 Dictionary of Color Combinations plates. Returns edges in separate blocks by relationship_class so a caller can never mistake a computed colour distance for something a historical source actually said: SOURCE_ASSERTED (the source itself states the relationship, e.g. 'this colour was assigned to numbered combination 176') versus DETERMINISTIC_STRUCTURAL (a mechanical fact about the source object, e.g. 'printed on this plate'). Every edge carries its own 'does_not_mean' caveat inline -- e.g. membership in the same Wada combination does not assert that any specific pair within it was individually intended as a pairing. Not every record_id has relationships yet; an empty result is a true negative, not an error. Get record_id values from archive_search or colour_card.
| Name | Required | Description | Default |
|---|---|---|---|
| record_id | Yes | Stable record id, e.g. from archive_search or colour_card. | |
| include_computed | No | Include computed (not source-asserted) relationships where available. Default true. | |
| include_unresolved | No | Include same-name candidates across sources -- the cheapest, easiest-to-misread-as-evidence edge in the system. Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| label | No | |
| record_id | No | |
| structural | No | Mechanical facts about the source object (plate layout etc.), kept separate from source_asserted on purpose. |
| source_asserted | No | Edges the source itself states, grouped by predicate. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses significant behavior: results are returned in separate blocks by relationship_class, each edge carries an inline 'does_not_mean' caveat, and empty results are true negatives rather than errors. It even gives a concrete example of a caveat (membership in a Wada combination does not assert individual pairing intent). This goes far beyond the annotation and fully explains what the caller should expect.
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 every sentence carries information needed for correct invocation: purpose, data scope, result structure, caveat handling, and empty-result semantics. The historical Wada detail adds color but is not strictly necessary; still, it serves to explain why the relationship graph is populated. Overall it is well-structured and front-loaded with the core question.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, result format, relationship taxonomy, inline caveats, empty-result meaning, and how to obtain required IDs. Since an output schema exists, the description does not need to enumerate return fields. The one-hop scope is explicit, and the behavioral caveats remove the main risk of misinterpreting results. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters with meaningful descriptions. The tool description adds contextual nuance around 'computed' relationships and 'same-name candidates', but it does not introduce new parameter semantics beyond what the schema already states. Per the baseline rule for full schematic coverage, a 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 concrete question ('What is this archive record connected to, and why?') and names the exact action and resource: a one-hop lookup over Colour Memory's stored relationship graph. It also actively distinguishes its output types (SOURCE_ASSERTED vs DETERMINISTIC_STRUCTURAL) so a caller cannot confuse this with colour-distance computation. The tool is clearly separated from archive_search and colour_card, which are referenced as sources for record_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when this tool is appropriate: when investigating archival connections via a one-hop lookup, with explicit guidance that an empty result is a true negative, not an error. It also tells the caller where to get valid record_id values (archive_search or colour_card). However, it does not explicitly name sibling alternatives (e.g., why_connected) or state when not to use this tool, so the exclusion guidance is only implied.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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?
Beyond the readOnlyHint annotation, the description discloses that the result already includes rendered palette downloads and instructs the agent to show them to the customer. It also warns against presenting archive anchors as recommendations and defines the exact next step if the agent chooses its own final palette, which is valuable 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: the first sentence states the core function, the second highlights value, and the third provides necessary behavioral guardrails. Every sentence contributes something, though the wording could be tightened slightly 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 single-parameter read-only tool with an output schema, the description covers the main return contents, how to present them, and the follow-up action when relevant. It does not describe edge cases or limits, but the combination of schema, annotations, and description is sufficient for correct invocation and 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% for the single parameter, so the schema already fully explains 'name'. The description adds little beyond the schema's own 'Named archive colour e.g. Bourton Honey' example; it reinforces that the value should be an archive colour name but does not introduce new semantic meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('return') and identifies the exact resource: historical variants, lighter/darker versions, archive matches, and cultural siblings for a named archive colour. It also sets this tool apart from nearby tools by emphasizing the 'exploring around a colour' use case and by explicitly naming palette_finalize as the follow-up for a different action.
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 frames when the tool is useful ('Essential for designers exploring around a colour') and gives an explicit routing instruction to palette_finalize if the agent forms its own final palette. It does not exhaustively list when not to use it relative to every sibling, but the context and alternative are concrete enough.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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 discloses important behavioral traits beyond the read-only annotation: it is a compound tool that bundles multiple operations, its result includes downloadable artifacts, and it warns against presenting archive anchors as recommended colours. It even instructs the appropriate follow-up call (palette_finalize) when the agent chooses its own final palette.
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 longer than a typical one-liner, but every section earns its place: compound identification, output list, usage condition, anti-pattern, and post-call instruction. It is front-loaded with the tool's nature and purpose, though it could be tightened slightly by separating operational instructions from descriptive 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's complexity, the presence of a full output schema, and 100% schema coverage, the description is remarkably complete. It tells the agent when to use it, what it returns, what not to do with the results, and how to follow up. The only minor ambiguity about the 'audience' input is already addressed by the parameter 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 and the schema already thoroughly explains each parameter with examples. The description adds high-level guidance like "audience" and "constraints," but does not clarify that "audience" has no corresponding parameter; meaningful but not essential beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with "One-call compound tool" and specifies the exact inputs (concept, medium, audience, constraints) and outputs (palette, cultural narrative, paint matches, WCAG check, illuminant behaviour, image prompt). It also explicitly distinguishes itself from the individual tools it replaces by naming them, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says explicitly "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." This gives both positive and negative conditions and points to alternatives, which is exactly what this dimension asks for.
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.
historical_colour_queryHistorical Colour EvidenceARead-onlyInspect
Ask a question about how historical colour authorities actually reasoned, and get evidence with provenance rather than a summary. Covers seven validated source builds -- Jennings (paint recipes, 1902), Bradley (rotating-disc apparatus, 1895), Vanderpoel (quantified object analyses, 1902), Beaumont (woven colour relationships), Hay (harmonic proportional powers, 1838), Guichard (measured spatial extents, 1880) and Hokusai (subject-conditioned colour application, 1848). Each answer names its source, its locator and what that kind of evidence CANNOT support. Use it for questions like 'how do I paint a leaf', 'what did Bradley's disc proportions measure', 'what's the difference between making a colour and applying it', or to check a claim someone has attributed to one of these authors. Crucially, these sources' numbers are NOT interchangeable: a recipe part, a disc share, an object percentage, a proportional power and a measured extent answer different questions, and the response says so explicitly rather than averaging them.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 'user' (default) returns an evidence-led answer packet with structured values retained. 'evidence' additionally returns the complete underlying records. | |
| query | Yes | Plain-English historical colour question. | |
| sources | No | Optional restriction to named sources. | |
| max_results | No | Upper bound on evidence items (default 12). | |
| high_confidence_only | No | Only high-confidence records. |
Output Schema
| Name | Required | Description |
|---|---|---|
| answer | No | Evidence-led answer: what the evidence supports, one observation that changes the question where the records support one, and the boundary of the claim. |
| evidence | No | |
| do_not_say | No | |
| incomparabilities | No | |
| premise_correction | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses the provenance format, names the exact source builds, and explicitly warns that source numbers are not interchangeable and that the response will say so rather than averaging them. This is rich behavioral context that helps the agent anticipate outputs and limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although the description is long, every sentence earns its place: main purpose, source inventory, provenance and limitation behavior, example queries, and a critical caveat. It is front-loaded with the purpose and well-structured for a domain-specific query tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich output schema and annotations, the description covers all necessary selection and invocation context: what question to ask, which sources are involved, what the response will contain, and what it cannot do. No important aspect is missing for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters, so baseline is 3. The description adds value by enumerating the seven source names and their evidence types, which directly informs the 'sources' parameter and helps shape a good query. It does not comment on mode, max_results, or high_confidence_only, but the schema already describes those.
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 phrase ('Ask a question about how historical colour authorities actually reasoned') and a clear deliverable ('evidence with provenance rather than a summary'). It differentiates itself from the many sibling colour tools by naming seven specific source builds and the exact use cases, such as checking claims attributed to these authors.
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 it for questions like...' examples and explains what the evidence can and cannot support. It does not name alternative tools or give explicit when-not-to-use conditions, but the context is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
house_specifyMulti-Room House Colour Scheme — Provenance-Grouped Where DocumentedARead-onlyInspect
Generate a complete multi-room house colour scheme from a single archive. Where the retrieved evidence supports it, rooms are grouped by documented provenance (same object, same pattern colourway, same source citation, same designer, same period+institution); where it does not, they are grouped by perceptual similarity and the response says so -- grouping_basis reports which, and provenance_credit reports how many delivered colours are individually evidenced versus documented as a GROUP (often zero). Every colour is a real archive record either way. Each room gets a full colour card set (dominant/secondary/joinery/textile/accent roles) with paint matches, LRV, illuminant behaviour, and WCAG data. A documentary grouping states exactly which documented fact ties its colours together (e.g. 'documented on the same Fitzwilliam Museum record for the Artichoke hanging, accession T.1-1979') and its weighted grouping_strength score -- historical claims are templated only from fields the archive record actually states; room/surface assignment is disclosed as editorial, never as historical fact. Orientation (north/south/east/west) is recorded as room context and surfaced in each room's light_context; in the current model it does not alter palette selection. Example: concept='Arts and Crafts movement family house', archive='ArtsAndCrafts', rooms=[{label:'Entrance Hall', room_type:'hallway', orientation:'north'}, {label:'Living Room', room_type:'living', orientation:'south'}]. Use interior_specify instead for a single room without cross-room grouping. The response includes house_ref -- pass that (not the full response) to palette_pdf's house_ref input to render the flagship document; the full response is often 60-100KB+, too large to safely resend as another tool call's input. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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'. Explicitly supplied: a hard admission filter, never relaxed -- too few qualifying records fails closed with a per-grade availability map (ARCHIVE_EVIDENCE_POOL_DEPLETED). Left at the implicit default: if the archive's best relevant records sit below it, the design-admissibility floor is relaxed to the archive's best achievable grade and disclosed in the response's evidence_floor block. Colours always keep their true evidence grade either way -- claims are never upgraded. | 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?
Even though readOnlyHint=true is already annotated, the description discloses substantial non-obvious behavior: grouping_basis and provenance_credit semantics, editorial versus historical claims, orientation being recorded but not altering selection, the large response-size hazard, and the warning not to present archive anchors as the recommended colours. This far exceeds annotation coverage and meaningfully informs invocation and downstream tool usage.
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 the tool is complex and nearly every clause carries decision-relevant guidance: grouping logic, evidence disclosure, output size, sibling routing, and finalization workflow. It is front-loaded with the core purpose and organized into distinct behavioral commitments, though some tightening around repeated warnings would improve concision.
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 9 parameters, an output schema, and multiple downstream integrations, the description covers required inputs, output semantics, cross-tool handoffs, safety caveats about evidence claims, and customer-facing delivery. An agent has everything it needs to invoke this tool correctly and decide what to do with the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter, including orientation's non-influence on selection and minimum_claim_strength's fail-closed behavior. The description adds an example and cross-tool guidance, but it does not need to compensate for missing parameter documentation, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Generate a complete multi-room house colour scheme from a single archive.' It clearly distinguishes itself from interior_specify by explicitly directing single-room use to that sibling tool, so an agent can select this tool with confidence.
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 routing guidance: use interior_specify for a single room without cross-room grouping, pass house_ref to palette_pdf to render the flagship document, and call palette_finalize if the agent chooses a final palette of its own. It also tells the agent to show the customer the rendered downloads rather than resending the large response.
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'. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | Number of colours to extract (3-12, default 6) | |
| model | No | Image model: midjourney | flux | dalle | stable_diffusion (default midjourney) | |
| archive | No | Explicit archive name override e.g. 'MarsColour', 'Japan' | |
| image_url | No | Public URL of the image | |
| image_base64 | No | Base64-encoded image data | |
| product_type | No | Product focus e.g. 'tea towel', 'wallpaper', 'ceramic', 'textile' | |
| grey_card_hex | No | Hex value from a grey/white card for white balance correction | |
| style_context | No | Plain English style e.g. 'English cottage garden', 'Victorian', 'Japanese', 'MarsColour'. Restricts archive matching to coherent cultural set. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true; the description goes well beyond that by disclosing that the result carries rendered palette downloads (PNG, PDF, ASE, JSON, CSS), instructing the agent to show them to the customer, warning never to present archive anchors as recommended colours, and specifying the palette_finalize follow-up. This is rich behavioral context that shapes how the agent presents 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?
Though dense, every sentence earns its place: purpose summary, alternative-tool guidance, style_context guidance, what to display, a consumer-safety warning, and a follow-up action. The most important scoping information is front-loaded, and there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't spell out return values, yet it still mentions the delivered palette downloads and the 'never present anchors' caveat — critical agent behavior for this compound pipeline. All 8 parameters are already documented in the schema, required count is 0, and the description covers usage, exclusions, and follow-up steps. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds a small amount of parameter context — style_context examples and the rationale for coherent archive matching — but it largely repeats what the schema already documents for each of the 8 parameters. No additional semantics for k, model, image_url, or grey_card_hex are provided beyond their 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?
Description opens with a specific compound-endpoint summary — one image in, full creative brief out — and enumerates the concrete outputs: dominant colours, archive matching, scene understanding, style period, product directions, generation prompt, swatch URL. It explicitly contrasts itself with chaining palette_extract + palette_analyse + agent_brief, making differentiation from siblings immediate.
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 exactly when to use it: 'Use instead of chaining palette_extract + palette_analyse + agent_brief separately.' It also directs when style_context should be passed and instructs the agent to call palette_finalize if it later picks its own palette. Both the alternative and the follow-up action are named explicitly, leaving no ambiguity.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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?
Beyond the readOnlyHint annotation, the description discloses privacy-relevant behavior ('The image is never stored — processed in memory only'), the fact that the result carries pre-rendered downloads (PNG, PDF, ASE, JSON, CSS), and a crucial representational constraint ('Never present the archive anchors...'). This significantly exceeds the annotation's coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with purpose, but it contains several distinct clauses (method, outputs, use cases, privacy, warnings, next-step) that make it longer than ideal. Every sentence earns its place, so it earns above-average marks, though it is not as crisp as a two-sentence definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and annotations, the description is complete for invocation: it covers required input, number of colours, output contents, download artifacts, privacy, use contexts, and the follow-up tool call if needed. Nothing essential is missing for an agent to call image_palette correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces that images are base64 encoded and that up to 5 colours are returned, which mirrors schema fields, but it does not add materially new parameter-level semantics beyond what the schema already documents.
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 ('Upload an image... extract its dominant colour palette') and immediately distinguishes the tool by the archive-matching with cultural provenance, K-means++ extraction, and the named outputs (RAL, WCAG, downloads). This makes it clear what image_palette does and how it differs from extraction-only siblings like extract_image_colours or palette_extract.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit target use cases ('Works for product photography, interior photos, artwork, brand assets, and mood boards') and an explicit alternative/next step: if the agent chooses its own final palette, call palette_finalize. It does not state exclusions or when not to use the tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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?
Despite readOnlyHint being true, the description goes well beyond the annotation by disclosing error behavior for invalid archive names, the fact that the result carries PNG/PDF/ASE/JSON/CSS downloads, and the important caveat to never present archive anchors as recommended colours. It also clarifies what happens downstream via palette_finalize.
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 front-loaded with the core purpose and output, then adds routing and safety caveats. The main waste is the marketing-style phrase 'This is the tool that replaces a colour consultation,' which is not operationally useful, but the rest of the content 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 complex tool with seven parameters and an output schema, the description is notably complete: it covers expected output contents, archive failure modes, alternatives, and post-processing steps. Nothing an agent needs to call the tool correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters. The description adds illustrative concept examples and restates the archive-lock behaviour, but it does not meaningfully extend parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Generate a complete interior colour specification from a concept or brief.' It names concrete inputs and outputs, and later distinguishes itself from house_specify by saying house_specify is for multi-room schemes with cross-room provenance grouping.
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 routes to alternatives: 'Use /interior-specification/pdf for a downloadable branded PDF version' and 'Use house_specify instead for a multi-room scheme.' It also gives a follow-up instruction to call palette_finalize if the agent selects its own colours, making the intended workflow unambiguous.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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 goes well beyond the readOnlyHint annotation, disclosing palette-level deduplication, low-confidence alternatives, the rendered palette with downloadable formats, and a critical guardrail: never present archive anchors as recommended colours. This gives the agent a clear behavioral model of the tool's outputs and constraints.
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 every sentence earns its place: core function, output details, workflow placement, download handling, guardrails, and finalization handoff. It is front-loaded with the primary purpose and structured so the agent can quickly extract the key 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?
The description fully equips the agent to call the tool correctly: it explains the input provenance, output structure, deduplication behavior, downloadable artifacts, and post-call actions. Even without reading the output schema, an agent would know what to expect and how to use the result in the customer-facing workflow.
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. The description adds context for 'n' by mentioning alternatives when confidence is low, but it does not add significant meaning beyond the schema's own descriptions. This is the expected baseline when the schema fully covers parameters.
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 ('Analyse') and resource ('Colour Memory archive'), and specifies the exact output: nearest named archive entry with cultural name, source, claim_strength, do_not_say guardrails, and alternatives. This clearly distinguishes it from siblings like archive_search or palette_compare by focusing on analysis and recommendation evidence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use the tool: 'Use after extracting colours from a photo or generating a palette.' It also gives a clear workflow boundary by telling the agent to call palette_finalize if it later chooses a final palette. It does not explicitly name sibling alternatives to exclude, but the contextual instructions are strong.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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 only provide readOnlyHint=true. The description adds rich behavioral context: deterministic operation, no LLM cost, the result carries rendered palette and downloads, and critical presentation caveats about archive anchors. 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?
Every sentence earns its place: the core function is front-loaded, followed by output details, usage trigger, behavioral caveat, and follow-up instruction. Despite length, it is dense and free of fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what the tool does, when to use it, what the output contains, how to present results, and the next step to invoke. Combined with fully documented parameters and an output schema, nothing essential is missing 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 baseline 3 applies. The description does not add parameter-specific meaning beyond the schema, but it does provide overarching context about what the audit evaluates, which is mildly helpful.
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?
States a specific verb and resource: 'Full palette quality audit.' It enumerates concrete scoring dimensions (accessibility, cultural risk, tonal balance, colour diversity, archive naming strength) and outputs (score 0-100, grade, prioritised fix list), making its purpose and scope distinct from sibling palette tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Enterprise quality gate -- use before shipping any palette,' giving a clear trigger condition. It also tells the agent what not to do ('Never present the archive anchors...') and the follow-up action ('call palette_finalize once...') when picking a custom palette.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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 only declare readOnlyHint=true. The description adds substantial behavioral context beyond that: the result already carries rendered palette downloads (PNG, PDF, ASE, JSON, CSS) and should be shown to the customer. It also warns never to present archive anchors as recommended colours and specifies the downstream palette_finalize call when needed. This meaningfully discloses output behavior and usage constraints.
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 and outputs, then adds high-value operational guidance. Each sentence earns its place: the finalization instruction and the warning about archive anchors are important for correct agent behavior and are not filler. It is dense but not bloated.
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, return-value details are not mandatory, but the description still covers them and adds important workflow context (show downloads to customer, avoid presenting derived anchor colours as recommendations, call palette_finalize for own selected palette). This is complete for correct invocation and downstream behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description references the 'stated use case' and two palettes but does not add detail beyond the schema for markets or input formats. It does not need to compensate because the schema already documents every 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 starts with a specific verb plus resource: 'Deep perceptual, cultural, and commercial comparison between two palettes.' It enumerates concrete outputs (timelessness scores, commercial strength, cultural depth, emotional difference, winner verdict), which clearly distinguishes it from sibling analyse/verdict/generate tools. The title is also reinforced rather than merely restated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the core use case: comparing two palettes for a stated use case. It provides an explicit alternative branch: if the agent chooses a final palette of its own from the evidence, it should call palette_finalize with those exact colours. It does not explicitly exclude colour_compare or palette_verdict, but the routing to palette_finalize gives clear contextual guidance.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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?
Beyond the readOnlyHint annotation, the description discloses important behaviors: every colour is sourced from the archive with documented history, the result already contains rendered previews and multiple download formats, and it warns never to present derivation anchors as recommended colours. This gives the agent real operational knowledge that annotations alone would 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 front-loaded with the core purpose and uses compact, useful examples. Each sentence earns its place: provenance, download payload, display directive, and the finalize workflow. It is slightly dense but not padded.
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, readOnlyHint, and 100% parameter coverage, the description adds what is most needed: domain context, output deliverable details, customer-facing display instructions, and a handoff rule to palette_finalize. The only flaw is the internal count mismatch, but overall the agent has enough 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 coverage is 100%, so a baseline of 3 would normally apply. However, the description says 'Returns 4-6 coordinated archive colours' while the schema allows n_colours up to 8 with a default of 5. This is misleading parameter-related information that could cause the agent to under-request or misunderstand output size, so it scores below 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 a specific verb and resource: 'Generate a historically grounded colour palette from a cultural concept or theme.' It lists concrete examples (e.g., 'Victorian mourning', 'Ottoman court') and names the exact output content, making the tool's purpose unmistakable. It even distinguishes the continuation path to palette_finalize, which differentiates it from sibling workflow 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 context for when to use the tool: when a cultural concept or theme is supplied, it generates archive-grounded colours. It also gives an explicit workflow instruction: if the agent later chooses its own final palette, call palette_finalize once. It does not, however, contrast itself with close siblings like palette_generate or palette_heritage, so it stops short of full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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?
Annotations only say readOnlyHint, but the description discloses optional invocation of palette_analyse, the delivery format (PNG, PDF, ASE, JSON, CSS), and the important semantic warning not to present archive anchors as recommendations. It also states the finalize-if-own-choice behavior. No contradiction with readOnlyHint.
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 carries operational value: input, output, alternative selection, result display, and post-processing. It is front-loaded with the core extraction purpose. This density and structure justify a top score.
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 input modes, return format, optional chaining to palette_analyse, display expectations, and the required finalization step if the agent forms its own palette. The output schema and 100% parameter documentation cover the remaining details. An agent has what it needs to call 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?
All 8 parameters are already documented in the schema (100% coverage), so the baseline 3 applies. The description mainly repeats URL/base64 acceptance and adds algorithm context (k-means++), but does not add significant parameter-specific semantics beyond the schema. Thus no higher than 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 a specific verb and resource: 'Extract dominant colours from an image using k-means++ clustering' and explains the output (hex values with proportional weights sorted by luminance). It explicitly differentiates itself from image_palette by stating when this tool is preferred. This is enough to distinguish it from siblings such as palette_analyse and palette_swatch.
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 'Use this instead of image_palette when...' condition tied to palette_analyse/palette_swatch, and gives clear downstream instructions (call palette_finalize after choosing a final palette). It covers when the tool's output should be shown to the customer. This is more than most tool descriptions offer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
palette_finalizeFinalise a chosen paletteARead-onlyInspect
Package a palette YOU HAVE ALREADY CHOSEN into a professional, visible, downloadable deliverable. Call this ONCE, after you have decided the final colours for the customer -- it verifies and packages your decision and returns the palette image plus PNG, SVG, PDF, ASE, JSON and CSS. It does not search, select, replace or improve anything: the colours you send are the colours that come back, in your order. Send every final colour with its name, and mark a colour source-backed only if it really is a Colour Memory archive record -- anything unverified is presented as your recommendation, which is the honest description of it.
| Name | Required | Description | Default |
|---|---|---|---|
| brief | No | The customer's request, in their words. | |
| notes | No | Short usage guidance, in your words. | |
| title | No | What you are calling this palette. | |
| colours | Yes | The final palette, in the order you want it shown. | |
| source_anchors | No | Archive records that informed the palette but are not in it. Give the record's name so it can be verified. |
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 contextual detail: it verifies and packages the decision, returns multiple formats, and clarifies that colours are returned unchanged and in the given order. It also explains the honest handling of the status field. This goes beyond the annotation without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single block but well organised: it leads with the core purpose, then timing, then constraints, then parameter guidance. Every sentence contributes value; no filler. It is slightly long but appropriately so for a tool with nuanced usage rules.
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 rich annotations, the description covers the key decision context: when to call, what to include, and how to handle sources. It doesn't detail the return structure, but the output schema covers that. For a packaging/finalisation tool, the description 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 coverage is 100%, so the baseline is 3. The description adds semantic nuance: it instructs to send every final colour with its name (even though name isn't required) and clarifies the status field handling. This provides meaning beyond the raw schema definitions.
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 verb ('Package') and resource (a pre-chosen palette), and explicitly distinguishes it from searching or selecting palettes. It says 'Call this ONCE, after you have decided the final colours' and enumerates what it does not do, making the purpose unmistakable even among the many palette_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit timing ('Call this ONCE, after you have decided the final colours'), exclusions ('does not search, select, replace or improve anything'), and behavioural guidance for marking source-backed colours. The user knows exactly when to invoke it and what to prepare.
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 12 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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Total CURATED palette size 2-12 (default 5). This is the designed-palette ceiling, not a product limit on how many colours exist: for a large colour COLLECTION, page archive_search instead. | |
| slots | Yes | List of palette slots. Each has index (0-11), 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?
Beyond the readOnlyHint annotation, the description discloses key behavioral traits: empty slots are filled by CIEDE2000 matching, interpolation is anchored by locked colours, the optional archive filter scopes the fill pool, and every filled slot returns full citation data. It also states the generated result already includes PNG, PDF, ASE, JSON, and CSS downloads.Set a guardrail about not presenting archive anchors as recommendations. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded: core behavior first, then optional filtering, then return value, then a concrete example, then usage guardrails. Every sentence adds decision-relevant value; nothing is filler or restatement of the tool name.
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 annotations, full schema coverage, and presence of an output schema, the description is complete enough for correct selection and invocation. An agent knows what inputs mean, what filtering is available, what results to expect, and how to behave with downstream tools like palette_finalize.
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 useful semantic context beyond the schema: the lock-and-fill model, the 12-slot ceiling, the Oxfordshire example, and the meaning of the archive filter. It does not deeply elaborate the size parameter, but the schema already handles that clearly.
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 names a precise operation: lock some palette slots with hex values, fill empty slots with nearest CIEDE2000 archive matches interpolated from locked anchors. It also names the output (citted palette plus render/download artifacts), clearly distinguishing this from siblings like palette_finalize, palette_extract, and 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?
It explicitly tells the agent when to use archive_search instead (large colour collection) and when to call palette_finalize (if choosing a final palette of its own). It also gives a strong when-not-to-do rule: never present derived archive anchors as recommended colours. This is explicit routing and exclusion, not just implied 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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | linear: straight Lab lerp (may have neutral midpoint). chroma_preserved: LCh short-arc, saturation maintained. | chroma_preserved |
| steps | No | Total stops including anchors (default 7, max 20) | |
| anchors | Yes | 2-5 hex values (#RRGGBB) or exact archive colour names | |
| archive | No | Restrict snapping to this archive name e.g. Victorian | |
| output_format | No | stops: array of colour objects. css: linear-gradient string. svg: swatch bar. | stops |
| snap_to_archive | No | Snap each stop to nearest archive colour (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint=true, and the description goes beyond that by detailing CIEDE2000 snapping, anchor-stop preservation, interpolation modes, output formats, and the fact that rendered downloads accompany the result. It also adds an important customer-facing caveat about not presenting source anchors as recommendations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense but well-structured: core operation, algorithm, path semantics, return types, use cases, and downstream workflow. Every sentence earns its place and the main action 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?
For a tool with six parameters, two enums, and an output schema, the description covers operation, algorithm, output types, use cases, attached downloads, and post-call workflow. An agent has everything needed to invoke the tool correctly and act on the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaningful semantic detail: the 2-5 anchor cardinality, the perceptual difference between linear and chroma_preserved paths, and what each output_format produces. These details are not fully captured by 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 it 'Generate[s] a perceptually smooth gradient between 2-5 archive anchor colours' with specific interpolation and snapping behavior. This makes the verb, resource, and scope explicit, and uniquely distinguishes it from sibling palette tools even without naming them.
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 explicit use cases ('design briefs, colour journey visualisations, and gradient systems') and prescribes the follow-up action: show rendered downloads and call palette_finalize if choosing an independent palette. It does not name alternatives or state when-not-to-use, 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.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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?
Beyond the readOnlyHint annotation, the description discloses important behavioral traits: every addition must have a named historical origin, the result already includes renders and downloadable formats, these should be shown to the customer, and archive anchors must not be passed off as recommendations. This is substantial value added on top of 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 long but every sentence earns its place: purpose, constituent outputs, presentation requirements, a critical exclusion, and follow-up invocation. It is front-loaded with the core action and then builds into operational details 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?
For a tool with one required parameter, rich output, and an output schema, the description gives the agent everything it needs to select, invoke, and present results correctly. It covers what is returned, how to display downloads, what not to present, and when to call palette_finalize.
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 input schema already documents all five parameters. The description adds minimal parameter-level detail, only indirectly reinforcing that 'palette' is the existing palette and n_additions relates to archive gap-filling. With full schema coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Given a legacy palette, generate an archive-grounded premium support system') and enumerates concrete outputs: historical anchors, names, provenance confidence, gap-filling, roles, CSS tokens, and production notes. This clearly distinguishes it from generic palette generation tools and from palette_finalize, which is explicitly handled 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 explains the exact input context (a legacy palette) and gives explicit behavioral boundaries: do not present archive anchors as the recommended colours, and if the agent selects its own final palette, call palette_finalize once with those exact colours. This is strong, actionable routing guidance that clarifies when a follow-up tool is needed.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| Name | Required | Description | Default |
|---|---|---|---|
| markets | No | Target markets | |
| palette | Yes | Current hex palette to refine | |
| feedback | Yes | Natural language refinement e.g. more melancholic | |
| use_case | No | Use case context e.g. luxury homewares | |
| direction | No | Alias for feedback — natural language direction e.g. more dangerous, more historical, warmer | |
| n_results | No | Number of variants to return (default 1) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description adds meaningful behavioral context beyond that: the result carries rendered palette and PNG/PDF/ASE/JSON/CSS downloads, the agent should show them to the customer, and archive anchors must not be presented as recommended colours. It also routes to palette_finalize for a custom final choice. These are non-obvious and valuable behavioral disclosures.
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 every sentence earns its place: core action, return contents and presentation, a warning about archive anchors, and the follow-up call to palette_finalize. It is front-loaded with the main purpose and wastes no 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 and parameter schema coverage is 100%, the description does not need to re-explain return values or every parameter. It covers the workflow, what to do with the result, and an important correctness rule. Nothing critical is missing for correct invocation and downstream behaviour.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters. The description adds some colour to 'feedback' with examples like 'more melancholic' and 'too corporate add warmth,' but it does not materially clarify markets, use_case, direction, or n_results beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb and resource: 'Refine an existing palette using natural language feedback.' It also specifies what is returned: a refined palette with archive grounding and change rationale. It does not explicitly contrast itself with similar siblings like palette_generate or palette_variants, but the 'existing palette + feedback' framing makes the purpose fairly distinguishable.
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 a clear usage context: submit your current palette plus natural-language feedback, and the tool returns a refined palette. It also provides a conditional follow-up instruction to call palette_finalize when the agent selects its own final palette. However, it does not explicitly state when not to use this tool or name direct alternatives.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| Name | Required | Description | Default |
|---|---|---|---|
| palette | Yes | Array of hex values | |
| use_case | No | Use case context e.g. UI, dashboard, report | UI |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, so the safety profile is already known. The description adds meaningful behavioral context beyond that: the returned result already contains rendered downloads that must be surfaced, the internal analysis steps (LRV, contrast, neutrals), and a warning about archive anchors being mistaken for recommended colours. This exceeds what annotations alone convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and every sentence adds value: core purpose, result-handling instruction, and a conditional follow-up with a critical warning. It is front-loaded with the main function and uses the later sentences for workflow. Slightly dense with multiple directives, but nothing is 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?
For a tool with only two parameters, a rich output schema, and read-only annotations, the description is adequate. It explains what the tool produces, how to present the result, and how to proceed if the agent makes a selection. It doesn't cover the use_case parameter, but the schema already does, so the information is complete enough 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 already documents both parameters. The description references 'from a palette' and the analysis steps, but does not add detail about the use_case parameter or the exact format of palette hex values. Since the schema carries the load, 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 opens with a specific verb and resource: 'Generate light-mode and dark-mode role maps from a palette.' It clearly distinguishes itself from sibling palette tools by naming the exact output (role maps for two modes) and the analytical steps (LRV, role assignment, contrast check, neutral flagging). The title and description align, leaving no ambiguity about what this tool does.
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 workflow guidance: show the included downloads to the customer, and explicitly names palette_finalize as the follow-up when the agent chooses a final palette from the evidence. It also provides a strong negative directive ('Never present the archive anchors...'). It stops short of explicitly contrasting this tool with other palette_generate or palette_analyse alternatives, so it's not a full 5.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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 annotation only declares readOnlyHint=true, so the description bears responsibility for explaining behavior. It goes well beyond that by revealing that the result carries rendered palette and downloadable assets, that archive anchors must not be presented as recommended colours, and that proceeding to an own final palette requires palette_finalize. This is rich, honest 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 every sentence earns its place: first the core function and outputs, second the customer-facing deliverables, third the two critical behavioural guardrails. It is front-loaded with the most important information and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and annotations cover the read-only nature, the description covers the essential usage workflow, including customer presentation and the palette_finalize handoff. It is slightly incomplete in not clarifying how palette_specify relates to the sibling interior_specify or house_specify tools, but it is otherwise sufficient 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 parameters already have adequate documentation. The description adds the key constraint that the tool takes 2-8 hex values, which reinforces the 'colours' parameter, but it adds no additional meaning for 'style' or 'room_type' 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 opens with a specific verb and resource: 'Generate a complete interior specification from 2-8 hex values.' It clearly differentiates itself from generic palette generation tools by naming concrete outputs like surface assignments, 60-30-10 proportions, and lighting behaviour. However, it does not explicitly distinguish itself from closely related siblings such as interior_specify or 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 clear operational guidance: show the embedded downloads to the customer, never present archive anchors as recommendations, and call palette_finalize if choosing an own final palette. This effectively routes a key alternative use case. It does not, however, explicitly state when to choose this tool over other specification or palette tools.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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?
Beyond the readOnly annotation, the description discloses meaningful behavioral traits: the result already contains rendered palette and download artifacts, archive anchors must not be presented as recommended colours, and any independently chosen final palette must be passed to palette_finalize. This adds real context absent from the structured fields and does not contradict 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 longer than average, but every sentence earns its place: it explains the differentiation, the key parameters, the output contents, a critical anti-pattern, and the required follow-up action. The 'Like palette_concept but...' opening front-loads the core purpose, and the instructions are grouped logically.
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 readOnly annotation, the description still covers the most important runtime context: what the result carries, how to present it, what not to do, and what to call next. The guidance is sufficient for an agent to select, invoke, and act correctly on this tool without additional documentation.
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 a baseline of 3 applies. The description adds practical meaning to allowed_archives by tying it to cultural traditions and examples, and to min_relevance by explaining it filters weak concept matches. It doesn't cover n_colours or include_neutrals, but the schema already describes those adequately, so the description provides meaningful but not exhaustive 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 identifies the tool as 'Like palette_concept but with archive filtering and relevance controls', naming both the resource type and the specific differentiating behavior. It explicitly separates this tool from the sibling palette_concept and states the core benefit: 'Fixes cross-archive drift when cultural specificity matters.' This is a specific verb+resource framing that an agent can act on.
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 ('Fixes cross-archive drift when cultural specificity matters') and names the alternative tool it builds on ('Like palette_concept'). It also provides direct parameter usage instructions for allowed_archives and min_relevance, and gives downstream workflow instructions about showing results and calling palette_finalize when selecting a final palette. This is actionable and leaves little to inference.
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. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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?
Even with readOnlyHint=true, the description adds meaningful behavioral detail: the delta-e relevance band, provenance, the result already containing rendered palette and downloadable formats, and the critical warning not to present derived anchor colours as recommendations. This goes well beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and method, then provides usage examples and an essential safety instruction. Every sentence adds value; there is no repetitive or filler content despite covering several behaviors.
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 moderately complex tool with a full input schema and output schema, the description covers what it does, how it behaves, what the result includes, and how the agent should handle the output afterwards. Nothing critical is missing for correct invocation and downstream behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters are already well documented. The description reinforces the purpose of palette and target_archive with examples and mentions the delta-e concept, but it does not substantially expand on max_delta_e beyond the schema's default and threshold explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb and resource ('Map any list of hex values into a target archive') plus the algorithm (CIEDE2000 nearest-neighbour matching), making it distinct from the many sibling palette tools. It also names the follow-up sibling palette_finalize, reinforcing what this tool is and is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete use cases ('translate a client's paint colours into Shakespeare language, map a brand palette into historical Japanese pigments, or find the nearest Oxfordshire equivalents') and explicitly says when to call palette_finalize instead of presenting derived anchors as recommendations. This clearly routes an agent to the correct tool and next step.
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'. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| 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?
The readOnlyHint annotation is consistent, and the description adds valuable behavioral detail: the result already carries rendered palette downloads, users should show them, archive anchors must not be presented as recommended colours, and final recommendations should route through palette_finalize. This goes well beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: core behavior, output details, examples, download behavior, an important warning, and a routing instruction. It is front-loaded with what the tool does and structured so an agent can act on it without re-reading.
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 an output schema and a read-only annotation, this description is remarkably complete. It covers input constraints, illustrative use cases, result contents, presentation guidance, a safety warning, and the correct follow-up tool call, leaving no critical ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents palette, use_case, market, and medium. The description reinforces these semantics with context and examples, but does not add meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('evaluate') and resource ('a palette of 2-8 hex values'), and enumerates concrete outputs: a verdict, a score, colour roles, biggest weakness, and a suggestion. This clearly differentiates it from adjacent tools like palette_analyse or palette_compare, since none promise this specific verdict format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys when the tool applies ('Evaluate a palette... for a use case, market, and medium') and gives realistic examples. It also gives explicit downstream routing: call palette_finalize once if you choose a final palette of your own. It does not name alternative comparison/analysis tools or exclusion conditions, 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.
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.
render_colour_resultARead-onlyInspect
Show a finished colour result to the customer AS COLOUR. Call this last, once the palette, house scheme, brand system or audit you are going to hand over has been decided -- it presents what you already have and chooses nothing. Do not call it for a single contrast figure, a colour history question with no palette, or tool guidance. Send the story with it: one sentence on what the scheme IS, the design decision you made, and the one rule worth remembering. The colours cannot carry those on their own.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | palette, house, brand or audit. | |
| rooms | No | For a multi-room scheme: one short line per room, in your own words. What that room is doing with the palette. | |
| title | No | What this result is, in the customer's terms. | |
| bridge | No | Where the evidence started and where you took it. Include `colours` on a side ONLY if you have real colour values for it -- an invented source swatch beside a real archive one reads as evidence and is not. | |
| checks | No | ||
| colours | Yes | The colours you are handing over, in order. | |
| verdict | No | One sentence, shown under the colour. | |
| key_rule | No | The one rule worth remembering, short enough to repeat to a decorator. 'Boathouse Clay stays tiny. Never a wall.' | |
| design_move | No | At most two sentences on the decision you made -- what the evidence offered and what you did with it. This is usually the most interesting thing in your answer and the part a list of colours cannot carry. | |
| proportions | No | Only where a real share was decided. Every colour gets one and they total 100, or leave this out entirely -- a share nobody decided reads as a measurement nobody took. | |
| story_thesis | No | ONE sentence: what this scheme IS. 'Danish coastal colour, domesticated for a summer house.' Shown above the palette, so it must earn its line. | |
| evidence_thread | No | Three to five short sources or references that shaped this. Orientation, not a bibliography. | |
| evidence_summary | No | ||
| evidence_boundary | No | What is source-backed and what is your interpretation. Say it plainly: 'Designed contemporary interpretation, not a measured historical paint specification.' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses key behavioral traits: the tool does not make choices, it simply presents the already-decided result, and the narrative fields must carry meaning the colours cannot. This is substantive context that helps the agent predict what the tool will and will not do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded. The main purpose comes first, followed by explicit call timing, exclusions, and the required story shape. Every sentence earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, nested 14-parameter tool with an output schema, the description provides the essential operational context: when to call it, what not to use it for, and what narrative fields must accompany the colours. The schema and output schema cover the structural details, so nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high at 86%, so the baseline is 3. The description adds real value on top by mapping the story requirement to specific fields: one sentence on what the scheme IS (story_thesis), the design decision (design_move), and the one rule worth remembering (key_rule). This helps the agent compose the right narrative payload.
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: 'Show a finished colour result to the customer AS COLOUR.' It also differentiates this tool from siblings by saying it 'presents what you already have and chooses nothing,' making clear it is a final presentation step rather than a generation, selection, or analysis 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?
It gives explicit when-to-use guidance: 'Call this last, once the palette, house scheme, brand system or audit... has been decided.' It also gives explicit when-not-to-use guidance: not for a single contrast figure, a colour history question with no palette, or tool guidance. This is model-level usage guidance, not just a vague hint.
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?' The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.
| Name | Required | Description | Default |
|---|---|---|---|
| ask | No | Optional: specific question e.g. 'what bag colour works?' or 'do the shoes work?' | |
| items | Yes | List of outfit items with label and hex colour | |
| occasion | No | Optional: occasion context e.g. 'daytime', 'evening', 'office', 'casual', 'wedding guest' | general |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses important behavior: it returns a verdict with recommendations, includes a suggested missing archive colour, and 'result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads.' It also warns against presenting derived archive anchors as recommendations and instructs calling palette_finalize if the agent chooses its own palette. This is rich, annotation-complementing 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 longer than necessary but each part serves a purpose: usage context, examples, output behavior, and a safety instruction about archive anchors. Its structure is front-loaded with the key use case followed by actionable details. The rhetorical opener adds tone but still conveys the tool's domain.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to detail return values; it nonetheless announces the rendered palette/downloads and tells the agent what to show the customer. It covers input format, example questions, occasion context through the schema, and adds cross-tool routing to palette_finalize. No critical guidance appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds concrete item semantic meaning—'hex values with labels (dress, bag, shoes...)', and gives example user phrasings for the ask parameter. It does not elaborate on occasion, but the schema already defines it and covers the default; still, the item/ask examples push this 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 identifies the tool as a style-matching service: submit outfit items with hex values and labels, and receive a verdict on what works, clashes, or is missing. This is a specific verb+resource (matching outfit colours), and the phrase 'Style Match' plus the outfit-item examples distinguish it from sibling tools like palette_verdict or colour_combination without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes when to use it through the stylist-question framing and concrete examples, giving clear context for outfit-matching queries. It does not explicitly name alternatives or exclusions, but the examples and item-label scope make the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
vanderpoel_pairingVanderpoel PairingARead-onlyInspect
Emily Noyes Vanderpoel's documented 'good' dyad/triad hue groupings (Color Problems, 1902, Plate XXXVI 'Good Dyads or Pairs' and Plate XXXVII 'Good Triads'), served from the build artefacts vanderpoel_dyads.json and vanderpoel_triads.json. Snaps an input hex to the nearest of Vanderpoel's eleven real hue-family labels, resolves that hex against the archive, and returns every documented dyad or triad the label belongs to -- each OTHER member carrying its own nearest real archive match (CIEDE2000), with hex_collision disclosed when the match is tied. Unlike hay_contrast, this carries NO proportional ratio -- only Vanderpoel's own categorical 'good' editorial judgement, printed verbatim on the plates. Returns groupings: null for a near-neutral input, where hue is not meaningfully defined, or when the nearest hue-family label is a member of no dyad or triad -- silence is the honest answer, not a forced match. Member names come from a transcriber's digitisation_alt_text (an accessibility description of the plate image), not verified printed captions; every response states this caveat explicitly (member_source_caveat), not just a code comment. The hue positions used to snap an input to a label are a modern matching convention, not a number Vanderpoel printed -- disclosed per response as label_placement_basis.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex colour, e.g. '#CC1A14'. | |
| n_per_member | No | Archive candidates per partner member (1-5). Default 1, which returns a single archive_match object rather than a list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | No | |
| covered | No | |
| groupings | No | Documented dyads/triads containing the snapped label. Each carries other_member_labels (Vanderpoel's own words), other_members (each with archive_match and hex_collision), judgement, judgement_basis_verbatim, source_plate and its own member_source_caveat. null -- never [] and never a substituted weaker answer -- when nothing is documented. |
| input_hex | No | |
| input_snapped_to | No | Vanderpoel hue-family label the input snapped to. |
| input_archive_match | No | Nearest real archive colour to the input itself, or null if nothing is near enough. |
| member_source_caveat | No | |
| label_placement_basis | No | States that the snap angles are a modern convention, not a number Vanderpoel printed. |
| degrees_from_nearest_named_hue | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint, so the description carries the behavioral burden and handles it thoroughly. It discloses CIEDE2000 matching, hex_collision behavior, null returns for near-neutral hues, the member_source_caveat, and the label_placement_basis caveat, plus the 'silence is honest' policy. No contradiction with readOnlyHint exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and long, but almost every clause earns its place by explaining caveats and historical provenance. It is front-loaded with the core purpose, though the single-paragraph structure makes it harder to parse than a short purpose sentence plus explicit caveats would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a historically nuanced tool, the description is unusually complete: it explains the source, the matching algorithm, the null behavior, provenance caveats, and the key difference from hay_contrast. With an output schema present, return-value documentation is not the description's responsibility, and nothing an agent needs to call this correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters are documented in the schema itself. The description adds context about output objects and matching behavior, but it does not materially enrich the meaning of the input parameters 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 states a specific verb and resource: it snaps an input hex to Vanderpoel hue-family labels and returns documented dyad/triad groupings from specific build artifacts. It also distinguishes itself from hay_contrast by explicitly saying it carries NO proportional ratio, so an agent can tell it apart from related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when this is appropriate — when Vanderpoel's categorical 'good' groupings are needed — and explicitly contrasts with hay_contrast. It also documents null-return conditions, but it does not provide a direct 'use this instead of X' routing beyond the one mention of hay_contrast, nor does it address the many colour-harmony siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
why_connectedWhy ConnectedARead-onlyInspect
Are these two specific archive records connected -- and if so, exactly why? Traces the real path between them through Colour Memory's stored relationship graph (e.g. two Wada colours that share membership in the same published combination) and returns the actual path, not just a yes/no. States plainly when two records are NOT connected, and always states what a shared connection does not prove -- e.g. that two colours sharing a Wada combination were independently asserted as a pair, not just co-published in the same numbered plate. Get record_id values from archive_search or colour_card.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First record id. | |
| b | Yes | Second record id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hops | No | |
| path | No | |
| connected | No | |
| explanation | No | |
| does_not_mean | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation already signals readOnlyHint=true, and the description adds substantial behavioral context: it returns the actual path, states plainly when records are not connected, and always explains what a shared connection does not prove. This goes well beyond the structured annotation and helps the agent set accurate expectations for the response.
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 then adds valuable detail about output behavior, non-connection handling, and the important interpretative caveat. It is slightly long with two similar Wada examples, but every sentence contributes to correct tool invocation and expectation setting.
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 readOnly annotation, the description covers everything needed to select and call the tool correctly: the exact inputs, the output semantics, the failure/non-connection case, and the caution about overinterpreting results. No critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes both parameters (a and b) as record IDs, so the baseline is 3. The description adds context by explicitly noting these are 'archive records' and that record_id values come from archive_search or colour_card, but it adds no parameter-specific syntax or constraints beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise question and answers it: it traces the real path between two specific archive records through the stored relationship graph and returns the path, not merely a yes/no. It also names its domain (Colour Memory's relationship graph) and gives concrete examples, making it clearly distinguishable from archive_search or colour_card.
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 establishes when to use it: for two specific archive record IDs when the agent needs the actual connection path and caveats. It also tells the agent where to obtain valid record_id values (archive_search or colour_card). It does not explicitly name sibling tools to avoid, but the usage context is strong enough that an agent should not confuse it with related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
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
- AlicenseNot gradedqualityDmaintenanceEnables detection and analysis of pre-public product launches through web search, content extraction, AI-powered scoring, and automated alerting. Provides comprehensive tools for surfacing stealth startup signals before they trend publicly.MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT- AlicenseNot gradedqualityCmaintenanceEnables AI chat clients to perform market research and competitive intelligence by gathering company overviews, competitor lists, product portfolios, pricing snapshots, and recent news via live Tavily search.MIT
- AlicenseAqualityAmaintenanceDetects hiring intent signals by scanning job boards for specific companies. Returns structured role data for outbound sales targeting.13061MIT