KlingMCP
KlingMCP lets you generate and manipulate AI videos with Kling via MCP tools.
Generate videos from text prompts, start/end images, or platform element/voice assets.
Extend existing videos and transfer motion from reference videos to character images.
Create lip-sync videos and talking photos from portraits and audio.
Generate V3 Turbo videos, multishot storyboards, and commerce/product studio or voiceover videos.
Query task status/results individually or in batches, and list available models/actions.
Control model, mode, duration, aspect ratio, audio, camera, references, and more.
Provides AI video generation tools for Amazon Q Developer, enabling text-to-video, image-to-video, video extension, and motion transfer workflows through the Amazon Q interface.
Integrates AI video generation capabilities with JetBrains IDEs through the AI Assistant's Model Context Protocol support, allowing users to generate videos, extend clips, and transfer motion within the IDE.
KlingMCP
A Model Context Protocol (MCP) server for AI video generation using Kling through the AceDataCloud API.
Generate AI videos, extend clips, and transfer motion directly from Claude, VS Code, or any MCP-compatible client.
Features
Text to Video - Create AI-generated videos from text prompts
Image to Video - Generate videos using reference start/end images
Video Extension - Extend existing videos with additional content
Motion Transfer - Transfer motion from a reference video to a character image
Multiple Models - Support for 9 Kling models, including V3, V3 Omni, and canonical Kling O1
Camera Control - Fine-grained camera movement control
Task Tracking - Monitor generation progress and retrieve results
Related MCP server: HailuoMCP
Tool Reference
Tool | Description |
| Generate AI video from a text prompt using Kling. |
| Generate AI video using reference images as start and/or end frames. |
| Extend an existing video with additional content. |
| Transfer motion from a reference video to a character image. |
| Query the status and result of a video generation task. |
| Query multiple video generation tasks at once. |
| List all available Kling models for video generation. |
| List all available Kling API actions and corresponding tools. |
Connect: hosted OAuth, API token, or local stdio
The hosted endpoint is https://kling.mcp.acedata.cloud/mcp. Choose one route for the MCP client:
Route | When to use it | Credential setup |
Hosted OAuth | The client supports remote MCP OAuth | Add only the URL, then sign in to AceDataCloud and approve access. No token needs to be pasted into client configuration. |
Hosted API token | The client cannot finish OAuth, or you need an explicit integration credential | Send an AceDataCloud API token in the |
Local stdio | The client runs a local MCP process | Install |
The hosted service advertises OAuth metadata and Dynamic Client Registration (DCR). DCR registers the client application; it is not an API key. OAuth signs you in and the client sends the resulting Bearer token; it may reuse or create an API credential for the account. Browser sign-in still requires an AceDataCloud account. The hosted service can be metered: review current service documentation and displayed pricing before a real operation. Do not configure both an OAuth login and a fixed Authorization header for the same server.
Hosted OAuth examples
Claude and Claude Desktop chat: Add a remote custom connector in
Customize → Connectors → Add custom connector, enterhttps://kling.mcp.acedata.cloud/mcp, select sign-in, and choose Register automatically if Claude asks how to register its OAuth client. Complete consent. Claude Desktop's localclaude_desktop_config.jsonis a separate setup. Claude connector guide.Claude Code:
claude mcp add --transport http --scope user kling https://kling.mcp.acedata.cloud/mcp, thenclaude mcp login kling. Check/mcp. Claude Code MCP guide.Cursor: Add a remote server with only
https://kling.mcp.acedata.cloud/mcp. For a project, merge the entry below into<project>/.cursor/mcp.json; for personal use, use~/.cursor/mcp.json. Cursor MCP guide.VS Code / Copilot: Run MCP: Add Server, select HTTP, enter
https://kling.mcp.acedata.cloud/mcp, then finish the browser sign-in. New portable workspace configs use<project>/.mcp.json; the VS Code-specific format below uses<project>/.vscode/mcp.jsonor the user profile. Check MCP: List Servers. VS Code MCP setup.Codex:
codex mcp add kling --url https://kling.mcp.acedata.cloud/mcp, thencodex mcp login kling. Its user settings are in~/.codex/config.toml. Official Codex MCP guide.
Cursor project config (OAuth):
{
"mcpServers": {
"kling": {"url": "https://kling.mcp.acedata.cloud/mcp"}
}
}VS Code-specific workspace config (OAuth):
{
"servers": {
"kling": {"type": "http", "url": "https://kling.mcp.acedata.cloud/mcp"}
}
}Hosted API token
Open Ace Data Cloud → Applications. Sign in, or register an account first.
Find General application. If it has not been created, choose Initialize General Application. A general key can use the services available to your account; a dedicated application's key is limited to its service. Check the required service/model access and current pricing.
Copy the API Key from the application card, or open Keys / Manage Keys → Create to create a separate key for this integration. Give it a recognizable name so you can revoke or rotate it independently.
When creating a key, review Expiration Time, Set Usage Limitation, and Allowed APIs. Enable only the restrictions you need, allow the operations you will call, then click Create and copy the token from the key list. Task lookup does not grant permission to submit a generation. Confirm the application's balance can cover your first request; any trial allowance is whatever your account currently displays.
Copy only the token value, without quotation marks, spaces, or
Bearer. An API Key / API Token field expects this raw value; only a manually configured HTTPAuthorizationheader needs theBearerprefix. Aplatform-...account-management token cannot replace a generation API key.


Save the key in the client's credential store or the environment variable shown below. Never put it in a prompt, shared workflow, screenshot, or Git commit. If authentication fails, check the full copied value, application/service access, expiration, usage limit, and balance before creating another key.
A fixed Bearer header bypasses OAuth. If the header is invalid, remove it before trying browser sign-in; keep the saved credential private.
For Claude Code, the shell expands the token when you add the server; treat the saved user MCP config as a secret:
export ACEDATACLOUD_API_TOKEN='YOUR_API_TOKEN'
claude mcp add --transport http --scope user kling https://kling.mcp.acedata.cloud/mcp \
--header "Authorization: Bearer $ACEDATACLOUD_API_TOKEN"For a Claude Code project config, put a variable reference in <project>/.mcp.json and set that variable in the environment that launches Claude Code:
{
"mcpServers": {
"kling": {
"type": "http",
"url": "https://kling.mcp.acedata.cloud/mcp",
"headers": {"Authorization": "Bearer ${ACEDATACLOUD_API_TOKEN}"}
}
}
}Cursor uses a different environment-variable syntax in ~/.cursor/mcp.json or an uncommitted project config:
{
"mcpServers": {
"kling": {
"url": "https://kling.mcp.acedata.cloud/mcp",
"headers": {"Authorization": "Bearer ${env:ACEDATACLOUD_API_TOKEN}"}
}
}
}In VS Code, run MCP: Open User Configuration and merge this server plus its masked input; ${input:...} is for VS Code's user/workspace format and is not portable to the Agent Host .mcp.json format:
{
"inputs": [
{"id": "acedata-kling-token", "type": "promptString", "description": "AceDataCloud API token", "password": true}
],
"servers": {
"kling": {
"type": "http",
"url": "https://kling.mcp.acedata.cloud/mcp",
"headers": {"Authorization": "Bearer ${input:acedata-kling-token}"}
}
}
}For Cline, use its MCP configuration UI or CLI file ~/.cline/data/settings/cline_mcp_settings.json; its remote transport value is streamableHttp. For JetBrains AI Assistant, add a remote URL from Settings → Tools → AI Assistant → Model Context Protocol (MCP). For Zed, use a context_servers entry with the URL only for OAuth or add a local Bearer header. These clients have different configuration schemas; follow their current UI rather than copying another client's JSON. Cline · JetBrains · Zed.
Local stdio
Install the package and give the local process an API token:
python -m pip install mcp-kling
export ACEDATACLOUD_API_TOKEN='YOUR_API_TOKEN'
mcp-klingFor Claude Desktop local MCP, merge this entry into the file opened by its developer settings (~/Library/Application Support/Claude/claude_desktop_config.json on macOS). uvx requires uv on PATH:
{
"mcpServers": {
"kling": {
"command": "uvx",
"args": ["mcp-kling"],
"env": {"ACEDATACLOUD_API_TOKEN": "YOUR_API_TOKEN"}
}
}
}Keep this user-level file private. Self-hosted HTTP uses mcp-kling --transport http --port 8000; expose it only with suitable network and TLS controls. Local execution still calls the AceDataCloud API.
Check before using the service
https://kling.mcp.acedata.cloud/healthreturning{"status":"ok"}checks endpoint reachability only.Confirm that the MCP client loads tools.
kling_list_modelsis a reference tool; it does not verify downstream API access or balance.If you need a full API check, call
kling_generate_videowith your own valid input after reviewing current service documentation and displayed pricing. If the result contains a task ID, callkling_get_taskon that same ID until terminal success or failure. Do not resubmit the operation just to check progress.
For 401, check which auth route the client used and whether the token or OAuth session is valid. A 403 may mean an account permission or content moderation failure; read the returned error. Insufficient balance and downstream service failures need their own diagnosis. A listed tool or submitted task does not prove a successful result.
Available Models
Model | Description | Use Case |
| First generation | Basic video generation |
| V1 extended | Improved quality over v1 |
| V2 master (default) | High-quality, balanced performance |
| V2.1 master | Enhanced quality and consistency |
| V2.5 turbo | Faster generation, good quality |
| Kling O1 | Omni image/video reference generation |
Configuration
Environment Variables
Variable | Description | Default |
| API token from AceDataCloud | Required |
| API base URL |
|
| Default video model |
|
| Default generation mode |
|
| Default aspect ratio |
|
| Request timeout in seconds |
|
| Logging level |
|
Command Line Options
mcp-kling --help
Options:
--version Show version
--transport Transport mode: stdio (default) or http
--port Port for HTTP transport (default: 8000)Development
Setup Development Environment
# Clone repository
git clone https://github.com/AceDataCloud/KlingMCP.git
cd KlingMCP
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # or `.venv\Scripts\activate` on Windows
# Install with dev dependencies
pip install -e ".[dev,test]"Run Tests
# Run unit tests
pytest
# Run with coverage
pytest --cov=core --cov=tools
# Run integration tests (requires API token)
pytest tests/test_integration.py -m integrationCode Quality
# Format code
ruff format .
# Lint code
ruff check .
# Type check
mypy core toolsBuild & Publish
# Install build dependencies
pip install -e ".[release]"
# Build package
python -m build
# Upload to PyPI
twine upload dist/*Project Structure
KlingMCP/
├── core/ # Core modules
│ ├── __init__.py
│ ├── client.py # HTTP client for Kling API
│ ├── config.py # Configuration management
│ ├── exceptions.py # Custom exceptions
│ ├── oauth.py # OAuth 2.1 provider
│ ├── server.py # MCP server initialization
│ ├── types.py # Type definitions
│ └── utils.py # Utility functions
├── tools/ # MCP tool definitions
│ ├── __init__.py
│ ├── video_tools.py # Video generation tools
│ ├── motion_tools.py # Motion transfer tools
│ ├── task_tools.py # Task query tools
│ └── info_tools.py # Information tools
├── prompts/ # MCP prompts
│ └── __init__.py # Prompt templates
├── tests/ # Test suite
│ ├── conftest.py
│ └── __init__.py
├── deploy/ # Deployment configs
│ └── production/
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
├── .env.example # Environment template
├── CHANGELOG.md
├── Dockerfile # Docker image for HTTP mode
├── docker-compose.yaml # Docker Compose config
├── LICENSE
├── main.py # Entry point
├── pyproject.toml # Project configuration
└── README.mdAPI Reference
This server wraps the AceDataCloud Kling API:
Kling Videos API - Video generation (text2video, image2video, extend)
Kling Motion API - Motion transfer
Kling Tasks API - Task queries
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch (
git checkout -b feature/amazing)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing)Open a Pull Request
Documentation
License
MIT License - see LICENSE for details.
Links
Made with love by AceDataCloud
Turbo, storyboards and commerce
Use kling_generate_turbo_video for V3 Turbo (std 720p / pro 1080p, integer 3–15 seconds). Native audio is included and cannot be disabled. Tail frames, standalone negative prompts, cfg_scale, camera controls and Omni references are unsupported.
Use kling_generate_storyboard for V3/V3 Omni multishot generation: shot_type="intelligence" uses a prompt; customize takes 1–6 indexed multi_prompt shots whose durations sum to the total. For example: {"shot_type":"customize","duration":5,"multi_prompt":[{"index":1,"prompt":"Ocean","duration":2},{"index":2,"prompt":"Beach","duration":3}]}.
Public commerce tools are kling_goods_studio and kling_video_commerce. Both accept a structured request and return a task ID for kling_get_task.
Reference inputs
Use element_list and voice_list only with already valid platform references and the supported model combinations in the current backend guide. Standalone asset creation and management are not published.
Available Tools
15 toolskling_extend_videoAInspect
Extend an existing video with additional content.
This allows you to continue a previously generated video, adding more motion
and content after the original video ends.
Use this when:
- A generated video is too short and you want to add more
- You want to continue the story or motion from a previous video
- You're building a longer video piece by piece
Returns:
Task ID and the extended video information.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Generation mode. 'std' (standard, default), 'pro' (higher quality), or '4k' (native 4K, only for kling-v3 and kling-v3-omni). | std |
| model | No | Kling model to use. Default: 'kling-v2-master'. | kling-v1 |
| prompt | Yes | Description of what should happen in the extended portion of the video. Describe the continuation of motion and new content. | |
| duration | No | Duration of the extended segment in seconds. Supports 5 or 10. | |
| video_id | Yes | ID of the video to extend. This is the 'video_id' field from a previous generation result. | |
| cfg_scale | No | Classifier-free guidance scale. | |
| callback_url | No | Optional webhook URL for asynchronous result notification. | |
| negative_prompt | No | Things to avoid in the extended video. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full behavioral burden. It discloses that the operation is asynchronous by promising a returned Task ID and the callback_url param documents webhook notification. It does not cover permissions, cost, whether the extension is reversible, or rate limits, so meaningful gaps remain.
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?
Front-loaded purpose followed by scannable use-case bullets; every line is relevant. The second sentence ('adding more motion and content after the original video ends') and the Returns block restate information already conveyed by the title or the output schema, costing some brevity.
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 tool with an output schema present, the description needn't explain return values yet still gives a brief summary. Combined with the 100% schema coverage and explicit use cases, an agent has enough to call it correctly; only the async/permission behavior remains under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 8 parameters are already documented in the schema, including enums, defaults, and the 5/10 second duration constraint. The description adds no parameter-level detail beyond this, which is the expected baseline 3 when the schema does the heavy lifting.
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 ('Extend an existing video') and clarifies scope: continuing a previously generated video rather than creating a new one. It implicitly separates itself from siblings like kling_generate_video by requiring a prior video_id, but 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?
The 'Use this when' block gives three concrete scenarios (video too short, continue story/motion, build longer piece by piece) that establish clear context. However, it offers no when-not guidance or named alternatives such as kling_generate_video for fresh generations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_generate_motionAInspect
Transfer motion from a reference video to a character image.
This tool enables character animation by extracting motion from a video
and applying it to a static character image.
Use this when:
- You want to animate a character image using motion from a video
- You want to create a dance or movement video from a still photo
- You need to transfer specific movements to a character
Returns:
Task ID and motion generation information.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Generation mode. 'std' (standard, default) for faster generation, 'pro' for higher quality. | std |
| prompt | No | Optional text description to guide the motion transfer. Use to add details about the desired output. | |
| image_url | Yes | URL of the character image to animate. The character in this image will be animated with the motion from the reference video. | |
| video_url | Yes | URL of the reference video providing the motion. The character movements from this video will be transferred to the image. | |
| model_name | No | Optional Kling motion model name, such as 'kling-v2-6' or 'kling-v3'. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. | |
| watermark_info | No | Optional watermark configuration forwarded to the API. | |
| keep_original_sound | No | Whether to keep the original sound from the reference video. Options: 'yes' or 'no'. Default depends on API. | |
| character_orientation | No | Orientation of the character. 'image' (default) uses the orientation from the character image, 'video' uses the orientation from the reference video. | image |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It states the tool returns a Task ID and motion generation information, implying an asynchronous task-based workflow. However, it does not explain polling, error conditions, or that generation may take time. Some behavior is disclosed, but significant gaps remain.
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 well-structured with a concise summary, a bulleted list of use cases, and a clear Returns statement. Every sentence adds value and helps an agent decide when and how to use the tool without unnecessary verbosity.
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 complexity (9 parameters, asynchronous task creation) and the presence of an output schema, the description adequately covers the core purpose and usage context. It lacks details about how to retrieve results or handle failures, but the Task ID return hints at the asynchronous pattern. The description is mostly complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% parameter coverage with detailed descriptions for all 9 parameters, so the baseline is 3. The tool description itself does not add extra parameter-level meaning beyond what the schema already contains, but it does not need to because the schema is sufficiently rich.
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 primary function: transferring motion from a reference video to a character image. It uses a specific verb-resource combination and directly differentiates from siblings like kling_lip_sync and kling_generate_video by focusing on motion transfer for character animation. The purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear 'Use this when' list with three concrete scenarios, giving an agent strong context for when to invoke this tool. However, it does not explicitly mention when not to use it or name alternative sibling tools, so it stops short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_generate_storyboardBInspect
Generate V3/V3 Omni automatic or custom multishot video. Poll kling_get_task.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden; it does disclose that generation is asynchronous and must be polled via kling_get_task, which is real value beyond the schema. It omits cost/credit implications, failure/retry behavior, and whether prompt or multi_prompt is required for each shot_type.
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 capability and followed by the required follow-up action; no filler. It is efficient, though the terseness substitutes brevity for needed specifics rather than reflecting a genuinely complete definition.
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 14-parameter generation tool with a nested shot array, no annotations, and 0% parameter documentation, the description is far too thin; the output schema plus 'poll' covers results retrieval, but the agent is left guessing how to construct custom multishot requests. A one-line note on multi_prompt vs prompt would close the main 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 0% and there are 14 nested fields, yet the description explains only the model and shot-type dimension ('automatic or custom'). Key parameters such as multi_prompt/Shot.index, duration bounds (3-15), aspect_ratio, start_image_url/end_image_url, callback_url, and generate_audio get no explanation in either the schema or the description.
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 concrete verb and resource ('Generate ... multishot video') plus the supported models (V3/V3 Omni), which distinguishes it from the plain kling_generate_video siblings. It stops short of naming which sibling to use instead when the user doesn't need multishot.
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?
'Poll kling_get_task' gives a clear post-call workflow step, which is useful routing guidance. However, it never says when this tool is preferable to kling_generate_video, kling_generate_turbo_video, or kling_generate_video_from_image, leaving the alternative selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_generate_turbo_videoAInspect
Generate V3 Turbo 720p/1080p, 3–15 seconds. Native audio is included with no off switch. Poll kling_get_task.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses two non-obvious behaviors: native audio is always on with no off switch (matching the const true schema field) and results must be polled. It omits cost/credit, permission, or failure behavior for a paid generation call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three terse sentences with no filler; the capability statement comes first and the operational note (polling) last. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the polling pointer covers the async workflow. Still, for a generative paid tool with a 0%-covered nested schema, the description leaves several parameters (mode, aspect_ratio, start_image_url) unexplained for callers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it only partly does: it explains the duration range and the audio constraint, but says nothing about mode (std/pro), aspect_ratio, start_image_url, callback_url, or the prompt length limit.
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?
Names a specific verb (Generate) plus the model variant (V3 Turbo), resolution options, and duration range, which lets an agent distinguish it from the generic kling_generate_video. It does not mention text2video/image2video modes or name the sibling it is not, so sibling differentiation is only partial.
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 instruction to 'Poll kling_get_task' is genuine usage guidance for the follow-up step, which matters because async defaults to true. However there is no guidance on when to choose this over kling_generate_video, kling_generate_video_from_image, or kling_generate_with_assets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_generate_videoAInspect
Generate AI video from a text prompt using Kling.
This is the simplest way to create video - just describe what you want and Kling
will generate a high-quality AI video.
Use this when:
- You want to create a video from a text description
- You don't have reference images
- You want quick video generation
For using reference images (start/end frames), use kling_generate_video_from_image instead.
Returns:
Task ID and generated video information including URLs and state.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Generation mode. 'std' (standard, default) for faster generation, 'pro' for higher quality, '4k' for native 4K (only supported by kling-v3 and kling-v3-omni, not compatible with motion control). | std |
| model | No | Kling model to use. Options: 'kling-v1', 'kling-v1-6', 'kling-v2-master' (default), 'kling-v2-1-master', 'kling-v2-5-turbo', 'kling-v2-6', 'kling-v3', 'kling-v3-omni', 'kling-o1'. | kling-v1 |
| prompt | Yes | Description of the video to generate. Be descriptive about the scene, motion, style, and mood. Examples: 'A cat walking through a garden with butterflies', 'Astronauts shuttle from space to volcano', 'Ocean waves crashing on a beach at sunset' | |
| duration | No | Video duration in seconds. kling-v3/kling-v3-omni: 3-15; kling-o1: 5 only; other models: 5 or 10. | |
| cfg_scale | No | Classifier-free guidance scale from 0 to 1. Not supported by Omni generation. | |
| image_list | No | Omni reference images for kling-o1 or kling-v3-omni. Cite them as <<<image_1>>>, <<<image_2>>>, and so on. | |
| video_list | No | One Omni reference video for kling-o1 or kling-v3-omni. Cite it as <<<video_1>>>. Use refer_type='feature' to reference it or 'base' to edit it. | |
| aspect_ratio | No | Video aspect ratio. Options: '16:9' (landscape, default), '9:16' (portrait), '1:1' (square). | 16:9 |
| callback_url | No | Webhook callback URL for asynchronous notifications. When provided, the API will call this URL when the video is generated. | |
| camera_control | No | Structured camera control. Not supported by Omni generation. | |
| generate_audio | No | Whether to generate audio synchronously. Supported by kling-v3, kling-v3-omni, and kling-v2-6 (pro mode only). Omit for the model default. Turbo always includes native audio. | |
| negative_prompt | No | Things to avoid in the video. Example: 'blurry, low quality, distorted faces' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose that the call returns a Task ID and video state, which implies asynchronous task-based generation, but it never states that polling (e.g. kling_get_task) is required, nor mentions latency, cost, or failure handling — significant omissions for a generation 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?
Well front-loaded: purpose first, then when-to-use bullets, then the sibling pointer and return note. The middle sentence ('This is the simplest way... high-quality AI video') is mild marketing padding that doesn't add selection value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the schema is fully described, so the description's job is selection and routing — which it does well. The remaining gap is the async/polling workflow, which an agent calling a task-returning generation tool would need.
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 every parameter including model, mode, duration, cfg_scale, camera_control, and generate_audio is already documented in the schema. The description adds no parameter-level detail beyond that, 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+resource ('Generate AI video from a text prompt using Kling') and immediately distinguishes itself from the closest sibling by naming kling_generate_video_from_image as the image-reference alternative.
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?
Explicit 'Use this when' bullets cover the three selecting conditions (text-only, no reference images, quick generation), and it names the alternative tool plus the condition that routes to it (reference images / start-end frames).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_generate_video_from_imageAInspect
Generate AI video using reference images as start and/or end frames.
This allows you to control the video by specifying what the first frame
and/or last frame should look like. Kling will generate smooth motion between them.
Use this when:
- You have a specific image you want to animate
- You want to create a video transition between two images
- You need precise control over the video's visual content
start_image_url is required. end_image_url is optional.
Returns:
Task ID and generated video information including URLs and state.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Generation mode. 'std' (standard, default), 'pro' (higher quality), or '4k' (native 4K, only for kling-v3 and kling-v3-omni). | std |
| model | No | Kling model to use. Default: 'kling-v2-master'. | kling-v1 |
| prompt | Yes | Description of the video motion and content. Describe what should happen in the video, how objects should move, what transitions to include. | |
| duration | No | Video duration in seconds. kling-v3/kling-v3-omni: 3-15; kling-o1: 5 only; other models: 5 or 10. | |
| cfg_scale | No | Classifier-free guidance scale from 0 to 1. Not supported by Omni generation. | |
| image_list | No | Additional Omni reference images for kling-o1 or kling-v3-omni. Do not set type='first_frame' or 'end_frame' when the same frame is already supplied through start_image_url or end_image_url. | |
| video_list | No | One Omni reference video for kling-o1 or kling-v3-omni. | |
| aspect_ratio | No | Video aspect ratio. Usually should match your input image ratio. | 16:9 |
| callback_url | No | Webhook callback URL for asynchronous notifications. | |
| end_image_url | No | URL of the image to use as the last frame of the video. The video will animate towards this image. | |
| camera_control | No | Structured camera control. Not supported by Omni generation. | |
| generate_audio | No | Whether to generate audio synchronously. Supported by kling-v3, kling-v3-omni, and kling-v2-6 (pro mode only). | |
| negative_prompt | No | Things to avoid in the video. | |
| start_image_url | No | Required URL of the image to use as the first frame of the video. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies an asynchronous flow by promising a Task ID and mentions that a callback_url/return state exist, but it omits rate limits, auth needs, and processing time. Critically, it claims 'start_image_url is required' while the schema lists only 'prompt' as required, creating an internal inconsistency that could mislead the agent.
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?
Front-loaded with the core mechanism, then scannable bullets. Slightly redundant in repeating that start_image_url is required and end_image_url optional after already describing frames in prose, but overall tight.
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?
Adequate for a 14-parameter async generation tool with an output schema: the agent knows when to use it and the frame roles. However, it doesn't address the async task lifecycle or how this tool relates to look-alike siblings, and the required-vs-optional frame claim conflicts with the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description only restates the start/end frame roles, which the schema already documents; it adds nothing about model/mode/camera_control/audio interactions that the schema also covers.
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+mechanism: generate AI video using reference images as start and/or end frames, and explains that Kling interpolates motion between them. This distinguishes it from text-driven siblings like kling_generate_video or kling_generate_turbo_video, though it never names those siblings 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?
The 'Use this when' block gives three concrete scenarios (animate a specific image, transition between two images, precise visual control), which is clear situational context. It stops short of naming an alternative tool or stating when NOT to use this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_generate_with_assetsBInspect
Generate with platform element or voice IDs. Specified V2.6 voices cost 1.68 Credits/second. Ownership is verified by the service.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does add real behavioral context the schema lacks: V2.6 voices cost 1.68 Credits/second, and ownership is verified server-side. However it says nothing about the async default, task-based return flow, or what happens on verification failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the distinguishing capability, and each sentence carries content (capability, cost, verification). The cost sentence is slightly cryptic in isolation but not wasteful. No filler or repetition.
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?
This is a complex video-generation tool whose description omits the essentials: that output is asynchronous by default, which model/mode combinations are valid, duration limits, and how element/voice ownership must be established first. An output schema exists so return values needn't be explained, but the invocation-level gaps remain significant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for a request object with roughly a dozen meaningful fields (mode, model, action, duration, aspect_ratio, async, generate_audio, start/end image URLs). The description only touches voice_id and element_id and the credit cost; mode/model/duration/async semantics are undocumented in both places, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Generate' plus the qualifier 'with platform element or voice IDs' identifies the tool's distinguishing inputs, which separates it from siblings like kling_generate_video or kling_generate_video_from_image. It never explicitly names the resource (video), but the schema's AssetVideoRequest makes that recoverable. Clear, though not as crisp as naming verb+resource+scope outright.
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: the agent infers this is the tool to pick when it has an element_id or voice_id to attach. No alternative is named and no exclusions are given (e.g. 'for plain text-to-video use kling_generate_video'), so the routing decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_get_taskAInspect
Query the status and result of a video generation task.
Use this to check if a generation is complete and retrieve the resulting
video URLs and other metadata.
Use this when:
- You want to check if a generation has completed
- You need to retrieve video URLs from a previous generation
- You want to get the full details of a generated video
Task states:
- 'pending': Generation is still in progress
- 'completed': Generation finished successfully
- 'failed': Generation failed (check error message)
Returns:
Task status and generated video information including URLs and state.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID returned from a generation request. This is the 'task_id' field from any kling_generate_* or kling_extend_* tool response. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It describes task states and that the tool returns video URLs and metadata. It does not cover rate limits or authentication, but for a simple query tool this is sufficient.
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 well-structured with sections (Use this to, Use this when, Task states, Returns). It is front-loaded and every sentence adds value.
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 has one parameter, an output schema, and clear task states, the description is complete. It covers purpose, usage, states, and expected return, meeting all contextual needs.
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 has 100% coverage on the single parameter, with a clear description of how to obtain task_id. The description adds little beyond the schema, so a 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 'Query the status and result of a video generation task' with a specific verb and resource. It distinguishes itself from sibling tools like kling_get_tasks_batch by focusing on a single task.
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?
Provides explicit when-to-use scenarios (check completion, retrieve URLs, get details). However, it lacks explicit when-not-to-use guidance or mention of alternatives for batch queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_get_tasks_batchAInspect
Query multiple video generation tasks at once.
Efficiently check the status of multiple tasks in a single request.
More efficient than calling kling_get_task multiple times.
Use this when:
- You have multiple pending generations to check
- You want to get status of several videos at once
- You're tracking a batch of generations
Returns:
Status and video information for all queried tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| task_ids | Yes | List of task IDs to query. Maximum recommended batch size is 50 tasks. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description mentions returning status and video information but does not disclose behaviors like error handling for invalid task IDs, rate limits, or concurrency. The batch size limit is explained in the parameter schema, not the description.
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?
Description is concise and well-structured with a main sentence, a bullet list of use cases, and a return statement. It is front-loaded with the primary purpose and contains no redundant 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?
Given the presence of an output schema (return structure defined elsewhere), the description adequately covers purpose, usage guidance, and efficiency benefits. It could mention potential errors or performance characteristics, but overall it is sufficient for a batch query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the parameter 'task_ids' well-described (list of IDs, max batch size 50). The tool description adds no additional meaning beyond the schema, 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 it queries multiple video generation tasks at once, using a specific verb ('query') and resource ('multiple tasks'). It also distinguishes itself from the sibling tool 'kling_get_task' by noting it is more efficient for batch checking.
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?
Explicit 'Use this when' bullet points provide clear guidance on when to use this tool, such as checking multiple pending generations or tracking a batch. It implies when not to use (single task scenarios) by referencing the alternative 'kling_get_task'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_goods_studioBInspect
Generate product studio video from ref_image and goods_title contents. Poll kling_get_task.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the async polling pattern implicitly via 'Poll kling_get_task' (consistent with async defaulting to true in the schema), but says nothing about permissions/auth, cost, watermarking, callback_url behavior, or how long generation takes.
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 the required inputs, with no filler. It is arguably too terse for the schema complexity, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a deeply nested request schema, 0% schema description coverage, and a 16-value content enum, this description is thin. The existence of an output schema removes the need to explain return values, but the required-content composition and settings are not covered well enough for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage across a large nested Content enum, so the description must compensate. It does add genuinely useful information by naming ref_image and goods_title as the content types this tool expects, which the schema never marks as required. Still, the other 14 content types, settings, and duration/aspect_ratio choices are left unexplained.
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 ('Generate product studio video') and narrows it by naming the two required content types, ref_image and goods_title. That distinguishes it reasonably well from sibling product tools like kling_apparel_video and kling_virtual_try_on, though it doesn't explicitly say how it differs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence, 'Poll kling_get_task,' is a useful next-step/routing hint that tells the agent what to do after invocation. However, there is no guidance on when to pick this over kling_video_commerce, kling_apparel_video, or kling_generate_video, nor any stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_lip_syncAInspect
Synchronize lip movements in a video to match a given audio track or text.
Takes an existing video (by URL or task ID) and replaces the speaker's lip
movements so they match the provided audio. In 'text2video' mode the audio
is generated from the supplied text via TTS.
Use this when:
- You want to dub a video into a different language
- You want to replace the audio of a generated video with custom speech
- You want to create a talking-head video from text
Returns:
Task ID and lip-sync video information.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Lip-sync mode. 'audio2video' to drive lips from an audio file or URL; 'text2video' to generate speech from text and drive the video. | |
| text | No | Text to convert to speech. Required when mode='text2video'. | |
| video_id | No | Task ID of a previously generated video to use as the source. Provide either video_url or video_id. | |
| voice_id | No | Voice ID to use for text-to-speech synthesis (mode='text2video'). | |
| audio_url | No | URL of the driving audio. Required when mode='audio2video' and audio_type='url'. | |
| video_url | No | URL of the source video whose lip movements will be replaced. Provide either video_url or video_id. | |
| audio_file | No | Base64-encoded audio file content. Required when mode='audio2video' and audio_type='file'. | |
| audio_type | No | Audio source type. 'url' (default) to supply audio_url; 'file' to supply audio_file as a base64-encoded string. | url |
| voice_speed | No | Speech speed multiplier from 0.8 to 2.0 (default 1.0). Used when mode='text2video'. | |
| callback_url | No | Webhook URL that receives a POST when the lip-sync task completes. | |
| voice_language | No | Language of the TTS voice. 'zh' for Chinese (default), 'en' for English. Used when mode='text2video'. | zh |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and mostly meets it: it explains the transformation (replacing speaker lip movements), the two modes, the TTS behavior in text2video mode, and the return value. It does not explicitly state that the source video is not modified or describe the asynchronous task workflow, but the returned Task ID strongly implies a new task/output.
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 organized well: a summary sentence, mode explanation, use-case bullets, and return value. It is not overly long despite covering a fairly rich tool, though the first and second sentences are mildly redundant.
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 11 parameters and no annotations, the description provides enough high-level context to correctly select and start using the tool. It would be stronger if it noted the async task nature and the need to poll kling_get_task or use callback_url, but the schema and output schema cover the detailed parameter relationships.
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 baseline is 3. The description adds a small amount of extra meaning by noting that the source video can be supplied 'by URL or task ID' and that text2video generates audio via TTS, but it does not meaningfully deepen understanding 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 defines a specific verb+resource: it synchronizes lip movements in an existing video to match audio or text. It clearly distinguishes itself from siblings by emphasizing the video lip-sync task, including the URL/task-ID source and mode-based behavior.
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 'Use this when' bullets provide concrete, decision-relevant cases: dubbing, replacing generated-video audio, and creating talking-head videos from text. It does not explicitly state when to use a sibling tool instead, but the listed use cases are strong enough guidance for most selection scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_list_actionsAInspect
List all available Kling API actions and corresponding tools.
Reference guide for what each action does and which tool to use.
Helpful for understanding the full capabilities of the Kling MCP.
Returns:
Categorized list of all actions and their corresponding tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It states the tool returns a categorized list, implying a read-only operation, but does not explicitly confirm no side effects, authentication needs, or rate limits. This is minimally adequate.
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 short and to the point, but contains minor redundancy ('Reference guide...' adds little over the first sentence). It could be slightly more structured, but overall efficient.
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 has no parameters and an output schema exists, the description sufficiently covers its role. It explains the purpose, output nature (categorized list), and context (reference guide). No additional information is needed for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%. Per guidance, baseline is 4. The description adds no extra parameter info because none exist, but confirms the tool takes no inputs.
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: listing all available Kling API actions and corresponding tools. It is a specific verb-resource pair ('list actions') and distinguishes itself from sibling tools (e.g., kling_generate_video) by being a meta-reference.
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 provides clear context ('Reference guide', 'helpful for understanding the full capabilities'), but does not explicitly state when not to use it or mention alternatives like kling_list_models. However, for a listing tool, this is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_list_modelsAInspect
List all available Kling models for video generation.
Shows all available model options with their capabilities and use cases.
Use this to understand which model to choose for your video.
Returns:
Table of all models with their descriptions and use cases.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations but description fully discloses behavior: it shows available models with capabilities and returns a table, with no side effects. It is transparent about being a read-only listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three succinct sentences that front-load the purpose, add usage context, and mention the return format. Every sentence is informative and no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no parameters and an output schema, so the description adequately explains its purpose and usage. It is complete for a listing tool with no complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. The description adds value by explaining the return table and use cases, which is not in 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 clearly states 'List all available Kling models for video generation', which is specific and distinguishes it from sibling tools that handle generation or task queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to understand which model to choose for your video', providing clear guidance on when to use the tool, though it does not mention when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_talking_photoAInspect
Animate a portrait photo to match a provided audio track (talking-photo).
Given a face image and an audio file, generates a short video where the
portrait's lips, expressions, and head movements are synchronized to the audio.
Use this when:
- You want to create a talking-head video from a static photo
- You want to make a person in a photo appear to speak
- You need a quick avatar video without real footage
Returns:
Task ID and talking-photo video information.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Generation quality mode. 'pro' (default) for higher quality; 'std' for faster generation. | pro |
| model | No | Kling model version. Default is 'kling-v2-1-master'. Options: kling-v1, kling-v1-6, kling-v2-master, kling-v2-1-master, kling-v2-5-turbo, kling-v2-6. | kling-v2-1-master |
| prompt | No | Optional text description to guide the animation style or content. | |
| duration | No | Video duration in seconds. Options: 5 (default) or 10. | |
| audio_url | Yes | URL of the audio file that drives the talking animation. | |
| image_url | Yes | URL of the portrait image to animate. Should be a clear frontal face photo. | |
| callback_url | No | Webhook URL that receives a POST when the talking-photo task completes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 mentions the output is a video with synchronized lips/expressions/head movements and returns a Task ID, hinting at asynchronous operation. However, it does not detail the asynchronous workflow, potential failure modes, or any prerequisites beyond providing image and audio URLs.
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 concise and well-structured: a clear one-sentence summary, a 'Use this when' list with three bullet points, and a 'Returns' line. Every sentence adds value, and the information is front-loaded.
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 output schema exists and the input schema is fully documented, the description provides sufficient context for the tool's core function. It could be improved by explicitly stating the async task workflow (e.g., use kling_get_task to fetch results), but the 'Returns Task ID' line partially covers this.
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 baseline is 3. The description does not add any parameter-specific semantics beyond what the schema already provides, which is acceptable since the schema thoroughly documents all seven parameters.
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 animates a portrait photo to match an audio track, generating a talking-head video. It uses specific verbs ('Animate', 'generates') and describes the resource (portrait photo + audio). This distinguishes it from generic video generation tools.
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 'Use this when' section provides explicit use cases: creating talking-head videos, making a person speak, and quick avatar videos. It does not explicitly name alternatives or exclusion criteria, but the context is clear enough for an agent to decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kling_video_commerceBInspect
Generate creator/product voiceover from an avatar and speech_script. Poll kling_get_task.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that the tool creates an asynchronous task that should be polled with kling_get_task, but it omits other important behavioral details such as default async behavior, callback_url usage, permissions, or whether the operation is destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no wasted words, and the purpose is front-loaded before the polling instruction. It is appropriately 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?
Given the complex nested input schema, no annotations, and a sibling set with overlapping video-generation tools, the description is too sparse. It provides only a high-level purpose and a polling hint, leaving an agent without enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only names "avatar" and "speech_script" without mapping them to the nested content types. It does not explain the required contents array, settings, or other important schema 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 gives a specific verb and resource: "Generate creator/product voiceover from an avatar and speech_script." This clearly identifies the output and core inputs. However, it does not explicitly distinguish the tool from siblings such as kling_goods_studio or other video-generation tools.
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 says "Poll kling_get_task," which gives useful post-invocation guidance. However, it does not say when to choose this tool over alternatives like kling_goods_studio or kling_generate_turbo_video, nor does it provide any exclusions or prerequisites.
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.
4 tool updates
v0.1.25- Removed
kling_apparel_video - Removed
kling_manage_elements - Removed
kling_manage_voices - Removed
kling_virtual_try_on
12 tool updates
v0.1.24- Added
kling_apparel_video - Changed
kling_extend_video1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "kling-v1", - "kling-v1-6", - "kling-v2-master", - "kling-v2-1-master", - "kling-v2-5-turbo", - "kling-v2-6", - "kling-v3", - "kling-v3-omni", - "kling-o1" -]New value: +[ + "kling-v1", + "kling-v1-6", + "kling-v2-master", + "kling-v2-1-master", + "kling-v2-5-turbo", + "kling-v2-6", + "kling-v3", + "kling-v3-turbo", + "kling-v3-omni", + "kling-o1" +]
- Added
kling_generate_storyboard - Added
kling_generate_turbo_video - Changed
kling_generate_video5 fields changed- added
Input schema / properties / generate_audio / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / generate_audio / defaultPrevious value: -falseNew value: +null - changed
Input schema / properties / generate_audio / descriptionPrevious value: -"Whether to generate audio synchronously. Supported by kling-v3, kling-v3-omni, and kling-v2-6 (pro mode only). Default is false."New value: +"Whether to generate audio synchronously. Supported by kling-v3, kling-v3-omni, and kling-v2-6 (pro mode only). Omit for the model default. Turbo always includes native audio." - removed
Input schema / properties / generate_audio / typeRemoved value: -"boolean" - changed
Input schema / properties / model / enumPrevious value: -[ - "kling-v1", - "kling-v1-6", - "kling-v2-master", - "kling-v2-1-master", - "kling-v2-5-turbo", - "kling-v2-6", - "kling-v3", - "kling-v3-omni", - "kling-o1" -]New value: +[ + "kling-v1", + "kling-v1-6", + "kling-v2-master", + "kling-v2-1-master", + "kling-v2-5-turbo", + "kling-v2-6", + "kling-v3", + "kling-v3-turbo", + "kling-v3-omni", + "kling-o1" +]
- Changed
kling_generate_video_from_image4 fields changed- added
Input schema / properties / generate_audio / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Input schema / properties / generate_audio / defaultPrevious value: -falseNew value: +null - removed
Input schema / properties / generate_audio / typeRemoved value: -"boolean" - changed
Input schema / properties / model / enumPrevious value: -[ - "kling-v1", - "kling-v1-6", - "kling-v2-master", - "kling-v2-1-master", - "kling-v2-5-turbo", - "kling-v2-6", - "kling-v3", - "kling-v3-omni", - "kling-o1" -]New value: +[ + "kling-v1", + "kling-v1-6", + "kling-v2-master", + "kling-v2-1-master", + "kling-v2-5-turbo", + "kling-v2-6", + "kling-v3", + "kling-v3-turbo", + "kling-v3-omni", + "kling-o1" +]
- Added
kling_generate_with_assets - Added
kling_goods_studio - Added
kling_manage_elements - Added
kling_manage_voices - Added
kling_video_commerce - Added
kling_virtual_try_on
5 tool updates
v0.1.23- Changed
kling_extend_video1 field changed- added
Input schema / properties / callback_urlAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional webhook URL for asynchronous result notification.", + "title": "Callback Url" +}
- Changed
kling_generate_motion4 fields changed- added
Input schema / $defsAdded value: +{ + "KlingWatermarkInfo": { + "description": "Watermark configuration for motion transfer.", + "properties": { + "enabled": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Enabled" + } + }, + "title": "KlingWatermarkInfo", + "type": "object" + } +} - changed
Input schema / properties / model_name / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "kling-v2-6", + "kling-v3" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / watermark_info / anyOfPrevious value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "$ref": "#/$defs/KlingWatermarkInfo" + }, + { + "type": "null" + } +] - removed
Input schema / properties / watermark_info / titleRemoved value: -"Watermark Info"
- Changed
kling_generate_video1 field changed- added
Input schema / $defs / KlingCameraControlConfig / additionalPropertiesAdded value: +{ + "maximum": 1, + "minimum": -1, + "type": "number" +}
- Changed
kling_generate_video_from_image1 field changed- added
Input schema / $defs / KlingCameraControlConfig / additionalPropertiesAdded value: +{ + "maximum": 1, + "minimum": -1, + "type": "number" +}
- Changed
kling_lip_sync5 fields changed- removed
Input schema / properties / voice_speed / anyOfRemoved value: -[ - { - "maximum": 2, - "minimum": 0.8, - "type": "number" - }, - { - "type": "null" - } -] - changed
Input schema / properties / voice_speed / defaultPrevious value: -nullNew value: +1 - added
Input schema / properties / voice_speed / maximumAdded value: +2 - added
Input schema / properties / voice_speed / minimumAdded value: +0.8 - added
Input schema / properties / voice_speed / typeAdded value: +"number"
5 tool updates
v0.1.21- Changed
kling_extend_video1 field changed- changed
Input schema / properties / model / defaultPrevious value: -"kling-v2-master"New value: +"kling-v1"
- Changed
kling_generate_motion4 fields changed- changed
Input schema / properties / keep_original_sound / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "yes", + "no" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / mode / enumPrevious value: -[ - "std", - "pro", - "4k" -]New value: +[ + "std", + "pro" +] - added
Input schema / properties / model_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional Kling motion model name, such as 'kling-v2-6' or 'kling-v3'.", + "title": "Model Name" +} - added
Input schema / properties / watermark_infoAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional watermark configuration forwarded to the API.", + "title": "Watermark Info" +}
- Changed
kling_generate_video2 fields changed- changed
Input schema / properties / model / defaultPrevious value: -"kling-v2-master"New value: +"kling-v1" - removed
Input schema / properties / timeoutRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Timeout in seconds for the API to return data. Default is 300.", - "title": "Timeout" -}
- Changed
kling_generate_video_from_image2 fields changed- changed
Input schema / properties / model / defaultPrevious value: -"kling-v2-master"New value: +"kling-v1" - removed
Input schema / properties / timeoutRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Timeout in seconds for the API to return data. Default is 300.", - "title": "Timeout" -}
- Changed
kling_lip_sync2 fields changed- changed
Input schema / properties / voice_speed / anyOfPrevious value: -[ - { - "type": "number" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 2, + "minimum": 0.8, + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / voice_speed / descriptionPrevious value: -"Speech speed multiplier (default 1.0). Used when mode='text2video'."New value: +"Speech speed multiplier from 0.8 to 2.0 (default 1.0). Used when mode='text2video'."
2 tool updates
v0.1.20- Added
kling_lip_sync - Added
kling_talking_photo
3 tool updates
v0.1.18- Changed
kling_extend_video1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "kling-v1", - "kling-v1-6", - "kling-v2-master", - "kling-v2-1-master", - "kling-v2-5-turbo", - "kling-v2-6", - "kling-v3", - "kling-v3-omni", - "kling-video-o1" -]New value: +[ + "kling-v1", + "kling-v1-6", + "kling-v2-master", + "kling-v2-1-master", + "kling-v2-5-turbo", + "kling-v2-6", + "kling-v3", + "kling-v3-omni", + "kling-o1" +]
- Changed
kling_generate_video13 fields changed- added
Input schema / $defsAdded value: +{ + "KlingCameraControl": { + "description": "Structured camera-control request.", + "properties": { + "config": { + "anyOf": [ + { + "$ref": "#/$defs/KlingCameraControlConfig" + }, + { + "type": "null" + } + ], + "default": null + }, + "type": { + "enum": [ + "simple", + "down_back", + "forward_up", + "left_turn_forward", + "right_turn_forward" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "KlingCameraControl", + "type": "object" + }, + "KlingCameraControlConfig": { + "description": "Numeric camera controls accepted by Kling's simple preset.", + "properties": { + "horizontal": { + "anyOf": [ + { + "maximum": 1, + "minimum": -1, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Horizontal" + }, + "pan": { + "anyOf": [ + { + "maximum": 1, + "minimum": -1, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Pan" + }, + "roll": { + "anyOf": [ + { + "maximum": 1, + "minimum": -1, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Roll" + }, + "tilt": { + "anyOf": [ + { + "maximum": 1, + "minimum": -1, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Tilt" + }, + "vertical": { + "anyOf": [ + { + "maximum": 1, + "minimum": -1, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Vertical" + }, + "zoom": { + "anyOf": [ + { + "maximum": 1, + "minimum": -1, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Zoom" + } + }, + "title": "KlingCameraControlConfig", + "type": "object" + }, + "KlingReferenceImage": { + "description": "Omni reference image, optionally used as a first or end frame.", + "properties": { + "image_url": { + "format": "uri", + "maxLength": 2083, + "minLength": 1, + "title": "Image Url", + "type": "string" + }, + "type": { + "anyOf": [ + { + "enum": [ + "first_frame", + "end_frame" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Type" + } + }, + "required": [ + "image_url" + ], + "title": "KlingReferenceImage", + "type": "object" + }, + "KlingReferenceVideo": { + "description": "Omni feature reference or editable base video.", + "properties": { + "keep_original_sound": { + "default": "no", + "enum": [ + "yes", + "no" + ], + "title": "Keep Original Sound", + "type": "string" + }, + "refer_type": { + "default": "feature", + "enum": [ + "feature", + "base" + ], + "title": "Refer Type", + "type": "string" + }, + "video_url": { + "format": "uri", + "maxLength": 2083, + "minLength": 1, + "title": "Video Url", + "type": "string" + } + }, + "required": [ + "video_url" + ], + "title": "KlingReferenceVideo", + "type": "object" + } +} - changed
Input schema / properties / camera_control / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "$ref": "#/$defs/KlingCameraControl" + }, + { + "type": "null" + } +] - changed
Input schema / properties / camera_control / descriptionPrevious value: -"Camera control as JSON string. Example: '{\"type\": \"simple\", \"config\": {\"horizontal\": 5, \"vertical\": 0, \"pan\": 0, \"tilt\": 0, \"roll\": 0, \"zoom\": 0}}'. Types: 'simple', 'down_back', 'forward_up', 'left_turn_forward', 'right_turn_forward'."New value: +"Structured camera control. Not supported by Omni generation." - removed
Input schema / properties / camera_control / titleRemoved value: -"Camera Control" - changed
Input schema / properties / cfg_scale / anyOfPrevious value: -[ - { - "type": "number" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / cfg_scale / descriptionPrevious value: -"Classifier-free guidance scale. Higher values follow the prompt more strictly. Typical range: 0.0-1.0."New value: +"Classifier-free guidance scale from 0 to 1. Not supported by Omni generation." - changed
Input schema / properties / duration / descriptionPrevious value: -"Video duration in seconds. For kling-v3/kling-v3-omni: 3-15 (integer). Other models: 5 or 10."New value: +"Video duration in seconds. kling-v3/kling-v3-omni: 3-15; kling-o1: 5 only; other models: 5 or 10." - removed
Input schema / properties / element_listRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "List of reference subjects from the subject library. Each item should contain an 'element_id'. If a reference video is present, reference subjects + reference images must be ≤ 4; otherwise ≤ 7.", - "title": "Element List" -} - added
Input schema / properties / image_listAdded value: +{ + "anyOf": [ + { + "items": { + "$ref": "#/$defs/KlingReferenceImage" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Omni reference images for kling-o1 or kling-v3-omni. Cite them as <<<image_1>>>, <<<image_2>>>, and so on.", + "title": "Image List" +} - changed
Input schema / properties / model / descriptionPrevious value: -"Kling model to use. Options: 'kling-v1', 'kling-v1-6', 'kling-v2-master' (default), 'kling-v2-1-master', 'kling-v2-5-turbo', 'kling-v2-6', 'kling-v3', 'kling-v3-omni', 'kling-video-o1'."New value: +"Kling model to use. Options: 'kling-v1', 'kling-v1-6', 'kling-v2-master' (default), 'kling-v2-1-master', 'kling-v2-5-turbo', 'kling-v2-6', 'kling-v3', 'kling-v3-omni', 'kling-o1'." - changed
Input schema / properties / model / enumPrevious value: -[ - "kling-v1", - "kling-v1-6", - "kling-v2-master", - "kling-v2-1-master", - "kling-v2-5-turbo", - "kling-v2-6", - "kling-v3", - "kling-v3-omni", - "kling-video-o1" -]New value: +[ + "kling-v1", + "kling-v1-6", + "kling-v2-master", + "kling-v2-1-master", + "kling-v2-5-turbo", + "kling-v2-6", + "kling-v3", + "kling-v3-omni", + "kling-o1" +] - changed
Input schema / properties / video_list / anyOfPrevious value: -[ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "$ref": "#/$defs/KlingReferenceVideo" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Input schema / properties / video_list / descriptionPrevious value: -"List of reference videos. Each item should contain a 'video_url' (MP4/MOV, 3-10s, 720-2160px, 24-60fps, ≤200MB, max 1 video) and optionally 'refer_type' ('feature' or 'base', default 'base') and 'keep_original_sound' ('yes' or 'no')."New value: +"One Omni reference video for kling-o1 or kling-v3-omni. Cite it as <<<video_1>>>. Use refer_type='feature' to reference it or 'base' to edit it."
- Changed
kling_generate_video_from_image13 fields changed- added
Input schema / $defsAdded value: +{ + "KlingCameraControl": { + "description": "Structured camera-control request.", + "properties": { + "config": { + "anyOf": [ + { + "$ref": "#/$defs/KlingCameraControlConfig" + }, + { + "type": "null" + } + ], + "default": null + }, + "type": { + "enum": [ + "simple", + "down_back", + "forward_up", + "left_turn_forward", + "right_turn_forward" + ], + "title": "Type", + "type": "string" + } + }, + "required": [ + "type" + ], + "title": "KlingCameraControl", + "type": "object" + }, + "KlingCameraControlConfig": { + "description": "Numeric camera controls accepted by Kling's simple preset.", + "properties": { + "horizontal": { + "anyOf": [ + { + "maximum": 1, + "minimum": -1, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Horizontal" + }, + "pan": { + "anyOf": [ + { + "maximum": 1, + "minimum": -1, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Pan" + }, + "roll": { + "anyOf": [ + { + "maximum": 1, + "minimum": -1, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Roll" + }, + "tilt": { + "anyOf": [ + { + "maximum": 1, + "minimum": -1, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Tilt" + }, + "vertical": { + "anyOf": [ + { + "maximum": 1, + "minimum": -1, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Vertical" + }, + "zoom": { + "anyOf": [ + { + "maximum": 1, + "minimum": -1, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Zoom" + } + }, + "title": "KlingCameraControlConfig", + "type": "object" + }, + "KlingReferenceImage": { + "description": "Omni reference image, optionally used as a first or end frame.", + "properties": { + "image_url": { + "format": "uri", + "maxLength": 2083, + "minLength": 1, + "title": "Image Url", + "type": "string" + }, + "type": { + "anyOf": [ + { + "enum": [ + "first_frame", + "end_frame" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Type" + } + }, + "required": [ + "image_url" + ], + "title": "KlingReferenceImage", + "type": "object" + }, + "KlingReferenceVideo": { + "description": "Omni feature reference or editable base video.", + "properties": { + "keep_original_sound": { + "default": "no", + "enum": [ + "yes", + "no" + ], + "title": "Keep Original Sound", + "type": "string" + }, + "refer_type": { + "default": "feature", + "enum": [ + "feature", + "base" + ], + "title": "Refer Type", + "type": "string" + }, + "video_url": { + "format": "uri", + "maxLength": 2083, + "minLength": 1, + "title": "Video Url", + "type": "string" + } + }, + "required": [ + "video_url" + ], + "title": "KlingReferenceVideo", + "type": "object" + } +} - changed
Input schema / properties / camera_control / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "$ref": "#/$defs/KlingCameraControl" + }, + { + "type": "null" + } +] - changed
Input schema / properties / camera_control / descriptionPrevious value: -"Camera control as JSON string."New value: +"Structured camera control. Not supported by Omni generation." - removed
Input schema / properties / camera_control / titleRemoved value: -"Camera Control" - changed
Input schema / properties / cfg_scale / anyOfPrevious value: -[ - { - "type": "number" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / cfg_scale / descriptionPrevious value: -"Classifier-free guidance scale. Higher values follow the prompt more strictly."New value: +"Classifier-free guidance scale from 0 to 1. Not supported by Omni generation." - changed
Input schema / properties / duration / descriptionPrevious value: -"Video duration in seconds. For kling-v3/kling-v3-omni: 3-15 (integer). Other models: 5 or 10."New value: +"Video duration in seconds. kling-v3/kling-v3-omni: 3-15; kling-o1: 5 only; other models: 5 or 10." - removed
Input schema / properties / element_listRemoved value: -{ - "anyOf": [ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "List of reference subjects from the subject library. Each item should contain an 'element_id'. If a reference video is present, reference subjects + reference images must be ≤ 4; otherwise ≤ 7.", - "title": "Element List" -} - added
Input schema / properties / image_listAdded value: +{ + "anyOf": [ + { + "items": { + "$ref": "#/$defs/KlingReferenceImage" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Additional Omni reference images for kling-o1 or kling-v3-omni. Do not set type='first_frame' or 'end_frame' when the same frame is already supplied through start_image_url or end_image_url.", + "title": "Image List" +} - changed
Input schema / properties / model / enumPrevious value: -[ - "kling-v1", - "kling-v1-6", - "kling-v2-master", - "kling-v2-1-master", - "kling-v2-5-turbo", - "kling-v2-6", - "kling-v3", - "kling-v3-omni", - "kling-video-o1" -]New value: +[ + "kling-v1", + "kling-v1-6", + "kling-v2-master", + "kling-v2-1-master", + "kling-v2-5-turbo", + "kling-v2-6", + "kling-v3", + "kling-v3-omni", + "kling-o1" +] - changed
Input schema / properties / start_image_url / descriptionPrevious value: -"URL of the image to use as the first frame of the video. The video will animate from this image."New value: +"Required URL of the image to use as the first frame of the video." - changed
Input schema / properties / video_list / anyOfPrevious value: -[ - { - "items": {}, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "$ref": "#/$defs/KlingReferenceVideo" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Input schema / properties / video_list / descriptionPrevious value: -"List of reference videos. Each item should contain a 'video_url' (MP4/MOV, 3-10s, 720-2160px, 24-60fps, ≤200MB, max 1 video) and optionally 'refer_type' ('feature' or 'base', default 'base') and 'keep_original_sound' ('yes' or 'no')."New value: +"One Omni reference video for kling-o1 or kling-v3-omni."
1 tool update
v0.1.17- Changed
kling_extend_video1 field changed- added
Input schema / properties / durationAdded value: +{ + "default": 5, + "description": "Duration of the extended segment in seconds. Supports 5 or 10.", + "title": "Duration", + "type": "integer" +}
4 tool updates
v0.1.13- Changed
kling_extend_video2 fields changed- changed
Input schema / properties / mode / descriptionPrevious value: -"Generation mode. 'std' (standard, default) or 'pro' (higher quality)."New value: +"Generation mode. 'std' (standard, default), 'pro' (higher quality), or '4k' (native 4K, only for kling-v3 and kling-v3-omni)." - changed
Input schema / properties / mode / enumPrevious value: -[ - "std", - "pro" -]New value: +[ + "std", + "pro", + "4k" +]
- Changed
kling_generate_motion1 field changed- changed
Input schema / properties / mode / enumPrevious value: -[ - "std", - "pro" -]New value: +[ + "std", + "pro", + "4k" +]
- Changed
kling_generate_video4 fields changed- added
Input schema / properties / element_listAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "List of reference subjects from the subject library. Each item should contain an 'element_id'. If a reference video is present, reference subjects + reference images must be ≤ 4; otherwise ≤ 7.", + "title": "Element List" +} - changed
Input schema / properties / mode / descriptionPrevious value: -"Generation mode. 'std' (standard, default) for faster generation, 'pro' for higher quality."New value: +"Generation mode. 'std' (standard, default) for faster generation, 'pro' for higher quality, '4k' for native 4K (only supported by kling-v3 and kling-v3-omni, not compatible with motion control)." - changed
Input schema / properties / mode / enumPrevious value: -[ - "std", - "pro" -]New value: +[ + "std", + "pro", + "4k" +] - added
Input schema / properties / video_listAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "List of reference videos. Each item should contain a 'video_url' (MP4/MOV, 3-10s, 720-2160px, 24-60fps, ≤200MB, max 1 video) and optionally 'refer_type' ('feature' or 'base', default 'base') and 'keep_original_sound' ('yes' or 'no').", + "title": "Video List" +}
- Changed
kling_generate_video_from_image4 fields changed- added
Input schema / properties / element_listAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "List of reference subjects from the subject library. Each item should contain an 'element_id'. If a reference video is present, reference subjects + reference images must be ≤ 4; otherwise ≤ 7.", + "title": "Element List" +} - changed
Input schema / properties / mode / descriptionPrevious value: -"Generation mode. 'std' (standard, default) or 'pro' (higher quality)."New value: +"Generation mode. 'std' (standard, default), 'pro' (higher quality), or '4k' (native 4K, only for kling-v3 and kling-v3-omni)." - changed
Input schema / properties / mode / enumPrevious value: -[ - "std", - "pro" -]New value: +[ + "std", + "pro", + "4k" +] - added
Input schema / properties / video_listAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "List of reference videos. Each item should contain a 'video_url' (MP4/MOV, 3-10s, 720-2160px, 24-60fps, ≤200MB, max 1 video) and optionally 'refer_type' ('feature' or 'base', default 'base') and 'keep_original_sound' ('yes' or 'no').", + "title": "Video List" +}
TDQS
Scored across 15 tools
Many tools are video-generation variants (standard, turbo, assets, storyboard, goods studio, commerce) whose boundaries require reading detailed descriptions; lip_sync and talking_photo also overlap as audio-driven avatar generation. Task-query and meta-list tools are clearly distinct, but the generation surface has multiple confusable entry points.
All tools share the kling_ snake_case prefix, and most follow a verb_noun pattern (generate_video, get_task, list_models). A few are feature/noun phrases (lip_sync, talking_photo, goods_studio, video_commerce), which is a minor deviation but still readable.
At 15 tools, the server is within the well-scoped range and each tool maps to a distinct generation mode, task-query need, or reference list. The count is appropriate for the breadth of Kling video-generation workflows.
The surface covers text-to-video, image-to-video, extension, motion transfer, lip sync, talking photo, specialized commercial generation, and task polling. Minor gaps remain, such as task cancellation/deletion or asset-upload management, but core generation and retrieval workflows are covered.
Maintenance
Related MCP Connectors
Best Image and video generation: 20+ models (Kling, Seedance, Veo, NB, FLUX.2), OAuth, pay-per-use.
AI video, images, music & SFX: Seedance 2.5, Veo 3.1, Kling 3.0, Nano Banana Pro, 20+ models.
One API for 100+ AI video, image, music and speech models.
AI images and videos with any model, AI personas, and AI clips from long videos.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn integration that enables Claude to generate AI videos from text prompts or images using Kling AI's video generation models.1235 npm43MIT
- AlicenseAqualityBmaintenanceHailuo AI video generation with text-to-video, image-to-video, subject reference video, and multiple models via AceDataCloud API.6741 PyPI1MIT
- AlicenseAqualityBmaintenanceWan AI video generation with text-to-video, image-to-video, and multiple quality models via AceDataCloud API.8693 PyPI1MIT
- AlicenseBqualityAmaintenanceEnables interaction with Kling AI models for video generation and avatar tasks via RunAPI, including task creation, status polling, and pricing checks.9136 npmApache 2.0