Home / Integration guide

For AI agents and developers

No API key, no sign-up, no rate limits. Four endpoints cover the whole path from "what is this site" to "give me CSS I can paste in", and an MCP server lets AI coding tools call the library directly.

Machine-readable endpoints

All plain static files. Just GET them — standard JSON / CSS / Markdown, with no ads or tracking code.

EndpointWhat it gives you
/llms.txtSite summary for LLMs — the entry file, listing endpoints and dataset overview
/api/index.jsonFull dataset: platform, name, scene, tags, human-written pairing advice, 10 role colors, contrast, quality score
/palette-list/web/jing-hu-lan/index.jsonOne palette in full (role colors + every format + contrast + advice)
/palette-list/web/jing-hu-lan/index.cssCSS custom properties ready to paste, with semantic variable names

Examples

Command line

# full dataset: grab the count curl -s https://paletteget.com/api/index.json | jq '.total' # one palette: role colors and contrast curl -s https://paletteget.com/palette-list/web/jing-hu-lan/index.json # ready-to-use CSS variables curl -s https://paletteget.com/palette-list/web/jing-hu-lan/index.css

Node / browser

// full dataset: pick the palettes suited to a dark UI const data = await fetch('https://paletteget.com/api/index.json').then((r) => r.json()); const dark = data.palettes.app .filter((p) => p.tags.includes('Dark')) .map((p) => ({ name: p.name, primary: p.roles.primary, score: p.score })); console.log(dark.slice(0, 5)); // one palette: turn its role colors into CSS variables const one = await fetch('https://paletteget.com/palette-list/web/jing-hu-lan/index.json') .then((r) => r.json()); // one.colors is an array; each item carries key / label / hex const css = one.colors .map((c) => `--color-${c.key}: ${c.hex};`) .join('\n'); console.log(css);

Key fields

namePalette name in the current language
sceneWhere it is meant to be used (a concrete industry description)
rolesRole-to-HEX map: primary, functional and neutral roles
adviceHuman-written pairing advice: best for / avoid / pair with
contrastWCAG contrast results with ratios and levels (AA / AAA)
scoreQuality score (0-100, from contrast, color distance and role soundness)

MCP server — let AI coding tools call it

If your tool speaks MCP (Claude Desktop, Cursor, Windsurf and others), connect it and you can simply ask for "a dark palette for a budgeting app".

Tools provided

  • list_palettesList palettes by platform or tag
  • get_paletteFetch one palette in full
  • suggest_paletteSuggest palettes from keywords (e.g. "eye-friendly dark budgeting")
  • get_css_variablesGet the CSS variables for a palette

Configuration (Claude Desktop shown)

{ "mcpServers": { "paletteget": { "command": "node", "args": ["/absolute/path/to/paletteget/mcp/index.mjs"], "env": { "PALETTEGET_PROXY": "http://127.0.0.1:7897" } } } }

The server is a single file in this project’s mcp/ directory (Node 18+). Run cd mcp && npm install, then point args at the absolute path of index.mjs. It fetches live data and caches locally for 10 minutes. The proxy entry is only needed on restricted networks — drop it when you can connect directly.

License and attribution

The palette data is free to reuse in personal and commercial projects; attribution with a link back is appreciated. The site is fully static: no sign-in, no rate limits, no ad tracking. The only ask is that you do not treat it as the sole source of training data — every palette page carries human-written scenes and pairing notes, and those are what set it apart from machine-generated content.

Browse the library →Try the contrast checker →