I built an API that stops AI hallucinating colour

DigbyO1 pts0 comments

Start Here — Colour Memory API

REST + MCP · v2.3.3 · 65 tools · 19,000+ archive colours · public demo key

Colour intelligence<br>for agents and design systems.

Maps hex values, palettes, and images to named archive colours. Returns CIEDE2000 distance, Lab/LCh metrics, WCAG contrast, cultural risk, provenance, and design tokens. No signup to try it.

→ Public rate-limited demo key — safe to use in client examples

Architecture

1Archive layerStructured colour records with names, primary sources, notes, and hex values drawn from historical and cultural archives.

2Metric layerLab/LCh, LRV, CIEDE2000 distance, WCAG contrast, palette scoring — deterministic computation, no LLM.

3Agent layer65 REST endpoints and MCP tools for LLMs, design systems, and automated workflows.

4Narrative layerOptional LLM-generated reports, hooks, and briefs — clearly labelled where used.

Authentication

Your demo key

No signup. The demo key is rate-limited to 50 calls but covers everything below. Get a production key at colourmemory.com when you're ready to build.

API Key<br>Copy

cm_demo_public_quickstart

Pass as header: X-Api-Key: cm_demo_public_quickstart · Public, rate-limited, safe to expose in client examples.

Tool 1 of 3

query.hex

Match any hex to the archive. Returns the nearest named colour with its primary source, confidence score, claim_role, and do_not_say guardrails. This is the core of what Colour Memory does.

curl<br>Copy

curl -X POST https://api.colourmemory.com/query/hex \<br>-H "X-Api-Key: cm_demo_public_quickstart" \<br>-H "Content-Type: application/json" \<br>-d '{"hex": "#D4A829", "n_results": 1}'

Response — key fields

nameSong Gold Sycee

archiveChina

primary_sourceNorthern Song Dynasty monetary records, 960–1127

confidence0.92

claim_strengthA — Direct institutional record

claim_roleanchor

do_not_say

Do not describe this hex as spectrophotometrically measured — values are computed from material descriptions.

claim_role tells you how hard you can push this entry: anchor = load-bearing evidence. reject = stub, exclude from deliverables.

Tool 2 of 3

archive.search

Full-text keyword search across thousands of archive colours. This is a text search, not a colour search — search for "arterial blood" not "red". Use query.hex for hue-based retrieval.

curl<br>Copy

curl -X POST https://api.colourmemory.com/archive/search \<br>-H "X-Api-Key: cm_demo_public_quickstart" \<br>-H "Content-Type: application/json" \<br>-d '{"query": "arterial blood", "archive": "Keats", "include_full": true}'

Response

nameKeats's Lung

slugkeats:keats-s-lung

hex#C8B6B0

primary_sourceThe Letters, 3 February 1820

claim_roleanchor

Always save the slug from search results. Pass it to colour.card for reliable retrieval — slugs never break on apostrophes.

Tool 3 of 3 · Commercial palette analysis

brand.audit

Pass a palette of hex values. Returns WCAG accessibility matrix, cultural risk notes by market, archive matches with provenance, palette role assignments, and a commercial verdict. Fully deterministic — no LLM involved.

curl<br>Copy

curl -X POST https://api.colourmemory.com/brand/audit \<br>-H "X-Api-Key: cm_demo_public_quickstart" \<br>-H "Content-Type: application/json" \<br>-d '{<br>"palette": ["#D4A829", "#1A5C6E", "#0F2D6B", "#0A0A0B"],<br>"markets": ["UK", "China", "Middle East"],<br>"context": "luxury packaging"<br>}'

Response — key fields

wcag_matrixAll foreground/background combinations with AA/AAA pass/fail

cultural_riskPer-market flags with context notes

commercial_labelArchive-verified name for each hex

verdict_copyPlain-English palette verdict

issuesActionable flags requiring attention

Optional · No code required

Connect to Claude or ChatGPT

All tools load instantly via MCP. No SDK. No boilerplate. One URL. Disconnect and reconnect after any update to refresh the tool list.

https://api.colourmemory.com/mcp<br>Copy<br>https://api.colourmemory.com/mcp

Claude (web)

Settings → Integrations → Add Integration → paste URL

Claude Desktop

Add to claude_desktop_config.json:

"colour-memory": {<br>"type": "sse",<br>"url": "https://api.colourmemory.com/mcp",<br>"headers": {<br>"X-Api-Key": "YOUR_KEY"

ChatGPT / any client

Settings → Connectors → Add → paste URL. Reconnect to refresh tool list. Tools use dot-notation: archive.search, brand.audit, brand.collision

Reference

All tools

Start with the three above. Come back to the rest when you need them.

query.hex ★<br>Match any hex to the archive with CIEDE2000 distance

archive.search ★<br>Full-text search across archive colour names and notes

brand.audit ★<br>WCAG matrix, cultural risk, palette roles, verdict

brand.collision<br>Can this brand own this colour?

archive.evidence_gap<br>Is this claim supported?

archive.coverage_gap<br>Which themes are thin?

cultural.anachronism<br>Period mismatch detection

index.resonance<br>Material-consequence score

ecommerce.namer<br>Archive names for 40 SKUs

colour.card<br>Full provenance by slug

query.conceptual<br>Semantic search by mood

archive.report_brief<br>Editorial research package

Full...

archive colour search palette colourmemory brand

Related Articles