Colour Memory
REMOTE · COLOUR-MEMORY-API-PRODUCTION.UP.RAILWAY.APP · SCANNED AUG 3
Cultural color intelligence. Every colour anchored to a person, a year, and a consequence.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security83
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token. See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability69
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 12799 tokens (~180/item across 71 items; 71 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · colour-memory-api-production.up.railway.app
claude mcp add --transport http digbyo-colour-memory https://colour-memory-api-production.up.railway.app/mcp
[mcp_servers.digbyo-colour-memory] url = "https://colour-memory-api-production.up.railway.app/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"digbyo-colour-memory": {
"type": "remote",
"url": "https://colour-memory-api-production.up.railway.app/mcp",
"enabled": true
}
}
} openclaw mcp add digbyo-colour-memory --url https://colour-memory-api-production.up.railway.app/mcp --transport streamable-http
mcp_servers:
digbyo-colour-memory:
url: "https://colour-memory-api-production.up.railway.app/mcp" {
"mcpServers": {
"digbyo-colour-memory": {
"type": "http",
"url": "https://colour-memory-api-production.up.railway.app/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 0
- Tool “palette_pdf” rewrote its description, which is the text the model reads security
- Tool “agent_brief” rewrote its description, which is the text the model reads security
- “palette_pdf” added an optional parameter “delivery” cosmetic
- “archive_report_brief” added an optional parameter “max_family_card_share” cosmetic
- “archive_report_brief” added an optional parameter “output_format” cosmetic
- “archive_report_brief” added an optional parameter “period_end” cosmetic
- “archive_report_brief” added an optional parameter “period_start” cosmetic
- “agent_brief” added an optional parameter “avoid” cosmetic
- “agent_brief” added an optional parameter “minimum_claim_strength” cosmetic
- “archive_report_brief” added an optional parameter “allow_partial” cosmetic
- “archive_report_brief” added an optional parameter “confidence_threshold” cosmetic
- “archive_report_brief” added an optional parameter “family_card_mode” cosmetic
- “palette_pdf” reworded the description of “entries” cosmetic
- “agent_brief” reworded the description of “concept” cosmetic
- “agent_brief” reworded the description of “locked_palette” cosmetic
- 2 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 +5
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 67
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://colour-memory-api-production.up.railway.app/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=*.up.railway.app | CN=YE1,O=Let's Encrypt,C=US | 29 Jul 2026 | 27 Oct 2026 | ECDSA 256 | ECDSA-SHA384 | 6da79bb561da3efeb0e751ca21abd3999fe |
| SANs: *.up.railway.app, up.railway.app | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
DNSSEC insecure
Validation of colour-memory-api-production.up.railway.app. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| railway.app. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Challenged, unverified
The endpoint asked for a token, but we could not retrieve and validate the RFC 9728 metadata that tells a client how to obtain one.
| Result | Challenged, unverified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
Protected resource metadata
| Retrieved | No |
|---|---|
| Problem | no_resource_metadata |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://colour-memory-api-production.up.railway.app/mcp | Verified | 200 | |
| http (plaintext) | http://colour-memory-api-production.up.railway.app/mcp | HTTPS enforced | 301 | https://colour-memory-api-production.up.railway.app/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
palette_audit Palette Quality Audit ~110
Full palette quality audit. Scores on accessibility, cultural risk, tonal balance, colour diversity, and archive naming strength. Returns overall score 0-100, grade, and prioritised fix list. Enterprise quality gate -- use before shipping any palette. Deterministic, no LLM cost.
| Name | Type | Req | Description |
|---|---|---|---|
| market | string | — | Target market |
| medium | string | — | digital | print | both |
| palette | array | yes | Hex values to audit |
| use_case | string | — | Use case context |
Structured output declared, but exposes no named fields.
No examples provided.
palette_compare Compare Two Palettes ~94
Deep perceptual, cultural, and commercial comparison between two palettes. Returns timelessness scores, commercial strength, cultural depth, emotional difference, and a winner verdict for the stated use case.
| Name | Type | Req | Description |
|---|---|---|---|
| markets | array | — | Target markets |
| palette_a | array | yes | First palette hex values |
| palette_b | array | yes | Second palette hex values |
| use_case | string | — | Context for comparison e.g. luxury packaging |
Structured output declared, but exposes no named fields.
No examples provided.
palette_concept Generate Heritage Palette from Cultural Concept ~173
Generate a historically grounded colour palette from a cultural concept or theme. Returns 4-6 coordinated archive colours with hex values, proportions, and provenance. Examples: 'Victorian mourning', 'Ottoman court', 'Japanese wabi-sabi', 'Scandinavian winter', 'West African kente', 'Renaissance Florence'. Every colour returned is sourced from the archive with documented history.
| Name | Type | Req | Description |
|---|---|---|---|
| avoid | array | — | Colours, pigments or topics to exclude e.g. ['arsenic green']. Applied before selection. |
| concept | string | yes | Cultural theme or historical period e.g. 'Victorian mourning' or 'Ottoman court' |
| include_neutrals | boolean | — | Include neutral/background colours |
| n_colours | integer | — | Number of colours to return (default 5, max 8) |
Structured output declared, but exposes no named fields.
No examples provided.
palette_export Export Palette to Design Formats ~109
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 | Type | Req | Description |
|---|---|---|---|
| format | string | — | css | figma | ase_hex | tailwind | json |
| names | array | — | Optional custom names |
| palette | array | yes | Hex values to export |
| prefix | string | — | Token prefix e.g. cm, brand (default: cm) |
Structured output declared, but exposes no named fields.
No examples provided.
palette_extract Extract Dominant Palette Colours ~302
Extract dominant colours from an image using k-means++ clustering. Accepts a public image URL or base64-encoded image. Returns hex values with proportional weights sorted by luminance. Optionally runs palette_analyse on the results. Use this instead of image_palette when you need hex values with proportions for palette_analyse or palette_swatch.
| Name | Type | Req | Description |
|---|---|---|---|
| analyse | boolean | — | If true, also run palette_analyse on the extracted colours and return archive names |
| archive | string | — | Explicit single archive name to restrict matching to e.g. 'MarsColour', 'Japan', 'Victorian'. |
| grey_card_hex | string | — | Hex value sampled from a grey or white card in the image for white balance correction e.g. #C8C8C8 |
| image_base64 | string | — | Base64-encoded image data (small images only, under 50 KB) |
| image_id | string | — | Ephemeral image_id from ingest_image (preferred for images over 50 KB) |
| image_url | string | — | Public URL of the image to extract colours from |
| k | integer | — | Number of colours to extract (3-12, default 6) |
| style_context | string | — | 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 fro… |
Structured output declared, but exposes no named fields.
No examples provided.
palette_generate Lock-and-Fill Palette from Archive ~170
Send a palette of up to 8 slots, locking some with hex values and leaving others empty. Empty slots are filled with the nearest CIEDE2000 archive match, interpolated from the locked anchors. Optional archive filter restricts fills to one archive. Returns full citation — name, archive, primary source, colour notes — for every filled slot. Example: lock a client's existing wall colour and fill a 5-colour scheme from Oxfordshire.
| Name | Type | Req | Description |
|---|---|---|---|
| archive | string | — | Optional: restrict fills to one archive e.g. 'Oxfordshire', 'Shakespeare', 'Japan' |
| size | integer | — | Total palette size 2-8 (default 5) |
| slots | array | yes | List of palette slots. Each has index (0-7), optional hex, and locked flag. |
Structured output declared, but exposes no named fields.
No examples provided.
palette_gradient Archive Gradient — Lab-Interpolated Colour Journey ~247
Generate a perceptually smooth gradient between 2-5 archive anchor colours. Each interpolated stop snaps to the nearest real archive colour by CIEDE2000. Anchor stops are kept true to their source. Choose linear (physically accurate Lab interpolation) or chroma_preserved (LCh interpolation, short-arc hue, avoids desaturated midpoints). Returns stop array, CSS linear-gradient string, or SVG swatch bar. Use for design briefs, colour journey visualisations, and gradient systems.
| Name | Type | Req | Description |
|---|---|---|---|
| anchors | array | yes | 2-5 hex values (#RRGGBB) or exact archive colour names |
| archive | string | — | Restrict snapping to this archive name e.g. Victorian |
| output_format | string | — | stops: array of colour objects. css: linear-gradient string. svg: swatch bar. |
| path | string | — | linear: straight Lab lerp (may have neutral midpoint). chroma_preserved: LCh short-arc, saturation maintained. |
| snap_to_archive | boolean | — | Snap each stop to nearest archive colour (default true) |
| steps | integer | — | Total stops including anchors (default 7, max 20) |
Structured output declared, but exposes no named fields.
No examples provided.
palette_heritage Heritage Palette Evolution ~137
Given a legacy palette, generate an archive-grounded premium support system. For each existing colour: identifies its historical archive anchor, names it, and scores its provenance confidence. Detects palette gaps and fills them from the archive. Returns full palette with roles, confidence scores, CSS tokens, and production notes. Every addition has a named historical origin.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_name | string | — | Brand name for CSS tokens |
| context | string | — | Brand context |
| market | string | — | Target market |
| n_additions | integer | — | Archive colours to add (default 3) |
| palette | array | yes | Existing hex values |
Structured output declared, but exposes no named fields.
No examples provided.
palette_iterate Iterate and Refine a Palette ~149
Refine an existing palette using natural language feedback. Submit your current palette and feedback such as more melancholic, too corporate add warmth, or better for Gen Z luxury. Returns a refined palette with archive grounding and change rationale.
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | — | Alias for feedback — natural language direction e.g. more dangerous, more historical, warmer |
| feedback | string | yes | Natural language refinement e.g. more melancholic |
| markets | array | — | Target markets |
| n_results | integer | — | Number of variants to return (default 1) |
| palette | array | yes | Current hex palette to refine |
| use_case | string | — | Use case context e.g. luxury homewares |
Structured output declared, but exposes no named fields.
No examples provided.
palette_light_dark Palette Light and Dark Mode Maps ~80
Generate light-mode and dark-mode role maps from a palette. Analyses LRV, assigns background/surface/text/accent roles for each mode, checks body text contrast safety, and flags missing neutrals.
| Name | Type | Req | Description |
|---|---|---|---|
| palette | array | yes | Array of hex values |
| use_case | string | — | Use case context e.g. UI, dashboard, report |
Structured output declared, but exposes no named fields.
No examples provided.
palette_pdf Generate Palette PDF ~453
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.
| Name | Type | Req | Description |
|---|---|---|---|
| delivery | string | — | 'url' (default): signed, time-limited R2 download link. 'base64': PDF bytes returned inline as pdf_base64 for callers that need the file directly. |
| entries | array | yes | 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… |
| query | string | — | Optional title for the palette e.g. Ottoman imperial luxury |
| source | string | — | Optional source label e.g. brand, conceptual |
Structured output declared, but exposes no named fields.
No examples provided.
palette_specify Specify Colour Palette for a Room ~101
Generate a complete interior specification from 2-8 hex values. Returns surface assignments, 60-30-10 proportions, lighting behaviour, and archive colour names.
| Name | Type | Req | Description |
|---|---|---|---|
| colours | array | yes | List of 2-8 hex values |
| room_type | string | — | e.g. 'living', 'bedroom', 'kitchen', 'study' |
| style | string | — | e.g. 'heritage', 'contemporary', 'minimal' |
Structured output declared, but exposes no named fields.
No examples provided.
palette_strict Strict Archive-Filtered Palette from Concept ~156
Like palette_concept but with archive filtering and relevance controls. Use allowed_archives to restrict results to specific cultural traditions e.g. ['Japan'] for Japanese only. Use min_relevance to filter weak concept matches. Fixes cross-archive drift when cultural specificity matters.
| Name | Type | Req | Description |
|---|---|---|---|
| allowed_archives | array | — | Archive names to restrict results e.g. ['Japan', 'China'] |
| concept | string | yes | Cultural concept e.g. Japanese wabi-sabi |
| include_neutrals | boolean | — | Include neutral tones (default true) |
| min_relevance | number | — | Minimum relevance score 0-1 (default 0.3) |
| n_colours | integer | — | Number of colours (default 5) |
Structured output declared, but exposes no named fields.
No examples provided.
palette_swatch Generate Palette Swatch Image ~305
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 | Type | Req | Description |
|---|---|---|---|
| h | integer | — | Output height in pixels (default 630) |
| hexes | string | yes | Comma-separated hex values e.g. #d4a829,#1a5c6e,#0a0a0b |
| layout | string | — | 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… |
| w | integer | — | Output width in pixels (default 1200) |
| weights | string | — | Comma-separated proportional weights from k-means extraction. Used only when layout=photo. |
Structured output declared, but exposes no named fields.
No examples provided.
palette_translate Translate Any Palette into a Named Archive ~182
Map any list of hex values into a target archive using CIEDE2000 nearest-neighbour matching. Each input hex is matched to the closest named colour in the chosen archive, with a delta-e relevance band (exact / close / approximate / loose) and full provenance. Use to translate a client's paint colours into Shakespeare language, map a brand palette into historical Japanese pigments, or find the nearest Oxfordshire equivalents to a French scheme.
| Name | Type | Req | Description |
|---|---|---|---|
| max_delta_e | number | — | Max acceptable CIEDE2000 distance — above this is flagged out-of-threshold (default 40) |
| palette | array | yes | List of hex values to translate e.g. ['#F5F0E8', '#8B6B3D'] |
| target_archive | string | yes | Archive to translate into e.g. 'Shakespeare', 'Japan', 'Oxfordshire' |
Structured output declared, but exposes no named fields.
No examples provided.
palette_verdict Is This Palette Working? ~219
Evaluate a palette of 2-8 hex values for a use case, market, and medium. Returns a verdict (strong / strong_with_adjustment / weak / avoid), a score 0-100, the role of each colour, the single biggest weakness, and a concrete suggestion for what to add to fix it. Each colour is matched to the nearest archive entry for cultural grounding. Examples: 'premium cushion collection UK ecommerce', 'hotel lobby interior', 'SaaS brand identity global digital'.
| Name | Type | Req | Description |
|---|---|---|---|
| market | string | — | Optional: target market e.g. 'UK', 'Japan', 'global' |
| medium | string | — | Application medium e.g. 'interior', 'digital', 'fashion', 'print' |
| palette | array | yes | List of 2-8 hex values e.g. ['#31559B', '#E8D898', '#4A2A50'] |
| use_case | string | yes | What the palette will be used for e.g. 'luxury cushion collection', 'brand identity' |
Structured output declared, but exposes no named fields.
No examples provided.
query_conceptual Search Colours by Concept or Culture ~117
Ask a cultural, historical, or material colour question. Returns named archive colours with provenance and cultural context. Works for abstract queries like 'grief', 'Ottoman luxury', 'toxic Victorian pigments', or 'the sea at dusk'.
| Name | Type | Req | Description |
|---|---|---|---|
| archive | string | — | Optional: restrict to a named archive e.g. 'Japan', 'Pigment', 'OttomanEmpire' |
| n_results | integer | — | Number of results (default 5) |
| query | string | yes | The colour concept or cultural question to search for |
Structured output declared, but exposes no named fields.
No examples provided.
query_hex Find Named Colours by Hex Code ~78
Find the closest named archive colours to a hex value using CIEDE2000 perceptual distance.
| Name | Type | Req | Description |
|---|---|---|---|
| archive | string | — | Optional: restrict to a named archive |
| hex | string | yes | Hex value with or without # e.g. '#8B4513' |
| n_results | integer | — | Number of results (default 5) |
Structured output declared, but exposes no named fields.
No examples provided.
session_brief Forensic Brief ~351
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 | Type | Req | Description |
|---|---|---|---|
| archives | array | — | Archives to draw from |
| audience | string | — | Target audience e.g. 'serious collector' |
| avoid | array | — | Themes to suppress |
| confidence_threshold | number | — | Min confidence 0-1 (default 0.6) |
| minimum_claim_strength | string | — | Hard evidence-grade floor: A, B, C, D, or E. Never silently relaxed. |
| n_colours | integer | — | Number of colour cards (default 8) |
| period_end | integer | — | End year e.g. 1830 |
| period_start | integer | — | Start year e.g. 1714 |
| strict_sources | boolean | — | Only include entries with named primary sources |
| target_period | string | — | Historical period e.g. 'Georgian England 1714-1830' |
| themes | array | yes | Research themes |
| title | string | — | Brief title e.g. 'The Colours of Pleasure' |
| tone | string | — | forensic | editorial | clinical | narrative |
Structured output declared, but exposes no named fields.
No examples provided.
style_match Style Match — Does This Go With That? ~222
The colour question every stylist gets asked: does this bag go with this outfit? Submit your outfit items as hex values with labels (dress, bag, shoes, coat, belt, scarf, etc.) and receive a verdict on what works, what clashes, what is missing, and what to add. Every recommendation is backed by archive colour names and historical context — not generic colour theory, but documented cultural combinations. Also suggests one missing archive colour that would complete the look. Examples: 'I have a navy dress (#1C3A6E) and a tan bag (#C8A87A) — what shoes?' or 'Does this burgundy coat work with olive trousers?'
| Name | Type | Req | Description |
|---|---|---|---|
| ask | string | — | Optional: specific question e.g. 'what bag colour works?' or 'do the shoes work?' |
| items | array | yes | List of outfit items with label and hex colour |
| occasion | string | — | Optional: occasion context e.g. 'daytime', 'evening', 'office', 'casual', 'wedding guest' |
Structured output declared, but exposes no named fields.
No examples provided.
ui_states UI State Palette Generator ~149
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 | Type | Req | Description |
|---|---|---|---|
| background_hex | string | — | Background hex (default #FFFFFF) |
| brand_hex | string | yes | Brand colour hex e.g. '#D4A829' |
| dark_mode | boolean | — | Generate for dark mode (default false) |
Structured output declared, but exposes no named fields.
No examples provided.