shotcut-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@shotcut-mcpCreate a project called promo from clip1.mp4 and clip2.mp4, crossfade them, and render it."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
shotcut-mcp
MCP server that edits video through Shotcut's engine, MLT, with no GUI. An agent can create a project, add and trim clips, split, move and remove them, apply filters, add titles and crossfades, read the timeline back and render it with melt.
The output is a native Shotcut .mlt project, not a locked video file. Open the agent's cut in Shotcut and keep editing it by hand.
Requirements
Python 3.11+
MLT
meltonPATH, or setMELT_BINto its full path. Installing Shotcut includesmelt.Linux:
sudo apt install meltmacOS: install Shotcut, then set
MELT_BIN=/Applications/Shotcut.app/Contents/MacOS/meltWindows: install Shotcut, then set
MELT_BINtomelt.exeinside the Shotcut folder. Windows rendering is not yet covered by CI.
ffprobe(from FFmpeg) onPATHfor reading clip durations and checking renders. Override withFFPROBE_BIN.
Related MCP server: mcpCut
Install
Run it with no install step using uv:
uvx shotcut-mcpOr install it with pip:
pip install shotcut-mcp
shotcut-mcpThe server talks MCP over stdio.
Use it with goose
goose Desktop or CLI
Run
goose configure, choose Add Extension, then Command-line Extension.Name:
shotcutCommand:
uvx shotcut-mcpTimeout:
600seconds or more. Renders take longer than goose's default.Add the environment variables
SHOTCUT_MCP_WORKDIRand, ifmeltis not on yourPATH,MELT_BIN.
config.yaml
Add this to ~/.config/goose/config.yaml:
extensions:
shotcut:
enabled: true
type: stdio
name: shotcut
cmd: uvx
args:
- shotcut-mcp
envs:
SHOTCUT_MCP_WORKDIR: /path/to/your/projects
timeout: 600Then ask goose something like: "Make a project called promo from clip1.mp4 and clip2.mp4, keep the first 5 seconds of each, crossfade them, add the title 'Launch day' and render it."
Use it with other MCP clients
Any MCP client that runs stdio servers works. For example, Claude Desktop's claude_desktop_config.json:
{
"mcpServers": {
"shotcut": {
"command": "uvx",
"args": ["shotcut-mcp"],
"env": { "SHOTCUT_MCP_WORKDIR": "/path/to/your/projects" }
}
}
}Configuration
Variable | Default | What it does |
|
| Where |
|
| Path to the |
|
| Path to |
Tools
Tool | What it does |
| Create a new project with a frame size and frame rate |
| Append a span of a source video to the end of the timeline. Returns the clip's id |
| Change a clip's source in and out points |
| Ripple-delete one clip |
| Move a clip to a new position on the timeline |
| Split a clip into two at a point inside it |
| Ripple-delete a span of the timeline |
| Burn a text title onto the timeline between two times |
| Apply |
| Crossfade video and audio between two adjacent clips |
| Return the whole edit: clips, source in and out, timeline positions, filters, transitions and titles |
| Return summary metadata for a project |
| Render a project to a video file with |
| List the projects in the work directory |
Clip ids stay stable across calls. The edit state is kept in a .state.json file next to each .mlt, and the .mlt is regenerated from it after every change.
Current limits
One video track. Multitrack video and audio is planned.
Edits made by hand in the Shotcut GUI are overwritten by the next tool call. Safe round trips are planned.
The
styleoption onset_transitionis accepted but only a dissolve is rendered today.
Development
pip install -e ".[dev]"
pytestThe render tests are skipped when melt is not installed.
License
MIT
Available Tools
14 toolsadd_clipA
Append a span of a source video to the end of the timeline. in_s/out_s are seconds in the SOURCE file. Returns the clip's producer_id.
| Name | Required | Description | Default |
|---|---|---|---|
| in_s | No | ||
| out_s | No | ||
| clip_path | Yes | ||
| project_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose genuinely useful behavior – this is a mutation that always appends at the end, in_s/out_s are source-relative not timeline-relative, and a producer_id is returned. It says nothing about permissions, persistence, or what happens when out_s is omitted or lies beyond the source duration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the primary action front-loaded and the two clarifying facts following immediately. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description does cover the operation, the unit semantics, and the return value. It still leaves gaps an agent needs to call correctly: whether the project must already exist, whether a failed path is an error or a silent no-op, and what happens if out_s is unset.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description clarifies the two non-obvious parameters by pinning in_s/out_s to seconds in the SOURCE file, which is exactly the ambiguity an agent would hit. clip_path and project_name are left entirely to the schema, and the omitted-out_s behavior (implicitly 'to end of source') is never stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: append a span of a source video to the end of the timeline. The append-to-end framing implicitly separates it from trim_clip, split_clip, and move_clip, though no sibling is ever named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'append ... to the end of the timeline' – an agent can infer this adds new material rather than editing existing clips. But there is no explicit when-to-use, no alternatives named, and no exclusion such as 'use move_clip to reposition an existing clip'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
append_text_overlayC
Burn a text title onto the timeline between start_s and end_s (timeline seconds).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| color | No | #ffffff | |
| end_s | Yes | ||
| halign | No | center | |
| valign | No | bottom | |
| start_s | Yes | ||
| bg_color | No | #80000000 | |
| font_size | No | ||
| project_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden for what is clearly a write/mutation operation. 'Burn' hints at persistence, but nothing is said about reversibility, whether the overlay replaces or coexists with existing text, rendering implications, or permission requirements. Only the time-scoping behavior is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with a useful parenthetical defining the time unit; nothing is wasted. It is arguably too terse for a 9-parameter mutation, but there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 9-parameter mutation tool with no annotations, no output schema, and zero schema coverage needs considerably more: required-vs-optional semantics, defaults behavior, coordinate/alignment meaning, and side effects. The description covers only the temporal bounds.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters, so the description must compensate. It clarifies only that start_s/end_s are timeline seconds; project_name, color, bg_color, font_size, halign, and valign get no explanation, leaving the majority of the surface undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Burn') and resource ('a text title onto the timeline'), which is clearly distinct from clip-level siblings like add_clip or trim_clip. It stops short of naming how it differs from other overlay/effect tools, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this over siblings, no prerequisites (e.g., whether the project must already exist), and no note on what happens if the range overlaps existing overlays or exceeds the timeline length. Usage is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_filterB
Apply a filter to a clip. Allowed: ['brightness', 'crop', 'fadeInAudio', 'fadeInBrightness', 'fadeOutAudio', 'fadeOutBrightness', 'volume']. Fades take params {"duration_s": n}; brightness takes {"level": 0-2}; volume takes {"level": dB}; crop takes {"left","right","top","bottom"} in pixels.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| filter_name | Yes | ||
| producer_id | Yes | ||
| project_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It says nothing about mutation side effects, whether existing filters are overwritten, whether the operation is reversible, permission requirements, or what happens if producer_id is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, followed immediately by filter values and parameter formats. There is no filler, and the dense format is appropriate for an enum-heavy parameter mapping.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives enough detail to choose a filter and construct its params, but it is incomplete for a mutation tool with no annotations and no output schema. Missing are the meaning of producer_id as the clip reference and the behavioral consequences of applying a filter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates well for filter_name and the nested params object by listing allowed filters and their parameter shapes. However, it never explains project_name or producer_id, leaving the required clip identifier semantics undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: apply a filter to a clip. It also enumerates the exact filter types, which clearly distinguishes this tool from sibling timeline-editing tools like trim_clip, move_clip, and set_transition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It does not explain when to use apply_filter versus alternatives, nor does it state prerequisites such as whether the clip must already exist on the timeline. The allowed filter list implies usage but gives no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectB
Create a new empty MLT/Shotcut project. Choose width/height to match the delivery (e.g. 1080x1920 for vertical).
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | ||
| name | Yes | ||
| width | No | ||
| height | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says the project is 'empty', which is useful state information, but it doesn't say what happens if a project with the same name already exists, where the file is written, what is returned (e.g. a project id), or whether creation can fail. For a mutation tool with zero annotation coverage, these gaps are significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The core action is front-loaded and the parameter hint follows immediately, which is an efficient structure for a short definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with no output schema, the description covers the essential action and the most important dimension choices. However, with 0% schema coverage and no annotations, the unexplained fps parameter and the absence of any statement about the result or destination leave it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all four parameters. It explains the width/height intent with a concrete example, but 'fps' is never mentioned and 'name' is only implied by the tool's purpose, leaving two parameters with no semantic support beyond their types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a new empty MLT/Shotcut project'), which is enough to distinguish it from siblings like list_projects, project_info, and add_clip. It doesn't explicitly name a sibling alternative, but the creation-versus-inspection boundary is obvious from the wording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance given is about picking width/height to match the delivery format ('e.g. 1080x1920 for vertical'), which is parameter advice rather than when-to-use advice. There is no statement about when this tool should be chosen over alternatives, nor about prerequisites such as the project needing to exist before add_clip calls. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timelineC
Return the whole edit: every clip with producer_id, source in/out, timeline start/end, filters, transitions and titles.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It implies a read operation by using 'Return' and describes the returned scope, but it does not explicitly confirm read-only behavior, mention permissions or prerequisites, or describe what happens if the project is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that lists the returned components without filler. Every phrase contributes to describing the output scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema, the description appropriately explains what the tool returns in reasonable detail. However, it leaves the sole required parameter undocumented and gives no usage or behavioral context, so it is only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required parameter, project_name, with 0% schema description coverage. The description does not mention project_name at all, so it provides no meaning, expected format, or naming guidance beyond the bare schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return') and resource ('the whole edit'), then enumerates the returned content (clips, source in/out, filters, transitions, titles). It is clear what the tool does, but it does not explicitly differentiate itself from related read siblings like project_info or list_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as project_info, list_projects, or render. The implied usage is to inspect the full timeline, but the description provides no conditions, exclusions, or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsB
List all .mlt project files in the work directory.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden; it does disclose the important scoping traits (work directory only, .mlt extension only), which implies non-recursive and filtered behavior. It does not say what happens with zero results, whether ordering is defined, or what the entries look like (names vs. paths).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero waste, front-loading the scope constraint (work directory) and the file filter. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param tool this is close to sufficient, but there is no output schema, so the description should say what is returned (filenames only, paths, count). That return-format ambiguity is the one real gap for an agent planning the next call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies a no-argument, whole-directory listing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("List") and resource ("all .mlt project files"), plus the scope ("in the work directory"). It is clearly distinct from create_project or project_info by verb alone, though it never explicitly contrasts itself with project_info, which could also surface project data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus project_info or create_project, and no prerequisites or exclusions stated. The agent must infer that this is the discovery step before project_info or render.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_clipC
Move a clip to a new 1-based position on the timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| producer_id | Yes | ||
| to_position | Yes | ||
| project_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it discloses almost nothing about behavior: not whether the move is destructive, whether other clips are re-indexed, whether it requires auth or an unlocked timeline, or what it returns. The only real disclosure is the 1-based indexing semantics, which is useful but thin for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the key semantic detail (1-based position) front-loaded and no filler. It is efficient, though the brevity is partly under-specification rather than pure concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-required-parameter mutation tool with no annotations and no output schema, the description leaves the clip identity, side effects on surrounding clips, and failure conditions unstated. It is not sufficient to invoke confidently without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so every parameter depends on the description. It adds meaning for to_position ('1-based position') but leaves producer_id and project_name completely unexplained, including which one actually identifies the clip being moved versus the containing project.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Move a clip') plus the target concept ('new 1-based position on the timeline'), which is more than a restatement of the name. However, it never says how the clip is identified (the schema has no clip_id, only an unexplained producer_id) and gives no differentiation from siblings like trim_clip, split_clip, or remove_clip, which also act on clips.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus trim_clip or split_clip, and no prerequisites or exclusions. With several clip-mutating siblings, an agent must infer the boundary between 'move' and 'trim'/'split' entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_infoC
Return summary metadata about an existing project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Return' implies a read, but it says nothing about what 'summary metadata' actually contains, what happens if the project does not exist, or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the resource front-loaded and no filler. Its brevity is appropriate in form, though it comes at the cost of the missing detail noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and an undocumented parameter, the description should explain the return contents and failure behavior. It does neither, leaving the agent unable to predict the response shape of a tool whose whole purpose is returning data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the only parameter (project_name) is documented nowhere; the description adds only the word 'existing', hinting that the name must resolve to a real project. That is a marginal semantic contribution against a total coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and resource ('summary metadata about an existing project'), so the agent knows this is a read of project-level details. However, it does nothing to distinguish itself from siblings like list_projects or get_timeline, which an agent could plausibly confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives such as list_projects for enumeration or get_timeline for timeline content. The agent must infer the calling context entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_clipC
Ripple-delete one clip from the timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| producer_id | Yes | ||
| project_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. "Ripple-delete" usefully signals that downstream timeline content shifts, but the description does not state that the operation is destructive/irreversible, what permissions are required, or what happens to effects or overlays on the removed clip.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is efficient, though its brevity contributes to the missing operational details noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive timeline mutation with no annotations, no output schema, and 0% parameter documentation, the description is too sparse. It discloses the ripple behavior but omits reversibility, permissions, return behavior, and how the clip is targeted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the two required parameters. It does not mention producer_id or project_name at all, and notably the schema exposes no explicit clip identifier, so the agent is left without guidance on how the target clip is identified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: "Ripple-delete one clip from the timeline." This is clear and distinguishes deletion from operations like trim_clip or split_clip, though it does not explicitly contrast with the close sibling remove_segment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "one clip" provides some scope, but the description gives no explicit guidance on when to use this tool instead of remove_segment, trim_clip, or split_clip. There are no stated prerequisites or exclusions for an agent to follow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_segmentC
Ripple-delete the timeline span between start_s and end_s.
| Name | Required | Description | Default |
|---|---|---|---|
| end_s | Yes | ||
| start_s | Yes | ||
| project_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Ripple-delete' usefully implies that subsequent content shifts, but it does not say whether deletion is permanent/undoable, what happens to clips that straddle the boundaries, or whether a project lock is required for a destructive timeline edit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the operation and boundaries front-loaded and no filler. Its brevity is close to under-specification rather than verbosity, so it earns a 4 rather than 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a destructive timeline mutation with no annotations, no output schema, 0% parameter coverage, and three required parameters. The description does not cover consequences, reversibility, or the project scope, which leaves real gaps an agent must guess at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three parameters. It clarifies that start_s and end_s are timeline positions for the span to be removed, but it never mentions project_name or the unit (seconds) explicitly, leaving the most important scoping parameter undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('ripple-delete') and resource ('timeline span between start_s and end_s'), which is more informative than a bare 'remove'. However, it never distinguishes itself from the sibling tools remove_clip and trim_clip, so an agent cannot tell which removal semantics apply without further inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this versus remove_clip, trim_clip, or split_clip, and no prerequisites or exclusions are given. The word 'ripple' hints at a behavioral consequence but not at a usage decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
renderB
Render a project to a video file with melt. 'mp4-project' keeps the project's own frame size.
| Name | Required | Description | Default |
|---|---|---|---|
| preset | No | mp4-1080p | |
| output_path | Yes | ||
| project_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states that a video file is produced and that 'mp4-project' preserves frame size, but it does not disclose whether output_path is overwritten, whether rendering is long-running, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two front-loaded sentences with no filler. The preset caveat is placed immediately after the purpose, making efficient use of the short space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a render tool with no annotations, no output schema, and 0% schema description coverage, the description is too sparse. An agent can infer the basic call, but lacks important context about return value, overwrite behavior, and render duration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It only explains the 'mp4-project' preset value; it does not clarify project_name or output_path semantics, such as whether the project must already exist or whether output_path is a file path with overwrite behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Render a project to a video file with melt.' It clearly distinguishes the export/render operation from the project-editing siblings such as add_clip and trim_clip.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies it is the final export step, but there is no explicit guidance on when to use it versus alternatives or prerequisites such as requiring an existing project. Usage is implied rather than documented.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_transitionB
Crossfade (video dissolve + audio mix) between two ADJACENT clips. Shortens the timeline by duration_s.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | luma | |
| duration_s | Yes | ||
| project_name | Yes | ||
| to_producer_id | Yes | ||
| from_producer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose a valuable non-obvious side effect: the timeline shortens by duration_s. However, it omits permission requirements, overwrite/idempotency behavior, error conditions for non-adjacent clips, and the fact that a style parameter (defaulting to 'luma') can change the visual result entirely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste: the core operation and its side effect are front-loaded. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with no annotations, no output schema, and zero parameter documentation, yet the description covers only the core mechanic. An agent still lacks the style value set, adjacency failure behavior, and whether an existing transition is replaced — gaps an agent needs before invoking it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate. It only explains duration_s (via its timeline-shortening effect) and implies from/to through 'between two ADJACENT clips'; style and project_name are entirely undocumented, and no valid style values are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (a crossfade transition between two clips) and clarifies it is both a video dissolve and an audio mix, which distinguishes it from clip-editing siblings like trim_clip or split_clip. It does not explicitly name or route against any sibling tool, keeping it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the 'ADJACENT clips' precondition and the note that the timeline shortens, which tells an agent this is a timeline-altering edit. There is no explicit when-to-use vs. alternative guidance, no statement about what happens if clips are not adjacent, and no mention of replacing an existing transition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_clipC
Split a clip at_s seconds after its own in point.
| Name | Required | Description | Default |
|---|---|---|---|
| at_s | Yes | ||
| producer_id | Yes | ||
| project_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It clarifies that the offset is relative to the clip's own in point, but says nothing about what happens to the resulting segments, whether the operation is destructive, or what preconditions (clip must exist, split point within bounds) apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the key offset semantics front-loaded and no wasted words. Its brevity is efficient, though it edges toward under-specification rather than over-verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% parameter description coverage, the description is too thin. It omits the identity of the clip parameter, post-split state, and error conditions an agent needs to invoke it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must document all three parameters. It meaningfully explains at_s (seconds after the in point), but producer_id is ambiguous — it appears to identify the clip but is never explained — and project_name is left to the schema pattern alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (split) and resource (clip) plus the offset semantics, which distinguishes it from trim_clip and remove_segment. It does not explicitly name or rule out the nearest alternative, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mechanics imply when to use it (cutting a clip into two at a point), but there is no explicit guidance on when to prefer this over trim_clip, remove_segment, or move_clip. The agent must infer the selection condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trim_clipC
Change the source in/out points of a clip already on the timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| in_s | No | ||
| out_s | No | ||
| producer_id | Yes | ||
| project_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and does not meet it: it doesn't say whether the trim is destructive to existing clip data, what happens if in_s exceeds out_s, or whether producer_id is a clip identifier or a media source. 'Already on the timeline' hints at a precondition but nothing about reversibility or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clear sentence with the key qualifier ('already on the timeline') front-loaded and no filler. It earns its place, though it is thin enough that a second clause on scope would not have hurt.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations, no output schema, and 0% schema coverage, one sentence is well short of what an agent needs to invoke it safely. Missing: which parameter identifies the clip, what the call returns, and what happens on invalid ranges.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and only does so for in_s/out_s via 'source in/out points'. The two required parameters, project_name and producer_id, get no explanation at all — notably whether producer_id refers to the clip being trimmed. Units for in_s/out_s are implied as seconds only by the name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Change the source in/out points') applied to a specific resource ('a clip already on the timeline'), which separates it from move_clip and split_clip. It stops short of naming those siblings explicitly, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus move_clip, split_clip, or remove_segment, and no preconditions such as the clip needing to already exist. The agent must infer usage from the one-line purpose.
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.
14 tool updates
v0.2.1- First observed
add_clip - First observed
append_text_overlay - First observed
apply_filter - First observed
create_project - First observed
get_timeline - First observed
list_projects - First observed
move_clip - First observed
project_info - First observed
remove_clip - First observed
remove_segment - First observed
render - First observed
set_transition - First observed
split_clip - First observed
trim_clip
TDQS
Scored across 14 tools
Most tools target clearly different actions on the timeline (add, trim, move, split, filter, transition, render). A few pairs could still be confused: remove_clip vs remove_segment, and project_info vs get_timeline both return overlapping project/timeline data.
Almost all tools follow a verb_noun pattern (create_project, add_clip, trim_clip, apply_filter, get_timeline). The exceptions are project_info (noun phrase) and render (bare verb), which are minor deviations but readable.
14 tools is well within the ideal 3-15 range for a focused video-editing server. Each tool represents a meaningful editing operation, and there are no redundant or trivial tools.
Core clip editing, filters, transitions, timeline inspection, and rendering are covered. However, there is no explicit open_project/load_project tool to continue editing an existing .mlt file, no delete_project, and no way to update project-level settings, creating a notable lifecycle gap.
Maintenance
Related MCP Connectors
Orccut: a real timeline video editor for AI agents - journaled edits, FFmpeg/MLT rendering
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
Agentic AI video editor: edit a real timeline, generate clips, music and voice, then render.
Compose, edit and render video with your AI agent. Turn footage into finished edits with content-aware reframing, word-timed captions and motion graphics. Hosted MCP with OAuth sign-in; cloud processing uses credits.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI clients to create, edit, validate, preview, and render Shotcut projects (saved as MLT XML) without operating the GUI, using structured timeline editing tools and local safety mechanisms.24MIT
- AlicenseNot gradedqualityCmaintenanceA real video editor for AI agents, served over MCP, enabling journaled timeline editing, rendering via FFmpeg/MLT, and deterministic CLI operation.1MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents and MCP clients to programmatically edit video projects on a local desktop editor, with 119 tools for multitrack editing, effects, captions, audio, and batch auto-editing, producing reviewable and reversible real timeline edits.AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceAn MCP server that gives AI agents a stateful multi-track video editor powered by MLT, enabling them to assemble timelines, add media and text, apply filters and transforms, preview downscaled frames, and render final videos to disk.MIT