seedance-mcp
This server enables AI agents to create and manage Seedance text-to-video tasks via RunAPI, with three core capabilities:
text_to_video: Generate videos from text prompts using Seedance models (seedance-1.5-pro,seedance-2.0,seedance-2.0-fast,seedance-v1-lite,seedance-v1-pro,seedance-v1-pro-fast). Configure aspect ratio (1:1, 4:3, 16:9, 9:16, etc.), duration (4–12 seconds), and output resolution (480p, 720p, 1080p). Optionally provide source images, reference audio/video, or first/last frame images. Can poll until completion and return output URLs, or return immediately with a task ID.get_task: Fetch the current status and result payload for an existing Seedance task using its task ID.check_pricing: Retrieve a current pricing snapshot for any Seedance model and endpoint — no API key required.
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., "@seedance-mcpgenerate a video of a cat playing piano using seedance-2.0"
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 Package?
@runapi.ai/seedance-mcp is a focused Model Context Protocol server for the Seedance model line on RunAPI.
It gives MCP-compatible assistants direct access to 1 endpoint and 7 model variants without loading the full RunAPI catalog.
Use this per-model server when an agent should stay scoped to Seedance. Use @runapi.ai/mcp when one assistant should discover every RunAPI model line.
Related MCP server: seedream-mcp
Install
Add it to Claude Code:
claude mcp add seedance -s user -- npx -y @runapi.ai/seedance-mcpUse project scope when the server should be shared with a repository:
claude mcp add seedance -s project -- npx -y @runapi.ai/seedance-mcpCodex, Cursor, Windsurf, VS Code, Roo Code, and other MCP hosts can use the same stdio command:
{
"mcpServers": {
"seedance": {
"command": "npx",
"args": ["-y", "@runapi.ai/seedance-mcp"]
}
}
}check_pricing works before sign-in. For task creation and status polling, ask your assistant to call the login tool. It opens a browser login and saves credentials to ~/.config/runapi/config.json, the same file used by runapi login.
Headless and CI hosts can still set RUNAPI_API_KEY before starting the MCP host.
Ready-made examples are in examples/ for Claude, Cursor, Windsurf, VS Code, and Roo Code.
Tools
Tool | Auth | Purpose |
| Yes | Create a Seedance text to video task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Fetch the current status and latest payload for an existing task. |
| No | Look up current pricing for a Seedance model and endpoint. |
Models
Seedance covers 7 model variants across 1 endpoint. Each tool accepts the models listed for it:
Tool | Models |
|
|
Model availability can change between releases. Use check_pricing or the Seedance model page for the current catalog view.
Agent Prompts
Ask your assistant in natural language; it can inspect pricing, create the task, and return the task id plus output URLs.
Create a task
Run a Seedance text to video task with RunAPI.The assistant can call check_pricing, then text_to_video, and return the task id, status, and output URLs.
Submit without waiting
Create the task but don't wait for it to finish.The assistant calls the create tool with wait: false and returns the task id. Check on it later with get_task.
Check pricing before creating
Check current Seedance pricing, then create the task if it matches my request.The assistant calls check_pricing and can link to the Seedance model page for the canonical catalog entry.
Configuration
The server resolves auth in this order:
RUNAPI_API_KEYenvironment variable, useful for headless and CI hosts~/.config/runapi/config.json, created by the MCPlogintool orrunapi loginNo key, which still allows
check_pricing
The config file is normally managed by login. A pre-provisioned headless config can use:
{
"apiKey": "your_runapi_key"
}Do not commit real API keys.
Links
Resource | URL |
Seedance model page | |
npm package | |
GitHub repository | |
RunAPI MCP overview | |
RunAPI docs |
License
Licensed under the Apache License, Version 2.0.
Available Tools
4 toolscheck_pricingA
Look up RunAPI pricing for the seedance model line.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model slug. Defaults to the line's primary model. | |
| action | No | Endpoint name. Defaults to the endpoint that offers the model. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. 'Look up' implies a read-only operation, but the description does not explicitly state side effects, response behavior, authentication needs, or error cases. It is minimally transparent but not richly detailed.
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, front-loaded sentence with no filler or redundant information. Every word contributes to the tool's purpose.
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 tool's low complexity and fully documented parameters, the description is mostly complete. However, there is no output schema and the description does not explicitly state what the returned pricing information looks like, which is a minor 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?
Schema description coverage is 100%, so the input schema already documents both parameters with enums and defaults. The description adds no additional parameter meaning beyond naming the model line, so the baseline score of 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 uses a specific verb ('Look up') and resource ('RunAPI pricing for the seedance model line'), clearly distinguishing this tool from siblings like text_to_video, get_task, and login. It precisely identifies what the tool does.
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 the tool should be used when pricing information for seedance models is needed, but it provides no explicit guidance about when to prefer it over alternatives or any exclusions. It is adequate but lacks direct usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_taskA
Fetch the current status and latest result payload for a seedance task.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Asynchronous endpoint the task was created on. Defaults to the line's only asynchronous endpoint. | |
| task_id | Yes | Task id returned when the task was created. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It states it fetches status and payload, but does not mention read-only nature, error behavior for missing tasks, or any side effects. This is insufficient for a simple fetch 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?
The description is a single, clear sentence with no redundant information. 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?
Given no output schema, the description vaguely mentions 'status and latest result payload' but lacks detail on return format or structure. For a fetch tool, more specificity about the response would improve completeness.
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 100% (both parameters described), so the description adds no extra meaning beyond what the schema already provides. 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 uses a specific verb 'Fetch' and clearly names the resource 'seedance task', and the purpose is distinct from sibling tools (login, text_to_video, check_pricing).
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 usage after task creation but does not explicitly state when to use it versus alternatives like text_to_video or what conditions are required. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginA
Authenticate RunAPI by opening a browser PKCE login flow and saving the API key to ~/.config/runapi/config.json.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Re-run browser login when the current credential comes from the local config file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: opens a browser, uses PKCE flow, saves API key to config file. It also explains the force parameter behavior. However, it does not mention potential side effects like overwriting existing config or prerequisites like browser availability.
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, complete sentence that efficiently conveys the tool's purpose and method without extra words.
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 tool's low complexity (one optional parameter, no output schema), the description is adequately complete. It explains the authentication flow and where the key is saved. Minor omission: no mention of prerequisites or return behavior.
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 the 'force' parameter already well-described in the schema. The tool description does not add additional semantics beyond what the schema provides, so baseline score of 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 verb 'Authenticate', the resource 'RunAPI', and the method 'PKCE login flow', distinguishing it from sibling tools like check_pricing or text_to_video.
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 usage for authentication but does not explicitly state when to use it versus alternatives, nor when not to use it. The 'force' parameter provides some context but no explicit guidance on when to choose this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text_to_videoB
Create a Seedance task on RunAPI (text to video). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| prompt | No | ||
| timeout_ms | No | ||
| web_search | No | ||
| lock_camera | No | ||
| aspect_ratio | No | ||
| callback_url | No | ||
| output_format | No | Output video container format. | |
| generate_audio | No | ||
| duration_seconds | No | ||
| poll_interval_ms | No | ||
| output_resolution | No | ||
| return_last_frame | No | Whether to return the generated video's last frame. | |
| source_image_urls | No | ||
| last_frame_image_url | No | ||
| reference_audio_urls | No | ||
| reference_image_urls | No | ||
| reference_video_urls | No | ||
| enable_safety_checker | No | ||
| first_frame_image_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool returns a task id, status, and output URLs, but omits critical behavioral traits: whether the operation is synchronous or asynchronous (wait parameter suggests polling), potential for long execution, authentication requirements, rate limits, or failure modes. The agent is left with insufficient transparency for a task-creation 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?
The description is a single sentence with no waste, and the action is front-loaded. It is concise, but for a tool with 22 parameters, the brevity borders on under-specification. It earns its place but does not leverage the available sentence to add value beyond the one-line purpose. Score 4 for appropriate conciseness without penalizing the lack of 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 high complexity (22 parameters), absence of output schema, and zero annotations, the description is severely inadequate. It only states the return type but does not explain parameter constraints, default behaviors, or edge cases. An agent cannot correctly invoke this tool without external knowledge, making the description functionally 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 description coverage is only 18%, meaning 82% of parameters lack any explanation. The description does not compensate for this: it fails to explain any parameter semantics, such as the meaning of wait, seed, aspect_ratio, or the many reference inputs. It only provides high-level context ('text to video') without mapping to specific parameters, leaving the agent to guess the purpose of most fields.
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 identifies the action (Create a Seedance task), the resource (RunAPI), and the domain (text to video). It distinguishes itself from sibling tools (login, get_task, check_pricing) by stating a unique verb and resource. The purpose is specific 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 implies usage for text-to-video generation but provides no explicit guidance on when to use this tool versus alternatives. It does not mention exclusions or conditions, and the lack of a direct comparison to siblings leaves the agent to infer applicability. No misleading guidance, but also no helpful routing.
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. Dates show when Glama detected each change.
1 tool update
v0.2.0- Changed
text_to_video12 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / aspect_ratio / anyOfAdded value: +[ + { + "const": "1:1", + "type": "string" + }, + { + "const": "4:3", + "type": "string" + }, + { + "const": "3:4", + "type": "string" + }, + { + "const": "16:9", + "type": "string" + }, + { + "const": "9:16", + "type": "string" + }, + { + "const": "21:9", + "type": "string" + }, + { + "const": "auto", + "type": "string" + } +] - removed
Input schema / properties / aspect_ratio / enumRemoved value: -[ - "1:1", - "4:3", - "3:4", - "16:9", - "9:16", - "21:9", - "auto" -] - removed
Input schema / properties / aspect_ratio / typeRemoved value: -"string" - added
Input schema / properties / output_format / anyOfAdded value: +[ + { + "const": "mp4", + "type": "string" + }, + { + "const": "mov", + "type": "string" + } +] - removed
Input schema / properties / output_format / enumRemoved value: -[ - "mp4", - "mov" -] - removed
Input schema / properties / output_format / typeRemoved value: -"string" - added
Input schema / properties / output_resolution / anyOfAdded value: +[ + { + "const": "480p", + "type": "string" + }, + { + "const": "720p", + "type": "string" + }, + { + "const": "1080p", + "type": "string" + }, + { + "const": "4k", + "type": "string" + } +] - removed
Input schema / properties / output_resolution / enumRemoved value: -[ - "480p", - "720p", - "1080p", - "4k" -] - removed
Input schema / properties / output_resolution / typeRemoved value: -"string" - added
Input schema / properties / poll_interval_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / timeout_ms / maximumAdded value: +9007199254740991
2 tool updates
v0.1.12- Changed
check_pricing1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "seedance-1.5-pro", - "seedance-2-mini", - "seedance-2.0", - "seedance-2.0-fast", - "seedance-v1-pro", - "seedance-v1-pro-fast" -]New value: +[ + "seedance-1.5-pro", + "seedance-2-mini", + "seedance-2.0", + "seedance-2.0-fast", + "seedance-2.5", + "seedance-v1-pro", + "seedance-v1-pro-fast" +]
- Changed
text_to_video3 fields changed- changed
Input schema / properties / model / enumPrevious value: -[ - "seedance-1.5-pro", - "seedance-2-mini", - "seedance-2.0", - "seedance-2.0-fast", - "seedance-v1-pro", - "seedance-v1-pro-fast" -]New value: +[ + "seedance-1.5-pro", + "seedance-2-mini", + "seedance-2.0", + "seedance-2.0-fast", + "seedance-2.5", + "seedance-v1-pro", + "seedance-v1-pro-fast" +] - added
Input schema / properties / output_formatAdded value: +{ + "description": "Output video container format.", + "enum": [ + "mp4", + "mov" + ], + "type": "string" +} - added
Input schema / properties / return_last_frameAdded value: +{ + "description": "Whether to return the generated video's last frame.", + "type": "boolean" +}
2 tool updates
v0.1.11- Changed
check_pricing1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "seedance-1.5-pro", - "seedance-2-mini", - "seedance-2.0", - "seedance-2.0-fast", - "seedance-v1-lite", - "seedance-v1-pro", - "seedance-v1-pro-fast" -]New value: +[ + "seedance-1.5-pro", + "seedance-2-mini", + "seedance-2.0", + "seedance-2.0-fast", + "seedance-v1-pro", + "seedance-v1-pro-fast" +]
- Changed
text_to_video2 fields changed- changed
Input schema / properties / aspect_ratio / enumPrevious value: -[ - "1:1", - "4:3", - "3:4", - "16:9", - "9:16", - "21:9", - "auto", - "9:21" -]New value: +[ + "1:1", + "4:3", + "3:4", + "16:9", + "9:16", + "21:9", + "auto" +] - changed
Input schema / properties / model / enumPrevious value: -[ - "seedance-1.5-pro", - "seedance-2-mini", - "seedance-2.0", - "seedance-2.0-fast", - "seedance-v1-lite", - "seedance-v1-pro", - "seedance-v1-pro-fast" -]New value: +[ + "seedance-1.5-pro", + "seedance-2-mini", + "seedance-2.0", + "seedance-2.0-fast", + "seedance-v1-pro", + "seedance-v1-pro-fast" +]
2 tool updates
v0.1.9- Changed
get_task1 field changed- changed
Input schema / properties / action / descriptionPrevious value: -"Endpoint the task was created on. Defaults to the line's only endpoint."New value: +"Asynchronous endpoint the task was created on. Defaults to the line's only asynchronous endpoint."
- Changed
text_to_video2 fields changed- added
Input schema / properties / seed / maximumAdded value: +2147483647 - added
Input schema / properties / seed / minimumAdded value: +-1
3 tool updates
v0.1.7- Changed
check_pricing1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "seedance-1.5-pro", - "seedance-2.0", - "seedance-2.0-fast", - "seedance-v1-lite", - "seedance-v1-pro", - "seedance-v1-pro-fast" -]New value: +[ + "seedance-1.5-pro", + "seedance-2-mini", + "seedance-2.0", + "seedance-2.0-fast", + "seedance-v1-lite", + "seedance-v1-pro", + "seedance-v1-pro-fast" +]
- Added
login - Changed
text_to_video19 fields changed- added
Input schema / properties / callback_urlAdded value: +{ + "type": "string" +} - added
Input schema / properties / enable_safety_checkerAdded value: +{ + "type": "boolean" +} - added
Input schema / properties / first_frame_image_url / typeAdded value: +"string" - added
Input schema / properties / generate_audioAdded value: +{ + "type": "boolean" +} - added
Input schema / properties / last_frame_image_url / typeAdded value: +"string" - added
Input schema / properties / lock_cameraAdded value: +{ + "type": "boolean" +} - changed
Input schema / properties / model / enumPrevious value: -[ - "seedance-1.5-pro", - "seedance-2.0", - "seedance-2.0-fast", - "seedance-v1-lite", - "seedance-v1-pro", - "seedance-v1-pro-fast" -]New value: +[ + "seedance-1.5-pro", + "seedance-2-mini", + "seedance-2.0", + "seedance-2.0-fast", + "seedance-v1-lite", + "seedance-v1-pro", + "seedance-v1-pro-fast" +] - changed
Input schema / properties / output_resolution / enumPrevious value: -[ - "480p", - "720p", - "1080p" -]New value: +[ + "480p", + "720p", + "1080p", + "4k" +] - added
Input schema / properties / promptAdded value: +{ + "type": "string" +} - added
Input schema / properties / reference_audio_urls / itemsAdded value: +{} - added
Input schema / properties / reference_audio_urls / typeAdded value: +"array" - added
Input schema / properties / reference_image_urls / itemsAdded value: +{} - added
Input schema / properties / reference_image_urls / typeAdded value: +"array" - added
Input schema / properties / reference_video_urls / itemsAdded value: +{} - added
Input schema / properties / reference_video_urls / typeAdded value: +"array" - added
Input schema / properties / seedAdded value: +{ + "type": "number" +} - added
Input schema / properties / source_image_urls / itemsAdded value: +{} - added
Input schema / properties / source_image_urls / typeAdded value: +"array" - added
Input schema / properties / web_searchAdded value: +{ + "type": "boolean" +}
1 tool update
v0.1.4- Changed
text_to_video3 fields changed- added
Input schema / properties / duration_seconds / maximumAdded value: +12 - added
Input schema / properties / duration_seconds / minimumAdded value: +4 - added
Input schema / properties / duration_seconds / typeAdded value: +"number"
3 tool updates
v0.1.0- First observed
check_pricing - First observed
get_task - First observed
text_to_video
TDQS
Each tool serves a clearly distinct purpose: authentication, task creation, status retrieval, and pricing lookup. There is no overlap or ambiguity between them.
Tool names follow a consistent snake_case pattern with verb-first or noun-verb structure (login, get_task, check_pricing). text_to_video deviates slightly as a noun phrase, but it remains predictable and readable, so minor inconsistency only.
Four tools is well-scoped for a text-to-video generation server. Each tool is necessary for the core workflow (auth, create, fetch status) plus pricing, without redundancy or bloat.
The core lifecycle of text-to-video is covered: authentication, task creation, and status polling. Missing cancel or list operations, but these are not essential for the primary use case, and pricing adds value. Minor gap only.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
130+ AI models for image, video, music, and audio — 18 model families, one RunAPI account.
One API for 100+ AI video, image, music and speech models.
Create and manage cinematic AI video renders through the Future Video Studio Agent API.
Run 100+ AI models — image, video, audio, 3D — through one API with pay-per-use billing.
Related MCP Servers
- AlicenseBqualityAmaintenanceEnables interaction with Kling AI models for video generation and avatar tasks via RunAPI, including task creation, status polling, and pricing checks.887Apache 2.0
- AlicenseBqualityAmaintenanceEnables creating, polling, and checking pricing for Seedream image generation tasks (edit and text-to-image) through a single RunAPI API key.673Apache 2.0
- AlicenseBqualityAmaintenanceEnables AI image and video generation tasks (text-to-image, image-to-video, edit, upscale, etc.) via RunAPI, with support for polling and pricing lookups.10280Apache 2.0
- AlicenseAqualityAmaintenanceEnables creating and managing HappyHorse video generation tasks (edit, image-to-video, text-to-video) via RunAPI, with optional polling for completion and pricing lookup.669Apache 2.0
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/runapi-ai/seedance-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server