WaveSpeed MCP Server
OfficialThis server provides AI media generation and management tools via the WaveSpeed API, including text-to-image, image-to-image, and video generation, along with utilities for model discovery, pricing, file uploads, and prediction tracking.
Generate images from text prompts (
text_to_image): Create images with customizable size, steps, guidance, LoRA models, safety checker, and seed.Transform existing images (
image_to_image): Modify or stylize one or more input images using text prompts and optional model settings.Generate videos (
generate_video): Animate an input image with text prompts, including duration (5 or 10s), negative prompts, motion intensity (flow_shift), and other parameters.List and search models (
list_models): Discover available models from the live catalog by text or modality.Get model schemas (
get_model_schema): Retrieve the exact input schema for any model to know required parameters.Check pricing (
get_price): Estimate costs before running a generation, with transparency about unpriced inputs.Check account balance (
get_balance): View available credits.Upload files (
upload_file): Host local files as URLs for use in generation inputs.Retrieve prediction results (
get_prediction): Fetch status or output of previously submitted jobs by ID.
Click on "Install 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., "@WaveSpeed MCP Servergenerate an image of a serene mountain lake at sunrise"
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.
WaveSpeed MCP Server
An MCP server for the WaveSpeed platform: run any model on the live catalog — image, video, audio, 3D — from Claude Code, Claude Desktop, Cursor, Cline, or any MCP client.
Built on the same design as the open-source @wavespeed/cli:
No hardcoded models. The catalog comes from the live API (1h cache); new platform models work the day they ship.
One generation verb.
run_modelexecutes anything;get_model_schematells the agent what inputs a model actually accepts, so it reads before it writes.Inputs are never mutated. The one explicit transform is the
@pathmarker — a"@./photo.jpg"value insideinputuploads the file and substitutes its hosted URL. Bare paths are passed through untouched.Honest pricing.
get_pricequotes before you spend and names the inputs the quote was blind to (unpriced_inputs) instead of presenting a formula's floor as "the" price.
Tools
Tool | What it does |
| Search the live catalog by text or modality type |
| A model's real input schema (required, properties, defaults) |
| Submit + wait; |
| Cost estimate with |
| Account credit balance |
| Local file → hosted URL (24h content-hash dedupe) |
| Recover status/outputs of any run by id |
If run_model hits its wait limit the task keeps running server-side — the error names the prediction id, and get_prediction picks it up.
Related MCP server: Doubao MCP AI Server
Setup
Auth resolves from WAVESPEED_API_KEY, or from the CLI's stored login (wavespeed login) — one login covers both tools. Keys: wavespeed.ai/accesskey.
Claude Code
claude mcp add wavespeed -- npx -y @wavespeed/mcpClaude Desktop / other clients (mcpServers config):
{
"mcpServers": {
"wavespeed": {
"command": "npx",
"args": ["-y", "@wavespeed/mcp"],
"env": { "WAVESPEED_API_KEY": "wsk_..." }
}
}
}Example prompts
"Generate a 16:9 hero image of a cyberpunk skyline at golden hour."
"Take ./photo.jpg and replace the background with a sunlit kitchen." (the agent passes
"@./photo.jpg")"Animate ./hero.png with subtle parallax — check the price first."
Development
npm install
npm run dev # run from source (stdio)
npm run lint # typecheck
npm run build # tsc → dist/License
WaveSpeed AI — AI image & video generation platform. Try it in the browser: Image generator · Video generator
Available Tools
7 toolsget_balanceARead-only
Show the WaveSpeed account credit balance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, so the safe read-only nature is known. The description adds the specific context that this tool exposes the account credit balance, which is helpful for setting user expectations. It doesn't mention return format or auth, but for a zero-parameter getter, that's acceptable.
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 a single, clear sentence with no wasted words. It front-loads the purpose and is immediately understandable.
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 zero-parameter, read-only balance getter with good annotations, the description is sufficient. It does not need to list return values because the name and description already imply the output—the balance. The absence of an output schema is not a gap here.
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 input schema has zero properties, so the baseline is 4. The description adds no parameter-specific details because there are none; no ambiguity exists.
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 uses the specific verb 'Show' and identifies the exact resource 'WaveSpeed account credit balance', clearly distinguishing it from sibling tools that deal with models, pricing, or file uploads. Its one-sentence definition leaves no ambiguity.
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 doesn't explicitly state when to use this tool, but its clear purpose (checking account credit) gives sufficient context for an agent to choose it over the unrelated siblings. There are no obvious alternative tools for balance checking, so no exclusions are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_schemaARead-only
Get a model's real input schema (required fields, properties, defaults). Call this before run_model so inputs match what the model actually accepts.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Model ID from list_models, e.g. bytedance/seedream-v5.0-pro |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations declaring readOnlyHint=true and openWorldHint=true, the description does not contradict these and adds value by specifying that the returned schema includes 'required fields, properties, defaults' and that it represents the 'real' accepted inputs. This goes beyond what annotations alone convey, though it could mention more about side effects or response format if any.
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 concise sentences deliver the core purpose and usage instruction without any fluff. The information is front-loaded, and every word 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?
For a simple read-only introspection tool with one parameter and no output schema, the description fully covers what the tool does and when to use it. It supplies enough context for an agent to correctly invoke it as part of a workflow, making it complete for its complexity.
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 100% — the single 'model' parameter is well-documented in the input schema. The description doesn't need to add parameter details since the schema already covers it. The baseline of 3 applies because the description adds no extra parameter semantics, but none are needed.
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 uses a specific verb 'Get' and a clear resource: 'a model's real input schema (required fields, properties, defaults).' It differentiates from sibling tools like list_models and run_model by indicating this retrieves the actual schema of a model. The purpose is immediately clear and unambiguous.
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 explicitly instructs 'Call this before run_model so inputs match what the model actually accepts,' providing clear when-to-use guidance and a workflow relationship with a sibling tool. It does not list alternatives or exclusions, so it stops short of a perfect 5, but the context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_predictionARead-only
Fetch the status and outputs of a past or in-flight prediction by id — use to recover a run that hit the wait limit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Prediction id returned by run_model |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the agent knows this is a safe read operation. The description adds the recovery use-case context but doesn't disclose additional behaviors like error handling, response structure, or rate limits. With annotation coverage, a 3 is appropriate.
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?
One sentence, no redundancy, completely front-loaded with the core action and purpose. Every word 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?
For a simple single-parameter read-only tool with annotations covering safety, the description fully conveys what it does and when to use it. No output schema exists, so explaining 'status and outputs' is sufficient.
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 single parameter 'id' is fully described in the schema ('Prediction id returned by run_model'), achieving 100% coverage. The description adds no extra semantics but also doesn't need to since the schema is clear. Baseline 3 applies.
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 clearly states the tool fetches the status and outputs of a prediction by id, using the specific verb 'fetch' and resource 'prediction'. It also includes a specific use case (recover from wait limit) that distinguishes it from siblings like run_model.
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?
It explicitly says 'use to recover a run that hit the wait limit', giving a clear context when to use. It doesn't mention when not to use or name alternatives, but the purpose is unique among siblings (list_models, run_model, etc.), so the guideline is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_priceA
Estimate the cost of a run before executing it (no charge). Provide the same input you would pass to run_model — pricing often depends on inputs like duration or resolution.
| Name | Required | Description | Default |
|---|---|---|---|
| input | No | Inputs the quote should account for | |
| model | Yes | Model ID from list_models |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: it is free/no-charge, it does not execute the run, and the estimated cost depends on the provided inputs. It does not explicitly describe response shape or potential edge cases, but for a pricing-estimate tool this is reasonably transparent.
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 sentences and front-loads the core function: estimate cost before executing, no charge. Every sentence adds actionable value without repetition or unnecessary detail.
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?
Given the simple parameter surface and no output schema, the description covers the main pieces needed to invoke the tool correctly: what it returns conceptually, when it runs, whether it charges, and how inputs affect it. A bit more detail on the output format would make it even stronger.
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 already high, with model and input clearly described. The description enriches parameter understanding by explaining that input should mirror run_model inputs and that duration/resolution-style values can affect pricing, which is useful semantic context.
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 clearly states the tool's purpose: estimate the cost of a run before executing it, and explicitly notes there is no charge. It is clearly distinguished from run_model by describing it as the pre-execution cost-estimation step that provides the same inputs.
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 gives strong usage guidance by instructing users to provide the same input they would pass to run_model and mentions that pricing often depends on input values. It does not explicitly say when not to use it, but the 'before executing it' framing makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsARead-only
Search the live WaveSpeed model catalog (image, video, audio, 3D). Returns model IDs usable with run_model. Do not invent model IDs — always pick one returned by this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by modality type, e.g. text-to-image, image-to-video | |
| limit | No | Max results | |
| query | No | Free-text filter on id/name/description | |
| refresh | No | Bypass the 1h catalog cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint and openWorldHint, which the description reinforces by calling the catalog 'live' and implying dynamic results. It adds context about the cache (1h) via the refresh parameter but does not fully explain what 'live' means beyond the cache. Beyond annotations, it conveys that results are dynamic and authoritative, which is valuable.
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 sentences, front-loaded with the core purpose, and every sentence earns its place. It is concise and structured effectively.
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 read-only list tool with high schema coverage and no output schema, the description is complete enough. It addresses the need to know that results are model IDs for run_model and warns against fabrication, which covers the key contextual requirements. Slight deduction for not detailing the return format (e.g., list of objects) but it's not critical given the schema.
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 100%, with each parameter having a description, so the baseline is 3. The description adds value by connecting the tool's output to run_model and emphasizing that returned IDs are authoritative, but it does not add parameter-specific details beyond the schema. The refresh parameter's purpose (bypass cache) is already in the schema, so extra credit is limited.
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 the tool searches the live WaveSpeed model catalog across modalities (image, video, audio, 3D) and returns model IDs, clearly distinguishing it from siblings like run_model. It uses a specific verb (search) and resource (model catalog), making its purpose unambiguous.
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?
It explicitly instructs agents to use returned model IDs with run_model and warns against inventing IDs, which clarifies when to use this tool in the workflow. While it doesn't explicitly state when not to use it, the guidance to always use this tool for obtaining model IDs is strong usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_modelA
Run any WaveSpeed model. input keys come from get_model_schema. Local files: pass "@./path" string values — they are uploaded and replaced with hosted URLs (bare paths are NOT uploaded). Returns output URLs. If the wait limit is hit, the task keeps running; recover it with get_prediction.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Model inputs per its schema (e.g. {"prompt": "...", "aspect_ratio": "16:9"}) | |
| model | Yes | Model ID from list_models | |
| wait_seconds | No | Max seconds to wait; 0 = submit only and return the prediction id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnly=false, openWorld=true, idempotent=false, and destructive=false. The description adds valuable behavioral details such as local file upload-and-replace semantics, bare paths not being uploaded, the task continuing after the wait limit, and the recovery mechanism via get_prediction.
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?
Three enumerative, front-loaded sentences cover the core purpose, parameters, file-upload nuance, output type, and timeout recovery. Nothing is redundant; every sentence carries operational or informational weight.
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 3-parameter model-steering tool with no output schema and nested inputs, the description covers the critical inputs, file upload caveat, output expectation, asynchronous wait timeout, and recovery path. It leaves no crucial behavioral gap for selecting and invoking the tool.
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 already 100%, but the description adds meaningful semantics beyond the schema by explaining local file path handling (@./path), the upload-replacement behavior, how return URLs are produced, and the wait-limit continuation behavior. This directly supplements the input and wait_seconds parameter descriptions.
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?
Description opens with a specific verb and resource: "Run any WaveSpeed model," immediately distinguishing this from sibling list_models and get_model_schema. It also references returning output URLs and the recovery path via get_prediction, making the tool's role unmistakable.
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 gives clear usage context: input keys come from get_model_schema, local files need a @./path prefix, and wait-limit timeouts should be recovered with get_prediction. It doesn't state explicit 'when not to use this tool' exclusions, but the references to sibling tools provide enough guidance for orchestration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileAIdempotent
Upload a local file to WaveSpeed and get its hosted URL (identical bytes reuse the same upload for 24h). Usually unnecessary — run_model handles "@./path" inputs itself.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Local file path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true, but the description adds the specific 24-hour reuse window and that it returns a hosted URL. This goes beyond the annotations by explaining the dedup behavior and the return value, though it doesn't detail side effects beyond the upload. No contradiction with annotations.
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 core action and purpose. The second sentence provides usage guidance. Every word earns its place, with no redundancy or fluff. Perfectly concise.
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 simple one-parameter tool with no output schema, the description covers the purpose, the return value (hosted URL), the dedup behavior, and the typical usage context relative to siblings. It's fully self-sufficient without needing additional details.
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 single parameter 'path' is already described in the schema with 'Local file path.' The description adds no additional semantic information about the path format, restrictions, or how it relates to the '@./path' convention. Since schema coverage is 100% and there's only one simple parameter, a baseline 3 is appropriate.
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 clearly states the action: 'Upload a local file to WaveSpeed and get its hosted URL.' It also mentions the deduplication behavior (identical bytes reuse the same upload) and distinguishes itself from run_model, which handles the same input natively. This is a specific verb+resource with clear scope.
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?
Explicitly states when this tool is usually unnecessary and gives the alternative: 'Usually unnecessary — run_model handles '@./path' inputs itself.' This is direct when-not-to-use guidance with a named alternative, making it exceptionally clear for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clear purpose: model discovery, schema, execution, pricing, balance, upload, and status. There is slight overlap between run_model and upload_file since run_model can handle uploads, but descriptions clarify when upload_file is needed.
All tool names follow a consistent verb_noun pattern with clear verbs (list, get, run, get, get, upload, get). No mixed conventions or vague naming.
With 7 tools, the server covers the essential workflow for model execution and account management without unnecessary bloat. Each tool serves a distinct need in the lifecycle.
The tool set covers model discovery, schema retrieval, execution, pricing, balance, file upload, and result retrieval. A minor gap is the absence of a cancel/delete prediction tool, but the core workflow is well covered.
Maintenance
Related MCP Connectors
Generate AI images and videos from any compatible MCP client.
AI image, video, voice and music generation over MCP, routed to Veo 3.1, Seedance 2.0 and more.
Plan, compare, price, generate, and recover AI video from compatible MCP clients.
Remote MCP for AI video, image, music and speech generation.
Related MCP Servers
- FlicenseAqualityDmaintenanceAn MCP server that provides a standardized interface for accessing WaveSpeed AI's image and video generation capabilities, including text-to-image, image-to-image, inpainting, and dynamic video generation.3
- FlicenseNot gradedqualityDmaintenanceProvides MCP interfaces for AI text-to-image, image-to-video, and text-to-video generation using the Doubao API.1
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to generate professional storyboards and videos from scripts or creative descriptions via MCP-compatible clients.47MIT
- FlicenseNot gradedqualityCmaintenanceRemote MCP server that integrates WaveSpeed's image and video generation into Claude, supporting text-to-image, image editing, video generation, and job status polling via custom connector.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/WaveSpeedAI/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server