GuidesHow to Use Seedream 5.0 in Claude Code and Cursor?
Makernice Team · ·
Prices as of November 12, 2026 (price list v15).
Key takeaways
- Seedream 5.0, ByteDance's image model, can be called from Cursor and Claude Code through the Makernice MCP server.
- Seedream 5.0 has a single output tier, priced as 2k, so its requests carry no resolution field.
- Edits with Seedream 5.0 accept up to 14 reference images, and the price per edited image stays the same however many you attach.
- Reference images have to be public https links to JPEG or PNG files.
Seedream 5.0 works from Cursor and Claude Code once the Makernice MCP server is connected; the agent quotes each image with estimate_cost and starts it with generate after you agree. At price list v15 (November 12, 2026) a Seedream 5.0 image is $0.0336 from text and $0.0336 as an edit.
What do you install in Claude Code or Cursor?
Seedream 5.0 needs nothing installed besides the Makernice server entry. Cursor users open the Cursor page, click Add to Cursor (or copy its ~/.cursor/mcp.json block), then sign in next to makernice in the MCP settings. Claude Code users take the claude mcp add --transport http --scope user makernice command from the Claude Code page, run it, and sign in through /mcp the next time Claude Code starts.
The connection is authorized with its own per-job limit, and you can add a daily limit. get_balance returns both along with available_usd, which is useful when you plan to let the agent produce a series of images.
Seedream 5.0 without an editor: Claude and ChatGPT connectors
If you would rather ask for Seedream 5.0 in a chat window than in an IDE, Claude and ChatGPT can reach the same Makernice tools. Claude takes the server as a custom connector (how to add it). ChatGPT on the web takes it as a custom MCP server with OAuth sign-in, on plans or workspaces that permit those, and points at its own server address (how to add it); that version leaves out get_topup_link. Nothing else changes for Seedream 5.0: the assistant gets a quote from estimate_cost, which does not reserve the amount, passes the figure you approve to generate as max_cost_usd, and fetches the finished image with check_job.
How does a Seedream 5.0 request go from prompt to file?
A Seedream 5.0 request goes through three tool calls: estimate_cost for the price, generate once you approve it, and check_job to collect the file. Here is the exchange in Cursor for a four-photo edit:
You: Take these four sneaker photos and make one square flat-lay collage on concrete. Price first, please.
Cursor prepares an edit with all four links and asks for a quote:
{
"name": "estimate_cost",
"arguments": {
"input": {
"model": "seedream-5.0",
"mode": "i2i",
"prompt": "Combine the four sneaker photos into one flat-lay collage on a pale concrete floor, evenly spaced, top-down view, matching shadows",
"reference_images": [
"https://example.com/drops/sneaker-red.jpg",
"https://example.com/drops/sneaker-white.jpg",
"https://example.com/drops/sneaker-black.jpg",
"https://example.com/drops/sneaker-green.jpg"
],
"aspect_ratio": "1:1"
}
}
}Cursor: That edit is $0.0336 for one image on price list v15. No job has been created. Shall I run it?
You: Run it.
{
"name": "generate",
"arguments": {
"input": {
"model": "seedream-5.0",
"mode": "i2i",
"prompt": "Combine the four sneaker photos into one flat-lay collage on a pale concrete floor, evenly spaced, top-down view, matching shadows",
"reference_images": [
"https://example.com/drops/sneaker-red.jpg",
"https://example.com/drops/sneaker-white.jpg",
"https://example.com/drops/sneaker-black.jpg",
"https://example.com/drops/sneaker-green.jpg"
],
"aspect_ratio": "1:1"
},
"max_cost_usd": "0.0336",
"request_id": "sneaker-collage-square-a"
}
}Makernice re-prices the input when generate is called. Above max_cost_usd or the connection's per-job limit, the call is refused and nothing is created; at or below, the job starts and is charged that quote. Repeating the call with the same request_id and input returns the existing job, and changing the input under an old id is refused, so retries can't double-charge.
To collect the image, Cursor calls check_job with job_id and a wait_s of up to 55 seconds. The file link in outputs[0].url is signed and valid for 24 hours, and calling check_job later issues a new one. console_url opens the same run in the Makernice console, and a configured account webhook is notified for MCP jobs too.
Why doesn't Seedream 5.0 ask for a resolution?
Seedream 5.0 has one output size on Makernice, priced at the 2k rate, so there is no tier to choose and the request leaves resolution out. What you can set is the shape: 1:1, 4:3, 3:4, 16:9, 9:16, 2:3, 3:2, 21:9. Wide formats are a good fit for banners; here is the agent quoting a 21:9 header image from text:
{
"name": "estimate_cost",
"arguments": {
"input": {
"model": "seedream-5.0",
"mode": "t2i",
"prompt": "Wide banner of a city skyline at blue hour reflected in a calm harbor, minimal composition, space on the left for a headline",
"aspect_ratio": "21:9"
}
}
}If you need to pick between 1k and 2k, Seedream 5.0 Pro and Seedream 5.5 take a resolution field. Specifications for this model, including the reference image size rules, are on the Seedream 5.0 model page.
How many reference images can a Seedream 5.0 edit take?
A Seedream 5.0 edit takes up to 14 reference images, and the four rules below cover what those images must be and how they affect the price.
- Up to 14 links in
reference_images, each a public https JPEG or PNG of up to 10 MB. - The per-image edit price doesn't change with the number of references, so a collage of many photos is priced like a single-photo edit.
- Local files, data URLs and links that need a login won't work; upload the photos to public storage first.
- Edits take the same aspect ratios as text-to-image.
Which refusals matter when an agent makes many Seedream 5.0 images?
Agents often loop through a list of images, and each generate is a separate job. Makernice answers a refused call with readable text and creates nothing. The first column gives the refusal's name in the server code, the second the beginning of the text returned.
| Refusal | What the tool returns | What to do |
|---|---|---|
concurrency_limit_reached | "Too many jobs are running for this account right now." | Have the agent wait for running jobs with check_job before it starts the next image |
daily_spend_limit_reached | "This connection has reached its daily spend limit." | The limit resets at 00:00 UTC; raise it for this connection if the batch is planned |
request_id_conflict | "This request_id was already used with different parameters." | Give every image in a loop its own id |
invalid_request | "Invalid parameters" | The text names the field, for example more than 14 references; fix it and estimate again |
insufficient_balance | "Insufficient balance for this job. Nothing was charged." | Top up and resend the same request |
When a job fails after it starts, for example because a reference image is rejected by moderation, check_job shows status failed and an error object, billing turns to released and the hold is returned. Images blocked by output moderation after they are made are still charged; see failed generations.
