Skip to main content
Glama

KlingMCP

PyPI version PyPI downloads Python 3.10+ License: MIT MCP

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

kling_generate_video

Generate AI video from a text prompt using Kling.

kling_generate_video_from_image

Generate AI video using reference images as start and/or end frames.

kling_extend_video

Extend an existing video with additional content.

kling_generate_motion

Transfer motion from a reference video to a character image.

kling_get_task

Query the status and result of a video generation task.

kling_get_tasks_batch

Query multiple video generation tasks at once.

kling_list_models

List all available Kling models for video generation.

kling_list_actions

List all available Kling API actions and corresponding tools.

Quick Start

1. Get Your API Token

  1. Sign up at AceDataCloud Platform

  2. Go to the API documentation page

  3. Click "Acquire" to get your API token

  4. Copy the token for use below

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:

  1. Go to Claude.ai Settings → Integrations → Add More

  2. Enter the server URL: https://kling.mcp.acedata.cloud/mcp

  3. Complete the OAuth login flow

  4. 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

  1. Go to Settings → Tools → AI Assistant → Model Context Protocol (MCP)

  2. Click AddHTTP

  3. 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 8000

Claude 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:latest

Clients connect with their own Bearer token — the server extracts the token from each request's Authorization header.

Available Models

Model

Description

Use Case

kling-v1

First generation

Basic video generation

kling-v1-6

V1 extended

Improved quality over v1

kling-v2-master

V2 master (default)

High-quality, balanced performance

kling-v2-1-master

V2.1 master

Enhanced quality and consistency

kling-v2-5-turbo

V2.5 turbo

Faster generation, good quality

kling-o1

Kling O1

Omni image/video reference generation

Configuration

Environment Variables

Variable

Description

Default

ACEDATACLOUD_API_TOKEN

API token from AceDataCloud

Required

ACEDATACLOUD_API_BASE_URL

API base URL

https://api.acedata.cloud

KLING_DEFAULT_MODEL

Default video model

kling-v2-master

KLING_DEFAULT_MODE

Default generation mode

std

KLING_DEFAULT_ASPECT_RATIO

Default aspect ratio

16:9

KLING_REQUEST_TIMEOUT

Request timeout in seconds

300

LOG_LEVEL

Logging level

INFO

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 integration

Code Quality

# Format code
ruff format .

# Lint code
ruff check .

# Type check
mypy core tools

Build & 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.md

API 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:

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing)

  5. Open a Pull Request

Documentation

Documentation

License

MIT License - see LICENSE for details.


Made with love by AceDataCloud

Available Tools

10 tools
kling_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.
ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoGeneration mode. 'std' (standard, default), 'pro' (higher quality), or '4k' (native 4K, only for kling-v3 and kling-v3-omni).std
modelNoKling model to use. Default: 'kling-v2-master'.kling-v1
promptYesDescription of what should happen in the extended portion of the video. Describe the continuation of motion and new content.
durationNoDuration of the extended segment in seconds. Supports 5 or 10.
video_idYesID of the video to extend. This is the 'video_id' field from a previous generation result.
cfg_scaleNoClassifier-free guidance scale.
callback_urlNoOptional webhook URL for asynchronous result notification.
negative_promptNoThings to avoid in the extended video.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.
ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoGeneration mode. 'std' (standard, default) for faster generation, 'pro' for higher quality.std
promptNoOptional text description to guide the motion transfer. Use to add details about the desired output.
image_urlYesURL of the character image to animate. The character in this image will be animated with the motion from the reference video.
video_urlYesURL of the reference video providing the motion. The character movements from this video will be transferred to the image.
model_nameNoOptional Kling motion model name, such as 'kling-v2-6' or 'kling-v3'.
callback_urlNoWebhook callback URL for asynchronous notifications.
watermark_infoNoOptional watermark configuration forwarded to the API.
keep_original_soundNoWhether to keep the original sound from the reference video. Options: 'yes' or 'no'. Default depends on API.
character_orientationNoOrientation of the character. 'image' (default) uses the orientation from the character image, 'video' uses the orientation from the reference video.image

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.
ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoGeneration 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
modelNoKling 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
promptYesDescription 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'
durationNoVideo duration in seconds. kling-v3/kling-v3-omni: 3-15; kling-o1: 5 only; other models: 5 or 10.
cfg_scaleNoClassifier-free guidance scale from 0 to 1. Not supported by Omni generation.
image_listNoOmni reference images for kling-o1 or kling-v3-omni. Cite them as <<<image_1>>>, <<<image_2>>>, and so on.
video_listNoOne 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_ratioNoVideo aspect ratio. Options: '16:9' (landscape, default), '9:16' (portrait), '1:1' (square).16:9
callback_urlNoWebhook callback URL for asynchronous notifications. When provided, the API will call this URL when the video is generated.
camera_controlNoStructured camera control. Not supported by Omni generation.
generate_audioNoWhether to generate audio synchronously. Supported by kling-v3, kling-v3-omni, and kling-v2-6 (pro mode only). Default is false.
negative_promptNoThings to avoid in the video. Example: 'blurry, low quality, distorted faces'

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.
ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoGeneration mode. 'std' (standard, default), 'pro' (higher quality), or '4k' (native 4K, only for kling-v3 and kling-v3-omni).std
modelNoKling model to use. Default: 'kling-v2-master'.kling-v1
promptYesDescription of the video motion and content. Describe what should happen in the video, how objects should move, what transitions to include.
durationNoVideo duration in seconds. kling-v3/kling-v3-omni: 3-15; kling-o1: 5 only; other models: 5 or 10.
cfg_scaleNoClassifier-free guidance scale from 0 to 1. Not supported by Omni generation.
image_listNoAdditional 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_listNoOne Omni reference video for kling-o1 or kling-v3-omni.
aspect_ratioNoVideo aspect ratio. Usually should match your input image ratio.16:9
callback_urlNoWebhook callback URL for asynchronous notifications.
end_image_urlNoURL of the image to use as the last frame of the video. The video will animate towards this image.
camera_controlNoStructured camera control. Not supported by Omni generation.
generate_audioNoWhether to generate audio synchronously. Supported by kling-v3, kling-v3-omni, and kling-v2-6 (pro mode only).
negative_promptNoThings to avoid in the video.
start_image_urlNoRequired URL of the image to use as the first frame of the video.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe task ID returned from a generation request. This is the 'task_id' field from any kling_generate_* or kling_extend_* tool response.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.
ParametersJSON Schema
NameRequiredDescriptionDefault
task_idsYesList of task IDs to query. Maximum recommended batch size is 50 tasks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.
ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesLip-sync mode. 'audio2video' to drive lips from an audio file or URL; 'text2video' to generate speech from text and drive the video.
textNoText to convert to speech. Required when mode='text2video'.
video_idNoTask ID of a previously generated video to use as the source. Provide either video_url or video_id.
voice_idNoVoice ID to use for text-to-speech synthesis (mode='text2video').
audio_urlNoURL of the driving audio. Required when mode='audio2video' and audio_type='url'.
video_urlNoURL of the source video whose lip movements will be replaced. Provide either video_url or video_id.
audio_fileNoBase64-encoded audio file content. Required when mode='audio2video' and audio_type='file'.
audio_typeNoAudio source type. 'url' (default) to supply audio_url; 'file' to supply audio_file as a base64-encoded string.url
voice_speedNoSpeech speed multiplier from 0.8 to 2.0 (default 1.0). Used when mode='text2video'.
callback_urlNoWebhook URL that receives a POST when the lip-sync task completes.
voice_languageNoLanguage of the TTS voice. 'zh' for Chinese (default), 'en' for English. Used when mode='text2video'.zh

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.
ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoGeneration quality mode. 'pro' (default) for higher quality; 'std' for faster generation.pro
modelNoKling 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
promptNoOptional text description to guide the animation style or content.
durationNoVideo duration in seconds. Options: 5 (default) or 10.
audio_urlYesURL of the audio file that drives the talking animation.
image_urlYesURL of the portrait image to animate. Should be a clear frontal face photo.
callback_urlNoWebhook URL that receives a POST when the talking-photo task completes.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 5 tool updatesv0.1.23
    • Changedkling_extend_video1 field changed
      • addedInput schema / properties / callback_url
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional webhook URL for asynchronous result notification.",
        +  "title": "Callback Url"
        +}
    • Changedkling_generate_motion4 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "KlingWatermarkInfo": {
        +    "description": "Watermark configuration for motion transfer.",
        +    "properties": {
        +      "enabled": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Enabled"
        +      }
        +    },
        +    "title": "KlingWatermarkInfo",
        +    "type": "object"
        +  }
        +}
      • changedInput schema / properties / model_name / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "kling-v2-6",
        +      "kling-v3"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / watermark_info / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "$ref": "#/$defs/KlingWatermarkInfo"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / watermark_info / title
        Removed value: -"Watermark Info"
    • Changedkling_generate_video1 field changed
      • addedInput schema / $defs / KlingCameraControlConfig / additionalProperties
        Added value: +{
        +  "maximum": 1,
        +  "minimum": -1,
        +  "type": "number"
        +}
    • Changedkling_generate_video_from_image1 field changed
      • addedInput schema / $defs / KlingCameraControlConfig / additionalProperties
        Added value: +{
        +  "maximum": 1,
        +  "minimum": -1,
        +  "type": "number"
        +}
    • Changedkling_lip_sync5 fields changed
      • removedInput schema / properties / voice_speed / anyOf
        Removed value: -[
        -  {
        -    "maximum": 2,
        -    "minimum": 0.8,
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / voice_speed / default
        Previous value: -nullNew value: +1
      • addedInput schema / properties / voice_speed / maximum
        Added value: +2
      • addedInput schema / properties / voice_speed / minimum
        Added value: +0.8
      • addedInput schema / properties / voice_speed / type
        Added value: +"number"
  2. 5 tool updatesv0.1.21
    • Changedkling_extend_video1 field changed
      • changedInput schema / properties / model / default
        Previous value: -"kling-v2-master"New value: +"kling-v1"
    • Changedkling_generate_motion4 fields changed
      • changedInput schema / properties / keep_original_sound / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "yes",
        +      "no"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / mode / enum
        Previous value: -[
        -  "std",
        -  "pro",
        -  "4k"
        -]New value: +[
        +  "std",
        +  "pro"
        +]
      • addedInput schema / properties / model_name
        Added 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"
        +}
      • addedInput schema / properties / watermark_info
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional watermark configuration forwarded to the API.",
        +  "title": "Watermark Info"
        +}
    • Changedkling_generate_video2 fields changed
      • changedInput schema / properties / model / default
        Previous value: -"kling-v2-master"New value: +"kling-v1"
      • removedInput schema / properties / timeout
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Timeout in seconds for the API to return data. Default is 300.",
        -  "title": "Timeout"
        -}
    • Changedkling_generate_video_from_image2 fields changed
      • changedInput schema / properties / model / default
        Previous value: -"kling-v2-master"New value: +"kling-v1"
      • removedInput schema / properties / timeout
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Timeout in seconds for the API to return data. Default is 300.",
        -  "title": "Timeout"
        -}
    • Changedkling_lip_sync2 fields changed
      • changedInput schema / properties / voice_speed / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maximum": 2,
        +    "minimum": 0.8,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / voice_speed / description
        Previous 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'."
  3. 2 tool updatesv0.1.20
    • Addedkling_lip_sync
    • Addedkling_talking_photo
  4. 3 tool updatesv0.1.18
    • Changedkling_extend_video1 field changed
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
    • Changedkling_generate_video13 fields changed
      • addedInput schema / $defs
        Added 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"
        +  }
        +}
      • changedInput schema / properties / camera_control / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "$ref": "#/$defs/KlingCameraControl"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / camera_control / description
        Previous 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."
      • removedInput schema / properties / camera_control / title
        Removed value: -"Camera Control"
      • changedInput schema / properties / cfg_scale / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / cfg_scale / description
        Previous 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."
      • changedInput schema / properties / duration / description
        Previous 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."
      • removedInput schema / properties / element_list
        Removed 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"
        -}
      • addedInput schema / properties / image_list
        Added 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"
        +}
      • changedInput schema / properties / model / description
        Previous 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'."
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
      • changedInput schema / properties / video_list / anyOf
        Previous value: -[
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "$ref": "#/$defs/KlingReferenceVideo"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / video_list / description
        Previous 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."
    • Changedkling_generate_video_from_image13 fields changed
      • addedInput schema / $defs
        Added 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"
        +  }
        +}
      • changedInput schema / properties / camera_control / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "$ref": "#/$defs/KlingCameraControl"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / camera_control / description
        Previous value: -"Camera control as JSON string."New value: +"Structured camera control. Not supported by Omni generation."
      • removedInput schema / properties / camera_control / title
        Removed value: -"Camera Control"
      • changedInput schema / properties / cfg_scale / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maximum": 1,
        +    "minimum": 0,
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / cfg_scale / description
        Previous 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."
      • changedInput schema / properties / duration / description
        Previous 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."
      • removedInput schema / properties / element_list
        Removed 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"
        -}
      • addedInput schema / properties / image_list
        Added 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"
        +}
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
      • changedInput schema / properties / start_image_url / description
        Previous 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."
      • changedInput schema / properties / video_list / anyOf
        Previous value: -[
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "$ref": "#/$defs/KlingReferenceVideo"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / video_list / description
        Previous 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."
  5. 1 tool updatev0.1.17
    • Changedkling_extend_video1 field changed
      • addedInput schema / properties / duration
        Added value: +{
        +  "default": 5,
        +  "description": "Duration of the extended segment in seconds. Supports 5 or 10.",
        +  "title": "Duration",
        +  "type": "integer"
        +}
  6. 4 tool updatesv0.1.13
    • Changedkling_extend_video2 fields changed
      • changedInput schema / properties / mode / description
        Previous 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)."
      • changedInput schema / properties / mode / enum
        Previous value: -[
        -  "std",
        -  "pro"
        -]New value: +[
        +  "std",
        +  "pro",
        +  "4k"
        +]
    • Changedkling_generate_motion1 field changed
      • changedInput schema / properties / mode / enum
        Previous value: -[
        -  "std",
        -  "pro"
        -]New value: +[
        +  "std",
        +  "pro",
        +  "4k"
        +]
    • Changedkling_generate_video4 fields changed
      • addedInput schema / properties / element_list
        Added 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"
        +}
      • changedInput schema / properties / mode / description
        Previous 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)."
      • changedInput schema / properties / mode / enum
        Previous value: -[
        -  "std",
        -  "pro"
        -]New value: +[
        +  "std",
        +  "pro",
        +  "4k"
        +]
      • addedInput schema / properties / video_list
        Added 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"
        +}
    • Changedkling_generate_video_from_image4 fields changed
      • addedInput schema / properties / element_list
        Added 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"
        +}
      • changedInput schema / properties / mode / description
        Previous 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)."
      • changedInput schema / properties / mode / enum
        Previous value: -[
        -  "std",
        -  "pro"
        -]New value: +[
        +  "std",
        +  "pro",
        +  "4k"
        +]
      • addedInput schema / properties / video_list
        Added 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

A4.2/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessUnresponsive

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

Related MCP Servers

Latest Blog Posts

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