KlingMCP
KlingMCP integrates Kling AI video generation into any MCP-compatible client via the AceDataCloud API. Here's what you can do:
Generate video from text (
kling_generate_video): Create AI videos from text descriptions, with control over model, duration, aspect ratio, mode (standard/pro/4K), camera movement, negative prompts, and optional audio generation.Generate video from images (
kling_generate_video_from_image): Animate images by specifying start and/or end frames, letting Kling generate smooth motion between them.Extend existing videos (
kling_extend_video): Continue a previously generated video by adding more content and motion after the original ends.Transfer motion (
kling_generate_motion): Animate a static character image by applying motion from a reference video (e.g., make a photo dance).Check task status (
kling_get_task): Query the status and retrieve results (including video URLs) for a single generation task.Batch task queries (
kling_get_tasks_batch): Monitor the status of multiple generation tasks simultaneously.List available models (
kling_list_models): View all supported Kling models (e.g., kling-v1, kling-v2-master, kling-v3, kling-video-o1, etc.) with descriptions and recommended use cases.List available actions (
kling_list_actions): Get a categorized reference of all available API actions and their corresponding tools.
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. |
Quick Start
1. Get Your API Token
Sign up at AceDataCloud Platform
Go to the API documentation page
Click "Acquire" to get your API token
Copy the token for use below
2. Use the Hosted Server (Recommended)
AceDataCloud hosts a managed MCP server — no local installation required.
Endpoint: https://kling.mcp.acedata.cloud/mcp
All requests require a Bearer token. Use the API token from Step 1.
Claude.ai
Connect directly on Claude.ai with OAuth — no API token needed:
Go to Claude.ai Settings → Integrations → Add More
Enter the server URL:
https://kling.mcp.acedata.cloud/mcpComplete the OAuth login flow
Start using the tools in your conversation
Claude Desktop
Add to your config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"kling": {
"type": "streamable-http",
"url": "https://kling.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Cursor / Windsurf
Add to your MCP config (.cursor/mcp.json or .windsurf/mcp.json):
{
"mcpServers": {
"kling": {
"type": "streamable-http",
"url": "https://kling.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}VS Code (Copilot)
Add to your VS Code MCP config (.vscode/mcp.json):
{
"servers": {
"kling": {
"type": "streamable-http",
"url": "https://kling.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Or install the Ace Data Cloud MCP extension for VS Code, which registers the hosted MCP servers with one-click setup.
JetBrains IDEs
Go to Settings → Tools → AI Assistant → Model Context Protocol (MCP)
Click Add → HTTP
Paste:
{
"mcpServers": {
"kling": {
"url": "https://kling.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Claude Code
Claude Code supports MCP servers natively:
claude mcp add kling --transport http https://kling.mcp.acedata.cloud/mcp \
-h "Authorization: Bearer YOUR_API_TOKEN"Or add to your project's .mcp.json:
{
"mcpServers": {
"kling": {
"type": "streamable-http",
"url": "https://kling.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Cline
Add to Cline's MCP settings (.cline/mcp_settings.json):
{
"mcpServers": {
"kling": {
"type": "streamable-http",
"url": "https://kling.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Amazon Q Developer
Add to your MCP configuration:
{
"mcpServers": {
"kling": {
"type": "streamable-http",
"url": "https://kling.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Roo Code
Add to Roo Code MCP settings:
{
"mcpServers": {
"kling": {
"type": "streamable-http",
"url": "https://kling.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Continue.dev
Add to .continue/config.yaml:
mcpServers:
- name: kling
type: streamable-http
url: https://kling.mcp.acedata.cloud/mcp
headers:
Authorization: "Bearer YOUR_API_TOKEN"Zed
Add to Zed's settings (~/.config/zed/settings.json):
{
"language_models": {
"mcp_servers": {
"kling": {
"url": "https://kling.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
}cURL Test
# Health check (no auth required)
curl https://kling.mcp.acedata.cloud/health
# MCP initialize
curl -X POST https://kling.mcp.acedata.cloud/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'3. Or Run Locally (Alternative)
If you prefer to run the server on your own machine:
# Install from PyPI
pip install mcp-kling
# or
uvx mcp-kling
# Set your API token
export ACEDATACLOUD_API_TOKEN="your_token_here"
# Run (stdio mode for Claude Desktop / local clients)
mcp-kling
# Run (HTTP mode for remote access)
mcp-kling --transport http --port 8000Claude Desktop (Local)
{
"mcpServers": {
"kling": {
"command": "uvx",
"args": ["mcp-kling"],
"env": {
"ACEDATACLOUD_API_TOKEN": "your_token_here"
}
}
}
}Docker (Self-Hosting)
docker pull ghcr.io/acedatacloud/mcp-kling:latest
docker run -p 8000:8000 ghcr.io/acedatacloud/mcp-kling:latestClients connect with their own Bearer token — the server extracts the token from each request's Authorization header.
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
Available Tools
10 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?
No annotations are supplied, so the description must disclose behavior. It reveals an extension returns a Task ID and extended video info, implying an asynchronous workflow, but does not state that results must be polled via get_task, whether the original video is modified, or any required permissions/billing. The continuation semantics are clear, but operational behavior is under-specified.
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?
Information is front-loaded with a one-sentence summary and scannable bullets. Minor redundancy between the first sentences ('Extend... additional content' vs 'continue... adding more motion and content') costs a point.
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 no annotations, the description covers the core use case and return value but omits the asynchronous task lifecycle (how to retrieve the result, whether to use callback_url) despite siblings like kling_get_task existing. Schema covers parameter semantics, so the remaining gap is moderate.
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?
Input schema descriptions cover 100% of parameters, including defaults and enum semantics for mode/model and the source of video_id. The prose description adds nothing beyond the schema—it restates the prompt guidance already in the schema—so baseline 3 is warranted.
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?
Clearly states the verb ('extend') and resource ('an existing video'), and explains the result is continued content after the original ends. This differentiates it from generation siblings like kling_generate_video and kling_generate_motion.
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 an explicit 'Use this when' bullet list with three concrete scenarios. Does not name alternatives or exclude cases, so it misses the when-not dimension, but the positive triggers are unambiguous.
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_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). Default is false. | |
| 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 burden. It discloses that the result includes a Task ID and generated video information with URLs and state, but omits important behavioral context such as asynchronous generation timing, callback behavior, and potential cost implications.
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-structured with front-loaded purpose, clear use-when bullets, an explicit sibling alternative, and a returns section. Minor redundancy and marketing language such as 'simplest way' and 'high-quality AI video' slightly reduce efficiency but do not obscure meaning.
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 12-parameter tool with a rich schema and output schema, the description adequately covers when to use the tool. However, it omits async/notification details and gives partially conflicting reference-image guidance, leaving moderate gaps for an agent making advanced invocation decisions.
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 and the description need not repeat parameter documentation. It adds little parameter-level meaning beyond the schema, and its 'no reference images' framing is somewhat misleading given the schema's image_list and video_list support.
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 AI video from a text prompt using Kling.' Explicitly differentiates from the sibling kling_generate_video_from_image, which prevents confusion between text-only and image-based generation.
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 clear use-when bullets and explicitly routes start/end-frame requests to kling_generate_video_from_image. However, the guidance 'You don't have reference images' is contradicted by the schema's image_list and video_list parameters, and no selection guidance is given for other siblings like kling_generate_motion or kling_extend_video.
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 provided, the description carries the behavioral disclosure burden. It reveals that Kling animates between the supplied frames, that start_image_url is required while end_image_url is optional, and that the call returns a Task ID plus video URLs and state. It does not explicitly mention asynchronous polling or rate limits, but the Task ID return makes the async nature reasonably inferable.
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-organized and front-loaded: the core capability appears in the first sentence, followed by compact use-case bullets and a terse return summary. There is slight redundancy between 'start and/or end frames' and 'first frame and/or last frame,' but the overall length is appropriate and every major section earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 14 parameters, the description succeeds by giving the core generation concept, selection guidance, and a high-level return summary; the 100% schema coverage and output schema handle the remaining invocation details. It could be more complete by explicitly routing to alternatives like kling_generate_video when no reference image exists, but this is a minor gap rather than a blocking omission.
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 only marginal semantics beyond the schema by restating that start_image_url is required and end_image_url is optional. The schema itself already documents each parameter's purpose, including model restrictions and defaults, so the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Generate AI video using reference images as start and/or end frames.' This clearly separates it from text-to-video and motion-only siblings by naming the distinguishing mechanic — first-frame and/or last-frame image control. The follow-up use-case bullets reinforce the tool's unique role as an image-driven video generator.
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 concrete trigger conditions: animating a specific image, creating a transition between two images, and needing precise visual control. It does not explicitly name alternatives or state when not to use this tool, but the given context is clear enough for an agent to select it appropriately.
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_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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
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
Each tool targets a distinct capability: text-to-video, image-to-video, lip sync, talking photo, motion transfer, extension, task querying, and metadata listing. The purposes are clearly separated with explicit guidance on when to use each variant, leaving no ambiguity.
All tool names follow the kling_<action>_<object> pattern consistently using snake_case. Verbs like generate, list, get, extend, and noun phrases like lip_sync and talking_photo are uniformly formatted, making naming predictable and coherent.
With 10 tools, the server covers the core video generation lifecycle and specialized features without bloat. The count is well-scoped for a focused MCP server, each tool earning its place.
The tool set covers the main workflows: generation from text/image, motion transfer, lip sync, talking photos, video extension, and task monitoring. Minor gaps exist such as no explicit cancel/delete task endpoint, but agents can work around this for typical generation scenarios.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Best Image and video generation: 20+ models (Kling, Seedance, Veo, NB, FLUX.2), OAuth, pay-per-use.
One API for 100+ AI video, image, music and speech models.
AI content generation with 50+ models: image, video, TTS, voice cloning, and more.
Generate images, video, music, voice and 3D through one API. 30 tools, 200+ models.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn integration that enables Claude to generate AI videos from text prompts or images using Kling AI's video generation models.1210441MIT
- AlicenseAqualityAmaintenanceHailuo AI video generation with text-to-video, image-to-video, subject reference video, and multiple models via AceDataCloud API.61MIT
- AlicenseAqualityBmaintenanceWan AI video generation with text-to-video, image-to-video, and multiple quality models via AceDataCloud API.71MIT
- AlicenseAqualityBmaintenanceOne MCP server for music, image, video, and audio generation across Suno, Grok Imagine, Seedance, Kling, Hailuo, Wan, VEO, Ideogram, and GPT Image 2. Generate, edit, upscale, reframe, and master through one API key and one credit pool.161206MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AceDataCloud/KlingMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server