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.

Connect: hosted OAuth, API token, or local stdio

The hosted endpoint is https://kling.mcp.acedata.cloud/mcp. Choose one route for the MCP client:

Route

When to use it

Credential setup

Hosted OAuth

The client supports remote MCP OAuth

Add only the URL, then sign in to AceDataCloud and approve access. No token needs to be pasted into client configuration.

Hosted API token

The client cannot finish OAuth, or you need an explicit integration credential

Send an AceDataCloud API token in the Authorization: Bearer … header. Keep it in a local secret store or environment variable.

Local stdio

The client runs a local MCP process

Install mcp-kling and pass ACEDATACLOUD_API_TOKEN to that process. It still calls the AceDataCloud API.

The hosted service advertises OAuth metadata and Dynamic Client Registration (DCR). DCR registers the client application; it is not an API key. OAuth signs you in and the client sends the resulting Bearer token; it may reuse or create an API credential for the account. Browser sign-in still requires an AceDataCloud account. The hosted service can be metered: review current service documentation and displayed pricing before a real operation. Do not configure both an OAuth login and a fixed Authorization header for the same server.

Hosted OAuth examples

  • Claude and Claude Desktop chat: Add a remote custom connector in Customize → Connectors → Add custom connector, enter https://kling.mcp.acedata.cloud/mcp, select sign-in, and choose Register automatically if Claude asks how to register its OAuth client. Complete consent. Claude Desktop's local claude_desktop_config.json is a separate setup. Claude connector guide.

  • Claude Code: claude mcp add --transport http --scope user kling https://kling.mcp.acedata.cloud/mcp, then claude mcp login kling. Check /mcp. Claude Code MCP guide.

  • Cursor: Add a remote server with only https://kling.mcp.acedata.cloud/mcp. For a project, merge the entry below into <project>/.cursor/mcp.json; for personal use, use ~/.cursor/mcp.json. Cursor MCP guide.

  • VS Code / Copilot: Run MCP: Add Server, select HTTP, enter https://kling.mcp.acedata.cloud/mcp, then finish the browser sign-in. New portable workspace configs use <project>/.mcp.json; the VS Code-specific format below uses <project>/.vscode/mcp.json or the user profile. Check MCP: List Servers. VS Code MCP setup.

  • Codex: codex mcp add kling --url https://kling.mcp.acedata.cloud/mcp, then codex mcp login kling. Its user settings are in ~/.codex/config.toml. Official Codex MCP guide.

Cursor project config (OAuth):

{
  "mcpServers": {
    "kling": {"url": "https://kling.mcp.acedata.cloud/mcp"}
  }
}

VS Code-specific workspace config (OAuth):

{
  "servers": {
    "kling": {"type": "http", "url": "https://kling.mcp.acedata.cloud/mcp"}
  }
}

Hosted API token

  1. Open Ace Data Cloud → Applications. Sign in, or register an account first.

  2. Find General application. If it has not been created, choose Initialize General Application. A general key can use the services available to your account; a dedicated application's key is limited to its service. Check the required service/model access and current pricing.

  3. Copy the API Key from the application card, or open Keys / Manage Keys → Create to create a separate key for this integration. Give it a recognizable name so you can revoke or rotate it independently.

  4. When creating a key, review Expiration Time, Set Usage Limitation, and Allowed APIs. Enable only the restrictions you need, allow the operations you will call, then click Create and copy the token from the key list. Task lookup does not grant permission to submit a generation. Confirm the application's balance can cover your first request; any trial allowance is whatever your account currently displays.

  5. Copy only the token value, without quotation marks, spaces, or Bearer . An API Key / API Token field expects this raw value; only a manually configured HTTP Authorization header needs the Bearer prefix. A platform-... account-management token cannot replace a generation API key.

Copy an application API key or open Manage Keys

Create a separately named key with optional restrictions

Save the key in the client's credential store or the environment variable shown below. Never put it in a prompt, shared workflow, screenshot, or Git commit. If authentication fails, check the full copied value, application/service access, expiration, usage limit, and balance before creating another key.

A fixed Bearer header bypasses OAuth. If the header is invalid, remove it before trying browser sign-in; keep the saved credential private.

For Claude Code, the shell expands the token when you add the server; treat the saved user MCP config as a secret:

export ACEDATACLOUD_API_TOKEN='YOUR_API_TOKEN'
claude mcp add --transport http --scope user kling https://kling.mcp.acedata.cloud/mcp \
  --header "Authorization: Bearer $ACEDATACLOUD_API_TOKEN"

For a Claude Code project config, put a variable reference in <project>/.mcp.json and set that variable in the environment that launches Claude Code:

{
  "mcpServers": {
    "kling": {
      "type": "http",
      "url": "https://kling.mcp.acedata.cloud/mcp",
      "headers": {"Authorization": "Bearer ${ACEDATACLOUD_API_TOKEN}"}
    }
  }
}

Cursor uses a different environment-variable syntax in ~/.cursor/mcp.json or an uncommitted project config:

{
  "mcpServers": {
    "kling": {
      "url": "https://kling.mcp.acedata.cloud/mcp",
      "headers": {"Authorization": "Bearer ${env:ACEDATACLOUD_API_TOKEN}"}
    }
  }
}

In VS Code, run MCP: Open User Configuration and merge this server plus its masked input; ${input:...} is for VS Code's user/workspace format and is not portable to the Agent Host .mcp.json format:

{
  "inputs": [
    {"id": "acedata-kling-token", "type": "promptString", "description": "AceDataCloud API token", "password": true}
  ],
  "servers": {
    "kling": {
      "type": "http",
      "url": "https://kling.mcp.acedata.cloud/mcp",
      "headers": {"Authorization": "Bearer ${input:acedata-kling-token}"}
    }
  }
}

For Cline, use its MCP configuration UI or CLI file ~/.cline/data/settings/cline_mcp_settings.json; its remote transport value is streamableHttp. For JetBrains AI Assistant, add a remote URL from Settings → Tools → AI Assistant → Model Context Protocol (MCP). For Zed, use a context_servers entry with the URL only for OAuth or add a local Bearer header. These clients have different configuration schemas; follow their current UI rather than copying another client's JSON. Cline · JetBrains · Zed.

Local stdio

Install the package and give the local process an API token:

python -m pip install mcp-kling
export ACEDATACLOUD_API_TOKEN='YOUR_API_TOKEN'
mcp-kling

For Claude Desktop local MCP, merge this entry into the file opened by its developer settings (~/Library/Application Support/Claude/claude_desktop_config.json on macOS). uvx requires uv on PATH:

{
  "mcpServers": {
    "kling": {
      "command": "uvx",
      "args": ["mcp-kling"],
      "env": {"ACEDATACLOUD_API_TOKEN": "YOUR_API_TOKEN"}
    }
  }
}

Keep this user-level file private. Self-hosted HTTP uses mcp-kling --transport http --port 8000; expose it only with suitable network and TLS controls. Local execution still calls the AceDataCloud API.

Check before using the service

  1. https://kling.mcp.acedata.cloud/health returning {"status":"ok"} checks endpoint reachability only.

  2. Confirm that the MCP client loads tools. kling_list_models is a reference tool; it does not verify downstream API access or balance.

  3. If you need a full API check, call kling_generate_video with your own valid input after reviewing current service documentation and displayed pricing. If the result contains a task ID, call kling_get_task on that same ID until terminal success or failure. Do not resubmit the operation just to check progress.

For 401, check which auth route the client used and whether the token or OAuth session is valid. A 403 may mean an account permission or content moderation failure; read the returned error. Insufficient balance and downstream service failures need their own diagnosis. A listed tool or submitted task does not prove a successful result.

Available Models

Model

Description

Use Case

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

Turbo, storyboards and commerce

Use kling_generate_turbo_video for V3 Turbo (std 720p / pro 1080p, integer 3–15 seconds). Native audio is included and cannot be disabled. Tail frames, standalone negative prompts, cfg_scale, camera controls and Omni references are unsupported.

Use kling_generate_storyboard for V3/V3 Omni multishot generation: shot_type="intelligence" uses a prompt; customize takes 1–6 indexed multi_prompt shots whose durations sum to the total. For example: {"shot_type":"customize","duration":5,"multi_prompt":[{"index":1,"prompt":"Ocean","duration":2},{"index":2,"prompt":"Beach","duration":3}]}.

Public commerce tools are kling_goods_studio and kling_video_commerce. Both accept a structured request and return a task ID for kling_get_task.

Reference inputs

Use element_list and voice_list only with already valid platform references and the supported model combinations in the current backend guide. Standalone asset creation and management are not published.

Available Tools

15 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
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears the full behavioral burden. It discloses that the operation is asynchronous by promising a returned Task ID and the callback_url param documents webhook notification. It does not cover permissions, cost, whether the extension is reversible, or rate limits, so meaningful gaps remain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose followed by scannable use-case bullets; every line is relevant. The second sentence ('adding more motion and content after the original video ends') and the Returns block restate information already conveyed by the title or the output schema, costing some brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/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 an output schema present, the description needn't explain return values yet still gives a brief summary. Combined with the 100% schema coverage and explicit use cases, an agent has enough to call it correctly; only the async/permission behavior remains under-specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 8 parameters are already documented in the schema, including enums, defaults, and the 5/10 second duration constraint. The description adds no parameter-level detail beyond this, which is the expected baseline 3 when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Extend an existing video') and clarifies scope: continuing a previously generated video rather than creating a new one. It implicitly separates itself from siblings like kling_generate_video by requiring a prior video_id, but never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use this when' block gives three concrete scenarios (video too short, continue story/motion, build longer piece by piece) that establish clear context. However, it offers no when-not guidance or named alternatives such as kling_generate_video for fresh generations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kling_generate_motionAInspect

Transfer motion from a reference video to a character image.

This tool enables character animation by extracting motion from a video
and applying it to a static character image.

Use this when:
- You want to animate a character image using motion from a video
- You want to create a dance or movement video from a still photo
- You need to transfer specific movements to a character

Returns:
    Task ID and motion generation information.
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_storyboardBInspect

Generate V3/V3 Omni automatic or custom multishot video. Poll kling_get_task.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden; it does disclose that generation is asynchronous and must be polled via kling_get_task, which is real value beyond the schema. It omits cost/credit implications, failure/retry behavior, and whether prompt or multi_prompt is required for each shot_type.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the capability and followed by the required follow-up action; no filler. It is efficient, though the terseness substitutes brevity for needed specifics rather than reflecting a genuinely complete definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter generation tool with a nested shot array, no annotations, and 0% parameter documentation, the description is far too thin; the output schema plus 'poll' covers results retrieval, but the agent is left guessing how to construct custom multishot requests. A one-line note on multi_prompt vs prompt would close the main gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are 14 nested fields, yet the description explains only the model and shot-type dimension ('automatic or custom'). Key parameters such as multi_prompt/Shot.index, duration bounds (3-15), aspect_ratio, start_image_url/end_image_url, callback_url, and generate_audio get no explanation in either the schema or the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Generate ... multishot video') plus the supported models (V3/V3 Omni), which distinguishes it from the plain kling_generate_video siblings. It stops short of naming which sibling to use instead when the user doesn't need multishot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Poll kling_get_task' gives a clear post-call workflow step, which is useful routing guidance. However, it never says when this tool is preferable to kling_generate_video, kling_generate_turbo_video, or kling_generate_video_from_image, leaving the alternative selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kling_generate_turbo_videoAInspect

Generate V3 Turbo 720p/1080p, 3–15 seconds. Native audio is included with no off switch. Poll kling_get_task.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses two non-obvious behaviors: native audio is always on with no off switch (matching the const true schema field) and results must be polled. It omits cost/credit, permission, or failure behavior for a paid generation call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three terse sentences with no filler; the capability statement comes first and the operational note (polling) last. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the polling pointer covers the async workflow. Still, for a generative paid tool with a 0%-covered nested schema, the description leaves several parameters (mode, aspect_ratio, start_image_url) unexplained for callers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it only partly does: it explains the duration range and the audio constraint, but says nothing about mode (std/pro), aspect_ratio, start_image_url, callback_url, or the prompt length limit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (Generate) plus the model variant (V3 Turbo), resolution options, and duration range, which lets an agent distinguish it from the generic kling_generate_video. It does not mention text2video/image2video modes or name the sibling it is not, so sibling differentiation is only partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The instruction to 'Poll kling_get_task' is genuine usage guidance for the follow-up step, which matters because async defaults to true. However there is no guidance on when to choose this over kling_generate_video, kling_generate_video_from_image, or kling_generate_with_assets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kling_generate_videoAInspect

Generate AI video from a text prompt using Kling.

This is the simplest way to create video - just describe what you want and Kling
will generate a high-quality AI video.

Use this when:
- You want to create a video from a text description
- You don't have reference images
- You want quick video generation

For using reference images (start/end frames), use kling_generate_video_from_image instead.

Returns:
    Task ID and generated video information including URLs and state.
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). Omit for the model default. Turbo always includes native audio.
negative_promptNoThings to avoid in the video. Example: 'blurry, low quality, distorted faces'

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 are provided, so the description carries the full behavioral burden. It does disclose that the call returns a Task ID and video state, which implies asynchronous task-based generation, but it never states that polling (e.g. kling_get_task) is required, nor mentions latency, cost, or failure handling — significant omissions for a generation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: purpose first, then when-to-use bullets, then the sibling pointer and return note. The middle sentence ('This is the simplest way... high-quality AI video') is mild marketing padding that doesn't add selection value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and the schema is fully described, so the description's job is selection and routing — which it does well. The remaining gap is the async/polling workflow, which an agent calling a task-returning generation tool would need.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including model, mode, duration, cfg_scale, camera_control, and generate_audio is already documented in the schema. The description adds no parameter-level detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Generate AI video from a text prompt using Kling') and immediately distinguishes itself from the closest sibling by naming kling_generate_video_from_image as the image-reference alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use this when' bullets cover the three selecting conditions (text-only, no reference images, quick generation), and it names the alternative tool plus the condition that routes to it (reference images / start-end frames).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kling_generate_video_from_imageAInspect

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

This allows you to control the video by specifying what the first frame
and/or last frame should look like. Kling will generate smooth motion between them.

Use this when:
- You have a specific image you want to animate
- You want to create a video transition between two images
- You need precise control over the video's visual content

start_image_url is required. end_image_url is optional.

Returns:
    Task ID and generated video information including URLs and state.
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

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It implies an asynchronous flow by promising a Task ID and mentions that a callback_url/return state exist, but it omits rate limits, auth needs, and processing time. Critically, it claims 'start_image_url is required' while the schema lists only 'prompt' as required, creating an internal inconsistency that could mislead the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core mechanism, then scannable bullets. Slightly redundant in repeating that start_image_url is required and end_image_url optional after already describing frames in prose, but overall tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a 14-parameter async generation tool with an output schema: the agent knows when to use it and the frame roles. However, it doesn't address the async task lifecycle or how this tool relates to look-alike siblings, and the required-vs-optional frame claim conflicts with the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

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 only restates the start/end frame roles, which the schema already documents; it adds nothing about model/mode/camera_control/audio interactions that the schema also covers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+mechanism: generate AI video using reference images as start and/or end frames, and explains that Kling interpolates motion between them. This distinguishes it from text-driven siblings like kling_generate_video or kling_generate_turbo_video, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use this when' block gives three concrete scenarios (animate a specific image, transition between two images, precise visual control), which is clear situational context. It stops short of naming an alternative tool or stating when NOT to use this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kling_generate_with_assetsBInspect

Generate with platform element or voice IDs. Specified V2.6 voices cost 1.68 Credits/second. Ownership is verified by the service.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/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 does add real behavioral context the schema lacks: V2.6 voices cost 1.68 Credits/second, and ownership is verified server-side. However it says nothing about the async default, task-based return flow, or what happens on verification failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the distinguishing capability, and each sentence carries content (capability, cost, verification). The cost sentence is slightly cryptic in isolation but not wasteful. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex video-generation tool whose description omits the essentials: that output is asynchronous by default, which model/mode combinations are valid, duration limits, and how element/voice ownership must be established first. An output schema exists so return values needn't be explained, but the invocation-level gaps remain significant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for a request object with roughly a dozen meaningful fields (mode, model, action, duration, aspect_ratio, async, generate_audio, start/end image URLs). The description only touches voice_id and element_id and the credit cost; mode/model/duration/async semantics are undocumented in both places, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'Generate' plus the qualifier 'with platform element or voice IDs' identifies the tool's distinguishing inputs, which separates it from siblings like kling_generate_video or kling_generate_video_from_image. It never explicitly names the resource (video), but the schema's AssetVideoRequest makes that recoverable. Clear, though not as crisp as naming verb+resource+scope outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the agent infers this is the tool to pick when it has an element_id or voice_id to attach. No alternative is named and no exclusions are given (e.g. 'for plain text-to-video use kling_generate_video'), so the routing decision is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kling_get_taskAInspect

Query the status and result of a video generation task.

Use this to check if a generation is complete and retrieve the resulting
video URLs and other metadata.

Use this when:
- You want to check if a generation has completed
- You need to retrieve video URLs from a previous generation
- You want to get the full details of a generated video

Task states:
- 'pending': Generation is still in progress
- 'completed': Generation finished successfully
- 'failed': Generation failed (check error message)

Returns:
    Task status and generated video information including URLs and state.
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_goods_studioBInspect

Generate product studio video from ref_image and goods_title contents. Poll kling_get_task.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the async polling pattern implicitly via 'Poll kling_get_task' (consistent with async defaulting to true in the schema), but says nothing about permissions/auth, cost, watermarking, callback_url behavior, or how long generation takes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and the required inputs, with no filler. It is arguably too terse for the schema complexity, but nothing in it is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a deeply nested request schema, 0% schema description coverage, and a 16-value content enum, this description is thin. The existence of an output schema removes the need to explain return values, but the required-content composition and settings are not covered well enough for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage across a large nested Content enum, so the description must compensate. It does add genuinely useful information by naming ref_image and goods_title as the content types this tool expects, which the schema never marks as required. Still, the other 14 content types, settings, and duration/aspect_ratio choices are left unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Generate product studio video') and narrows it by naming the two required content types, ref_image and goods_title. That distinguishes it reasonably well from sibling product tools like kling_apparel_video and kling_virtual_try_on, though it doesn't explicitly say how it differs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence, 'Poll kling_get_task,' is a useful next-step/routing hint that tells the agent what to do after invocation. However, there is no guidance on when to pick this over kling_video_commerce, kling_apparel_video, or kling_generate_video, nor any stated prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kling_lip_syncAInspect

Synchronize lip movements in a video to match a given audio track or text.

Takes an existing video (by URL or task ID) and replaces the speaker's lip
movements so they match the provided audio. In 'text2video' mode the audio
is generated from the supplied text via TTS.

Use this when:
- You want to dub a video into a different language
- You want to replace the audio of a generated video with custom speech
- You want to create a talking-head video from text

Returns:
    Task ID and lip-sync video information.
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.

kling_video_commerceBInspect

Generate creator/product voiceover from an avatar and speech_script. Poll kling_get_task.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses that the tool creates an asynchronous task that should be polled with kling_get_task, but it omits other important behavioral details such as default async behavior, callback_url usage, permissions, or whether the operation is destructive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no wasted words, and the purpose is front-loaded before the polling instruction. It is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complex nested input schema, no annotations, and a sibling set with overlapping video-generation tools, the description is too sparse. It provides only a high-level purpose and a polling hint, leaving an agent without enough context to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only names "avatar" and "speech_script" without mapping them to the nested content types. It does not explain the required contents array, settings, or other important schema fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: "Generate creator/product voiceover from an avatar and speech_script." This clearly identifies the output and core inputs. However, it does not explicitly distinguish the tool from siblings such as kling_goods_studio or other video-generation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says "Poll kling_get_task," which gives useful post-invocation guidance. However, it does not say when to choose this tool over alternatives like kling_goods_studio or kling_generate_turbo_video, nor does it provide any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.25
    • Removedkling_apparel_video
    • Removedkling_manage_elements
    • Removedkling_manage_voices
    • Removedkling_virtual_try_on
  2. 12 tool updatesv0.1.24
    • Addedkling_apparel_video
    • 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-o1"
        -]New value: +[
        +  "kling-v1",
        +  "kling-v1-6",
        +  "kling-v2-master",
        +  "kling-v2-1-master",
        +  "kling-v2-5-turbo",
        +  "kling-v2-6",
        +  "kling-v3",
        +  "kling-v3-turbo",
        +  "kling-v3-omni",
        +  "kling-o1"
        +]
    • Addedkling_generate_storyboard
    • Addedkling_generate_turbo_video
    • Changedkling_generate_video5 fields changed
      • addedInput schema / properties / generate_audio / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / generate_audio / default
        Previous value: -falseNew value: +null
      • changedInput schema / properties / generate_audio / description
        Previous value: -"Whether to generate audio synchronously. Supported by kling-v3, kling-v3-omni, and kling-v2-6 (pro mode only). Default is false."New value: +"Whether to generate audio synchronously. Supported by kling-v3, kling-v3-omni, and kling-v2-6 (pro mode only). Omit for the model default. Turbo always includes native audio."
      • removedInput schema / properties / generate_audio / type
        Removed value: -"boolean"
      • 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-o1"
        -]New value: +[
        +  "kling-v1",
        +  "kling-v1-6",
        +  "kling-v2-master",
        +  "kling-v2-1-master",
        +  "kling-v2-5-turbo",
        +  "kling-v2-6",
        +  "kling-v3",
        +  "kling-v3-turbo",
        +  "kling-v3-omni",
        +  "kling-o1"
        +]
    • Changedkling_generate_video_from_image4 fields changed
      • addedInput schema / properties / generate_audio / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / generate_audio / default
        Previous value: -falseNew value: +null
      • removedInput schema / properties / generate_audio / type
        Removed value: -"boolean"
      • 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-o1"
        -]New value: +[
        +  "kling-v1",
        +  "kling-v1-6",
        +  "kling-v2-master",
        +  "kling-v2-1-master",
        +  "kling-v2-5-turbo",
        +  "kling-v2-6",
        +  "kling-v3",
        +  "kling-v3-turbo",
        +  "kling-v3-omni",
        +  "kling-o1"
        +]
    • Addedkling_generate_with_assets
    • Addedkling_goods_studio
    • Addedkling_manage_elements
    • Addedkling_manage_voices
    • Addedkling_video_commerce
    • Addedkling_virtual_try_on
  3. 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"
  4. 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'."
  5. 2 tool updatesv0.1.20
    • Addedkling_lip_sync
    • Addedkling_talking_photo
  6. 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."
  7. 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"
        +}
  8. 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

A3.6/5.0

Scored across 15 tools

Disambiguation3/5

Many tools are video-generation variants (standard, turbo, assets, storyboard, goods studio, commerce) whose boundaries require reading detailed descriptions; lip_sync and talking_photo also overlap as audio-driven avatar generation. Task-query and meta-list tools are clearly distinct, but the generation surface has multiple confusable entry points.

Naming Consistency4/5

All tools share the kling_ snake_case prefix, and most follow a verb_noun pattern (generate_video, get_task, list_models). A few are feature/noun phrases (lip_sync, talking_photo, goods_studio, video_commerce), which is a minor deviation but still readable.

Tool Count5/5

At 15 tools, the server is within the well-scoped range and each tool maps to a distinct generation mode, task-query need, or reference list. The count is appropriate for the breadth of Kling video-generation workflows.

Completeness4/5

The surface covers text-to-video, image-to-video, extension, motion transfer, lip sync, talking photo, specialized commercial generation, and task polling. Minor gaps remain, such as task cancellation/deletion or asset-upload management, but core generation and retrieval workflows are covered.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers