Pricing and limits
Colour data is free. Painting costs credits (with an API key or OAuth sign-in) or USDC (with x402).
search_paint_colors, get_paint_color, find_equivalents and list_brands. No account, no key.
Credits per colour
Section titled “Credits per colour”With an API key or OAuth sign-in, painting spends the credits of your Muro account, as in the app.
| Quality | Resolution | Credits per colour | Plan needed |
|---|---|---|---|
standard |
about 1K | 1 | Any plan |
hd |
about 2K | 2 | Pro or higher |
ultra |
about 4K | 3 | Premium |
- A time-of-day version from
relight_roomcosts 1 credit. get_visualizationandget_creditscost nothing.- Credits are held before painting starts. A colour that fails is refunded. The response says how many credits came back.
- There are no free trials.
- A call is refused up front if the account lacks the credits (see Errors).
x402 prices (USDC on Base)
Section titled “x402 prices (USDC on Base)”Without an account, an agent pays per call in USDC on Base mainnet (eip155:8453). Details are on the x402 page.
| Call | Price |
|---|---|
visualize_room, Standard |
0.25 USDC per colour |
visualize_room, HD |
0.50 USDC per colour |
visualize_room, Ultra |
0.75 USDC per colour |
relight_room |
0.25 USDC |
get_visualization |
Free: the job_id is the proof of purchase |
get_credits |
Needs a Muro key (not sold through x402) |
The price of a call is the number of colours times the per-colour price, for example 4 colours in HD is 2.00 USDC. The payment is settled only after the images are delivered, so if painting fails you are not charged.
Photos
Section titled “Photos”| Formats | JPEG, PNG, WebP |
| Maximum size | 12 MB |
| Given as | image_url (public link) or image_base64 |
| Surfaces | interior walls, facade, roof |
| Not accepted by the server | HEIC/HEIF. The Muro app and web app convert it; the CLI converts it on macOS; agents should send a JPEG |
The format is detected from the file’s bytes, not from the claimed type. Links to usemuro.com itself cannot be fetched by the server: send the photo as image_base64 or host it elsewhere. In claude.ai and ChatGPT a pasted image cannot be passed on to a tool, so give the photo as a link.
Per call
Section titled “Per call”- 1 to 12 colours per
visualize_roomcall. Each colour is a separate painted image. - Up to 100 photo uploads a day per account.
Timings
Section titled “Timings”- About 30 seconds for two colours in Standard.
- About 15 seconds for a time-of-day version.
visualize_roomwaits about 45 seconds. If colours are not ready, it returns ajob_idandproject_id. Callget_visualizationto collect the rest (each call waits up to about 25 seconds). The CLI waits for the job for up to 15 minutes.
Rate limits
Section titled “Rate limits”Limits are per client IP address and per 60 seconds. They are enforced per Cloudflare data centre, so they are approximate.
| Traffic | Limit |
|---|---|
Free colour calls, no Authorization header (including x402 calls) |
600 per 60 s |
Any request with an Authorization header (API key), and /account/mcp, /register, /authorize, /oauth/* (OAuth) |
60 per 60 s |
The server card (GET /.well-known/mcp.json), the landing text at GET / and CORS preflight requests are not counted.
Above the limit the server answers HTTP 429 with Retry-After: 60. See Errors. The 600 limit is generous because hosted connectors such as claude.ai and ChatGPT share vendor IP addresses.