Skip to main content
Glama

reel

Destructive

Derive a new project from a selected timeline span, trimming head and tail, and apply a vertical canvas only to the derived copy. Preserves cues and cards where valid.

Instructions

Derive a new project at dest holding [start, end) of this timeline.

start/end are render seconds naming the span to keep — the opposite direction from every other tool; the head and tail are cut through cut_by_time. Reach for this before setting a vertical canvas on a film: the canvas is project state, so pass the reel's shape here and it lands on the copy only.

Media is linked, not copied. Descriptions and reframes carry over. Cues carry over only where the reel keeps their word — read cues_dropped head-first, since one pruned just outside the kept span opens the reel on no picture. Survivors are pinned to the film's in-points (cues_pinned, or pins_error). Cards are re-authored at the new canvas (cards_unrecorded names any that cannot be); over_platform_cap says if it still runs long for a vertical feed.

Nothing after the film is inherited: tail_dropped and music_dropped name what the film had. An edge on a suspect-duration word — likely a hidden retake — refuses unless confirm_suspect; read suspect_edges. plan=True creates nothing.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
endYesWhere it ends, in those same render seconds. `start`/`end` name the span to **keep**, the opposite direction from every other tool here.
destYesWhere the derived project is created. It is a project selector too, not a file, so a bound server confines it to the same tree as `path` rather than letting a reel be written anywhere on disk.
nameNoA name for the derived project. Unset, it is derived from `dest`.
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.
startYesWhere the reel begins, in the seconds **an export plays at** — the same numbers `cut_by_time` takes, read off a watch.
canvasNoThe shape to set on the derived project only, e.g. `1080x1920`. Setting it on the film instead is what deriving exists to avoid — a canvas is project state and would stay.
confirm_suspectNoGo ahead even though a boundary word claims a suspect duration. Read the echoed words first — a suspect duration usually means whisper hid a retake inside that word, so the edge is not where it reads.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed23 schema fields changedv0.25.0
    • removedInput schema / properties / canvas / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / canvas / description
      Added value: +"The shape to set on the derived project only, e.g. `1080x1920`. Setting it on the film instead is what deriving exists to avoid — a canvas is project state and would stay."
    • removedInput schema / properties / canvas / title
      Removed value: -"Canvas"
    • addedInput schema / properties / canvas / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • addedInput schema / properties / confirm_suspect / description
      Added value: +"Go ahead even though a boundary word claims a suspect duration. Read the echoed words first — a suspect duration usually means whisper hid a retake inside that word, so the edge is not where it reads."
    • removedInput schema / properties / confirm_suspect / title
      Removed value: -"Confirm Suspect"
    • addedInput schema / properties / dest / description
      Added value: +"Where the derived project is created. It is a project selector too, not a file, so a bound server confines it to the same tree as `path` rather than letting a reel be written anywhere on disk."
    • removedInput schema / properties / dest / title
      Removed value: -"Dest"
    • addedInput schema / properties / end / description
      Added value: +"Where it ends, in those same render seconds. `start`/`end` name the span to **keep**, the opposite direction from every other tool here."
    • removedInput schema / properties / end / title
      Removed value: -"End"
    • removedInput schema / properties / name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / name / description
      Added value: +"A name for the derived project. Unset, it is derived from `dest`."
    • removedInput schema / properties / name / title
      Removed value: -"Name"
    • addedInput schema / properties / name / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • 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"
    • addedInput schema / properties / start / description
      Added value: +"Where the reel begins, in the seconds **an export plays at** — the same numbers `cut_by_time` takes, read off a watch."
    • removedInput schema / properties / start / title
      Removed value: -"Start"
    • removedInput schema / title
      Removed value: -"reelArguments"
  2. First observedv0.24.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only say destructiveHint=true and readOnlyHint=false; the description carries the full side-effect burden and exceeds it: media is linked not copied, carry-over rules for cues/cards, dropped items (`tail_dropped`, `music_dropped`, `cards_unrecorded`), refusal on suspect-duration edges unless `confirm_suspect`, and `plan=True` dry-run. This is exactly the disclosure a destructive derivation tool needs, with no contradiction to annotations.

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?

Effectively front-loaded with the core operation in the first sentence, then organized into focused paragraphs: parameter semantics, carry-over behavior, non-inherited tail items, edge-case refusal, and dry-run. Despite length, the tool is genuinely complex (8 params, destructive, many carry-over rules), and every sentence carries load-bearing information rather than padding.

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?

For a destructive 8-parameter tool with an output schema, the description is complete: it covers what the operation does, when to reach for it, parameter rationale, what carries over, what is dropped, failure/safety behaviors, and the plan dry-run. With an output schema present, it need not explain return values, and it still references all relevant output fields (e.g., `cues_dropped`, `suspect_edges`, `over_platform_cap`) as behavioral context.

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 coverage is 100% with rich per-parameter text, so the baseline is 3. The description adds meaning beyond that baseline: it explains the `start`/`end` 'span to keep' semantics in relation to `cut_by_time`, ties `confirm_suspect` to the suspect-edge refusal flow, and frames `canvas` as the reason to derive rather than set state on the film. Some repetition of schema text exists, but genuine workflow-level meaning is added.

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?

Opens with a specific verb+resource: 'Derive a new project at `dest` holding `[start, end)` of this timeline.' It distinguishes itself from siblings by contrasting its parameter direction with 'every other tool' and by relating its cut mechanics to `cut_by_time`, and from `canvas` by explaining the copy-only landing. An agent can tell what this does and what it is not.

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?

Gives explicit when-to-use guidance: 'Reach for this before setting a vertical `canvas` on a film' with the rationale that canvas is project state. It also names `cut_by_time` as the mechanism that cuts head/tail, which orients the agent toward the sibling. It stops short of an explicit when-not-to-use/alternative selection rule (e.g., 'use cut_by_time instead when cutting in place'), hence not a 5.

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