Most "AI video" workflows I've seen look like this: write a prompt in one tab, paste it into a generator in another, wait, download, upload to an editor in a third. I wanted to do the whole thing from inside a chat with Claude — so I built an MCP server for my product, ClipSpeed, and gave it every creation tool we have.
This post walks through what that looks like in practice: connecting it, the tool calls Claude actually makes, what each one costs, and the guardrails I had to add so an AI can't spend your money without asking.
The one-URL setup
The hosted server lives at:
https://api.clipspeed.ai/mcp
In Claude: Settings → Connectors → Add custom connector, paste that URL, connect, sign in to ClipSpeed in the window that opens and approve. That's it — no API key gets copied anywhere. Claude ends up holding a scoped OAuth grant, not a password or a long-lived secret.
The same URL connects in ChatGPT, Cursor and Claude Code. If you prefer a local stdio server, there's an open-source npm package too — but the hosted server is the one with the AI creation tools.
What Claude gets
Once connected, Claude sees tools in four groups:
| Group | Tools |
|---|---|
| AI video |
generate_video — Seedance 2.5, Seedance 1 Pro Fast, Kling 3.0, MiniMax H3, Veo 3.1 |
| AI images |
generate_image — Nano Banana Pro, GPT Image 2 |
| Characters & swaps |
create_influencer (a consistent AI character) and morphaze_swap (put that character into a real clip) |
| Clipping | turn a YouTube video, upload or live stream into scored, captioned 9:16 clips |
Plus the plumbing that makes it safe to use: list_models, estimate_cost, wait_for_generation, and two prompt helpers (assist_prompt, review_prompt).
A real session, step by step
Here's the flow when I ask Claude for a vertical clip of "a neon night market in the rain."
1. It checks the price first. Every creation tool is paired with estimate_cost, which returns the credit price and charges nothing:
{
"tool": "generate_video",
"arguments": {
"model": "seedance-2.5",
"prompt": "a woman in a yellow raincoat walks down a neon alley in the rain",
"duration_seconds": 5,
"aspect_ratio": "9:16"
}
}
→ Seedance 2.5 video: 42 credits. Nothing was charged.
Claude shows me that number and asks before going further.
2. It generates — with a ceiling I approved. The creation call carries max_credits set to the price I agreed to. If the live price is higher by the time the call lands, nothing runs:
{
"model": "seedance-2.5",
"prompt": "…",
"duration_seconds": 5,
"aspect_ratio": "9:16",
"max_credits": 42,
"request_key": "night-market-take-01"
}
request_key makes retries idempotent: if the network drops and Claude retries with the same key, you're never charged twice.
3. It waits and hands back the result. wait_for_generation polls for up to 15 seconds per call, so Claude loops until the video is ready and returns a link.
A Seedance 2.5 result — the full prompt and video are here.
Images work the same way and are cheap enough to iterate on: a Nano Banana Pro image came back at 6 credits in the same estimate check.
Characters that stay the same across videos
The hardest part of AI content is consistency: the same face in every post. create_influencer builds an original character sheet (one image) from a preset or your own settings. Once saved, Claude can pass that character as a reference image into image and video generations — so the character in Monday's post is the character in Friday's.
Swapping a character into a real clip
morphaze_swap is the one people ask about most. It takes a short real video and a character, and replaces the person in the clip with your character — keeping the original motion, the background, the camera cuts and the sound. There are examples and templates here, and I'm writing up how the swap pipeline works in a follow-up post.
The guardrails (the part I'd copy if you're building an MCP server)
Giving an AI agent a tool that spends money is a design problem, not just an API problem. What I ended up with:
-
Price before spend, always. Every paid tool's description tells the model to call
estimate_cost, show the price and wait for a yes. The paid call requiresmax_credits. -
A fresh price check at execution.
max_creditsis a ceiling, not a suggestion — if the current price is higher, the job doesn't run. -
Idempotency keys. A retried request with the same
request_keyis never charged twice. -
Account-level limits. Per-generation maximums and a daily credit cap for MCP use, visible through
get_account, and you can switch MCP spending off entirely. -
Prompt help is free.
assist_promptandreview_promptcost nothing, so the model can fix a weak prompt before anything is spent.
What it costs
Everything runs on one monthly credit wallet shared with clipping: Starter $19 (300 credits), Pro $39 (600), Ultra $99 (1,500), annual billing 25% off. There's no free plan. New accounts can start with a $1, 3-day trial that covers clipping and your own AI Influencer; AI video, images and Morphaze unlock when the plan starts (or you can skip the trial and unlock them right away).
Try it
- Connector URL:
https://api.clipspeed.ai/mcp - Setup guides: Claude · all clients
- Source for the local server: github.com/thestockgoatballs/clipspeed-mcp
If you're building an MCP server that spends money on a user's behalf, I'd love to compare notes on guardrails in the comments.
I drafted this post with help from Claude; the facts, numbers and examples come from ClipSpeed itself.

Top comments (0)