kling-mcp
Run Kling video generation operations through RunAPI: create, poll, and price tasks for 18 model variants across 6 endpoints.
Authenticate via browser PKCE login (
login) orRUNAPI_API_KEY.Create Kling tasks for:
ai_avatar,edit_video,extend_video,image_to_video,motion_control, andtext_to_video.Choose among 18 Kling models per endpoint, with options like model, wait, callback_url, timeout_ms, poll_interval_ms, and endpoint-specific parameters.
Optionally wait for terminal status during creation or submit without waiting and poll later.
Fetch current status and latest result payload for any existing task with
get_task.Check current pricing by model and endpoint with
check_pricing(no auth required).Use webhook callbacks for async notifications.
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., "@kling-mcpCreate a text-to-video task with kling-3.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/kling-mcp is a focused Model Context Protocol server for the Kling model line on RunAPI.
It gives MCP-compatible assistants direct access to 6 endpoints and 18 model variants without loading the full RunAPI catalog.
Use this per-model server when an agent should stay scoped to Kling. Use @runapi.ai/mcp when one assistant should discover every RunAPI model line.
Related MCP server: @runapi.ai/elevenlabs-mcp
Install
Add it to Claude Code:
claude mcp add kling -s user -- npx -y @runapi.ai/kling-mcpUse project scope when the server should be shared with a repository:
claude mcp add kling -s project -- npx -y @runapi.ai/kling-mcpCodex, Cursor, Windsurf, VS Code, Roo Code, and other MCP hosts can use the same stdio command:
{
"mcpServers": {
"kling": {
"command": "npx",
"args": ["-y", "@runapi.ai/kling-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 Kling ai avatar task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Kling edit video task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Kling extend video task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Kling image to video task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Kling motion control task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Kling 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 Kling model and endpoint. |
Models
Kling covers 18 model variants across 6 endpoints. Each tool accepts the models listed for it:
Tool | Models |
|
|
|
|
|
|
|
|
|
|
|
|
Model availability can change between releases. Use check_pricing or the Kling 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 Kling ai avatar task with RunAPI.The assistant can call check_pricing, then ai_avatar, 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 Kling pricing, then create the task if it matches my request.The assistant calls check_pricing and can link to the Kling 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 |
Kling model page | |
npm package | |
GitHub repository | |
RunAPI MCP overview | |
RunAPI docs |
License
Licensed under the Apache License, Version 2.0.
Available Tools
9 toolsai_avatarC
Create a Kling task on RunAPI (ai avatar). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| prompt | Yes | Description of the avatar. Declared type: string. | |
| timeout_ms | No | ||
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| poll_interval_ms | No | ||
| source_audio_url | Yes | Audio URL for lip sync. Declared type: string. | |
| source_image_url | Yes | Face image URL. Declared type: string. |
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 return shape (task id, status, output URLs) which is useful given there is no output schema. However, it omits the asynchronous task semantics implied by the wait/poll_interval_ms/timeout_ms parameters, the default blocking poll (wait=true), and any auth or cost considerations despite a sibling check_pricing 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 short sentences with no filler, and the core purpose is front-loaded before the return-value note. Minor waste in the '(ai avatar)' parenthetical and vendor jargon, but nothing that harms scanning.
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 an 8-parameter generative task tool with no annotations and no output schema, the description covers only the return shape and leaves usage conditions, async/polling behavior, and two parameters entirely unaddressed. An agent has enough to attempt a call but not enough to call it correctly or confidently.
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 description mentions no parameters at all, and schema coverage is only 75%, below the high-coverage threshold where the schema alone could justify a 3. Two undocumented parameters (timeout_ms, poll_interval_ms) have no meaning supplied anywhere, so the description fails to compensate.
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 ('Create a Kling task'), and the '(ai avatar)' gloss ties it to the tool name, distinguishing it from sibling video tools like text_to_video and image_to_video. The 'Kling task on RunAPI' phrasing is vendor jargon that only indirectly conveys that this produces a lip-synced avatar from an image plus audio.
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 is given: nothing says this is for talking-head/lip-sync avatars requiring an image and audio, nor how it differs from image_to_video or motion_control. The agent must infer applicability purely from the required params.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_pricingC
Look up RunAPI pricing for the kling 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?
No annotations are provided, so the description carries the full disclosure burden. 'Look up' implies a safe read, but the description does not state whether pricing is real-time or cached, whether auth is required, or what the lookup returns (per-call, per-second, currency), which matters greatly for a pricing tool with no output schema.
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 front-loaded sentence with no waste; the resource and scope appear immediately. Nothing extraneous is included.
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?
With no output schema and no annotations, the description should explain what the pricing result looks like and any auth or rate constraints, but it says nothing about the return value. For a tool whose entire purpose is retrieving pricing data, this leaves a significant 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 schema already documents both params including the action enum and the default behavior, making the baseline 3 appropriate. The phrase 'kling model line' hints that the model param is constrained to kling slugs, but no semantic detail is added beyond the 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?
The description states a specific verb and resource ('Look up RunAPI pricing') and scopes it to the 'kling model line', which is clear enough for an agent to understand the operation. It does not differentiate from siblings, but no sibling tool overlaps with pricing lookup, so the risk of confusion is low.
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 when-to-use guidance: nothing explains when an agent should call this versus acting on pricing info, nor any prerequisite such as needing a model slug first. With both params optional, the description does not indicate any situation in which the tool is or isn't appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_videoC
Create a Kling task on RunAPI (edit video). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| prompt | Yes | Video description. Declared type: string. | |
| timeout_ms | No | ||
| aspect_ratio | No | Output aspect ratio; source-only requests require auto. Declared type: string. Known values: "auto", "16:9", "9:16", "1:1". | |
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| enable_sound | No | Enable synchronized sound generation. Declared type: boolean. | |
| source_task_id | No | Completed compatible task ID; cannot be combined with source_video_url. Declared type: string. | |
| duration_seconds | No | Output duration in seconds. Declared type: integer. Known values: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. | |
| poll_interval_ms | No | ||
| source_video_url | No | Public source video URL; cannot be combined with source_task_id. Declared type: string. | |
| output_resolution | No | Output resolution. Declared type: string. Known values: "720p", "1080p", "4k". | |
| reference_image_urls | No | Ordered reference image URLs. Declared type: array. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It notes the return values (task id, status, output URLs), but says nothing about asynchronous task creation, polling/wait behavior, authentication, cost, or the mutual exclusivity of source inputs, leaving major behavioral traits undisclosed.
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 single sentence is front-loaded with the primary operation and has no filler, and the return-value note is useful. Even though it is terse for a 13-parameter tool, the dimension rewards lack of waste.
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 complex video-editing task tool with no annotations and no output schema, the description is under-specified. It covers the return shape only briefly and omits the asynchronous workflow, usage context, and source-constraint details that an agent would need beyond 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 85%, so the input schema already documents nearly all 13 parameters, including mutual exclusivity notes and known values. The description adds no parameter meaning, so the baseline of 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 states a specific action ('edit video') and the mechanism ('Create a Kling task on RunAPI'), which lets an agent know this is not text-to-video or image-to-video. However it does not explicitly name or differentiate from sibling tools such as extend_video or motion_control, so it falls 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?
The description gives no when-to-use guidance, no alternatives, and no conditions under which this tool should be chosen over sibling video tools. It only labels the operation; the agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extend_videoC
Create a Kling task on RunAPI (extend video). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Extension quality mode. Declared type: string. Known values: "std", "pro". | |
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| prompt | No | Optional description for the continuation. Declared type: string. | |
| timeout_ms | No | ||
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| source_task_id | Yes | Completed Kling v2.5 Turbo source task ID. Declared type: string. | |
| poll_interval_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does mention that a task id, status, and output URLs are returned, hinting at an async job model, but says nothing about cost, authentication, rate limits, whether the source task must be Kling v2.5 Turbo specifically, or how wait/callback interact.
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 core action and followed by the return contract; nothing is wasted. It is marginally terse given eight parameters, but there is 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 an eight-parameter async task-creation tool with no output schema, the description partially compensates by naming the return fields (task id, status, output URLs). However, with no annotations it leaves async behavior, callback_url/polling semantics, and cost unaddressed, so it is minimally adequate rather than 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 description coverage is 75%, so most parameters are self-documenting and the baseline is 3. The description adds no meaning beyond the schema, and two parameters (timeout_ms, poll_interval_ms) have no description in either place, so it does not compensate for that 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?
The description states a concrete verb and resource ('Create a Kling task ... extend video'), so an agent can tell it produces a video extension rather than a fresh generation. It does not explicitly differentiate itself from siblings like text_to_video or image_to_video, but the action is 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?
There is no statement of when to use this versus alternatives such as text_to_video or edit_video, nor any prerequisites beyond the implicit need for a completed source task implied by the required source_task_id. The agent must infer that this continues an existing generation rather than starting one.
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 kling task.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Asynchronous endpoint the task was created on. | |
| 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 carries the full burden. It does add real behavioral context by implying read-only retrieval and that the result is the 'latest' payload (i.e., may not yet be final), which supports polling semantics. It does not disclose rate limits, how to interpret status values, or what happens on an unknown task_id.
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 front-loaded sentence with no filler; the resource and the returned payload are stated immediately.
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 two-parameter lookup with full schema coverage and no output schema, the description usefully states what comes back (status plus latest result payload), which compensates for the missing output schema. It stops short of explaining status semantics or error behavior, so it is not 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?
Schema description coverage is 100%, and both required parameters (task_id, action enum) are documented in the schema. The description adds no further parameter detail, so the 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?
States a specific verb ('Fetch') and resource ('status and latest result payload for a kling task'), so the agent knows exactly what it retrieves. It is clearly distinguishable from the sibling creation tools (text_to_video, extend_video, etc.), though it never names an alternative explicitly.
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 only implied: because siblings all create tasks, this tool is obviously the status/polling counterpart, and the word 'current' hints at repeated polling. However, there is no explicit statement of when to call it (e.g., after task creation, poll until terminal status) or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_to_videoB
Create a Kling task on RunAPI (image to video). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Generation mode. Declared type: string. Known values: "std", "pro". | |
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| prompt | Yes | Video description; reference media with matching numbered markers. Declared type: string. | |
| cfg_scale | No | Guidance scale (0-1). Declared type: number. | |
| timeout_ms | No | ||
| aspect_ratio | No | Output aspect ratio. Declared type: string. | |
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| enable_sound | No | Sound generation must remain disabled. Declared type: boolean. | |
| negative_prompt | No | Negative prompt. Declared type: string. | |
| duration_seconds | No | Duration in seconds. Declared type: integer. Known values: 5, 10, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15. | |
| poll_interval_ms | No | ||
| output_resolution | No | Output resolution. Declared type: string. Known values: "720p", "1080p", "4k". | |
| reference_video_url | No | Public HTTP(S) MP4 or MOV reference video URL; cannot be combined with last_frame_image_url. Declared type: string. | |
| last_frame_image_url | No | Public HTTP(S) JPG, JPEG, or PNG final-frame image URL; cannot be combined with reference_image_urls or reference_video_url. Declared type: string. | |
| reference_image_urls | No | Ordered public HTTP(S) JPG, JPEG, or PNG reference image URLs; cannot be combined with last_frame_image_url. Declared type: array. | |
| reference_video_type | No | Use the video as a base edit or feature reference. Declared type: string. Known values: "base", "feature". | |
| first_frame_image_url | Yes | Public HTTP(S) JPG, JPEG, or PNG first-frame image URL. Declared type: string. | |
| preserve_reference_video_audio | No | Preserve the reference video's original audio. Declared type: boolean. |
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 async task pattern by stating it returns a task id, status, and output URLs. However, it omits auth/who can call, cost implications (a sibling check_pricing exists), and the fact that wait defaults to true (a blocking call by default), which are non-obvious behavioral traits.
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, front-loaded sentences with no wasted words; the create action and return shape are both immediate. It is efficient, though slightly clipped for a tool of this complexity.
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 19-parameter, no-annotation, no-output-schema generation tool the description is thin. It does describe the return values (task id, status, output URLs), which compensates for the missing output schema, but leaves async/polling behavior, exclusivity constraints, and cost context unaddressed.
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 89%, so the schema already documents almost all 19 parameters. The description adds no parameter-level meaning (e.g., interaction rules like reference_video_url vs last_frame_image_url, or the mutually exclusive frame options), so it stays at the high-coverage baseline.
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 ('Create a Kling task') and parenthetically scopes it to image-to-video, which implicitly separates it from the text_to_video and extend_video siblings. It stops short of naming those alternatives explicitly, so it is clear but not fully self-differentiating.
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 when-to-use guidance at all: nothing tells the agent how this differs from text_to_video, motion_control, or extend_video, nor when to prefer wait=true polling versus a callback_url. Usage must be inferred entirely from the name.
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?
With no annotations, the description carries the behavioral burden. It discloses the interactive browser flow and the file write side effect (config.json). However, it does not mention that it may overwrite existing credentials or that it could block waiting for user input, though these are implied.
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, well-structured sentence that front-loads the action ('Authenticate RunAPI') and provides necessary details without extraneous 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?
For a simple login tool with one optional parameter and no output schema, the description covers the core purpose and side effect. It lacks an explicit statement that this is a prerequisite for other tools, but that is implied.
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 only parameter 'force' has a description). The tool description adds no additional meaning about parameters beyond the schema, so the baseline of 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's purpose with a specific verb ('Authenticate'), target resource ('RunAPI'), method ('browser PKCE login flow'), and side effect (saving to config.json). It is distinct from sibling tools, none of which relate to authentication.
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 (to authenticate RunAPI) but does not explicitly say when to run it (e.g., before other RunAPI tools) or when to use the 'force' parameter. Since there are no alternative auth tools among siblings, 'vs alternatives' is not applicable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_controlC
Create a Kling task on RunAPI (motion control). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| prompt | No | Description prompt. Declared type: string. | |
| timeout_ms | No | ||
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| poll_interval_ms | No | ||
| source_image_url | Yes | Subject image URL. Declared type: string. | |
| background_source | No | Background source. Declared type: string. Known values: "video", "image". | |
| output_resolution | Yes | Output resolution. Declared type: string. Known values: "720p", "1080p". | |
| reference_video_url | Yes | Reference motion video URL. Declared type: string. | |
| character_orientation | No | Character orientation. Declared type: string. Known values: "video", "image". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden yet only discloses the return shape. It omits that this is an async generation job, that 'wait' defaults to polling, whether it costs credits, and how timeouts/callbacks behave — all of which are behavioral traits an agent must know.
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 resource, followed by the return shape. No waste, though it is arguably under-specified rather than efficiently complete.
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 an 11-parameter async generation tool with no annotations and no output schema, the description partially compensates by naming the return values (task id, status, output URLs). However it leaves usage, polling behavior, and cost/auth context unaddressed.
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 82%, so the schema already documents most parameters (including the three required URLs and enum-like known values). The description adds no parameter meaning beyond what the schema provides, which is the baseline 3 for high 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: 'Create a Kling task on RunAPI (motion control)'. The purpose is clear, but it does not differentiate from siblings like image_to_video, text_to_video, or edit_video, which are also task-creating tools on the same platform.
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 is given. The '(motion control)' parenthetical hints that a source image and reference video drive motion, but the description never says when to choose this over image_to_video or text_to_video, nor does it state prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text_to_videoC
Create a Kling task on RunAPI (text to video). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Generation mode. Declared type: string. Known values: "std", "pro". | |
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| prompt | No | Video description. Required unless multi_shots is enabled. Declared type: string. | |
| cfg_scale | No | Guidance scale (0-1). Declared type: number. | |
| timeout_ms | No | ||
| multi_shots | No | Enable multi-shot generation. Declared type: boolean. | |
| aspect_ratio | No | Output aspect ratio. Declared type: string. Known values: "16:9", "9:16", "1:1". | |
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| enable_sound | No | Enable sound generation. Declared type: boolean. | |
| multi_prompt | No | Prompt segments for multi-shot mode. Declared type: array. | |
| kling_elements | No | Element references with image, video, or audio materials. Declared type: array. | |
| negative_prompt | No | Negative prompt. Declared type: string. | |
| duration_seconds | No | Duration in seconds. Declared type: integer. Known values: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. | |
| poll_interval_ms | No | ||
| output_resolution | No | Output resolution. Declared type: string. Known values: "720p", "1080p", "4k". | |
| reference_video_url | No | Public HTTP(S) MP4 or MOV reference video URL. Declared type: string. | |
| last_frame_image_url | No | Last frame image URL for single-shot mode. Declared type: string. | |
| reference_image_urls | No | Ordered public HTTP(S) JPG, JPEG, or PNG reference image URLs. Declared type: array. | |
| reference_video_type | No | Use the video as a base edit or feature reference. Declared type: string. Known values: "base", "feature". | |
| first_frame_image_url | No | First frame image URL. Declared type: string. | |
| preserve_reference_video_audio | No | Preserve the reference video's original audio. Declared type: boolean. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden. It notes the response shape (task id, status, output URLs), which is useful given there is no output schema, but says nothing about polling/`wait` behavior, cost, async callback semantics, or what happens with the many optional reference params. For a 22-parameter generation tool this is thin.
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, both front-loaded and waste-free: purpose first, then the return contract. Nothing is redundant, though it is arguably under-informative rather than truly 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?
With 22 parameters, zero annotations, and no output schema, the description should at minimum explain the wait/polling default and the interaction between multi_shots, multi_prompt, and the reference-* fields. The return-shape sentence partially compensates for the missing output schema, but the behavior of a complex async generation task is left unexplained.
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 91%, so the schema already documents nearly every parameter (including enum-like known values and defaults). The description adds no parameter-level meaning beyond the schema, so the 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?
States a specific verb and resource ('Create a Kling task'), plus the modality '(text to video)', which distinguishes it from siblings like image_to_video and edit_video. It does not name those siblings explicitly, but the modality label is enough for an agent to route correctly.
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 mention of when to prefer image_to_video/extend_video/motion_control, and no prerequisites (e.g. that reference image URLs push work toward the image_to_video path). The agent must infer usage from the tool name alone.
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.
8 tool updates
v0.3.0- Changed
ai_avatar6 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - removed
Input schema / properties / model / enumRemoved value: -[ - "kling-ai-avatar-pro", - "kling-ai-avatar-standard", - "kling-ai-avatar-v1-pro", - "kling-v1-avatar-standard" -] - changed
Input schema / properties / prompt / descriptionPrevious value: -"Description of the avatar."New value: +"Description of the avatar. Declared type: string." - changed
Input schema / properties / source_audio_url / descriptionPrevious value: -"Audio URL for lip sync."New value: +"Audio URL for lip sync. Declared type: string." - changed
Input schema / properties / source_image_url / descriptionPrevious value: -"Face image URL."New value: +"Face image URL. Declared type: string."
- Changed
check_pricing2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / model / enumRemoved value: -[ - "kling-ai-avatar-pro", - "kling-ai-avatar-standard", - "kling-ai-avatar-v1-pro", - "kling-v1-avatar-standard", - "kling-v3-omni-edit", - "kling-v3-omni-reference", - "kling-v2.5-turbo-image-to-video-pro", - "kling-v2.5-turbo-text-to-video-pro", - "kling-o1", - "kling-v2.1-master-image-to-video", - "kling-v2.1-pro", - "kling-v2.1-standard", - "kling-v2.6", - "kling-v3-omni", - "kling-v3-turbo-image-to-video", - "kling-3.0", - "kling-v2.1-master-text-to-video", - "kling-v3-turbo-text-to-video" -]
- Changed
edit_video21 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - removed
Input schema / properties / aspect_ratio / anyOfRemoved value: -[ - { - "const": "auto", - "type": "string" - }, - { - "const": "16:9", - "type": "string" - }, - { - "const": "9:16", - "type": "string" - }, - { - "const": "1:1", - "type": "string" - } -] - changed
Input schema / properties / aspect_ratio / descriptionPrevious value: -"Output aspect ratio; source-only requests require auto."New value: +"Output aspect ratio; source-only requests require auto. Declared type: string. Known values: \"auto\", \"16:9\", \"9:16\", \"1:1\"." - added
Input schema / properties / aspect_ratio / typeAdded value: +"string" - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - removed
Input schema / properties / duration_seconds / anyOfRemoved value: -[ - { - "const": 3, - "type": "number" - }, - { - "const": 4, - "type": "number" - }, - { - "const": 5, - "type": "number" - }, - { - "const": 6, - "type": "number" - }, - { - "const": 7, - "type": "number" - }, - { - "const": 8, - "type": "number" - }, - { - "const": 9, - "type": "number" - }, - { - "const": 10, - "type": "number" - }, - { - "const": 11, - "type": "number" - }, - { - "const": 12, - "type": "number" - }, - { - "const": 13, - "type": "number" - }, - { - "const": 14, - "type": "number" - }, - { - "const": 15, - "type": "number" - } -] - changed
Input schema / properties / duration_seconds / descriptionPrevious value: -"Output duration in seconds."New value: +"Output duration in seconds. Declared type: integer. Known values: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15." - added
Input schema / properties / duration_seconds / typeAdded value: +"integer" - changed
Input schema / properties / enable_sound / descriptionPrevious value: -"Enable synchronized sound generation."New value: +"Enable synchronized sound generation. Declared type: boolean." - removed
Input schema / properties / model / enumRemoved value: -[ - "kling-v3-omni-edit", - "kling-v3-omni-reference" -] - removed
Input schema / properties / output_resolution / anyOfRemoved value: -[ - { - "const": "720p", - "type": "string" - }, - { - "const": "1080p", - "type": "string" - }, - { - "const": "4k", - "type": "string" - } -] - changed
Input schema / properties / output_resolution / descriptionPrevious value: -"Output resolution."New value: +"Output resolution. Declared type: string. Known values: \"720p\", \"1080p\", \"4k\"." - added
Input schema / properties / output_resolution / typeAdded value: +"string" - changed
Input schema / properties / prompt / descriptionPrevious value: -"Video description."New value: +"Video description. Declared type: string." - removed
Input schema / properties / prompt / maxLengthRemoved value: -2500 - removed
Input schema / properties / prompt / minLengthRemoved value: -1 - changed
Input schema / properties / reference_image_urls / descriptionPrevious value: -"Ordered reference image URLs."New value: +"Ordered reference image URLs. Declared type: array." - removed
Input schema / properties / reference_image_urls / maxItemsRemoved value: -4 - removed
Input schema / properties / reference_image_urls / minItemsRemoved value: -1 - changed
Input schema / properties / source_task_id / descriptionPrevious value: -"Completed compatible task ID; cannot be combined with source_video_url."New value: +"Completed compatible task ID; cannot be combined with source_video_url. Declared type: string." - changed
Input schema / properties / source_video_url / descriptionPrevious value: -"Public source video URL; cannot be combined with source_task_id."New value: +"Public source video URL; cannot be combined with source_task_id. Declared type: string."
- Changed
extend_video8 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "const": "std", - "type": "string" - }, - { - "const": "pro", - "type": "string" - } -] - changed
Input schema / properties / mode / descriptionPrevious value: -"Extension quality mode."New value: +"Extension quality mode. Declared type: string. Known values: \"std\", \"pro\"." - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / model / enumRemoved value: -[ - "kling-v2.5-turbo-image-to-video-pro", - "kling-v2.5-turbo-text-to-video-pro" -] - changed
Input schema / properties / prompt / descriptionPrevious value: -"Optional description for the continuation."New value: +"Optional description for the continuation. Declared type: string." - changed
Input schema / properties / source_task_id / descriptionPrevious value: -"Completed Kling v2.5 Turbo source task ID."New value: +"Completed Kling v2.5 Turbo source task ID. Declared type: string."
- Changed
get_task1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
image_to_video27 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / aspect_ratio / descriptionPrevious value: -"Output aspect ratio."New value: +"Output aspect ratio. Declared type: string." - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - changed
Input schema / properties / cfg_scale / descriptionPrevious value: -"Guidance scale (0-1)."New value: +"Guidance scale (0-1). Declared type: number." - removed
Input schema / properties / duration_seconds / anyOfRemoved value: -[ - { - "const": 5, - "type": "number" - }, - { - "const": 10, - "type": "number" - }, - { - "const": 3, - "type": "number" - }, - { - "const": 4, - "type": "number" - }, - { - "const": 6, - "type": "number" - }, - { - "const": 7, - "type": "number" - }, - { - "const": 8, - "type": "number" - }, - { - "const": 9, - "type": "number" - }, - { - "const": 11, - "type": "number" - }, - { - "const": 12, - "type": "number" - }, - { - "const": 13, - "type": "number" - }, - { - "const": 14, - "type": "number" - }, - { - "const": 15, - "type": "number" - } -] - changed
Input schema / properties / duration_seconds / descriptionPrevious value: -"Duration in seconds."New value: +"Duration in seconds. Declared type: integer. Known values: 5, 10, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15." - added
Input schema / properties / duration_seconds / typeAdded value: +"integer" - changed
Input schema / properties / enable_sound / descriptionPrevious value: -"Sound generation must remain disabled."New value: +"Sound generation must remain disabled. Declared type: boolean." - changed
Input schema / properties / first_frame_image_url / descriptionPrevious value: -"Public HTTP(S) JPG, JPEG, or PNG first-frame image URL."New value: +"Public HTTP(S) JPG, JPEG, or PNG first-frame image URL. Declared type: string." - changed
Input schema / properties / last_frame_image_url / descriptionPrevious value: -"Public HTTP(S) JPG, JPEG, or PNG final-frame image URL; cannot be combined with reference_image_urls or reference_video_url."New value: +"Public HTTP(S) JPG, JPEG, or PNG final-frame image URL; cannot be combined with reference_image_urls or reference_video_url. Declared type: string." - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "const": "std", - "type": "string" - }, - { - "const": "pro", - "type": "string" - } -] - changed
Input schema / properties / mode / descriptionPrevious value: -"Generation mode."New value: +"Generation mode. Declared type: string. Known values: \"std\", \"pro\"." - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / model / enumRemoved value: -[ - "kling-o1", - "kling-v2.1-master-image-to-video", - "kling-v2.1-pro", - "kling-v2.1-standard", - "kling-v2.5-turbo-image-to-video-pro", - "kling-v2.6", - "kling-v3-omni", - "kling-v3-turbo-image-to-video" -] - changed
Input schema / properties / negative_prompt / descriptionPrevious value: -"Negative prompt."New value: +"Negative prompt. Declared type: string." - removed
Input schema / properties / output_resolution / anyOfRemoved value: -[ - { - "const": "720p", - "type": "string" - }, - { - "const": "1080p", - "type": "string" - }, - { - "const": "4k", - "type": "string" - } -] - changed
Input schema / properties / output_resolution / descriptionPrevious value: -"Output resolution."New value: +"Output resolution. Declared type: string. Known values: \"720p\", \"1080p\", \"4k\"." - added
Input schema / properties / output_resolution / typeAdded value: +"string" - changed
Input schema / properties / preserve_reference_video_audio / descriptionPrevious value: -"Preserve the reference video's original audio."New value: +"Preserve the reference video's original audio. Declared type: boolean." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Video description; reference media with matching numbered markers."New value: +"Video description; reference media with matching numbered markers. Declared type: string." - removed
Input schema / properties / prompt / maxLengthRemoved value: -2500 - removed
Input schema / properties / prompt / minLengthRemoved value: -1 - changed
Input schema / properties / reference_image_urls / descriptionPrevious value: -"Ordered public HTTP(S) JPG, JPEG, or PNG reference image URLs; cannot be combined with last_frame_image_url."New value: +"Ordered public HTTP(S) JPG, JPEG, or PNG reference image URLs; cannot be combined with last_frame_image_url. Declared type: array." - removed
Input schema / properties / reference_video_type / anyOfRemoved value: -[ - { - "const": "base", - "type": "string" - }, - { - "const": "feature", - "type": "string" - } -] - changed
Input schema / properties / reference_video_type / descriptionPrevious value: -"Use the video as a base edit or feature reference."New value: +"Use the video as a base edit or feature reference. Declared type: string. Known values: \"base\", \"feature\"." - added
Input schema / properties / reference_video_type / typeAdded value: +"string" - changed
Input schema / properties / reference_video_url / descriptionPrevious value: -"Public HTTP(S) MP4 or MOV reference video URL; cannot be combined with last_frame_image_url."New value: +"Public HTTP(S) MP4 or MOV reference video URL; cannot be combined with last_frame_image_url. Declared type: string."
- Changed
motion_control15 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - removed
Input schema / properties / background_source / anyOfRemoved value: -[ - { - "const": "video", - "type": "string" - }, - { - "const": "image", - "type": "string" - } -] - changed
Input schema / properties / background_source / descriptionPrevious value: -"Background source."New value: +"Background source. Declared type: string. Known values: \"video\", \"image\"." - added
Input schema / properties / background_source / typeAdded value: +"string" - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - removed
Input schema / properties / character_orientation / anyOfRemoved value: -[ - { - "const": "video", - "type": "string" - }, - { - "const": "image", - "type": "string" - } -] - changed
Input schema / properties / character_orientation / descriptionPrevious value: -"Character orientation."New value: +"Character orientation. Declared type: string. Known values: \"video\", \"image\"." - added
Input schema / properties / character_orientation / typeAdded value: +"string" - removed
Input schema / properties / model / enumRemoved value: -[ - "kling-3.0", - "kling-v2.6" -] - removed
Input schema / properties / output_resolution / anyOfRemoved value: -[ - { - "const": "720p", - "type": "string" - }, - { - "const": "1080p", - "type": "string" - } -] - changed
Input schema / properties / output_resolution / descriptionPrevious value: -"Output resolution."New value: +"Output resolution. Declared type: string. Known values: \"720p\", \"1080p\"." - added
Input schema / properties / output_resolution / typeAdded value: +"string" - changed
Input schema / properties / prompt / descriptionPrevious value: -"Description prompt."New value: +"Description prompt. Declared type: string." - changed
Input schema / properties / reference_video_url / descriptionPrevious value: -"Reference motion video URL."New value: +"Reference motion video URL. Declared type: string." - changed
Input schema / properties / source_image_url / descriptionPrevious value: -"Subject image URL."New value: +"Subject image URL. Declared type: string."
- Changed
text_to_video31 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - removed
Input schema / properties / aspect_ratio / anyOfRemoved value: -[ - { - "const": "16:9", - "type": "string" - }, - { - "const": "9:16", - "type": "string" - }, - { - "const": "1:1", - "type": "string" - } -] - changed
Input schema / properties / aspect_ratio / descriptionPrevious value: -"Output aspect ratio."New value: +"Output aspect ratio. Declared type: string. Known values: \"16:9\", \"9:16\", \"1:1\"." - added
Input schema / properties / aspect_ratio / typeAdded value: +"string" - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - changed
Input schema / properties / cfg_scale / descriptionPrevious value: -"Guidance scale (0-1)."New value: +"Guidance scale (0-1). Declared type: number." - removed
Input schema / properties / duration_seconds / anyOfRemoved value: -[ - { - "const": 3, - "type": "number" - }, - { - "const": 4, - "type": "number" - }, - { - "const": 5, - "type": "number" - }, - { - "const": 6, - "type": "number" - }, - { - "const": 7, - "type": "number" - }, - { - "const": 8, - "type": "number" - }, - { - "const": 9, - "type": "number" - }, - { - "const": 10, - "type": "number" - }, - { - "const": 11, - "type": "number" - }, - { - "const": 12, - "type": "number" - }, - { - "const": 13, - "type": "number" - }, - { - "const": 14, - "type": "number" - }, - { - "const": 15, - "type": "number" - } -] - changed
Input schema / properties / duration_seconds / descriptionPrevious value: -"Duration in seconds."New value: +"Duration in seconds. Declared type: integer. Known values: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15." - added
Input schema / properties / duration_seconds / typeAdded value: +"integer" - changed
Input schema / properties / enable_sound / descriptionPrevious value: -"Enable sound generation."New value: +"Enable sound generation. Declared type: boolean." - changed
Input schema / properties / first_frame_image_url / descriptionPrevious value: -"First frame image URL."New value: +"First frame image URL. Declared type: string." - changed
Input schema / properties / kling_elements / descriptionPrevious value: -"Element references with image, video, or audio materials."New value: +"Element references with image, video, or audio materials. Declared type: array." - changed
Input schema / properties / last_frame_image_url / descriptionPrevious value: -"Last frame image URL for single-shot mode."New value: +"Last frame image URL for single-shot mode. Declared type: string." - removed
Input schema / properties / mode / anyOfRemoved value: -[ - { - "const": "std", - "type": "string" - }, - { - "const": "pro", - "type": "string" - } -] - changed
Input schema / properties / mode / descriptionPrevious value: -"Generation mode."New value: +"Generation mode. Declared type: string. Known values: \"std\", \"pro\"." - added
Input schema / properties / mode / typeAdded value: +"string" - removed
Input schema / properties / model / enumRemoved value: -[ - "kling-3.0", - "kling-o1", - "kling-v2.1-master-text-to-video", - "kling-v2.5-turbo-text-to-video-pro", - "kling-v2.6", - "kling-v3-omni", - "kling-v3-omni-reference", - "kling-v3-turbo-text-to-video" -] - changed
Input schema / properties / multi_prompt / descriptionPrevious value: -"Prompt segments for multi-shot mode."New value: +"Prompt segments for multi-shot mode. Declared type: array." - changed
Input schema / properties / multi_shots / descriptionPrevious value: -"Enable multi-shot generation."New value: +"Enable multi-shot generation. Declared type: boolean." - changed
Input schema / properties / negative_prompt / descriptionPrevious value: -"Negative prompt."New value: +"Negative prompt. Declared type: string." - removed
Input schema / properties / output_resolution / anyOfRemoved value: -[ - { - "const": "720p", - "type": "string" - }, - { - "const": "1080p", - "type": "string" - }, - { - "const": "4k", - "type": "string" - } -] - changed
Input schema / properties / output_resolution / descriptionPrevious value: -"Output resolution."New value: +"Output resolution. Declared type: string. Known values: \"720p\", \"1080p\", \"4k\"." - added
Input schema / properties / output_resolution / typeAdded value: +"string" - changed
Input schema / properties / preserve_reference_video_audio / descriptionPrevious value: -"Preserve the reference video's original audio."New value: +"Preserve the reference video's original audio. Declared type: boolean." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Video description. Required unless multi_shots is enabled."New value: +"Video description. Required unless multi_shots is enabled. Declared type: string." - changed
Input schema / properties / reference_image_urls / descriptionPrevious value: -"Ordered public HTTP(S) JPG, JPEG, or PNG reference image URLs."New value: +"Ordered public HTTP(S) JPG, JPEG, or PNG reference image URLs. Declared type: array." - removed
Input schema / properties / reference_video_type / anyOfRemoved value: -[ - { - "const": "base", - "type": "string" - }, - { - "const": "feature", - "type": "string" - } -] - changed
Input schema / properties / reference_video_type / descriptionPrevious value: -"Use the video as a base edit or feature reference."New value: +"Use the video as a base edit or feature reference. Declared type: string. Known values: \"base\", \"feature\"." - added
Input schema / properties / reference_video_type / typeAdded value: +"string" - changed
Input schema / properties / reference_video_url / descriptionPrevious value: -"Public HTTP(S) MP4 or MOV reference video URL."New value: +"Public HTTP(S) MP4 or MOV reference video URL. Declared type: string." - added
Input schema / requiredAdded value: +[]
8 tool updates
v0.2.0- Changed
ai_avatar3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / poll_interval_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / timeout_ms / maximumAdded value: +9007199254740991
- Changed
check_pricing2 fields changed- changed
Input schema / properties / action / enumPrevious value: -[ - "ai_avatar", - "extend_video", - "image_to_video", - "motion_control", - "text_to_video" -]New value: +[ + "ai_avatar", + "edit_video", + "extend_video", + "image_to_video", + "motion_control", + "text_to_video" +] - changed
Input schema / properties / model / enumPrevious value: -[ - "kling-ai-avatar-pro", - "kling-ai-avatar-standard", - "kling-ai-avatar-v1-pro", - "kling-v1-avatar-standard", - "kling-v2.5-turbo-image-to-video-pro", - "kling-v2.5-turbo-text-to-video-pro", - "kling-o1", - "kling-v2.1-master-image-to-video", - "kling-v2.1-pro", - "kling-v2.1-standard", - "kling-v2.6", - "kling-v3-omni", - "kling-v3-turbo-image-to-video", - "kling-3.0", - "kling-v2.1-master-text-to-video", - "kling-v3-turbo-text-to-video" -]New value: +[ + "kling-ai-avatar-pro", + "kling-ai-avatar-standard", + "kling-ai-avatar-v1-pro", + "kling-v1-avatar-standard", + "kling-v3-omni-edit", + "kling-v3-omni-reference", + "kling-v2.5-turbo-image-to-video-pro", + "kling-v2.5-turbo-text-to-video-pro", + "kling-o1", + "kling-v2.1-master-image-to-video", + "kling-v2.1-pro", + "kling-v2.1-standard", + "kling-v2.6", + "kling-v3-omni", + "kling-v3-turbo-image-to-video", + "kling-3.0", + "kling-v2.1-master-text-to-video", + "kling-v3-turbo-text-to-video" +]
- Added
edit_video - Changed
extend_video6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / mode / anyOfAdded value: +[ + { + "const": "std", + "type": "string" + }, + { + "const": "pro", + "type": "string" + } +] - removed
Input schema / properties / mode / enumRemoved value: -[ - "std", - "pro" -] - removed
Input schema / properties / mode / typeRemoved value: -"string" - added
Input schema / properties / poll_interval_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / timeout_ms / maximumAdded value: +9007199254740991
- Changed
get_task1 field changed- changed
Input schema / properties / action / enumPrevious value: -[ - "ai_avatar", - "extend_video", - "image_to_video", - "motion_control", - "text_to_video" -]New value: +[ + "ai_avatar", + "edit_video", + "extend_video", + "image_to_video", + "motion_control", + "text_to_video" +]
- Changed
image_to_video15 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / duration_seconds / anyOfAdded value: +[ + { + "const": 5, + "type": "number" + }, + { + "const": 10, + "type": "number" + }, + { + "const": 3, + "type": "number" + }, + { + "const": 4, + "type": "number" + }, + { + "const": 6, + "type": "number" + }, + { + "const": 7, + "type": "number" + }, + { + "const": 8, + "type": "number" + }, + { + "const": 9, + "type": "number" + }, + { + "const": 11, + "type": "number" + }, + { + "const": 12, + "type": "number" + }, + { + "const": 13, + "type": "number" + }, + { + "const": 14, + "type": "number" + }, + { + "const": 15, + "type": "number" + } +] - removed
Input schema / properties / duration_seconds / enumRemoved value: -[ - 5, - 10, - 3, - 4, - 6, - 7, - 8, - 9, - 11, - 12, - 13, - 14, - 15 -] - removed
Input schema / properties / duration_seconds / typeRemoved value: -"number" - added
Input schema / properties / mode / anyOfAdded value: +[ + { + "const": "std", + "type": "string" + }, + { + "const": "pro", + "type": "string" + } +] - removed
Input schema / properties / mode / enumRemoved value: -[ - "std", - "pro" -] - removed
Input schema / properties / mode / typeRemoved value: -"string" - added
Input schema / properties / output_resolution / anyOfAdded value: +[ + { + "const": "720p", + "type": "string" + }, + { + "const": "1080p", + "type": "string" + }, + { + "const": "4k", + "type": "string" + } +] - removed
Input schema / properties / output_resolution / enumRemoved value: -[ - "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 / reference_video_type / anyOfAdded value: +[ + { + "const": "base", + "type": "string" + }, + { + "const": "feature", + "type": "string" + } +] - removed
Input schema / properties / reference_video_type / enumRemoved value: -[ - "base", - "feature" -] - removed
Input schema / properties / reference_video_type / typeRemoved value: -"string" - added
Input schema / properties / timeout_ms / maximumAdded value: +9007199254740991
- Changed
motion_control13 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / background_source / anyOfAdded value: +[ + { + "const": "video", + "type": "string" + }, + { + "const": "image", + "type": "string" + } +] - removed
Input schema / properties / background_source / enumRemoved value: -[ - "video", - "image" -] - removed
Input schema / properties / background_source / typeRemoved value: -"string" - added
Input schema / properties / character_orientation / anyOfAdded value: +[ + { + "const": "video", + "type": "string" + }, + { + "const": "image", + "type": "string" + } +] - removed
Input schema / properties / character_orientation / enumRemoved value: -[ - "video", - "image" -] - removed
Input schema / properties / character_orientation / typeRemoved value: -"string" - added
Input schema / properties / output_resolution / anyOfAdded value: +[ + { + "const": "720p", + "type": "string" + }, + { + "const": "1080p", + "type": "string" + } +] - removed
Input schema / properties / output_resolution / enumRemoved value: -[ - "720p", - "1080p" -] - 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 - changed
Input schema / requiredPrevious value: -[ - "source_image_url", - "reference_video_url" -]New value: +[ + "source_image_url", + "reference_video_url", + "output_resolution" +]
- Changed
text_to_video19 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / aspect_ratio / anyOfAdded value: +[ + { + "const": "16:9", + "type": "string" + }, + { + "const": "9:16", + "type": "string" + }, + { + "const": "1:1", + "type": "string" + } +] - removed
Input schema / properties / aspect_ratio / enumRemoved value: -[ - "16:9", - "9:16", - "1:1" -] - removed
Input schema / properties / aspect_ratio / typeRemoved value: -"string" - added
Input schema / properties / duration_seconds / anyOfAdded value: +[ + { + "const": 3, + "type": "number" + }, + { + "const": 4, + "type": "number" + }, + { + "const": 5, + "type": "number" + }, + { + "const": 6, + "type": "number" + }, + { + "const": 7, + "type": "number" + }, + { + "const": 8, + "type": "number" + }, + { + "const": 9, + "type": "number" + }, + { + "const": 10, + "type": "number" + }, + { + "const": 11, + "type": "number" + }, + { + "const": 12, + "type": "number" + }, + { + "const": 13, + "type": "number" + }, + { + "const": 14, + "type": "number" + }, + { + "const": 15, + "type": "number" + } +] - removed
Input schema / properties / duration_seconds / enumRemoved value: -[ - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 -] - removed
Input schema / properties / duration_seconds / typeRemoved value: -"number" - added
Input schema / properties / mode / anyOfAdded value: +[ + { + "const": "std", + "type": "string" + }, + { + "const": "pro", + "type": "string" + } +] - removed
Input schema / properties / mode / enumRemoved value: -[ - "std", - "pro" -] - removed
Input schema / properties / mode / typeRemoved value: -"string" - changed
Input schema / properties / model / enumPrevious value: -[ - "kling-3.0", - "kling-o1", - "kling-v2.1-master-text-to-video", - "kling-v2.5-turbo-text-to-video-pro", - "kling-v2.6", - "kling-v3-omni", - "kling-v3-turbo-text-to-video" -]New value: +[ + "kling-3.0", + "kling-o1", + "kling-v2.1-master-text-to-video", + "kling-v2.5-turbo-text-to-video-pro", + "kling-v2.6", + "kling-v3-omni", + "kling-v3-omni-reference", + "kling-v3-turbo-text-to-video" +] - added
Input schema / properties / output_resolution / anyOfAdded value: +[ + { + "const": "720p", + "type": "string" + }, + { + "const": "1080p", + "type": "string" + }, + { + "const": "4k", + "type": "string" + } +] - removed
Input schema / properties / output_resolution / enumRemoved value: -[ - "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 / reference_video_type / anyOfAdded value: +[ + { + "const": "base", + "type": "string" + }, + { + "const": "feature", + "type": "string" + } +] - removed
Input schema / properties / reference_video_type / enumRemoved value: -[ - "base", - "feature" -] - removed
Input schema / properties / reference_video_type / typeRemoved value: -"string" - added
Input schema / properties / timeout_ms / maximumAdded value: +9007199254740991
7 tool updates
v0.1.13- Changed
ai_avatar4 fields changed- added
Input schema / properties / callback_url / descriptionAdded value: +"Webhook URL for async notifications." - added
Input schema / properties / prompt / descriptionAdded value: +"Description of the avatar." - added
Input schema / properties / source_audio_url / descriptionAdded value: +"Audio URL for lip sync." - added
Input schema / properties / source_image_url / descriptionAdded value: +"Face image URL."
- Changed
check_pricing2 fields changed- changed
Input schema / properties / action / enumPrevious value: -[ - "ai_avatar", - "image_to_video", - "motion_control", - "text_to_video" -]New value: +[ + "ai_avatar", + "extend_video", + "image_to_video", + "motion_control", + "text_to_video" +] - changed
Input schema / properties / model / enumPrevious value: -[ - "kling-ai-avatar-pro", - "kling-ai-avatar-standard", - "kling-ai-avatar-v1-pro", - "kling-v1-avatar-standard", - "kling-v2.1-master-image-to-video", - "kling-v2.1-pro", - "kling-v2.1-standard", - "kling-v2.5-turbo-image-to-video-pro", - "kling-v3-turbo-image-to-video", - "kling-3.0", - "kling-v2.1-master-text-to-video", - "kling-v2.5-turbo-text-to-video-pro", - "kling-v3-turbo-text-to-video" -]New value: +[ + "kling-ai-avatar-pro", + "kling-ai-avatar-standard", + "kling-ai-avatar-v1-pro", + "kling-v1-avatar-standard", + "kling-v2.5-turbo-image-to-video-pro", + "kling-v2.5-turbo-text-to-video-pro", + "kling-o1", + "kling-v2.1-master-image-to-video", + "kling-v2.1-pro", + "kling-v2.1-standard", + "kling-v2.6", + "kling-v3-omni", + "kling-v3-turbo-image-to-video", + "kling-3.0", + "kling-v2.1-master-text-to-video", + "kling-v3-turbo-text-to-video" +]
- Added
extend_video - Changed
get_task2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Endpoint the task was created on."New value: +"Asynchronous endpoint the task was created on." - changed
Input schema / properties / action / enumPrevious value: -[ - "ai_avatar", - "image_to_video", - "motion_control", - "text_to_video" -]New value: +[ + "ai_avatar", + "extend_video", + "image_to_video", + "motion_control", + "text_to_video" +]
- Added
image_to_video - Changed
motion_control8 fields changed- added
Input schema / properties / background_source / descriptionAdded value: +"Background source." - added
Input schema / properties / callback_url / descriptionAdded value: +"Webhook URL for async notifications." - added
Input schema / properties / character_orientation / descriptionAdded value: +"Character orientation." - changed
Input schema / properties / model / enumPrevious value: -[ - "kling-3.0" -]New value: +[ + "kling-3.0", + "kling-v2.6" +] - added
Input schema / properties / output_resolution / descriptionAdded value: +"Output resolution." - added
Input schema / properties / prompt / descriptionAdded value: +"Description prompt." - added
Input schema / properties / reference_video_url / descriptionAdded value: +"Reference motion video URL." - added
Input schema / properties / source_image_url / descriptionAdded value: +"Subject image URL."
- Changed
text_to_video20 fields changed- added
Input schema / properties / aspect_ratio / descriptionAdded value: +"Output aspect ratio." - added
Input schema / properties / callback_url / descriptionAdded value: +"Webhook URL for async notifications." - added
Input schema / properties / cfg_scale / descriptionAdded value: +"Guidance scale (0-1)." - added
Input schema / properties / duration_seconds / descriptionAdded value: +"Duration in seconds." - added
Input schema / properties / enable_sound / descriptionAdded value: +"Enable sound generation." - added
Input schema / properties / first_frame_image_url / descriptionAdded value: +"First frame image URL." - added
Input schema / properties / kling_elements / descriptionAdded value: +"Element references with image, video, or audio materials." - added
Input schema / properties / last_frame_image_url / descriptionAdded value: +"Last frame image URL for single-shot mode." - added
Input schema / properties / modeAdded value: +{ + "description": "Generation mode.", + "enum": [ + "std", + "pro" + ], + "type": "string" +} - changed
Input schema / properties / model / enumPrevious value: -[ - "kling-3.0", - "kling-v2.1-master-text-to-video", - "kling-v2.5-turbo-text-to-video-pro", - "kling-v3-turbo-text-to-video" -]New value: +[ + "kling-3.0", + "kling-o1", + "kling-v2.1-master-text-to-video", + "kling-v2.5-turbo-text-to-video-pro", + "kling-v2.6", + "kling-v3-omni", + "kling-v3-turbo-text-to-video" +] - added
Input schema / properties / multi_prompt / descriptionAdded value: +"Prompt segments for multi-shot mode." - added
Input schema / properties / multi_shots / descriptionAdded value: +"Enable multi-shot generation." - added
Input schema / properties / negative_prompt / descriptionAdded value: +"Negative prompt." - added
Input schema / properties / output_resolution / descriptionAdded value: +"Output resolution." - added
Input schema / properties / output_resolution / enumAdded value: +[ + "720p", + "1080p", + "4k" +] - added
Input schema / properties / preserve_reference_video_audioAdded value: +{ + "description": "Preserve the reference video's original audio.", + "type": "boolean" +} - added
Input schema / properties / prompt / descriptionAdded value: +"Video description. Required unless multi_shots is enabled." - added
Input schema / properties / reference_image_urlsAdded value: +{ + "description": "Ordered public HTTP(S) JPG, JPEG, or PNG reference image URLs.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / reference_video_typeAdded value: +{ + "description": "Use the video as a base edit or feature reference.", + "enum": [ + "base", + "feature" + ], + "type": "string" +} - added
Input schema / properties / reference_video_urlAdded value: +{ + "description": "Public HTTP(S) MP4 or MOV reference video URL.", + "type": "string" +}
4 tool updates
v0.1.9- Changed
ai_avatar1 field changed- changed
Input schema / requiredPrevious value: -[ - "prompt", - "source_audio_url", - "source_image_url" -]New value: +[ + "source_image_url", + "source_audio_url", + "prompt" +]
- Changed
check_pricing1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "kling-ai-avatar-pro", - "kling-ai-avatar-standard", - "kling-ai-avatar-v1-pro", - "kling-v1-avatar-standard", - "kling-v2.1-master-image-to-video", - "kling-v2.1-pro", - "kling-v2.1-standard", - "kling-v2.5-turbo-image-to-video-pro", - "kling-3.0", - "kling-v2.1-master-text-to-video", - "kling-v2.5-turbo-text-to-video-pro" -]New value: +[ + "kling-ai-avatar-pro", + "kling-ai-avatar-standard", + "kling-ai-avatar-v1-pro", + "kling-v1-avatar-standard", + "kling-v2.1-master-image-to-video", + "kling-v2.1-pro", + "kling-v2.1-standard", + "kling-v2.5-turbo-image-to-video-pro", + "kling-v3-turbo-image-to-video", + "kling-3.0", + "kling-v2.1-master-text-to-video", + "kling-v2.5-turbo-text-to-video-pro", + "kling-v3-turbo-text-to-video" +]
- Removed
image_to_video - Changed
text_to_video2 fields changed- changed
Input schema / properties / model / enumPrevious value: -[ - "kling-3.0", - "kling-v2.1-master-text-to-video", - "kling-v2.5-turbo-text-to-video-pro" -]New value: +[ + "kling-3.0", + "kling-v2.1-master-text-to-video", + "kling-v2.5-turbo-text-to-video-pro", + "kling-v3-turbo-text-to-video" +] - removed
Input schema / properties / output_resolution / enumRemoved value: -[ - "720p", - "1080p", - "4k" -]
1 tool update
v0.1.8- Added
login
4 tool updates
v0.1.2- Changed
ai_avatar5 fields changed- added
Input schema / properties / callback_url / typeAdded value: +"string" - added
Input schema / properties / prompt / typeAdded value: +"string" - added
Input schema / properties / source_audio_url / typeAdded value: +"string" - added
Input schema / properties / source_image_url / typeAdded value: +"string" - added
Input schema / requiredAdded value: +[ + "prompt", + "source_audio_url", + "source_image_url" +]
- Changed
image_to_video7 fields changed- added
Input schema / properties / aspect_ratio / typeAdded value: +"string" - added
Input schema / properties / callback_url / typeAdded value: +"string" - added
Input schema / properties / first_frame_image_url / typeAdded value: +"string" - added
Input schema / properties / last_frame_image_url / typeAdded value: +"string" - added
Input schema / properties / negative_prompt / typeAdded value: +"string" - added
Input schema / properties / prompt / typeAdded value: +"string" - added
Input schema / requiredAdded value: +[ + "prompt", + "first_frame_image_url" +]
- Changed
motion_control5 fields changed- added
Input schema / properties / callback_url / typeAdded value: +"string" - added
Input schema / properties / prompt / typeAdded value: +"string" - added
Input schema / properties / reference_video_url / typeAdded value: +"string" - added
Input schema / properties / source_image_url / typeAdded value: +"string" - added
Input schema / requiredAdded value: +[ + "source_image_url", + "reference_video_url" +]
- Changed
text_to_video5 fields changed- added
Input schema / properties / callback_url / typeAdded value: +"string" - added
Input schema / properties / first_frame_image_url / typeAdded value: +"string" - added
Input schema / properties / last_frame_image_url / typeAdded value: +"string" - added
Input schema / properties / negative_prompt / typeAdded value: +"string" - added
Input schema / properties / prompt / typeAdded value: +"string"
6 tool updates
v0.1.1- First observed
ai_avatar - First observed
check_pricing - First observed
get_task - First observed
image_to_video - First observed
motion_control - First observed
text_to_video
TDQS
Scored across 9 tools
The six task-creation tools map to distinct Kling video modes (text-to-video, image-to-video, extend, edit, motion control, AI avatar), so purposes are mostly clear. Minor potential confusion between extend_video and edit_video, but descriptions and names differentiate them adequately.
All names use snake_case consistently with no style mixing. However, the pattern is not uniformly verb_noun: some are source-to-target phrases (image_to_video), some are noun phrases (motion_control, ai_avatar), and others are verb_noun (get_task, check_pricing).
Nine tools is well-scoped for a video-generation API client. Each tool earns its place: six generation modes, one task-status fetcher, one pricing lookup, and one authentication helper.
Core workflows are covered: login, pricing check, task creation across modes, and task status retrieval. Minor gaps include no task cancellation, no task listing, and no direct video download (though output URLs are returned).
Maintenance
Related MCP Connectors
Create and manage cinematic AI video renders through the Future Video Studio Agent API.
130+ AI models for image, video, music, and audio — 18 model families, one RunAPI account.
Run multi-step AI pipelines for video, image, audio and text: upload media, run, poll results.
- MorphedOAuthapp.morphed
Create AI images and videos, manage projects and credits, and use workspace campaign context.
Related MCP Servers
AlicenseAqualityFmaintenanceEnables AI video and image generation through the Runway API. Supports video generation from images and text prompts, image creation, video upscaling and editing, and task management.722 npm23MIT- AlicenseBqualityAmaintenanceEnables interaction with ElevenLabs AI models (audio isolation, speech-to-text, text-to-dialogue, sound effects, text-to-speech) through RunAPI, supporting task creation, status polling, and pricing checks.8281 npmApache 2.0
- AlicenseAqualityAmaintenanceEnables AI image and video generation tasks (text-to-image, image-to-video, edit, upscale, etc.) via RunAPI, with support for polling and pricing lookups.10268 npm1Apache 2.0
- AlicenseBqualityAmaintenanceEnables creating and polling Luma video modification tasks, fetching task status, and checking pricing via the RunAPI API.4267 npmApache 2.0