CP
FOR AI AGENTS & ASSISTANTS

Paint Color MCP Server

Give your AI assistant real paint knowledge. One remote MCP server puts 29,000+ real colors from all 21 major US brands behind seven tools — search by sentence, look up any color, find its match in every other brand, compare two, build a palette. Every answer is a real, buyable paint with its SKU, hex, LRV and a page link. Free, no key, no sign-up.

https://compositepaint.com/api/mcp

Connect in One Minute

Claude (web or desktop)

Settings → Connectors → Add custom connector → paste the URL above. No login step — it connects instantly.

Claude Code

claude mcp add --transport http compositepaint https://compositepaint.com/api/mcp

Cursor, Windsurf, and JSON-configured clients

Add this to the client's MCP config (Cursor: .cursor/mcp.json):

{
  "mcpServers": {
    "compositepaint": { "url": "https://compositepaint.com/api/mcp" }
  }
}

ChatGPT and other MCP-capable apps

Add it as a remote MCP server (Streamable HTTP) with the same URL. No authentication is required.

From a terminal

curl -s https://compositepaint.com/api/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Then Just Ask

  • →“Find me a warm greige with no purple undertones for a north-facing bedroom.”
  • →“What is the Behr equivalent of Benjamin Moore White Dove?”
  • →“Compare Agreeable Gray and Repose Gray — which is lighter and warmer?”
  • →“Build a calm palette around Hale Navy, all from Benjamin Moore.”
  • →“Show me grays with an LRV around 60.”
  • →“Something like First Waltz but a shade lighter.”

The assistant picks the right tool, runs it against the real database, and answers with actual paints, codes, and links to our color pages — never a made-up color name.

The Seven Tools

search_colors
Free-text search: a sentence, a name, a paint code, a hex. Understands undertones, room light, rooms, LRV, and "X but lighter".
args: query, limit
filter_colors
Exact attribute filters with no sentence reading — hue, lightness, warm/cool, undertone, room, brand, LRV window, nearest to a hex.
args: hue, lightness, temperature, vibrance, undertone, avoid_undertone, light, room, brand, lrv_min, lrv_max, near_hex, popular, limit
get_color
Everything about one color: SKU, hex, LRV, undertone, researched facts (rooms, light behavior, popularity), closest siblings in its brand.
args: color, brand
color_equivalents
The closest real match in every other brand, ranked by ΔE2000 — "the Behr version of Agreeable Gray".
args: color, brand, to_brand
compare_colors
Two colors side by side: ΔE between them, which is lighter, which is warmer, facts for each.
args: a, b, brand_a, brand_b
room_palette
Walls, trim, ceiling, accent and pop around one anchor color — each role filled with a real paint, optionally all from one brand.
args: color, brand, scheme, same_brand
list_brands
The brands in the database with color counts and page URLs.
args: —

Identify a color any way people do: a name (Agreeable Gray), a name with a brand (Swiss Coffee, Behr — several brands share that name), a paint code (SW 7029, OC-17), or a hex.

A Real Call

{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "color_equivalents",
              "arguments": { "color": "Agreeable Gray", "brand": "Sherwin-Williams" } }
}
{
  "source": {
    "name": "Agreeable Gray", "brand": "Sherwin-Williams", "sku": "SW 7029",
    "hex": "#D1CBC1", "lrv": 60, "popular": true,
    "url": "https://compositepaint.com/colors/sherwin-williams-agreeable-gray/"
  },
  "matches": [
    { "name": "Heritage Gray", "brand": "Valspar", "sku": "7007-24",
      "hex": "#D1CBC1", "lrv": 60, "deltaE": 0,
      "url": "https://compositepaint.com/colors/valspar-heritage-gray/" },
    { "name": "Doves Wings", "brand": "Dutch Boy", "sku": "443-1DB",
      "hex": "#D1CBC1", "lrv": 60, "deltaE": 0,
      "url": "https://compositepaint.com/colors/dutch-boy-doves-wings/" },
    { "name": "Agreeable Gray", "brand": "HGTV Home by Sherwin-Williams",
      "sku": "HGSW 3467", "hex": "#D1CBC1", "lrv": 60, "deltaE": 0,
      "url": "https://compositepaint.com/colors/hgtv-home-agreeable-gray/" }
    … one per brand, closest first
  ]
}

deltaE is the perceptual distance (ΔE2000) from the source color. Under about 2 reads as the same color on a wall. Results come back as text and asstructuredContent, so clients can show swatches directly.

What get_color Knows

{
  "color": { "name": "White Dove", "brand": "Benjamin Moore", "sku": "OC-17",
             "hex": "#EFEEE5", "lrv": 83, "undertone": "yellow", "popular": true,
             "url": "https://compositepaint.com/colors/benjamin-moore-white-dove/" },
  "facts": {
    "popularityRank": 2,
    "curatedForRooms": ["living-room", "kitchen", "cabinet", "bedroom", "bathroom", "trim", "exterior"],
    "undertoneLean": ["yellow"],
    "neverReadsAs": ["pink", "green"],
    "undertoneNote": "warm, grayed-out yellow — never pink, never green.",
    "bestInLight": ["south"],
    "riskyInLight": ["north"],
    "hasFullReview": true
  },
  "similarInBrand": [ … 5 nearest Benjamin Moore colors with ΔE … ]
}

The facts block comes from our researched color reviews — undertone behavior, which light it holds up in, which rooms it is curated for. It is present only where a review exists; the tool never guesses facts for the other colors.

Built to Stay Honest

The model never names a paint. Sentences are read into filters, and the same deterministic engine that powers our website search answers from the real database — so an invented color is impossible by construction.

Sentence searches return understood (how the sentence was read),ignored (words it could not use), relaxed(the strict read found nothing, these are looser), and missingBrand(a brand we don't carry was named). A good assistant reads these before presenting results.

Lookup tools return an error instead of a guess when a color doesn't exist. Nonsense input gets an empty answer, not the nearest five whites.

Fair Use

Free, no key. Name, code, hex, filter, lookup, equivalents, compare and palette calls are answered straight from the database and are effectively unlimited. Free-text sentence searches use AI to read the sentence and share a sitewide daily budget with per-minute caps; popular sentences are cached. When the budget is briefly exhausted, sentences fall back to keyword matching and the response says so in a note.

Please keep the url links to our color pages when you show results to people. Need more headroom for a product? Emaildavid@compositepaint.com.

Prefer plain HTTP? The same search is a GET endpoint — see thePaint Color Search API.