Account
AI assistants & API keys
ColorCraft works as an MCP server, so an AI assistant can use it for you: research a niche, plan and draw a book, make its cover and listing, and export the print files. Claude, ChatGPT, Cursor, Claude Code and your own agents can connect. They act as your account and use your pages, within limits you choose.
The server address is https://colorcraft.ai/api/mcp.
This is the reference. For what to ask for, with example prompts, see Using ColorCraft with an AI assistant.
An assistant spends real pages
Before you start
- Connecting an app (Claude, ChatGPT): any ColorCraft account. Reading is always allowed; making books needs a plan or the free trial, as on the website.
- API keys (Claude Code, Cursor, scripts, your own agents): a paid Creator plan or higher. Keys keep working for reading if the plan ends, but stop spending.
- Current Terms. If our Terms changed since you last accepted them, an assistant can still read but can’t spend until you accept them on colorcraft.ai.
- Accounts with free pages from before plans existed need a plan to spend through an assistant; the pages still work on colorcraft.ai.
Connect your assistant
Claude and ChatGPT: Connect
- 1
Add ColorCraft as a custom connector
In your app’s connector settings, add a custom connector with the address
https://colorcraft.ai/api/mcp. - 2
Sign in and choose what it may do
A ColorCraft page opens. Sign in (or sign up), check the app’s name, and tick what it may do. Research niches starts ticked; Plan and draw books and Covers, listings and print files spend pages and start unticked. Under Limits for this app, set how much it may spend. Then click Approve.
- 3
Ask for something
Try “What can I make with the pages I have left?”. The app never sees your password, and it never needs a key.
If your app can’t connect this way yet, use an API key with a tool that can send a header (below).
Claude Code
Create an API key (below), then run:
claude mcp add --transport http colorcraft https://colorcraft.ai/api/mcp \
--header "Authorization: Bearer cc_live_…"To share the set-up with a project without sharing the key, put this in the project’s .mcp.json and keep the key in the COLORCRAFT_API_KEY environment variable:
{
"mcpServers": {
"colorcraft": {
"type": "http",
"url": "https://colorcraft.ai/api/mcp",
"headers": { "Authorization": "Bearer ${COLORCRAFT_API_KEY}" }
}
}
}Cursor and other MCP clients
Add a remote server with the address and an Authorization header. In Cursor’s MCP settings file:
{
"mcpServers": {
"colorcraft": {
"url": "https://colorcraft.ai/api/mcp",
"headers": { "Authorization": "Bearer cc_live_…" }
}
}
}Your own agent
With the Claude Agent SDK (TypeScript; the Python SDK takes the same server settings):
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Find a strong coloring-book niche and plan a 24-page book. Ask me before spending.",
options: {
mcpServers: {
colorcraft: {
type: "http",
url: "https://colorcraft.ai/api/mcp",
headers: { Authorization: `Bearer ${process.env.COLORCRAFT_API_KEY}` },
},
},
allowedTools: ["mcp__colorcraft__*"],
},
})) {
if (message.type === "result" && message.subtype === "success") console.log(message.result);
}With the Claude API’s MCP connector, send the key as the server’s authorization_token and the anthropic-beta: mcp-client-2025-11-20 header:
{
"model": "claude-opus-5-5",
"max_tokens": 16000,
"mcp_servers": [
{ "type": "url", "url": "https://colorcraft.ai/api/mcp", "name": "colorcraft", "authorization_token": "cc_live_…" }
],
"tools": [{ "type": "mcp_toolset", "mcp_server_name": "colorcraft" }],
"messages": [{ "role": "user", "content": "What can I make with the pages I have left?" }]
}Any other MCP client works the same way: Streamable HTTP to the address above, with Authorization: Bearer cc_live_…. The server is stateless and speaks MCP 2026-07-28 and the 2025-era versions back to 2024-10-07. Send one JSON-RPC message per request: batches work only on protocol 2025-03-26 and older.
Keys go in the header, never in the address
Create an API key
- 1
Open the Developer page
Open the account menu and choose Developer. In API keys, click Create key.
- 2
Name it, choose what it may do, and set its limits
Give it a name you’ll recognise (“Claude Code laptop”). Account is always on; Research, Create and Finish start ticked, so untick what it doesn’t need. Set its spending limits and when it expires.
- 3
Copy it now
The key (it starts with
cc_live_) is shown once. Copy it into your tool straight away; we keep only a scrambled fingerprint, so we can’t show it again. Lost it? Revoke it and make another.
The Developer page also lists each key’s and app’s use: calls and pages over the last 7 and 30 days, the last 50 calls, and what is left of today’s limits. Revoke (a key) and Disconnect (an app) stop it at once. Removing ColorCraft inside an app only deletes the app’s copy: disconnect it here as well.
What an assistant can do
27 tools in four groups. An assistant only sees the groups you allowed. Everything is listed with its cost in pages of your balance; anything not marked otherwise is free.
Account and jobs (Always allowed)
Free reads. Start with get_account: it says what the assistant may do and, when it can’t spend, the one thing you need to do.
| Tool | What it does | Cost |
|---|---|---|
get_account | Your plan, pages left, research searches left, Terms status, this key’s or app’s limits and what is left of them today, and the next step when spending is blocked. | Free |
list_projects | Your books, newest first, with kind, status and progress. | Free |
get_project | One book’s pipeline: pages, cover, listing, exports and what is left to finish. | Free |
list_active_jobs | Everything drawing, waiting for you, or recently failed, so a lost conversation picks up where it left off instead of paying twice. | Free |
get_usage | This key’s or app’s calls, errors and pages spent over the last days. | Free |
get_job | The status of any long job. Waits up to 25 seconds for news, so the assistant isn’t polling in a tight loop. | Free |
Research (Research)
Niche Research for KDP, the same reports you see in the app.
| Tool | What it does | Cost |
|---|---|---|
list_niche_opportunities | This week’s strongest niches from our weekly scan. Opening one with get_niche_report is free. | Free |
research_niche | Researches a niche for one book type and returns a report. | 1 research search (not pages) |
get_niche_report | Reads a report: verdict, reasons, price and page-count guidance, keyword ideas, and optionally the competing books. | Free |
list_research_history | Reports you already hold, so the assistant reuses them instead of searching again. | Free |
create_book_brief | Turns a report into an editable book brief, after a licensed-character check. | Free |
get_book_brief | Reads a brief. | Free |
update_book_brief | Changes a brief’s fields; the licensed-character check runs again. | Free |
Create (Create (spends pages))
Plan a book first for free, then draw it. Every book kind goes through plan_book.
| Tool | What it does | Cost |
|---|---|---|
get_create_options | Valid styles, trim sizes, age ranges, page limits and puzzle settings for each book kind. | Free |
list_characters | Your saved characters, so a series keeps the same cast. | Free |
plan_book | Drafts a coloring book, storybook, comic or puzzle book from a brief or a theme, with your own text if you like. Moderation and the licensed-character check run here, and it says what drawing will cost. | 0 pages |
get_plan | Reads a plan, a few pages at a time. | Free |
revise_plan | Rewrites one page of a plan before anything is drawn. | 0 pages |
create_book | Starts drawing a planned book and returns a job to follow with get_job. | Coloring pages 1 page each, storybook pages 1 page each, comic pages 2 pages each, puzzles 1 page each (solution pages free) |
approve_preview | Approves a storybook’s or comic’s preview pages, which draws the rest. | The remaining pages |
retry_book | Draws only the missing or failed pages of a book, keeping every page already drawn. | The missing pages |
cancel_book | Stops a book that is drawing or waiting at its preview, for good. Drawn pages stay in your project. | Free |
Finish (Finish (covers spend pages))
Cover, listing and print files for a KDP paperback.
| Tool | What it does | Cost |
|---|---|---|
generate_front_cover | Paints AI front-cover art and saves it as the book’s cover. | 2 pages per picture |
update_cover_design | Sets the cover’s title, author, colours, back-cover text and layout, without new art. | Free |
export_cover_wrap | Builds the full paperback cover PDF (back, spine and front) from the saved design. | Free |
export_interior_pdf | Builds the print-ready interior PDF. | Free |
generate_listing | Writes an Amazon description and 20 keyword phrases for the book and saves them. | 0 pages |
Research uses research searches, not pages: trials, Mini, Starter and older plans get 3 in total; paid plans get 30 a month on Creator, 100 on Professional and 300 on Studio. Reading a report you already hold never uses one.
Spending limits
Three things stop an assistant from spending more than you meant, even one left running overnight:
- spend_limit on every call that uses pages. The assistant says the most the call may use. If the cost is higher, nothing starts and the call answers
limit_exceeded. - idempotency_key on every call that spends or creates. If the same call arrives twice (a retry after a dropped connection), it is done and charged once and the first answer comes back. The same key with different arguments answers
idempotency_conflict. - Limits on each key and app, checked before any work starts. Change them on the Developer page; these are the defaults:
| Limit | Default |
|---|---|
| Pages per call | 120 |
| Pages per day | 250 |
| Books started per day | 5 |
| Books in progress at once | 3 |
| Research searches per day | 10 |
| Calls per minute | 60 reads, 10 that spend |
Pages per day count what has been charged plus what running jobs still expect to use, so two books started at once can’t both slip under the limit. Your balance is checked the same way across all your keys and apps.
Long jobs
- Drawing a book, building a niche report, painting cover art and making PDFs take minutes. The tool answers at once with a
job_id; the assistant follows it withget_job, which waits up to 25 seconds a call and answers as soon as something changes. - If the conversation ends, the work carries on and shows up in your dashboard. Another conversation finds it with
list_active_jobs. - Storybooks and comics of 8 pages or more draw a 2-page preview first and wait. The assistant should show you the preview, then call
approve_previewto draw the rest orcancel_bookto stop, so a look you don’t like costs 2 pages, not a whole book. - Files come back as download links, fresh on every
get_jobcall and valid for about an hour. The files themselves are kept for 7 days; export again after that.
When you need to do something
Some things only you can do, in a browser: start a plan or the trial, upgrade, accept new Terms, raise a limit, or unlock a trial book’s clean print file. When that happens the tool says so with a human_action: a reason, a colorcraft.ai link for you to open, and what the assistant will do afterwards (check your account again, or retry the call). Assistants never take payment.
On the free trial, interior PDFs and cover wraps come back as watermarked previews, not for KDP, with a link to unlock the clean file for that book or start a plan.
What it doesn’t do
- Files are for KDP paperbacks. Niche reports cover hardcover too, but say when ColorCraft can’t make that format.
- Amazon KDP has no upload API, so the journey ends with files you upload to KDP yourself: the interior PDF, the cover wrap PDF and the listing text. Paperbacks need at least 24 interior pages, and the tools run the same checks the editor does, but Amazon decides whether to accept a book.
- No ordering printed copies, no changes to your plan or payment details, and nothing you made is ever deleted.
- No uploading your own manuscript, photos or pictures, and no page-by-page editing. Use the app for those.
Errors
Every refusal comes with a code an assistant can act on and a message in plain words. Each tool answers with one text block: a one-line summary, a blank line, then JSON. A successful call also returns that JSON as structured content. A refusal is marked as an error and has no structured content; its JSON is {error_code, message} plus details such as human_action, retry_after_seconds or, for invalid_args, the issues. An argument a tool doesn’t take is refused with invalid_args rather than ignored. Some refusals also carry route_code, ColorCraft’s internal reason, for support; assistants should act on error_code. The codes:
| Code | Meaning |
|---|---|
plan_required | Your account:The account needs a plan or trial for this (or, for API keys, a paid plan high enough). |
terms_required | You need to accept the current Terms on colorcraft.ai first. |
feature_unavailable | This part of ColorCraft is paused for assistants or not on your plan. |
insufficient_balance | Money and limits:Not enough pages left, counting what your other running jobs will still use. |
spend_cap_reached | This key’s or app’s daily limit is used up. |
too_many_in_flight | Too many books are drawing at once for this key or app. |
limit_exceeded | The call would cost more than its spend_limit. |
rate_limited | Too many calls in a minute, a retry_book within 30 seconds of the book last changing, or (create_book) the account’s hourly limit on books started is used up; retry_after_seconds says how long to wait, up to an hour for books started. |
invalid_args | The request:An argument is missing or wrong; the error lists which. |
not_found | No such book, plan, job or report in this account. |
expired | A plan or link that is too old to use. |
idempotency_conflict | The idempotency_key was already used with different arguments, or that earlier call failed part-way. |
busy | The first call with this idempotency_key is still running. |
not_ready | The book:The plan or book isn’t in a state this call can act on: something has to happen first (saved cover art before a cover wrap), or it has moved past it (a finished book has nothing to retry). From the book tools (revise_plan, create_book, approve_preview, retry_book) the error always has status, retryable and next_actions: retryable is true while the plan or book is still drafting or drawing, so check get_job and try again later; false means waiting won’t help, so call one of next_actions instead. Other tools say what has to happen first in the message, usually with next_actions or retry_after_seconds. |
book_incomplete | The book is still drawing, waiting at its preview, or missing pages. |
content_refused | Content:Moderation refused some text or a picture; rephrase and try again. |
licensed_content | The text names a trademarked character, brand or real person. |
upstream_unavailable | On our side:An outside service we use is having trouble; try again shortly. |
timeout | The work took too long; check list_active_jobs before retrying a paid call. |
internal | Something went wrong at ColorCraft; check list_active_jobs before retrying a paid call. |
Your data
An app you connect sees what its tools return: your account’s email, plan and page balance, your books’ titles, plans, reports and file links. It never sees your password or payment details. What it does with them is up to that app and its own privacy policy. We keep a log of each call (the tool, the outcome, the pages it used) for 90 days, so you and we can see what happened; the arguments are removed after 30 days. See the Privacy Policy and the Terms of Service, which cover API keys and connected apps.