Paletoo API / MCP
Paletoo’s programmable surface is a remote Model Context Protocol server. An AI assistant or your own agent connects to it, the person signs in with their Paletoo account, and the agent makes and changes real, editable designs in that person’s files.
The server
| Endpoint | https://paletoo.com/mcp |
|---|---|
| Transport | Streamable HTTP: POST JSON-RPC 2.0; a GET for an event stream is answered 405 (no server-initiated stream), as the specification allows |
| Protocol versions | 2025-06-18, 2025-03-26, 2024-11-05 |
| Sign-in | OAuth 2.1, authorization code with PKCE (S256), public clients; dynamic client registration and Client ID Metadata Documents. Scope designs |
| Discovery | /.well-known/oauth-protected-resource/mcp (RFC 9728), /.well-known/oauth-authorization-server (RFC 8414), /.well-known/mcp/server-card.json (MCP server card), /.well-known/api-catalog (RFC 9727) |
| Health | /mcp/status: whether the server is on, as JSON, nothing about anyone |
| Capabilities | tools, prompts, resources |
Connect
- Claude: Settings → Connectors → Add custom connector, URL
https://paletoo.com/mcp. - ChatGPT: Settings → Apps → Advanced → Developer mode → Create, URL
https://paletoo.com/mcp, authentication OAuth. - Claude Code:
claude mcp add --transport http paletoo https://paletoo.com/mcp, then/mcpto sign in. - Codex:
codex mcp add paletoo --url https://paletoo.com/mcp, thencodex mcp login paletoo. - Your own agent: any MCP client with Streamable HTTP and OAuth. The first call without a token gets
401withWWW-Authenticate: Bearer resource_metadata=…; follow it, register, send the person to sign in, then call withAuthorization: Bearer.
Connecting opens paletoo.com: the person signs in (a Paletoo account is free) and presses Allow. The agent then works in that person’s files only, and the person can disconnect it at any time (account settings → Connected apps).
Tools
The server lists 37 tools. Tool names and descriptions are in English, as the assistant reads them.
Make
| Tool | What it does | Kind |
|---|---|---|
get_started | What Paletoo can do and how to begin, for the assistant. | reads |
create_design | A finished, editable design from a template, in one call: posts, stories, carousels, thumbnails, cards, posters. | writes |
compose_design | A design laid out from scratch, element by element, when no template fits. | writes |
create_campaign | One brief → a post, a story and a banner (or the sizes named) in one look, each laid out for its shape. | writes |
make_campaign | create_campaign under its older name. | writes |
bulk_create | Many designs from a table: one row, one design. | writes |
make_variants | 2–5 alternative layouts of the same words beside the design. | writes |
style_battle | Three or four different art directions of one idea, side by side. | writes |
keep_direction | Keeps the direction chosen after a style battle and removes the others. | writes |
surprise_me | An unexpected but tasteful direction for an idea, with a line on why. | writes |
brand_from_logo | From a logo: a palette, a type pairing, colour and text styles, a brand sheet. | writes |
generate_visual | A picture by words: Paletoo’s own library first; AI generation for credits only after the person agrees. | writes |
upload_picture | A one-time upload link (15 minutes, for the person only) for their own photo or logo. | writes |
Change
| Tool | What it does | Kind |
|---|---|---|
modify_design | Changes words, sizes, colours, the photo or the look; each change is a new version. | writes |
refine_design | Polishes a design: spacing, hierarchy, contrast. | writes |
adjust_design | Precise changes to one element: position, size, colour, type. | writes |
edit_text | Changes the words of a design by role. | writes |
replace_photo | Puts another photo in a design. | writes |
remove_background | Cuts the subject out of a photo in a design. | writes |
apply_effect | Applies an effect: risograph, halftone, glitch, duotone, grain and more. | writes |
apply_style_recipe | Applies a whole style (a look made of several effects). | writes |
apply_brand | Puts the person’s brand kit (colours, fonts) on a design. | writes |
add_element | Adds a shape, an icon, a sticker or a line. | writes |
resize_design | The same design in another format, laid out again for its shape. | writes |
translate_design | The design’s words in another language, in a copy. | writes |
animate_design | Makes a design move with Paletoo’s own motion; with the design open, also the video. | writes |
motion_preview | A short looping GIF of a design in motion, made by the person’s open editor. | writes |
mockup_it | Puts a design into a mockup that suits it: a phone, a frame, a tee, a laptop. | writes |
share_design | Only when the person asks: turns on a share link (view or edit) and returns it. | writes |
Read and export
| Tool | What it does | Kind |
|---|---|---|
get_preview | A picture of the design, rendered by Paletoo. | reads |
get_design | Reads a design: artboards, words by role, photos and colours. | reads |
describe_design | Says what is where in a design, for precise changes. | reads |
list_designs | The person’s designs, newest first. | reads |
list_styles | The styles, templates and looks. | reads |
describe_catalogue | Paletoo’s catalogue: formats, template families, effects. | reads |
export_design | The design as a file (PNG, JPG, PDF, MP4, GIF, WebM), for the person alone, for an hour. | reads |
export_campaign | Every format of a design in its fitting file, in one zip, for an hour. | reads |
Prompts and resources
Prompts: instagram_campaign, event_poster, brand_kit_from_logo, surprise_me, style_battle, get_started. Resources: paletoo://brand-kit, paletoo://designs/recent, and the template paletoo://designs/{id}.
Example prompts
- «Make an Instagram post and story for my coffee shop opening on Saturday, warm minimal style»
- «Make a poster for a jazz night with a risograph look»
- «Here is my logo — make a brand sheet with colours and fonts»
- «Animate my post and export it as an MP4»
- «Make the headline bigger and try the halftone look»
Limits
- Designs a day: 10 on the free plan, 200 with Pro (resets at midnight UTC).
- At most 60 tool calls a minute per person.
- It cannot delete designs, invite people or see files that are not shared with the person. It spends AI credits only on a generated picture, and only after the person agrees to the price.
- Looks and video need the design open in the person’s editor; previews also work with the design closed (rendered by the server, a daily number).
Errors
JSON-RPC errors use the JSON-RPC shape ({"jsonrpc":"2.0","error":{"code","message"}}). Sign-in errors use OAuth’s ({"error","error_description"}, RFC 6749 / 6750) with a hint. The site’s own /__… endpoints are for the editor, not a public API; they answer {"error":{"code","message"}}.
Is there a REST API?
No public REST API, so no OpenAPI description: the editor’s own endpoints change with it and are not meant for others. Everything an agent can do goes through the MCP server above, with the person’s consent.
More
- Connector documentation: every tool, privacy, troubleshooting
- Paletoo in Claude and ChatGPT: what it looks like
- llms.txt: the site for language models; every page is also Markdown (add
.mdto its address, or sendAccept: text/markdown) - Contact: [email protected]