Skip to main content
Glama

import_edit

DestructiveIdempotent

Import a hand-trimmed Kdenlive or MLT playlist into the project timeline, replacing the current edit with its surviving ranges while preserving undoability.

Instructions

Lay a cut made in Kdenlive down as this project's timeline.

The supported way to bring an outside edit in. seed_timeline lays a clip down and lets auto-editor find the cuts; this takes a .kdenlive (or .mlt) playlist somebody already trimmed by hand and reads its surviving ranges into the timeline. It replaces the whole timeline, and the previous one is snapshotted first, so it is undoable like any other mutation — which is the part the hand-rolled version of this never had (HISTORY.md § The VO the project was holding: 63 ranges were parsed out of a .kdenlive and written straight to Edit, bypassing cut and its history).

Every clip the document references has to be registered already — the resources are matched against registered clips by resolved path, and any that do not match are named rather than imported behind your back. Pass clip_id for a single-source document whose media sits at a path this project does not know.

Ranges that overrun a clip's registered duration are clamped and reported in overshot, never silently dropped: auto-editor's own exports overshoot the tail by one frame, so a clean overshot is worth reading rather than assuming. plan resolves and checks without writing.

Refused by name rather than half-read: a <blank> in the playlist (real runtime an Edit has nowhere to put), and two playlists carrying different cuts (a multi-track picture edit, which proofcut's one linked A/V track has no shape for).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathNoThe project directory to act on. Omit it — the usual case — when this server is bound to a project (started as `proofcut -C DIR mcp`, or inside a project; `ping` says which): it then resolves to that one bound project, a relative path resolves against it, and a path outside it is refused by name. Unbound, `path` is the whole address and omitting it refuses rather than guessing.
planNoResolve the whole call and report what it would do, writing nothing. Prefer it over doing the thing and undoing it.
clip_idNoThe registered clip to attribute a single-source document to, when its media sits at a path this project does not know.
documentYesThe `.kdenlive` or `.mlt` playlist somebody already trimmed by hand. Every clip it references has to be registered already; ones that do not match a registered clip by resolved path are named rather than imported behind your back.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed13 schema fields changedv0.25.0
    • removedInput schema / properties / clip_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / clip_id / description
      Added value: +"The registered clip to attribute a single-source document to, when its media sits at a path this project does not know."
    • removedInput schema / properties / clip_id / title
      Removed value: -"Clip Id"
    • addedInput schema / properties / clip_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • addedInput schema / properties / document / description
      Added value: +"The `.kdenlive` or `.mlt` playlist somebody already trimmed by hand. Every clip it references has to be registered already; ones that do not match a registered clip by resolved path are named rather than imported behind your back."
    • removedInput schema / properties / document / title
      Removed value: -"Document"
    • removedInput schema / properties / path / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / path / description
      Added value: +"The project directory to act on. Omit it — the usual case — when this server is bound to a project (started as `proofcut -C DIR mcp`, or inside a project; `ping` says which): it then resolves to that one bound project, a relative path resolves against it, and a path outside it is refused by name. Unbound, `path` is the whole address and omitting it refuses rather than guessing."
    • removedInput schema / properties / path / title
      Removed value: -"Path"
    • addedInput schema / properties / path / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • addedInput schema / properties / plan / description
      Added value: +"Resolve the whole call and report what it would do, writing nothing. Prefer it over doing the thing and undoing it."
    • removedInput schema / properties / plan / title
      Removed value: -"Plan"
    • removedInput schema / title
      Removed value: -"import_editArguments"
  2. First observedv0.24.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds substantial behavioral context: it replaces the whole timeline, snapshots the previous one so it is undoable, clamps and reports overshot ranges rather than silently dropping them, refuses by name rather than half-reading, and requires clips to be registered already. This goes well beyond the annotations and gives the agent a clear model of side effects and 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.

Conciseness4/5

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

The description is dense but every sentence earns its place: it covers purpose, alternatives, side effects, error behavior, and parameter guidance. It is front-loaded with the core purpose and the key distinction from seed_timeline. It is longer than the typical description, but the complexity of the tool (destructive, with registration requirements and edge cases) justifies the length. A small amount of trimming could improve it, but it is well organized.

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's complexity (destructive timeline replacement, registered-clip requirements, clamping behavior, refusal cases, plan mode), the description covers everything an agent needs to call it correctly. The output schema exists, so return values need not be explained. The description even includes a historical note that explains why the undoable behavior matters, which helps the agent understand the tool's guarantees.

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?

Schema description coverage is 100%, so the baseline is 3. The description adds extra meaning beyond the schema: it explains the path resolution rules (bound project vs unbound, relative paths, refusal of outside paths), the purpose of plan ('Prefer it over doing the thing and undoing it'), and the exact role of clip_id. The document parameter's description is also enriched by the main description's explanation of registered-clip matching and named refusals. This is more than the schema alone provides, though the schema already covers the basics.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Lay a cut made in Kdenlive down as this project's timeline.' It then distinguishes itself from seed_timeline by explaining that this tool imports a hand-trimmed .kdenlive/.mlt playlist, while seed_timeline lays a clip down and lets auto-editor find cuts. This clearly differentiates it from the closest sibling.

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?

The description explicitly states when to use this tool ('The supported way to bring an outside edit in'), contrasts it with seed_timeline, and gives concrete conditions: use clip_id for a single-source document whose media sits at an unknown path, and use plan to resolve and check without writing. It also names refusal cases (blank in playlist, two playlists with different cuts), which tells the agent when the tool will not work.

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