seedance-mcp
Generates videos and images with ByteDance's Seedance (2.5, 2.0, Fast, Mini) and Seedream (5.0 Pro/Flash/Lite, 4.5, 4.0) models through the BytePlus ModelArk API. Supports text-to-video, first/last frame, reference images, videos and audio, batch estimation and pre-approval of spend, job status polling, cancellation, saving finished media locally, and dollar-based pricing of every request on the user's own BytePlus key.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@seedance-mcpmake a 5 second clip of a cat surfing at sunset, draft quality first"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Why this exists
I asked Claude to make a short series of video reels. 61 clips and four rounds of revisions later it had burned through 10.3 million Seedance tokens. I found out what that meant from the bill: about $100.
The agent did nothing wrong. It reported tokens, and tokens mean nothing to a human. Dollars do.
So this server prices every request in dollars before it is sent, lets the cheap stuff through, and stops to ask you when it matters. Not in a log. Not on the invoice. Before the money is gone.
Related MCP server: Premiere-MCP-BuildX-Exclusive-V3
What you get
Video | Seedance 2.5, 2.0, 2.0 Fast and 2.0 Mini. Text to video, first and last frame, reference images, reference videos, reference audio. |
Images | Seedream 5.0 Pro, Flash and Lite (plus 4.5 and 4.0). Up to 10 reference images, up to 15 related images per call. |
Spend guard | A dollar estimate on every call, an ask-first limit, a budget per day, week or month, and an optional hard cap. |
Real approvals | A dialog drawn by your MCP client that the model can't click for you. A chat fallback everywhere else. |
Batch approval | One yes for a whole shoot. Each clip draws from the approved amount and can't go past it. |
Whole-key tracking | Counts what your key spent from any tool or script, not just this server. |
No babysitting |
|
Errors with fixes | Face policy, model activation and moderation errors come back with what to do next. |
Quick start
1. Get a key. Sign up at BytePlus, open ModelArk, activate the Seedance and Seedream models under Model activation > Media (free, you pay per generation), then create a key under API Key Management.
2. Add the server. For Claude Code:
claude mcp add seedance --scope user -e ARK_API_KEY=your-key -- uvx --from git+https://github.com/atharva3vedi/seedance-mcp seedance-mcp --budget 50For Claude Desktop, Cursor, Windsurf or any other MCP client, add this to its MCP config:
{
"mcpServers": {
"seedance": {
"command": "uvx",
"args": ["--from", "git+https://github.com/atharva3vedi/seedance-mcp", "seedance-mcp", "--budget", "50"],
"env": { "ARK_API_KEY": "your-key" }
}
}
}No uv? Run pip install git+https://github.com/atharva3vedi/seedance-mcp and use seedance-mcp as the command.
3. Ask for something.
make a 5 second clip of a cat surfing at sunset, draft quality first
Claude drafts it on Seedance 2.0 Mini at 480p (about $0.17), waits for it, and hands you the file.
The spend guard
Every generation is priced before it leaves your machine. Then:
Situation | What happens |
Under your ask-first limit and inside your budget | Goes straight through. The cost is in the result. |
Over the ask-first limit | Asks you first. |
Would take you past your budget | Asks you first, even for a $0.09 image. |
No price on file for the model | Asks you first, and says the cost is unknown. |
Would go past your hard cap | Refused. No approval can override it, only a config change. |
How it asks
In a dialog when your client supports MCP elicitation (Claude Code 2.1.76 and later, among others). The server asks your client directly, your client shows you the dialog, and the answer comes from you. The model never sees a button it could press.
In chat everywhere else. The tool returns needs_your_ok with a one-time approval_id and the exact sentence to show you. Claude has to ask, and only after you say yes can it call again with that id. Each id is tied to that exact request: change the prompt, the model or the duration and it stops working. It expires after 15 minutes.
Chat approvals rely on the agent following instructions. Dialog approvals don't. Set
--approval dialogto forbid the chat path entirely.
Batches
Before a shoot, Claude calls estimate_cost to tell you the total, then preapprove_spend to ask once:
Spend about $2.33 on two surf clips (2x Seedance 2.5, 5s, 720p, with audio)?
This month: $14.20 spent of your $50.00 budget. After this: $16.53.You get back an approval_id that covers up to that many calls and that many dollars for 3 hours. A third clip, or a pricier one, needs a new yes.
It sees everything on your key
Before deciding, the server pulls your recent tasks from BytePlus, so clips made by scripts, other agents or another Claude window all count toward the budget. Images and older tasks live in a local ledger at ~/.seedance-mcp/ledger.jsonl, which every session shares.
Check your spend from a terminal any time:
seedance-mcp spendseedance-mcp: this month
$14.20 of $50.00 [######..............] 28%
ask first above $0.50, hard cap none
Seedance 2.5 11 $13.84
Seedream 5.0 Pro 4 $0.36Settings
Pass flags after seedance-mcp, or set environment variables. You can also keep them in ~/.seedance-mcp/.env (see .env.example), which keeps your key out of every repo.
Flag | Environment | Default | |
|
|
| Ask before any single generation above this. |
|
|
| Ask before anything that crosses this... |
|
|
| ...per |
|
| none | Never spend past this in a period. |
|
|
|
|
|
| none | Save every finished video and image here. |
|
| Default video model. | |
|
| Default image model. | |
| none | JSON with extra or corrected prices. | |
| Singapore | ModelArk endpoint. |
What things cost
BytePlus list prices as of October 2026, for a clip without reference video:
Model | Alias | 5s 480p | 5s 720p | 10s 720p | 5s 1080p |
Seedance 2.5 |
| $0.52 | $1.17 | $2.32 | $2.87 |
Seedance 2.0 |
| $0.34 | $0.76 | $1.52 | $1.89 |
Seedance 2.0 Fast |
| $0.27 | $0.61 | $1.21 | |
Seedance 2.0 Mini |
| $0.17 | $0.38 | $0.76 |
Seedream 5.0 Pro is $0.045 per image up to 1.5K and $0.09 above. Flash is $0.018, Lite $0.035. Failed and moderated generations are free.
Estimates use the formula BytePlus bills with, (input video seconds + output seconds) x width x height x 24 fps / 1024 tokens plus one frame, and match real usage to the token. Prepaid token packs and discounts aren't reflected. If prices change before this table does, point SEEDANCE_PRICES_FILE at a JSON file:
{
"video": {
"dreamina-seedance-2-0-mini-260615": {
"name": "Seedance 2.0 Mini", "max_input_video_seconds": 15,
"rates": { "sd": [3.5, 2.1] }
}
}
}rates are USD per million tokens, [without video input, with video input], keyed by sd (480p and 720p), 1080p and 4k.
Tools
Tool | What it does |
| Make a Seedance clip. Plain arguments ( |
| Make Seedream images from a prompt and up to 10 references. |
| Status of a clip. Once done: the link, the real cost, and the saved file. |
| Recent clips on your key, with what each one cost. |
| Cancel a queued clip. |
| Price a plan in dollars without spending anything. |
| One approval for a whole batch. |
| Spent so far, by model, against your budget. |
| Is the key good, can it connect, and will approvals come as a dialog or in chat. |
Tips that save money
Draft on Mini at 480p, then render the keeper on 2.5. A Mini draft costs about a seventh of a 720p render on 2.5.
Reuse instead of re-rendering. Trim, re-time and re-caption clips in an editor. A re-shoot costs the full price again.
Faces: Seedance 2.x rejects realistic human faces as image input. To keep one person across clips, make their first clip text to video, then pass that clip's
video_urlinreference_videos. The server knows that clip's length and prices it exactly.No watermark by default. The BytePlus API stamps one unless told not to, and this server tells it not to. Pass
watermark=trueif you want it.Let it wait.
wait=truecosts nothing extra and saves a dozen polling calls.
Development
git clone https://github.com/atharva3vedi/seedance-mcp && cd seedance-mcp
uv venv && uv pip install -e ".[dev]"
pytestTests run against a fake ModelArk and a fake human answering dialogs, so they never spend a cent. Billing formulas are pinned to token counts from real tasks.
Credits
Started life as a fork of kienbui-demo/byteplus-mcp and was rewritten from scratch for local use, with a spend guard.
Not affiliated with ByteDance or BytePlus. Seedance and Seedream are their trademarks. You pay BytePlus directly for what you generate.
MIT licensed.
Available Tools
9 toolscancel_video_taskA
Cancel a queued video task. Running tasks can't be stopped.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose the key trait: only queued tasks are affected, running ones are untouched. It says nothing about idempotency, behavior on an invalid or already-completed task_id, or permission requirements, leaving meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the limiting constraint. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter cancellation tool with an output schema present, the description covers purpose and the critical limitation adequately. The only real omission is the meaning/source of task_id, which the schema also fails to document.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single task_id parameter, and the description adds no information about its format, where to obtain it (e.g., from list_video_tasks), or whether it accepts a full id or prefix. Low coverage should be compensated here, and it is not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Cancel a queued video task') and immediately scopes it to queued tasks, so the agent knows exactly what operation this performs versus siblings like generate_video or list_video_tasks. It stops short of explicitly naming an adjacent sibling, so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a clear negative condition ('Running tasks can't be stopped'), which tells the agent when this tool will not apply. It does not name an alternative path for running tasks, but the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_setupB
Check the API key, the connection, and how spend approvals will reach the user.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the diagnostic scope (API key validity, connectivity, approval-delivery routing), which implies a non-mutating operation. It stops short of saying whether it is purely read-only, whether it requires credentials already present, or how failures are surfaced, so the disclosure is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the diagnostic target listed up front and no filler. It is as short as it can be while still naming the three things checked.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the tool is a parameterless read-style check. The description covers the subjects of the check adequately; only the absence of trigger conditions and failure semantics keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies, and the description correctly does not invent arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check) and enumerates three concrete targets: API key, connection, and spend-approval delivery path. That tells an agent this is a setup/connectivity diagnostic rather than a data-fetching tool. It does not, however, explicitly distinguish itself from the sibling spend_status, which also concerns spend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to run this versus alternatives such as spend_status or preapprove_spend, nor any prerequisites or post-conditions. Usage can only be inferred loosely from the word 'check' and the setup-oriented subject matter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_costB
Price a plan in dollars without spending anything.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose one important behavioral trait — no cost is incurred — but says nothing about authentication, whether the estimate is authoritative or approximate, rate limits, or how results should be interpreted before calling preapprove_spend.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the verb and the key differentiator. No wasted words and no buried information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but the tool takes a complex array of batch line items and the description gives no guidance on shaping that input or on how model/duration/reference parameters affect the price. For a nested pricing tool this is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions the 'items' array, the PlanItem structure, or any of the fields that drive pricing (kind, model, duration, resolution, reference images). The nested schema defines fields internally, but the description contributes no parameter meaning at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (price) and resource (a plan) and adds the key scope qualifier 'without spending anything', which separates it from the spend/generate siblings. It does not name a specific alternative (e.g. preapprove_spend or spend_status), so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Without spending anything' implies a dry-run/preview usage window, which hints at when to call this rather than actually generating or spending. However, it names no alternative tool and gives no explicit when-not condition, leaving the before-vs-after-spend workflow to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageC
Make an image with Seedream. Priced and checked by the spend guard first.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | 1K, 2K, 4K or WIDTHxHEIGHT | 2K |
| model | No | pro (Seedream 5.0 Pro), flash, lite, 4.5, 4.0 or an id | |
| prompt | Yes | ||
| save_to | No | File or folder to save images | |
| watermark | No | ||
| max_images | No | Up to N related images | |
| approval_id | No | ||
| output_format | No | jpeg | |
| reference_images | No | Up to 10 image URLs or local paths |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully discloses that spend-guard pricing/checking happens before generation, implying a possible rejection or approval path (matching the approval_id parameter). However it omits everything else: output location side effects (save_to), watermarking behavior, batch semantics, and failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and cost-gate note; nothing is wasted. It is arguably too terse for a 9-parameter paid tool, but as a structure it is clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but the tool takes 9 parameters, incurs cost, and is gated by an approval flow. An 11-word description cannot make an agent confident about the approval_id/max_images/save_to interactions, leaving it materially incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 56% across 9 parameters, and the description clarifies none of them. Undocumented parameters like approval_id and watermark get no explanation of their role or when they matter, so the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Make an image with Seedream,' which is unambiguous about the operation and the backing model. Sibling tools are all video/spend/status related, so the image-generation purpose is naturally distinguishable, but the description does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives, no prerequisites spelled out. The phrase 'checked by the spend guard first' hints that a cost/approval flow is involved but never names estimate_cost or preapprove_spend, nor explains when generation will be blocked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_videoC
Make a Seedance video (text-to-video, image-to-video, or with reference media). Priced and checked by the spend guard before anything is sent.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| wait | No | Block until the video is done | |
| model | No | 2.5 (best), 2.0, fast, mini (cheap drafts) or a full id | |
| ratio | No | adaptive | |
| prompt | Yes | What happens in the clip | |
| save_to | No | File or folder to save the mp4 | |
| duration | No | Seconds, 2-15 | |
| timeout_s | No | ||
| watermark | No | ||
| last_frame | No | Image URL or local path | |
| resolution | No | 720p | |
| approval_id | No | Only after the user said yes, or from a batch | |
| first_frame | No | Image URL or local path | |
| camera_fixed | No | ||
| generate_audio | No | ||
| reference_audio | No | Audio URLs | |
| reference_images | No | Image URLs or local paths | |
| reference_videos | No | Public video URLs, e.g. an earlier video_url | |
| return_last_frame | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose one valuable trait — pricing and spend-guard gating happen before dispatch — but is silent on async vs blocking behavior, how 'wait' interacts with 'timeout_s', and the approval_id workflow, all of which matter for a 19-parameter generation call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and the key operational guarantee, with zero filler. It is arguably sparse for a 19-parameter tool, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. However, for a 19-parameter mutation-style tool with no annotations, the description omits the async/blocking model, the approval flow implied by approval_id, and cost/approval prerequisites — too much is left for the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 58%, so the schema already documents many parameters. The description adds real value by mapping first_frame/last_frame/reference_images/reference_videos onto the text-to-video, image-to-video, and reference-media modes, but it does not compensate for the undocumented remainder.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Make a Seedance video') and enumerates the three generation modes, which maps directly to the first_frame/last_frame/reference_* parameters. It does not explicitly distinguish itself from siblings like video_task or generate_image, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative routing is given. The mention of the spend guard hints at an approval workflow, but the agent is never told when to prefer video_task, cancel_video_task, or preapprove_spend, nor when this tool is the wrong choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_video_tasksB
Recent video tasks on this key, newest first, with what each one cost.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| model | No | ||
| status | No | ||
| page_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses ordering ('newest first') and that per-task cost is included, but says nothing about read-only semantics, pagination behavior, default page size, or result limits, which an agent needs for a paged listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the resource, scope, ordering, and return content front-loaded; no filler whatsoever.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values and cost, so that is not a gap. However, with no annotations and four entirely undocumented parameters, the description leaves filtering and pagination behavior unexplained for an agent that must decide how to page and filter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters. The description mentions 'recent' which hints at ordering, but never explains 'page', 'page_size' (with its 100 max), or that 'model' and 'status' act as filters — a significant omission at 0% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('list ... video tasks'), plus scope ('on this key') and ordering ('newest first'). It clearly differs from the singular siblings 'video_task' and 'generate_video', but never names an alternative explicitly, so sibling differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a browse-recent-history use case but gives no when-to-use guidance, no conditions for choosing it over 'video_task' (single fetch) or 'spend_status' (cost aggregation), and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preapprove_spendA
Get one human approval for a whole batch. Returns an approval_id to pass to each generate call; it covers up to the approved dollars and number of calls for 3 hours.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | What the batch is for | |
| items | No | ||
| approval_id | No | Confirm a pending batch, only after the user said yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningful work: it discloses the human-in-the-loop requirement, the spend scope ('up to the approved dollars and number of calls'), and a concrete 3-hour validity window. It leaves gaps around idempotency, what happens on expiry, and whether calling it commits money, but the expiry and coverage-cap disclosures are exactly the behavioral traits an agent needs for a spend tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core action and followed by the mechanism and constraint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. For a 3-param approval tool, the description covers the two-phase flow (request then confirm) and the validity window. It could say more about failure/expiry behavior and its relationship to estimate_cost, but it is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the schema itself documents the PlanItem fields well. The description enriches approval_id semantics by tying it to downstream generate calls, which is genuinely useful. It adds nothing for 'note' or 'items', so it sits at the baseline for a partially documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (get one human approval for a whole batch) and immediately explains what the tool produces (an approval_id). It is clearly distinguishable from the generate_* siblings because it is an approval/pre-flight step. However, it does not explicitly differentiate itself from the adjacent spend_status or estimate_cost siblings, which also belong to the pre-spend flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the reader infers they should call this before generate calls and then reuse the approval_id. The approval_id parameter adds a strong conditional ('only after the user said yes') that clarifies the confirm-phase. But there is no explicit when/when-not guidance or comparison to estimate_cost, which an agent would plausibly confuse this with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spend_statusA
What you've spent this period, by model, against your budget and caps.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It clearly frames this as a reporting/status read, which is the main behavioral fact, but it says nothing about auth requirements, whether the period is configurable, or freshness of the data. For a zero-parameter read tool the risk surface is small, so this is adequate rather than strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core value front-loaded ('what you've spent this period') and the qualifiers (by model, against budget and caps) trailing efficiently. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description correctly focuses on what the tool reports. It is nearly complete; only a note on the meaning of 'this period' or read-only status would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. There is no parameter behavior the description needs to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: current-period spend, broken down by model, measured against budget and caps. That distinguishes it implicitly from estimate_cost (forward-looking) and preapprove_spend (approval), though it never names those siblings directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the content ('what you've spent this period'), but there is no explicit when-to-use statement or routing against the spend-related siblings estimate_cost and preapprove_spend. An agent can infer the context but must do the disambiguation itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video_taskC
Status of a video task. When it has succeeded: video_url, real cost, saved file.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Block until the task finishes | |
| save_to | No | File or folder to save the mp4 | |
| task_id | Yes | ||
| timeout_s | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses success outputs (video_url, real cost, saved file) but omits whether the operation is read-only, that save_to causes a file write side effect, how wait/blocking behaves, and what happens on failure or timeout.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences with no wasted words. The second sentence is telegraphic but still earns its place by summarizing successful outcomes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained in depth. However, with no annotations, the description leaves important behavioral context unstated—such as read-only nature, save_to side effects, blocking behavior, and error handling—making it minimally adequate for a status tool with a wait parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, with task_id and timeout_s undocumented in both schema and description. The description adds no parameter-level meaning beyond hinting at 'saved file' (already covered by the save_to schema description), and does not compensate for the missing semantics of task_id or timeout_s.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource: retrieving the status of a specific video task. It distinguishes itself from siblings like list_video_tasks (plural) and generate_video (creation) by referring to a singular 'a video task', though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as list_video_tasks or generate_video. It merely states what it does, leaving the agent to infer context from the name and required task_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.1.0- First observed
cancel_video_task - First observed
check_setup - First observed
estimate_cost - First observed
generate_image - First observed
generate_video - First observed
list_video_tasks - First observed
preapprove_spend - First observed
spend_status - First observed
video_task
TDQS
Scored across 9 tools
Most tools target distinct actions (generate, cancel, estimate, check), and the spend trio of estimate_cost/spend_status/preapprove_spend is clearly differentiated by description. The only mild overlap is video_task (single status) versus list_video_tasks (batch listing), which descriptions resolve adequately.
Snake_case is used throughout and most names follow a verb_noun pattern (generate_video, cancel_video_task, estimate_cost, check_setup). Minor deviations are the noun-phrase names video_task and spend_status, which read less like actions than their peers.
Nine tools is well-scoped for a media-generation service with spend controls, covering generation, task lifecycle, and cost management without redundancy. Each tool earns its place.
The surface covers generation (video/image), task lifecycle (status, list, cancel), and the full cost-approval loop, which is strong coverage. A minor gap is the asymmetry where video tasks have status/list/cancel lifecycle but images have no equivalent task-status tool.
Maintenance
Related MCP Connectors
Generate video and images with prepaid USD billing and explicit per-job spending limits.
1- lightgenOAuthapp.lightgen
Generate and edit images and create short videos inside Claude. Prepaid credits, no subscription.
- SakairaOAuthcom.sakaira
Make AI images, video, voiceovers and music, and edit video, from your assistant. Paid in credits.
- mcpOAuthio.styleforge
Brand-aware creative studio for Claude: 200+ tools for on-brand ads, video, email and campaigns.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables Claude Code to generate, edit, blend, and create variations of images using BytePlus SeeDream AI models, with streaming and Firebase sync.6MIT
- FlicenseNot gradedqualityBmaintenanceEnables prompt-driven video editing in Adobe Premiere Pro, allowing Claude to transcribe footage, decide cuts, build motion graphics, and assemble timelines via natural language.-
- AlicenseAqualityAmaintenanceEnables Claude Code and Claude desktop to generate AI videos and images through Dare, with credit cost estimation, reference uploads, and generation management billed to the user's Dare credits.138 npm1MIT
- AlicenseCqualityCmaintenanceEnables Claude, Cursor, or any MCP client to create consistent AI characters, generate Veo 3.1 and Omni videos, edit clips, build scenes, export MP4s, and chat with Google Flow's creative agent. Automates AI video production workflows such as reels, storyboards, and multi-shot stories through natural language, with credit guardrails and dry-run pricing.234MIT