# cuttingfloor (io.github.Mvp2o-ai/cuttingfloor): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/io.github.Mvp2o-ai%2Fcuttingfloor/versions/latest)
- Connected to: https://api.cuttingfloor.ai/mcp
- Homepage: https://cuttingfloor.ai/
- Repository: https://github.com/Mvp2o-ai/cuttingfloor
- Scoring rules: v2
- Tools: 72
- Average: 61.8 / 100 (Cloudy)
- Near-identical pairs: 3

This page shows how cuttingfloor (io.github.Mvp2o-ai/cuttingfloor)'s tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Major: 72 tools. Above 40, models choose less accurately.
- Minor: The server's instructions are 5820 characters. Claude Code reads only the first 2,048 by default (Codex 0.154.0 reads them whole). Put what the server is for first.

## Tools

- `create.matte`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: gradient, gradient.from, gradient.to, gradient.kind, width, height, name, idempotency_key.
  - Minor: String arguments with no constraint or example: color, gradient.from, gradient.to.
  - Minor: No `required` list, so every argument is optional.
- `create.cutout`: 44 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: region.at_seconds, region.x, region.y, region.w, region.h, region.points, region.points[].x, region.points[].y, region.points[].keep, name, idempotency_key.
  - Minor: The meaning of the boolean argument region.points[].keep is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: media_id. Name the tool or the place that returns it, or models look it up first.
- `timeline.history`: 45 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: limit.
  - Minor: Required identifiers whose description does not say where the value comes from: timeline_id. Name the tool or the place that returns it, or models look it up first.
- `create.voiceover`: 48 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: speed, name, idempotency_key.
  - Minor: The meaning of the boolean argument words is unclear.
- `transition.set`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: transition_id, kind, duration_frames.
  - Minor: String arguments with no constraint or example: transition_id.
  - Minor: Required identifiers whose description does not say where the value comes from: transition_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `clip.set_enabled`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: clip_id, enabled.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument enabled is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `track.set`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: track_id, name, muted, hidden, locked.
  - Minor: String arguments with no constraint or example: track_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument muted is unclear.
  - Minor: The meaning of the boolean argument hidden is unclear.
  - Minor: The meaning of the boolean argument locked is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: track_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `audio.fade`: 51 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: clip_id, in_frames, out_frames.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `create.stabilized`: 51 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: name, idempotency_key.
  - Minor: Required identifiers whose description does not say where the value comes from: media_id. Name the tool or the place that returns it, or models look it up first.
- `filter.set`: 51 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: filter_id, enabled.
  - Minor: String arguments with no constraint or example: filter_id.
  - Minor: The meaning of the boolean argument enabled is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: filter_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `timeline.diff`: 51 / 100
  - Major: Says nothing about when to use it, or when not to.
- `clip.unlink`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: clip_id.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `create.upscaled`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: name, idempotency_key.
  - Minor: Required identifiers whose description does not say where the value comes from: media_id. Name the tool or the place that returns it, or models look it up first.
- `clip.split`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: clip_id, at_frame.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `create.stems`: 53 / 100
  - Minor: Arguments without a description: name, idempotency_key.
  - Minor: Required identifiers whose description does not say where the value comes from: media_id. Name the tool or the place that returns it, or models look it up first.
- `render.frames`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: long_edge.
- `clip.link`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: clip_ids.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_ids, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `clip.set_blend`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: clip_id, mode.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `filter.remove`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: filter_id.
  - Minor: String arguments with no constraint or example: filter_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: filter_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `timeline.set_sequence`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: sequence, sequence.width, sequence.height, sequence.fps, sequence.fps.num, sequence.fps.den, sequence.audio_rate, sequence.channels, sequence.color.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: timeline_id. Name the tool or the place that returns it, or models look it up first.
- `track.add`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: kind, name.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: timeline_id. Name the tool or the place that returns it, or models look it up first.
- `track.remove`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: track_id.
  - Minor: String arguments with no constraint or example: track_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: track_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `transition.remove`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: transition_id.
  - Minor: String arguments with no constraint or example: transition_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: transition_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `audio.set_pan`: 56 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: clip_id.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `clip.slip`: 56 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: clip_id.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `timeline.create`: 56 / 100
  - Major: Arguments without a description: name, sequence, sequence.width, sequence.height, sequence.fps, sequence.fps.num, sequence.fps.den, sequence.audio_rate, sequence.channels, sequence.color, tracks.video, tracks.audio.
- `adjustment.add`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: duration_frames.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: track_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `job.list`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: status, limit.
  - Minor: No `required` list, so every argument is optional.
- `audio.set_master`: 58 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: gain_db.
  - Minor: Required identifiers whose description does not say where the value comes from: timeline_id. Name the tool or the place that returns it, or models look it up first.
- `job.cancel`: 58 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Required identifiers whose description does not say where the value comes from: job_id. Name the tool or the place that returns it, or models look it up first.
- `media.delete`: 58 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Required identifiers whose description does not say where the value comes from: media_id. Name the tool or the place that returns it, or models look it up first.
- `clip.move`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: clip_id, to_frame, to_track_id.
  - Minor: String arguments with no constraint or example: clip_id, to_track_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `audio.set_gain`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `timeline.get`: 60 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: timeline_id. Name the tool or the place that returns it, or models look it up first.
- `clip.replace`: 61 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: clip_id.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, media_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `clip.slide`: 61 / 100
  - Minor: Arguments without a description: clip_id, to_frame.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `clip.set_animation`: 62 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: clip_id.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `clip.remove`: 63 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: clip_id.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `judge.ask`: 63 / 100
  - Minor: The description is long (472 words). It helps selection but costs steps and tokens.
  - Major: Says nothing about when to use it, or when not to.
- `skills.search`: 63 / 100
  - Major: Says nothing about when to use it, or when not to.
- `clip.set_speed`: 64 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: clip_id, curve[].at, curve[].rate, reverse.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: The meaning of the boolean argument reverse is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `title.add`: 64 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: style.
  - Minor: Required identifiers whose description does not say where the value comes from: track_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `clip.trim`: 65 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: clip_id, edge.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `create.motion`: 65 / 100
  - Major: Arguments without a description: duration_seconds, width, height, fps, assets, name, idempotency_key.
- `export.timeline`: 65 / 100
  - Minor: Arguments without a description: overwrite, idempotency_key.
  - Minor: The meaning of the boolean argument overwrite is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: timeline_id. Name the tool or the place that returns it, or models look it up first.
- `media.upload`: 65 / 100
  - Major: Says nothing about when to use it, or when not to.
- `range.extract`: 65 / 100
  - Minor: Arguments without a description: range.start, range.end.
  - Minor: Required identifiers whose description does not say where the value comes from: timeline_id. Name the tool or the place that returns it, or models look it up first.
- `range.lift`: 65 / 100
  - Minor: Arguments without a description: range.start, range.end.
  - Minor: Required identifiers whose description does not say where the value comes from: timeline_id. Name the tool or the place that returns it, or models look it up first.
- `skills.get`: 65 / 100
- `timeline.load`: 65 / 100
  - Major: Arguments without a description: timeline.name, timeline.sequence, timeline.sequence.width, timeline.sequence.height, timeline.sequence.fps, timeline.sequence.fps.num, timeline.sequence.fps.den, timeline.sequence.audio_rate, timeline.sequence.channels, timeline.sequence.color, timeline.tracks[].id, timeline.tracks[].kind, timeline.tracks[].name, timeline.tracks[].muted, timeline.tracks[].hidden, timeline.tracks[].locked, timeline.tracks[].clips, timeline.tracks[].clips[].id, timeline.tracks[].clips[].type, timeline.tracks[].clips[].kind, timeline.tracks[].clips[].track_id, timeline.tracks[].clips[].words[].text, timeline.tracks[].clips[].words[].start, timeline.tracks[].clips[].words[].end, timeline.tracks[].clips[].source.in, timeline.tracks[].clips[].source.out, timeline.tracks[].clips[].enabled, timeline.tracks[].clips[].fade, timeline.tracks[].clips[].fade.in_frames, timeline.tracks[].clips[].fade.out_frames, timeline.tracks[].clips[].blend, timeline.tracks[].transitions[].id, timeline.tracks[].transitions[].from_clip_id, timeline.tracks[].transitions[].to_clip_id, timeline.tracks[].transitions[].kind, timeline.tracks[].transitions[].start, timeline.tracks[].transitions[].end, timeline.media, timeline.master, timeline.master.gain_db, timeline.master.limit_db, timeline.timeline_id, timeline.parent, timeline.duration.
  - Minor: String arguments with no constraint or example: timeline.name, timeline.tracks[].id, timeline.tracks[].name, timeline.tracks[].clips[].id, timeline.tracks[].clips[].track_id, timeline.tracks[].clips[].media_id, timeline.tracks[].clips[].words[].text, timeline.tracks[].transitions[].id, timeline.tracks[].transitions[].from_clip_id, timeline.tracks[].transitions[].to_clip_id, timeline.timeline_id.
  - Minor: The meaning of the boolean argument timeline.tracks[].muted is unclear.
  - Minor: The meaning of the boolean argument timeline.tracks[].hidden is unclear.
  - Minor: The meaning of the boolean argument timeline.tracks[].locked is unclear.
  - Minor: The meaning of the boolean argument timeline.tracks[].clips[].enabled is unclear.
- `export.video`: 66 / 100
  - Major: Arguments without a description: overrides.width, overrides.height, overrides.fps, overrides.crf, range.start, range.end, overwrite, idempotency_key.
  - Minor: The meaning of the boolean argument overwrite is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: timeline_id. Name the tool or the place that returns it, or models look it up first.
- `filter.add`: 66 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: name.
  - Minor: Required identifiers whose description does not say where the value comes from: timeline_id. Name the tool or the place that returns it, or models look it up first.
- `media.import`: 66 / 100
  - Major: Arguments without a description: file.file_id, file.mime_type, file.file_name, name, idempotency_key.
  - Minor: String arguments with no constraint or example: file.mime_type, file.file_name.
  - Minor: No `required` list, so every argument is optional.
- `text.set`: 66 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Required identifiers whose description does not say where the value comes from: timeline_id. Name the tool or the place that returns it, or models look it up first.
- `caption.add`: 67 / 100
  - Major: Arguments without a description: segments, segments[].start_frame, segments[].end_frame, segments[].text, segments[].words[].text, segments[].words[].start_frame, segments[].words[].end_frame, in_clip.clip_id, in_clip.segments, in_clip.segments[].start, in_clip.segments[].end, in_clip.segments[].text, in_clip.segments[].words, in_clip.segments[].words[].text, in_clip.segments[].words[].start, in_clip.segments[].words[].end, style.
  - Minor: String arguments with no constraint or example: in_clip.clip_id.
  - Minor: Required identifiers whose description does not say where the value comes from: track_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `create.still`: 67 / 100
  - Major: Arguments without a description: width, height, assets, name, idempotency_key.
- `media.list`: 67 / 100
- `clip.roll`: 68 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `create.lipsync`: 68 / 100
  - Minor: Arguments without a description: range.start_seconds, range.end_seconds, audio_range.start_seconds, audio_range.end_seconds, name, idempotency_key.
- `clip.freeze`: 69 / 100
  - Minor: Arguments without a description: clip_id, duration_frames.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `clip.set_mask`: 69 / 100
  - Minor: Arguments without a description: clip_id.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `edit.batch`: 69 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: ops[].tool, ops[].args.
  - Minor: Required identifiers whose description does not say where the value comes from: timeline_id. Name the tool or the place that returns it, or models look it up first.
- `qa.check`: 69 / 100
  - Minor: Arguments without a description: range, range.start, range.end, black.min_seconds, silence.min_seconds.
  - Minor: Required identifiers whose description does not say where the value comes from: timeline_id. Name the tool or the place that returns it, or models look it up first.
- `transition.add`: 69 / 100
  - Minor: Arguments without a description: duration_frames.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `clip.set_transform`: 73 / 100
  - Minor: Arguments without a description: fit, flip, crop, clip_id.
  - Minor: String arguments with no constraint or example: clip_id.
  - Minor: Required identifiers whose description does not say where the value comes from: clip_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `media.get`: 78 / 100
- `clip.add`: 79 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: track_id, timeline_id. Name the tool or the place that returns it, or models look it up first.
- `media.correlate`: 79 / 100
  - Minor: Arguments without a description: idempotency_key.
- `job.get`: 82 / 100
  - Minor: No `required` list, so every argument is optional.
- `media.analyze`: 87 / 100
  - Minor: The description is long (1183 words). It helps selection but costs steps and tokens.
  - Minor: Arguments without a description: region.x, region.y, region.w, region.h, region.at_seconds, idempotency_key.
- `media.listen`: 93 / 100
  - Minor: The description is long (448 words). It helps selection but costs steps and tokens.
  - Minor: Arguments without a description: idempotency_key.
- `media.seek`: 97 / 100
  - Minor: The description is long (657 words). It helps selection but costs steps and tokens.
  - Minor: Arguments without a description: idempotency_key.

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
