For developers

The Tintly API and MCP server

Everything that powers Tintly’s color tools, over HTTPS. Generate palettes, check contrast, describe colors and browse millions of palettes from your code or from your AI assistant.

FreeNo plans, no card, no ads.
Read-onlyTools compute and look up. They never change anything.
60 per minutePer key, with the count in every response header.
Plain JSONHTTPS, JSON in and out, one URL per tool.

Your API keys

Checking your account…

Make your first request

Every tool lives at https://www.trycolorkit.com/api/v1/tools/<name>. Send the inputs as JSON with your key in the Authorization header.

Requestbash
curl -X POST https://www.trycolorkit.com/api/v1/tools/check_contrast \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"foreground":"#8A8A8A","background":"#FFFFFF"}'
Responsejson
{
  "result": {
    "foreground": "#8A8A8A",
    "background": "#FFFFFF",
    "ratio": 3.45,
    "ratioText": "3.45:1",
    "level": "AA large",
    "passes": {
      "aa_normal_text": false,
      "aa_large_text": true,
      "aaa_normal_text": false,
      "aaa_large_text": false,
      "ui_components": true
    },
    "suggestion": {
      "foreground": "#757575",
      "ratioText": "4.60:1",
      "note": "The closest lightness of the same hue that reaches AA."
    }
  }
}
JavaScriptjs
const res = await fetch("https://www.trycolorkit.com/api/v1/tools/generate_palette", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.TINTLY_API_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({ base_color: "#2463eb", harmony: "triadic" }),
});
const { result } = await res.json();
console.log(result.colors);

GET https://www.trycolorkit.com/api/v1/tools lists every tool with its JSON Schema, and GET https://www.trycolorkit.com/api/v1/me tells you which key you are using.

13 tools

The REST API and the MCP server share these tools, so they always answer the same.

Generate a color palette

POST /tools/generate_palette

Make a new color palette. Give a base color and a harmony (complementary, analogous, triadic, tetradic, split-complementary, monochromatic) for a classic color-wheel scheme, give only a base color to build a coordinated palette around it, or give nothing for a random one. Returns each color with its name plus ready-to-paste CSS variables.

  • base_colorstringOptional starting color: HEX (#2463eb), rgb() or hsl().
  • harmonystringOptional color-wheel scheme built from base_color. Needs base_color.
  • countintegerHow many colors, 2 to 12 (default 5). Ignored when harmony is set, because each harmony has its own size.

Describe a color

POST /tools/describe_color

Everything Tintly knows about one color: its name, family, every notation (HEX, RGB, HSL, CMYK, HSB, OKLCH), a written description, psychology, meaning, the signs and symbols it carries, cultural readings, uses, history, accessibility notes, and its classic harmonies.

  • colorstring · requiredHEX, rgb() or hsl().

Describe a palette

POST /tools/describe_palette

A written guide to a palette of 1 to 12 colors: its mood, tags, contrast and lightness numbers, psychology, meaning, symbols, what it signals, how to use the colors together (background, text, accent, proportions), and a short profile of each color. Use detail "full" for the complete write-up of every color.

  • colorsarray · requiredThe palette, in order. HEX, rgb() or hsl().
  • detailstring"summary" (default) or "full".

Check text contrast (WCAG)

POST /tools/check_contrast

The WCAG 2 contrast ratio between a foreground and a background color, with pass or fail for AA and AAA at normal and large text and for UI parts. When it fails, it suggests the closest foreground that passes AA (4.5:1).

  • foregroundstring · requiredText or icon color.
  • backgroundstring · requiredBackground color.

Find accessible text and background pairs

POST /tools/find_accessible_pairs

Test every pair in a palette and list the ones that are readable as text, strongest first. Use it to choose a background and text color from a palette you already have.

  • colorsarray · required
  • levelstringMinimum level, default AA (4.5:1). "AA large" is 3:1 for big headings.

Convert a color between notations

POST /tools/convert_color

Convert any color to HEX, RGB, CMYK, HSB, HSL, HWB, LAB, LCH, XYZ and OKLCH at once.

  • colorstring · requiredHEX, rgb() or hsl().

Preview colors with color-vision deficiency

POST /tools/simulate_color_blindness

Show how colors look to people with protanopia (red-blind), deuteranopia (green-blind), tritanopia (blue-blind) or achromatopsia (no color), and which colors become hard to tell apart. An approximation, good for catching problems early.

  • colorsarray · required
  • typestringOmit to get all four.

Tailwind 50–950 scale

POST /tools/tailwind_scale

A Tailwind-style scale (50, 100 ... 950) around a color, plus the CSS variables and a Tailwind v4 @theme block.

  • colorstring · required
  • namestringScale name for the CSS, default "brand".

Shades and tints of a color

POST /tools/shades_and_tints

Lighter tints (mixed with white), darker shades (mixed with black), and a readable text color for each.

  • colorstring · required
  • stepsintegerSteps each way, default 5.

Get a premium palette by number

POST /tools/get_premium_palette

One of Tintly's 2,000,000 premium six-color palettes (near-black to a rich accent, in a "glow" or "studio" look). Pass an id from 1 to 2000000, or leave it out for a random one. The same id always gives the same palette.

  • idinteger

Browse premium palettes

POST /tools/browse_premium_palettes

List premium palettes, filtered by look (glow or studio) and hue family, in pages of up to 24.

  • lookstringOne of: glow, studio.
  • huestringOne of: red, orange, gold, lime, green, teal, sky, blue, violet, purple, pink, rose.
  • pageinteger
  • per_pageintegerDefault 12.

Get a generated palette by number

POST /tools/get_generated_palette

One of Tintly's 15,000,000 generated five-color palettes, by id (1 to 15000000). The same id always gives the same palette, with its style and color harmony.

  • idinteger · required

Search the generated palettes

POST /tools/search_palettes

Search the 15 million generated palettes with plain words: styles (pastel, neon, earthy, dark...), harmonies (analogous, triadic...), colors ("sage green", "#2463eb"), moods (warm, cool) and themes. Example: "warm earthy terracotta".

  • querystring · required
  • limitintegerDefault 8.

Limits and errors

Each key may make 60 requests a minute. Every response carries X-RateLimit-Limit and X-RateLimit-Remaining. Errors always look like { "error": { "code", "message" } }.

200OKThe tool ran. The answer is in result.
400INVALID_ARGUMENTSAn input was missing or wrong. The message says which one.
401MISSING_KEY, INVALID_KEYNo key, or a key that is revoked, expired or mistyped.
404NOT_FOUNDThere is no tool with that name.
429RATE_LIMITEDMore than 60 requests a minute on one key. Wait for Retry-After seconds.
503AUTH_UNAVAILABLEThe key service could not be reached. Try again in a moment.

Or connect an AI assistant

Tintly speaks the Model Context Protocol at https://www.trycolorkit.com/api/mcp, with the same key. Pick your assistant for the exact setup.