MCP Server

Muro Paint Colors

com.usemuro/paint-colors
Commerce & Retail Design & Creative Public & reachable MCP 2025-11-25

What this MCP does

Searches paint-brand color catalogs, finds cross-brand equivalents and visualizes selected paint colors on room or building photos.

find_equivalents
Find equivalent paint colours in other brands
Find the closest colours in OTHER brands to a given paint colour or hex value, e.g. "Behr equivalent of Farrow & Ball Hague Blue" or "which Benjamin Moore is closest to #D1CBC1". Give either brand + name_or_code, or hex. Distance is CIEDE2000 ΔE with a verdict: under 1 practically identical, under 2 very close, under 3.5 close, otherwise similar (nothing above ΔE 6 is returned). By default returns the single best match per brand, closest first; pass brands to restrict the search (with one brand you get several options from it). Always pass on the caveat that on-wall results depend on base, sheen and tinting.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'hex': {'type': 'string', 'maxLength': 7, 'description': 'Source colour as hex, e.g. "#3D4E57" (instead of brand + name_or_code)'}, 'brand': {'type': 'string', 'maxLength': 60, 'description': 'Brand of the source colour (with name_or_code)'}, 'limit': {'type': 'integer', 'default': 8, 'maximum': 30, 'minimum': 1, 'description': 'Maximum results (default 8)'}, 'brands': {'type': 'array', 'items': {'type': 'string', 'maxLength': 60}, 'maxItems': 20, 'description': 'Only search these brands, e.g. ["Behr", "Sherwin-Williams"]'}, 'name_or_code': {'type': 'string', 'maxLength': 100, 'description': 'Name or code of the source colour'}}}
get_credits
Check Muro credits
Paid tools only. Show the Muro credit balance and plan of the connected account. Painting costs 1 credit per colour in Standard, 2 in HD and 3 in Ultra.
Read only
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
get_paint_color
Get a paint colour
Look up one paint colour by brand and exact name or code, e.g. brand "Sherwin-Williams" + "SW 7029" or "Agreeable Gray"; brand "Farrow & Ball" + "Hague Blue" or "30". Case, spacing and accents are ignored. A brand sold in several markets (Dulux UK/PL, Sikkens NL/DE/IT, Beckers SE/PL) may return one match per market. If nothing matches exactly, returns close suggestions instead.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['brand', 'name_or_code'], 'properties': {'brand': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'Brand name, e.g. "Behr", "Benjamin Moore", "Å\x9anieżka"'}, 'name_or_code': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Exact colour name or manufacturer code'}}}
get_visualization
Get a painted photo
Paid tools. Fetch the colours of a visualize_room job that were not ready yet, by job_id and project_id. Waits up to about 25 seconds. Costs nothing extra.
Read only Open world Idempotent
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_id', 'project_id'], 'properties': {'job_id': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'job_id from visualize_room'}, 'country': {'type': 'string', 'maxLength': 40, 'description': 'Where the user buys paint, e.g. "PL", "DE", "US": brands sold there come first in the shopping list'}, 'matches': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 0, 'description': 'Paints to list per colour (default 5, 0 = no shopping list)'}, 'project_id': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'project_id from visualize_room'}, 'match_brands': {'type': 'array', 'items': {'type': 'string', 'maxLength': 60}, 'maxItems': 10, 'description': 'Only list paints from these brands, e.g. ["Dulux", "Å\x9anieżka"]'}}}
list_brands
List paint brands
List the paint brands in the database with their number of colours and a brand page url. With country (ISO code like "DE", "PL", "US", "GB" or a name like "Germany"), returns the brands sold there in order of local relevance.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'country': {'type': 'string', 'maxLength': 40, 'description': 'Country code or name, e.g. "US", "DE", "Poland"'}}}
relight_room
Change the time of day
Paid (1 credit). Relight a finished interior visualization as day, evening or night, with lamps on or off, keeping the wall colour. Needs project_id and the color_key returned by visualize_room.
Open world
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'color_key', 'time'], 'properties': {'time': {'enum': ['day', 'evening', 'night'], 'type': 'string', 'description': 'Time of day'}, 'lamps': {'type': 'boolean', 'default': False, 'description': 'Lamps on'}, 'color_key': {'type': 'string', 'maxLength': 40, 'minLength': 1, 'description': 'color_key of the painted result, e.g. "c1"'}, 'project_id': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'project_id from visualize_room'}}}
search_paint_colors
Search paint colours
Find paint colours by name or code across all brands, e.g. "Hague Blue", "SW 7029", "agreeable gray", "grün". Matching ignores case and accents ("sniezny" finds "Śnieżny") and every word may be a prefix. Optionally restrict to one brand. Returns name, brand, code, hex, LRV (light reflectance, 0 = black, 100 = white), collection and the colour page url. To match a hex value or a colour from another brand, use find_equivalents instead.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'brand': {'type': 'string', 'maxLength': 60, 'description': 'Brand name, e.g. "Benjamin Moore", "Farrow & Ball", "Dulux"'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Maximum results (default 10)'}, 'query': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Colour name or code, or part of it'}}}
visualize_room
Paint a room photo
Paid (Muro credits, needs a Muro API key). Repaint the walls in a photo of a room, facade or roof in 1 to 12 colours at once and return one image per colour. Give the photo as image_url (a public link) or image_base64. Give each colour as brand + name_or_code from the catalogue (e.g. "Farrow & Ball" + "Hague Blue") or as hex. Without a photo it paints Muro’s sample room (or facade, roof). Every colour comes with a shopping list: the closest real paints from several brands with ΔE and a verdict; pass country to put brands sold there first. RAL works as brand "RAL" + "9005" or just "RAL 9005". Waits up to about 45 seconds; if some colours are still being painted, it returns a job_id for get_visualization. Tell the user the cost before calling: 1 credit per colour in standard quality.
Open world
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['colors'], 'properties': {'colors': {'type': 'array', 'items': {'type': 'object', 'properties': {'hex': {'type': 'string', 'maxLength': 7, 'description': 'Colour as hex, e.g. "#3D4E57" (instead of brand + name_or_code)'}, 'brand': {'type': 'string', 'maxLength': 60, 'description': 'Paint brand, e.g. "Farrow & Ball" (with name_or_code)'}, 'label': {'type': 'string', 'maxLength': 60, 'description': 'Optional display name for a hex colour'}, 'name_or_code': {'type': 'string', 'maxLength': 100, 'description': 'Colour name or code in that brand, e.g. "Hague Blue" or "30"'}}}, 'maxItems': 12, 'minItems': 1, 'description': '1 to 12 colours; each one is a separate painted image'}, 'country': {'type': 'string', 'maxLength': 40, 'description': 'Where the user buys paint, e.g. "PL", "DE", "US": brands sold there come first in the shopping list'}, 'matches': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 0, 'description': 'Paints to list per colour (default 5, 0 = no shopping list)'}, 'quality': {'enum': ['standard', 'hd', 'ultra'], 'type': 'string', 'default': 'standard', 'description': 'standard â\x89\x881K (1 credit per colour), hd â\x89\x882K (2), ultra â\x89\x884K (3; plan permitting)'}, 'surface': {'enum': ['interior', 'facade', 'roof'], 'type': 'string', 'default': 'interior', 'description': 'What is in the photo'}, 'image_url': {'type': 'string', 'maxLength': 2048, 'description': "Public link to the photo (JPEG, PNG or WebP, up to 12 MB). Leave out both image fields to paint Muro's sample room"}, 'image_base64': {'type': 'string', 'description': 'The photo as base64 or a data: URL, instead of image_url'}, 'match_brands': {'type': 'array', 'items': {'type': 'string', 'maxLength': 60}, 'maxItems': 10, 'description': 'Only list paints from these brands, e.g. ["Dulux", "Å\x9anieżka"]'}, 'paint_ceiling': {'type': 'boolean', 'default': False, 'description': 'Interiors only: paint the ceiling too'}}}
Changed
get_visualization
Oct. 2, 2026, 2:40 a.m.
Changed
visualize_room
Oct. 2, 2026, 2:40 a.m.
Added
relight_room
Sept. 30, 2026, 2:40 a.m.
Added
get_visualization
Sept. 30, 2026, 2:40 a.m.
Added
visualize_room
Sept. 30, 2026, 2:40 a.m.
Added
get_credits
Sept. 30, 2026, 2:40 a.m.
Added
list_brands
Sept. 30, 2026, 2:40 a.m.
Added
find_equivalents
Sept. 30, 2026, 2:40 a.m.
Added
get_paint_color
Sept. 30, 2026, 2:40 a.m.
Added
search_paint_colors
Sept. 30, 2026, 2:40 a.m.