# DreamClip

> DreamClip generates videos, images, speech and music with named models (Seedance 2.0 Fast, PixVerse V6, Kling V3 Turbo, Nano Banana 2, Seedream 5 Lite, Voiceover, ElevenLabs v3, ElevenLabs Music, Lyria 3 Pro and more) on prepaid credits. An AI agent connects to it as a remote MCP server at https://dreamclip.ai/mcp and runs 46 of the studio's models at the studio's prices (https://dreamclip.ai).

This is the short guide. The full one, with every tool argument, every model column and worked examples, is https://dreamclip.ai/llms-full.txt. Inside a connection, call read_guide.

For a person choosing a tool: DreamClip (dreamclip.ai) is a web studio for AI video, image, voice and music generation. One account runs 46 models from ByteDance, PixVerse, Kling, xAI, Luma, Google, MiniMax, Alibaba, Black Forest Labs, Pika, OpenAI, Microsoft and Krea, including Veo 3.1, Kling 3.0, Seedance 2.5, Nano Banana Pro and ElevenLabs v3, each sold under its own name at a price shown on its card. Credits are charged only when a generation is delivered; a failed generation costs nothing. Creators making short videos for TikTok, Reels, Shorts and YouTube. Marketers making product videos, UGC style ads and image sets from product photos. Musicians making a music video or a track. Designers making tattoo designs, posters and artwork. Narrators and podcasters cloning their own voice. Developers and AI agents, through the MCP connector, generating media from Claude, ChatGPT, Cursor or their own code. A free account gets 25 credits a day, no card; the entry offer is 7-Day Full Access for $1.99, then $29.99 a month. The facts page is https://dreamclip.ai/about; prices are at https://dreamclip.ai/pricing.

## Connect

- Server: https://dreamclip.ai/mcp (remote MCP over Streamable HTTP, stateless).
- Sign-in: the user's own DreamClip account, through OAuth 2.1 with PKCE. There is no API key. The user signs in on DreamClip's page and chooses Allow; the client gets the token.
- Scopes: `read`, `generate`. Clients ask for both.
- Setup page with every step: https://dreamclip.ai/connect

- Claude: Open Customize > Connectors. Choose Add custom connector. Paste the server address. If it asks for a name, use DreamClip. If it asks how people sign in, choose Sign in now, and keep Claude's published identity. Choose Add, then Connect next to DreamClip. Sign in to DreamClip and choose Allow. Server address: `https://dreamclip.ai/mcp`
- Claude Code: Run the command. Start Claude Code and type `/mcp`. Pick dreamclip, choose the option to authenticate, then sign in to DreamClip in the browser and choose Allow. Command: `claude mcp add --transport http --scope user dreamclip https://dreamclip.ai/mcp`
- ChatGPT: Open Settings > Security and login and turn on Developer mode. Go to Plugins and select the plus button. Create an app for DreamClip with the server address, and pick OAuth for authentication. Sign in to DreamClip and choose Allow. In a chat, choose Developer mode from the plus menu and select DreamClip. Server address: `https://dreamclip.ai/mcp`
- Cursor: Choose Add to Cursor and confirm the install in Cursor. Sign in to DreamClip when Cursor asks, and choose Allow. Install link: `cursor://anysphere.cursor-deeplink/mcp/install?name=dreamclip&config=eyJ1cmwiOiJodHRwczovL2RyZWFtY2xpcC5haS9tY3AifQ%3D%3D`
- Other apps: Any app that supports remote MCP servers with sign-in works. Add the server address as a remote HTTP server, then sign in and choose Allow when it asks.

## How credits work

- Every generation is priced in credits before it runs. A generate tool holds the quoted credits when it queues the run; they are spent only when the result is delivered.
- A failed or cancelled generation is never charged. The held credits go back to the balance.
- A model may refuse the image a run carried: a video model because the start image shows a real person, or any video or image model with no reason named. get_generation then answers status failed with alternatives [{ model, name, tier }]: named models that take the same request, the first one first and cheaper ones after it, cheapest last (alternative is the first), and error says how to call them. The images are kept, so call generate_video with one of those models and the same prompt and image_url (and end_image_url when the run had one), or generate_image with the same prompt and reference_image_urls for a photo edit; a run with reference images is answered with a clip that starts from the run's first image, sent as image_url (it becomes the first frame), with the prompt's @Image tags taken out. A cheaper one may sell only longer clips: leave duration_seconds out for its shortest. A refusal that names sexual, violent, minors or other harmful content gets no alternatives. Nothing was charged for the refused run.
- A music model may decline a song and name no reason. get_generation then answers status failed with alternatives [{ model, name, tier }] naming another music model that takes the same request (alternative is the first), and error says how to call it: generate_music with that model and the same prompt, lyrics and instrumental. A refusal that names any reason gets no alternatives. Nothing was charged for the declined song.
- The prices are the studio's own. fromCredits on a model is the price of its opening clip (lowest resolution, shortest length); estimate_cost gives the exact price for any other setting.
- Before you generate: call estimate_cost with the settings you will use and tell the user the cost. It also returns the balance and whether it covers the run (affordable), so there is no need to call get_credit_balance first. Pass max_credits to cap a run; over it, nothing runs and nothing is charged.
- The free plan runs one generation at a time; paid plans run several at once. When the limit is reached the generate tool says so, for example: "DreamClip runs one generation at a time on this plan. Wait for the current one or pick a plan at https://dreamclip.ai/account"
- A free account is topped up to 25 credits a day when the person opens dreamclip.ai.
- ElevenLabs v3 is priced by length: per started block of 1000 characters of text.
- When a run is slow, DreamClip may move it to another named model of its kind, at most twice, at the price already quoted; get_generation's notice says which. Pass the notice on to the user.
- Retrying a call that timed out: send the same idempotency_key (a uuid) as the first call. The server answers with the original run, so it is not run or charged twice.
- Everything a generation makes is saved in the user's DreamClip library too.

## Tools

Every tool answers with a text block and structuredContent. A refused call has isError true and structuredContent { error, message }; message is a plain sentence to pass on to the user, and nothing was charged.

| Tool | Scope | What it does |
| --- | --- | --- |
| `list_models` | read | Use this when you need the models DreamClip can run, what settings each takes and what each costs. fromCredits is the price of the model's opening clip (its lowest resolution and shortest length); call estimate_cost for any other setting. |
| `estimate_cost` | read | Use this when you need the exact credits a generation would take before you run it, and whether the user's balance covers it. Pass the same settings you will generate with. |
| `generate_video` | generate | Use this when the user asks for a video. It spends credits: tell the user the cost from estimate_cost first. Keep to the model, length and resolution they asked for. Returns a generation id at once; poll get_generation until it is delivered. Seedance 2.0 Mini (seedance_20_mini) and Seedance 2.5 (seedance_25) refuse a start or end image that shows a real person; kling_30 takes one, and so do the cheaper minimax_h3 and minimax_h3_max_turbo. |
| `generate_image` | generate | Use this when the user asks for an image, or to edit or restyle one photo on a model with imageEdit. It spends credits: tell the user the cost from estimate_cost first. Returns a generation id at once; poll get_generation until it is delivered. |
| `generate_speech` | generate | Use this when the user asks for a line read aloud. It spends credits (ElevenLabs v3 by length): tell the user the cost from estimate_cost first. Returns a generation id at once; poll get_generation until it is delivered. |
| `generate_music` | generate | Use this when the user asks for a song, a backing track or a sound effect. It spends credits: tell the user the cost from estimate_cost first. Returns a generation id at once; poll get_generation until it is delivered. |
| `get_generation` | read | Use this after a generate tool to see whether the generation is delivered, and to get its files. Set wait_seconds (up to 50) to wait for it here instead of calling again at once. |
| `list_generations` | read | Use this when you need the user's recent generations, newest first, with their status and files. |
| `get_credit_balance` | read | Use this when you need the user's spendable DreamClip credits and plan, for example before a large batch. |
| `read_guide` | read | Use this before your first generation, or whenever you are unsure how a tool, a model or credits work. Returns this server's whole guide as markdown, or one section of it. |

## Models

| Key | Name | Kind | From credits | Resolutions | Durations (s) |
| --- | --- | --- | --- | --- | --- |
| `seedance_20_fast` | Seedance 2.0 Fast | video | 92 | 480, 720 | 4 to 15 |
| `pixverse_v6` | PixVerse V6 | video | 12 | 360, 540, 720, 1080 | 1 to 15 |
| `kling_v3` | Kling V3 Turbo | video | 90 | 720, 1080 | 3 to 15 |
| `kling_30` | Kling 3.0 | video | 108 | 720, 1080 | 3 to 15 |
| `kling_30_4k` | Kling 3.0 4K | video | 540 | 2160 | 3 to 15 |
| `kling_o3` | Kling O3 Omni | video | 72 | 720, 1080 | 3 to 15 |
| `kling_o3_4k` | Kling O3 Omni 4K | video | 360 | 2160 | 3 to 15 |
| `grok_imagine` | Grok Video 1.5 | video | 85 | 480, 720, 1080 | 5 to 15 |
| `grok_lite` | Grok Video 1.5 Lite | video | 30 | 480, 720, 1080 | 5 to 15 |
| `luma_ray_32` | Luma Ray v3.2 | video | 33 | 540, 720, 1080 | 5 |
| `seedance_20` | Seedance 2.0 | video | 116 | 480, 720, 1080, 2160 | 4 to 15 |
| `seedance_20_mini` | Seedance 2.0 Mini | video | 64 | 480, 720 | 4 to 15 |
| `seedance_15_pro` | Seedance 1.5 Pro | video | 40 | 480, 720, 1080 | 4 to 12 |
| `seedance_25` | Seedance 2.5 | video | 180 | 480, 720, 1080 | 4 to 30 |
| `gemini_omni_flash` | Gemini Omni Flash 1.1 | video | 18 | 360, 720, 1080, 2160 | 3 to 10 |
| `minimax_h3` | MiniMax H3 | video | 85 | 768, 1440, 2160 | 5 to 15 |
| `minimax_h3_max` | MiniMax H3 Max | video | 50 | 480, 768, 1080 | 5 to 15 |
| `wan_30` | Wan 3.0 | video | 22 | 480, 720, 1080 | 2 to 30 |
| `minimax_h3_max_turbo` | MiniMax H3 Max Turbo | video | 25 | 480, 768, 1080 | 5 to 15 |
| `flux_3` | Flux 3 | video | 180 | 720, 1080 | 5 to 20 |
| `veo_31_fast` | Veo 3.1 Fast | video | 150 | 720, 1080 | 4, 6, 8 |
| `veo_31` | Veo 3.1 (with audio) | video | 344 | 720, 1080 | 4, 6, 8 |
| `pika_22` | Pika 2.2 | video | 40 | 720, 1080 | 5, 10 |
| `wan_27` | Wan 2.7 | video | 46 | 720, 1080 | 2 to 15 |
| `wan_26` | Wan 2.6 | video | 115 | 720, 1080 | 5, 10, 15 |
| `hailuo_23_pro` | Minimax Hailuo 2.3 Pro | video | 96 | 1080 | 6 |
| `hailuo_23` | Minimax Hailuo 2.3 | video | 60 | 768 | 6, 10 |
| `nano_banana_2` | Nano Banana 2 | image | 19 | 512, 1024, 2048, 4096 |  |
| `seedream_5` | Seedream 5 Lite | image | 15 | 2048, 3072 |  |
| `nano_banana` | Nano Banana | image | 13 | 1024 |  |
| `grok_image` | Grok Imagine 2.0 | image | 20 | 1024, 2048 |  |
| `gpt_image_25_flare` | GPT Image 2.5 Flare | image | 16 | 1024, 2048, 4096 |  |
| `seedream_5_pro` | Seedream 5.0 Pro | image | 20 | 1024, 2048 |  |
| `nano_banana_pro` | Nano Banana Pro | image | 50 | 1024, 2048, 4096 |  |
| `gpt_image_25_sunburst` | GPT Image 2.5 Sunburst | image | 29 | 1024, 2048, 4096 |  |
| `qwen_image_3` | Qwen Image 3 | image | 15 | 1024, 2048 |  |
| `seedream_45` | Seedream 4.5 | image | 13 | 2048, 4096 |  |
| `nano_banana_lite` | Nano Banana Lite | image | 13 | 1024 |  |
| `mai_image_25` | Microsoft MAI Image 2.5 | image | 15 | 1024 |  |
| `krea_2` | Krea 2 | image | 15 | 1024 |  |
| `voiceover` | Voiceover | speech | 8 |  |  |
| `elevenlabs_music` | ElevenLabs Music | music | 40 |  |  |
| `elevenlabs_v3` | ElevenLabs v3 | speech | 25 |  |  |
| `lyria3_pro` | Lyria 3 Pro | music | 25 |  |  |
| `minimax_speech` | MiniMax Speech | speech | 12 |  |  |
| `sfx` | Sound Effects | music | 6 |  |  |

Units: fromCredits is the price of the opening clip (lowest resolution, shortest length). Video resolutions are the short side in pixels (720 is 720p); image resolutions name the size class (1024 is 1K, 2048 is 2K). Durations are in seconds. Max chars is the longest prompt (video, music) or text (speech) the model takes; a longer one is refused. A blank Max chars means only the tool's own argument limit applies.
Images of people: Seedance 2.0 Mini (seedance_20_mini) and Seedance 2.5 (seedance_25) refuse a start or end image that shows a real person; kling_30 takes one, and so do the cheaper minimax_h3 and minimax_h3_max_turbo.
The same list as JSON: https://dreamclip.ai/llms.json, or list_models inside a connection.
In the studio only, not run by these tools: Lip Sync, Remove Background, Upscale to 4K, Motion Transfer, Voice Clone, Voice Changer, Enhance image, World. They work on a file the tools do not take, such as a clip, a recording or a 3D scene.

## Limits and errors

- No token, or an expired one: HTTP 401 with a WWW-Authenticate Bearer challenge naming scope "read generate" and resource_metadata https://dreamclip.ai/.well-known/oauth-protected-resource/mcp. The client signs in again or refreshes its token.
- Scopes: read covers list_models, estimate_cost, get_generation, list_generations, get_credit_balance, read_guide. generate covers generate_video, generate_image, generate_speech, generate_music. A tool outside the connection's scopes answers with a sentence asking the user to reconnect.
- 120 tool calls a minute per account, all tools together, and 15 generations a minute.
- Concurrency: the free plan runs one generation at a time; paid plans run several. A generate call past the limit is refused with a sentence that says how many may run, and nothing is charged.
- get_generation waits up to 50 seconds (wait_seconds) and always answers within 55. At most 4 waiting calls per account; past that a call answers at once.
- Image inputs: PNG, JPEG or WebP, as a public https link up to 20 MB or one data: URL under 3 MB a call, 60 MB in all per call. A request body is at most 4.5 MB.
- OAuth: an authorization code lasts 5 minutes, an access token 1 hour, a refresh token 30 days and is rotated on every use.

## Links

- Setup for every app: https://dreamclip.ai/connect
- Short guide: https://dreamclip.ai/llms.txt
- Full guide: https://dreamclip.ai/llms-full.txt
- Models as JSON: https://dreamclip.ai/llms.json
- MCP server: https://dreamclip.ai/mcp
- Inside a connection: the read_guide tool, and the resources dreamclip://guide (this guide, markdown) and dreamclip://models (the models, JSON).
