# proofcut (pypi · proofcut)

Local-first AI video editor: recordings to a finished film, cut by transcript, then verified

- Trust score: 55/100 (low)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-24

## Components

- pypi · `proofcut`: 55/100 (this document), [markdown](https://verifymcp.io/servers/tydude001-proofcut/proofcut.md), [page](https://verifymcp.io/servers/tydude001-proofcut/proofcut)

## Channel facts

- Registry: `pypi`
- Package: `proofcut`
- Version: `0.45.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-24.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs uv_build at install time, a recognised build step with no custom scripting around it.
  - 1 of 29 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 35/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: the license (LicenseRef-PolyForm-Shield-1.0.0) isn't a recognized OSI-approved license.
  - Actively maintained (last published 18 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 0/100
  - Schema quality not yet verified: the captured schema was too large for us to store in full, or the server stopped listing its tools part-way, so we will not judge it on a partial copy.
- **Stability & Change Management**: 100/100
  - Stability check failed: the tool surface changed between 0.37.0 and 0.45.0: 0 tool removals, 1 breaking changes, 23 additions.
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: the captured tool definitions were too large for us to store in full, or the server stopped listing its tools part-way, so we will not judge them on a partial copy.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: the captured tool definitions were too large for us to store in full (the trim removes the very descriptions this category reads), or the server stopped listing its tools part-way.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

**Unverified: 3 categories.** Categories scored 0 because our sandbox has not given us the schema these checks need to read. That is a gap on our side rather than a finding about the package, and we only credit what we can confirm, so the score stands at 0 until the capture succeeds. We are working through the fleet, so this normally clears without any action from you.

## Install

### How do I install the proofcut MCP server?

proofcut runs locally as a PyPI package, launched with uvx proofcut. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add tydude001-proofcut -- uvx proofcut
```

### Cursor

```json
{
  "mcpServers": {
    "tydude001-proofcut": {
      "command": "uvx",
      "args": [
        "proofcut"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "tydude001-proofcut": {
      "command": "uvx",
      "args": [
        "proofcut"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add tydude001-proofcut -- uvx proofcut
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "tydude001-proofcut": {
      "type": "local",
      "command": [
        "uvx",
        "proofcut"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add tydude001-proofcut --command uvx --arg proofcut
```

### Hermes

```yaml
mcp_servers:
  tydude001-proofcut:
    command: "uvx"
    args: ["proofcut"]
```

### Netclaw

```json
{
  "McpServers": {
    "tydude001-proofcut": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "proofcut"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add tydude001-proofcut -t stdio -c uvx -a proofcut
```

### Other

```json
{
  "mcpServers": {
    "tydude001-proofcut": {
      "command": "uvx",
      "args": [
        "proofcut"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-24 (score 55, 0)

- [functional] Package version: 0.39.0 → 0.45.0

### 2026-10-22 (score 55, +15)

- [security regression] Stability: pass → fail
- [security improvement] Malware scan: unverified → pass

### 2026-10-20 (score 40, −15)

- [security regression] Malware scan: pass → unverified

### 2026-10-19 (score 55, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-18 (score 40, −15)

- [security regression] Malware scan: pass → unverified

### 2026-10-17 (score 55, +19)

- [security improvement] Stability: unverified → pass
- [security] Tool safety: Tool safety not yet verified: the captured tool definitions were too large for us to store in full (the trim removes the very descriptions this category reads), or the server stopped listing its tools part-way.
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Security disclosure: unverified → pass
- [functional] Tool coverage: Tool coverage not yet verified: the captured tool definitions were too large for us to store in full, or the server stopped listing its tools part-way, so we will not judge them on a partial copy.
- [functional] Schema quality: Schema quality not yet verified: the captured schema was too large for us to store in full, or the server stopped listing its tools part-way, so we will not judge it on a partial copy.
- [functional] Package version: 0.39.0 → 0.45.0

### 2026-10-16 (score 36, +14)

- [security improvement] Malware scan: unverified → pass
- [functional regression] Security disclosure: pass → unverified

### 2026-10-15 (score 22, −15)

- [security regression] Malware scan: pass → unverified
- [functional] Package version: 0.39.0 → 0.45.0

## MCP tools (132)

The latest capture was truncated, so this tool list may be partial.

### `ping` (~80 tokens)

### `doctor` (~166 tokens)

### `init` (~224 tokens)

Input parameters:

- `name` (string|null)
- `path` (string|null)

### `migrate_project` (~263 tokens)

Input parameters:

- `path` (string|null)
- `plan` (boolean)

### `import_media` (~721 tokens)

Input parameters:

- `audio_stream` (integer|null)
- `clip_id` (string|null)
- `copy` (boolean)
- `mix` (boolean)
- `path` (string|null)
- `sheet` (boolean)
- `source` (string, required)

### `list_media` (~306 tokens)

Input parameters:

- `path` (string|null)
- `recursive` (boolean)
- `source_dir` (string, required)

### `clip_role` (~353 tokens)

Input parameters:

- `clip_id` (string, required)
- `path` (string|null)
- `reset` (boolean)
- `role` (string|null)

### `clip_rm` (~236 tokens)

Input parameters:

- `clip_id` (string, required)
- `path` (string|null)

### `attach_transcript` (~387 tokens)

Input parameters:

- `clip_id` (string, required)
- `path` (string|null)
- `transcript_path` (string, required)

### `transcribe` (~353 tokens)

Input parameters:

- `clip_id` (string, required)
- `language` (string|null)
- `model` (string)
- `path` (string|null)

### `hear` (~475 tokens)

Input parameters:

- `clip_id` (string, required)
- `end` (number, required)
- `language` (string|null)
- `model` (string)
- `overlap` (number)
- `path` (string|null)
- `start` (number, required)
- `window` (number)

### `get_transcript` (~356 tokens)

Input parameters:

- `clip_id` (string, required)
- `first` (integer|null)
- `last` (integer|null)
- `limit` (integer)
- `path` (string|null)
- `search` (string|null)

### `resolve_phrase` (~486 tokens)

Input parameters:

- `after` (integer)
- `clip_id` (string, required)
- `fuzzy` (boolean)
- `occurrence` (integer|null)
- `path` (string|null)
- `phrase` (string, required)

### `transcript_checks` (~388 tokens)

Input parameters:

- `clip_id` (string|null)
- `path` (string|null)

### `attribute_speakers` (~655 tokens)

Input parameters:

- `apply` (boolean)
- `clip_id` (string, required)
- `labels` (array|null)
- `limit` (integer)
- `margin_db` (number)
- `path` (string|null)
- `streams` (array|null)

### `describe` (~561 tokens)

Input parameters:

- `clip_id` (string|null)
- `force` (boolean)
- `path` (string|null)
- `plan` (boolean)
- `window` (number)

### `describe_ls` (~403 tokens)

Input parameters:

- `clip_id` (string|null)
- `contains` (string|null)
- `path` (string|null)

### `card_templates` (~136 tokens)

Input parameters:

- `name` (string|null)

### `caption_style_save` (~188 tokens)

Input parameters:

- `name` (string, required)
- `path` (string|null)
- `replace` (boolean)

### `caption_style_library` (~26 tokens)

### `caption_style_load` (~175 tokens)

Input parameters:

- `name` (string, required)
- `path` (string|null)
- `plan` (boolean)

### `image_add` (~296 tokens)

Input parameters:

- `name` (string|null)
- `path` (string|null)
- `replace` (boolean)
- `source` (string, required)

### `image_ls` (~128 tokens)

Input parameters:

- `path` (string|null)

### `image_rm` (~143 tokens)

Input parameters:

- `name` (string, required)
- `path` (string|null)

### `graphic_templates` (~97 tokens)

Input parameters:

- `name` (string|null)

### `graphic_new` (~738 tokens)

Input parameters:

- `capture` (boolean)
- `clips` (array|null)
- `html` (string|null)
- `intro` (number|null)
- `loop` (number|null)
- `name` (string, required)
- `outro` (number|null)
- `pages` (integer)
- `path` (string|null)
- `replace` (boolean)
- `slots` (object|null)
- `template` (string|null)

### `graphic_edit` (~360 tokens)

Input parameters:

- `capture` (boolean)
- `clips` (array|null)
- `html` (string|null)
- `intro` (number|null)
- `loop` (number|null)
- `name` (string, required)
- `no_loop` (boolean)
- `outro` (number|null)
- `pages` (integer)
- `path` (string|null)
- `slots` (object|null)

### `graphic_capture` (~218 tokens)

Input parameters:

- `force` (boolean)
- `name` (string|null)
- `pages` (integer)
- `path` (string|null)

### `graphic_ls` (~125 tokens)

Input parameters:

- `path` (string|null)

### `graphic_sheet` (~187 tokens)

Input parameters:

- `name` (string, required)
- `path` (string|null)

### `graphic_save` (~199 tokens)

Input parameters:

- `as_name` (string|null)
- `name` (string, required)
- `path` (string|null)
- `replace` (boolean)

### `graphic_library` (~25 tokens)

### `graphic_load` (~224 tokens)

Input parameters:

- `capture` (boolean)
- `name` (string|null)
- `pages` (integer)
- `path` (string|null)
- `replace` (boolean)
- `saved` (string, required)

### `fonts` (~254 tokens)

Input parameters:

- `install` (boolean)
- `path` (string|null)

### `card_new` (~605 tokens)

Input parameters:

- `height` (integer|null)
- `name` (string, required)
- `overwrite` (boolean)
- `path` (string|null)
- `slots` (object, required)
- `template` (string, required)
- `width` (integer|null)

### `card_render` (~430 tokens)

Input parameters:

- `height` (integer|null)
- `name` (string, required)
- `path` (string|null)
- `width` (integer|null)

### `card_reauthor` (~374 tokens)

Input parameters:

- `name` (string|null)
- `path` (string|null)
- `plan` (boolean)

### `card_safe_zones` (~389 tokens)

Input parameters:

- `card` (string, required)
- `path` (string|null)
- `platform` (string, required)

### `pack_apply` (~594 tokens)

Input parameters:

- `allow_fallback` (boolean)
- `install_fonts` (boolean)
- `pack_path` (string, required)
- `path` (string|null)
- `plan` (boolean)
- `variant` (string)

### `pack_activate` (~218 tokens)

Input parameters:

- `path` (string|null)
- `plan` (boolean)
- `variant` (string, required)

### `pack_apply_captions` (~280 tokens)

Input parameters:

- `path` (string|null)
- `plan` (boolean)
- `preset` (string, required)

### `pack_show` (~200 tokens)

Input parameters:

- `pack_path` (string|null)
- `path` (string|null)
- `variant` (string|null)

### `pack_status` (~203 tokens)

Input parameters:

- `path` (string|null)

### `cue_add` (~1162 tokens)

Input parameters:

- `after` (integer)
- `asset` (string|null)
- `clip_id` (string, required)
- `dissolve` (number|null)
- `dissolve_ease` (string|null)
- `event` (string|null)
- `occurrence` (integer|null)
- `path` (string|null)
- `phrase` (string|null)
- `punch` (number|null)
- `punch_ease` (string|null)
- `punch_mode` (string|null)
- `punch_seconds` (number|null)
- `src_start` (number|null)
- `word_index` (integer|null)

### `cue_set` (~851 tokens)

Input parameters:

- `after` (integer)
- `clip_id` (string|null)
- `dissolve` (number|null)
- `dissolve_ease` (string|null)
- `event` (string|null)
- `every` (boolean)
- `occurrence` (integer|null)
- `path` (string|null)
- `phrase` (string|null)
- `plan` (boolean)
- `punch` (number|null)
- `punch_ease` (string|null)
- `punch_mode` (string|null)
- `punch_seconds` (number|null)
- `word_index` (integer|null)

### `cue_rm` (~421 tokens)

Input parameters:

- `after` (integer)
- `clip_id` (string, required)
- `event` (string|null)
- `occurrence` (integer|null)
- `path` (string|null)
- `phrase` (string|null)
- `word_index` (integer|null)

### `cue_ls` (~196 tokens)

Input parameters:

- `clip_id` (string|null)
- `path` (string|null)

### `cue_reresolve` (~398 tokens)

Input parameters:

- `apply` (boolean)
- `clip_id` (string|null)
- `path` (string|null)

### `assets` (~220 tokens)

Input parameters:

- `path` (string|null)

### `unspoken_add` (~559 tokens)

Input parameters:

- `after` (integer)
- `clip_id` (string, required)
- `occurrence` (integer|null)
- `path` (string|null)
- `phrase` (string|null)
- `word_index` (integer|null)

### `unspoken_rm` (~356 tokens)

Input parameters:

- `after` (integer)
- `clip_id` (string, required)
- `occurrence` (integer|null)
- `path` (string|null)
- `phrase` (string|null)
- `word_index` (integer|null)

### `unspoken_ls` (~181 tokens)

Input parameters:

- `path` (string|null)

### `unspoken_detect` (~577 tokens)

Input parameters:

- `apply` (boolean)
- `clip_id` (string|null)
- `language` (string|null)
- `model` (string|null)
- `pad` (number)
- `path` (string|null)
- `render` (string, required)
- `transcript_path` (string|null)

### `build_shots` (~307 tokens)

Input parameters:

- `fps` (number|null)
- `path` (string|null)

### `seed_timeline` (~447 tokens)

Input parameters:

- `clip_id` (required)
- `edit_expr` (string|null)
- `margin` (string|null)
- `path` (string|null)
- `remove_silences` (boolean)
- `threshold` (number)

### `cut_by_transcript` (~746 tokens)

Input parameters:

- `clip_id` (string, required)
- `confirm_suspect` (boolean)
- `cut` (array|null)
- `keep` (array|null)
- `pad` (number)
- `path` (string|null)
- `plan` (boolean)
- `through_pause` (boolean)

### `cut_by_time` (~637 tokens)

Input parameters:

- `confirm_suspect` (boolean)
- `pad` (number)
- `path` (string|null)
- `plan` (boolean)
- `spans` (array, required)

### `restore` (~525 tokens)

Input parameters:

- `clip_id` (string, required)
- `pad` (number)
- `path` (string|null)
- `plan` (boolean)
- `ranges` (array, required)

### `locate` (~830 tokens)

Input parameters:

- `after` (integer)
- `clip_id` (string, required)
- `event` (string|null)
- `first` (integer|null)
- `last` (integer|null)
- `occurrence` (integer|null)
- `path` (string|null)
- `phrase` (string|null)
- `source_end` (number|null)
- `source_start` (number|null)

### `timeline_status` (~272 tokens)

Input parameters:

- `path` (string|null)

### `timeline_view` (~601 tokens)

Input parameters:

- `clip_id` (string|null)
- `first` (integer)
- `limit` (integer)
- `path` (string|null)

### `properties` (~320 tokens)

Input parameters:

- `clip_id` (string|null)
- `path` (string|null)
- `word_index` (integer|null)

### `finish_report` (~732 tokens)

Input parameters:

- `continuity` (boolean)
- `framing` (boolean)
- `holds` (boolean)
- `path` (string|null)

### `undo` (~383 tokens)

Input parameters:

- `path` (string|null)
- `plan` (boolean)
- `steps` (integer)

### `changes` (~389 tokens)

Input parameters:

- `path` (string|null)
- `steps` (integer)

### `export` (~718 tokens)

Input parameters:

- `export_format` (string|null)
- `fps` (number|null)
- `loudness` (number|null)
- `output` (string, required)
- `path` (string|null)
- `preset` (string|null)
- `resolution` (array|null)
- `true_peak` (number)

### `add_captions` (~575 tokens)

Input parameters:

- `burn` (string|null)
- `burn_output` (string|null)
- `clip_id` (string|null)
- `hold` (number|null)
- `max_duration` (number|null)
- `max_gap` (number|null)
- `max_words` (integer|null)
- `output` (string, required)
- `path` (string|null)
- `preset` (string|null)

### `caption_view` (~337 tokens)

Input parameters:

- `clip_id` (string|null)
- `first` (integer)
- `limit` (integer)
- `path` (string|null)

### `caption_span_add` (~645 tokens)

Input parameters:

- `after` (integer)
- `clip_id` (string, required)
- `event` (string|null)
- `occurrence` (integer|null)
- `off` (boolean)
- `path` (string|null)
- `phrase` (string|null)
- `plan` (boolean)
- `seconds` (number|null)
- `style` (object|null)
- `until_event` (string|null)
- `until_phrase` (string|null)
- `until_word_index` (integer|null)
- `word_index` (integer|null)

### `caption_span_ls` (~124 tokens)

Input parameters:

- `path` (string|null)

### `caption_span_rm` (~172 tokens)

Input parameters:

- `path` (string|null)
- `plan` (boolean)
- `position` (integer, required)

### `lexicon_ls` (~178 tokens)

Input parameters:

- `path` (string|null)

### `lexicon_add` (~427 tokens)

Input parameters:

- `canonical` (string, required)
- `heard` (string, required)
- `kind` (string)
- `path` (string|null)
- `plan` (boolean)

### `lexicon_rm` (~217 tokens)

Input parameters:

- `heard` (string, required)
- `kind` (string)
- `path` (string|null)
- `plan` (boolean)

### `caption_style` (~1095 tokens)

Input parameters:

- `bold` (boolean|null)
- `box` (boolean|null)
- `box_colour` (string|null)
- `font` (string|null)
- `highlight` (string|null)
- `hold` (number|null)
- `karaoke` (boolean|null)
- `margin` (integer|null)
- `max_duration` (number|null)
- `max_gap` (number|null)
- `max_words` (integer|null)
- `outline_colour` (string|null)
- `outline_width` (number|null)
- `path` (string|null)
- `plan` (boolean)
- `position` (string|null)
- `preset` (string|null)
- `reset` (boolean)
- `reveal` (string|null)
- `reveal_blur` (number|null)
- `reveal_ms` (integer|null)
- `shadow` (number|null)
- `size` (integer|null)
- `text` (string|null)

### `canvas` (~419 tokens)

Input parameters:

- `path` (string|null)
- `plan` (boolean)
- `reset` (boolean)
- `size` (string|null)

### `head` (~704 tokens)

Input parameters:

- `asset` (string|null)
- `fade_in` (number|null)
- `fade_out` (number|null)
- `gain_db` (number|null)
- `path` (string|null)
- `plan` (boolean)
- `reset` (boolean)
- `seconds` (number|null)
- `src_start` (number|null)

### `tail` (~655 tokens)

Input parameters:

- `asset` (string|null)
- `fade` (number|null)
- `path` (string|null)
- `plan` (boolean)
- `reset` (boolean)
- `seconds` (number|null)

### `music` (~1455 tokens)

Input parameters:

- `after` (integer)
- `asset` (string|null)
- `clear_duck` (boolean)
- `clear_end` (boolean)
- `clear_loudness` (boolean)
- `clear_under` (boolean)
- `clip_id` (string|null)
- `crossfade` (number|null)
- `duck` (number|null)
- `event` (string|null)
- `fade_in` (number|null)
- `fade_out` (number|null)
- `loudness` (number|null)
- `occurrence` (integer|null)
- `over_tail` (boolean|null)
- `passages` (array|null)
- `path` (string|null)
- `phrase_end` (string|null)
- `phrase_start` (string|null)
- `plan` (boolean)
- `reset` (boolean)
- `rotate` (array|null)
- `src_in` (number|null)
- `under` (number|null)
- `until_event` (string|null)
- `word_index_end` (integer|null)
- `word_index_start` (integer|null)

### `vo_extend` (~625 tokens)

Input parameters:

- `after` (integer)
- `clip_id` (string, required)
- `occurrence` (integer|null)
- `path` (string|null)
- `phrase` (string|null)
- `plan` (boolean)
- `seconds` (number|null)
- `word_index` (integer|null)

### `vo_synth` (~989 tokens)

Input parameters:

- `candidates` (integer)
- `clip_id` (string|null)
- `flat_floor` (number)
- `flat_weight` (number)
- `lexicon` (string|null)
- `max_seconds` (number)
- `path` (string|null)
- `plan` (boolean)
- `readback` (boolean)
- `seed` (integer)
- `text` (string, required)
- `voice` (string|null)
- `word_index` (integer|null)

### `hold_add` (~1016 tokens)

Input parameters:

- `after` (integer)
- `asset` (string|null)
- `asset_phrase` (string|null)
- `clip_id` (string, required)
- `cue_phrase` (string|null)
- `cue_word_index` (integer|null)
- `fade_in` (number|null)
- `fade_out` (number|null)
- `gap_phrase` (string|null)
- `gap_word_index` (integer|null)
- `head_margin` (number|null)
- `occurrence` (integer|null)
- `path` (string|null)
- `plan` (boolean)
- `tail_margin` (number|null)
- `under` (number|null)
- `word_index_first` (integer|null)
- `word_index_last` (integer|null)

### `hold_rm` (~239 tokens)

Input parameters:

- `clip_id` (string, required)
- `gap_word_index` (integer, required)
- `path` (string|null)

### `hold_under` (~579 tokens)

Input parameters:

- `after` (integer)
- `asset` (string, required)
- `clip_id` (string, required)
- `fade_in` (number|null)
- `fade_out` (number|null)
- `occurrence` (integer|null)
- `path` (string|null)
- `phrase_end` (string|null)
- `phrase_start` (string|null)
- `plan` (boolean)
- `under` (number|null)
- `word_index_end` (integer|null)
- `word_index_start` (integer|null)

### `hold_under_rm` (~245 tokens)

Input parameters:

- `clip_id` (string, required)
- `path` (string|null)
- `word_index_start` (integer, required)

### `hold_ls` (~188 tokens)

Input parameters:

- `path` (string|null)

### `hold_check` (~257 tokens)

Input parameters:

- `path` (string|null)
- `render` (string, required)

### `finish_check` (~848 tokens)

Input parameters:

- `black_min_duration` (number)
- `clip_id` (string|null)
- `duration_tolerance` (number)
- `final` (string, required)
- `fps` (number|null)
- `holds` (array|null)
- `language` (string|null)
- `overlap` (number)
- `path` (string|null)
- `pix_th` (number)
- `prepend_seconds` (number|null)
- `recheck_pad` (number)
- `transcript_path` (string|null)
- `window` (number)
- `windowed_model` (string|null)

### `reel` (~657 tokens)

Input parameters:

- `canvas` (string|null)
- `confirm_suspect` (boolean)
- `dest` (string, required)
- `end` (number, required)
- `name` (string|null)
- `path` (string|null)
- `plan` (boolean)
- `start` (number, required)

### `split` (~547 tokens)

Input parameters:

- `canvas` (string|null)
- `confirm_suspect` (boolean)
- `into` (string|null)
- `path` (string|null)
- `plan` (boolean)
- `shorts` (array, required)

### `reframe` (~997 tokens)

Input parameters:

- `clip_id` (string|null)
- `ease` (string|null)
- `event` (string|null)
- `fill` (string|null)
- `interp` (boolean)
- `pane` (string|null)
- `path` (string|null)
- `plan` (boolean)
- `rect` (string|null)
- `reset` (boolean)
- `src_start` (number|null)

### `reframe_detect` (~587 tokens)

Input parameters:

- `apply` (boolean)
- `clip_id` (string|null)
- `frames` (integer)
- `path` (string|null)
- `split` (boolean)
- `threshold` (number)

### `reframe_coverage` (~458 tokens)

Input parameters:

- `clip_id` (string|null)
- `path` (string|null)
- `threshold` (number)

### `continuity_check` (~599 tokens)

Input parameters:

- `gap` (number)
- `min_shot` (number)
- `path` (string|null)
- `scene_threshold` (number)
- `stub_tolerance` (number)
- `stubs` (boolean)

### `continuity_accept` (~316 tokens)

Input parameters:

- `clip_id` (string, required)
- `kind` (string, required)
- `path` (string|null)
- `word_index` (integer, required)

### `continuity_reject` (~298 tokens)

Input parameters:

- `clip_id` (string, required)
- `kind` (string, required)
- `path` (string|null)
- `word_index` (integer, required)

### `continuity_ls` (~178 tokens)

Input parameters:

- `path` (string|null)

### `reframe_sheet` (~686 tokens)

Input parameters:

- `extremes` (boolean)
- `moments` (array|null)
- `out` (string|null)
- `page` (integer)
- `path` (string|null)
- `per_page` (integer|null)

### `shot_sheet` (~616 tokens)

Input parameters:

- `out` (string|null)
- `page` (integer)
- `path` (string|null)
- `per_page` (integer)

### `footage_sheet` (~672 tokens)

Input parameters:

- `clip_id` (string, required)
- `interval` (number)
- `mode` (string)
- `out` (string|null)
- `page` (integer)
- `path` (string|null)
- `per_page` (integer)

### `thumbnail` (~300 tokens)

Input parameters:

- `at` (number, required)
- `clip_id` (string, required)
- `interval` (number)
- `path` (string|null)

### `contact_sheet` (~443 tokens)

Input parameters:

- `clip_id` (string, required)
- `interval` (number)
- `path` (string|null)
- `seconds` (number)

### `synopsis` (~427 tokens)

Input parameters:

- `clear` (boolean)
- `clip_id` (string|null)
- `path` (string|null)
- `text` (string|null)

### `events` (~731 tokens)

Input parameters:

- `at` (number|null)
- `clear` (boolean)
- `clip_id` (string|null)
- `event` (string|null)
- `name` (string|null)
- `offset` (number)
- `origin` (string|null)
- `path` (string|null)
- `plan` (boolean)
- `remove` (string|null)
- `source` (string|null)
- `time` (number|null)

### `overlay_add` (~1266 tokens)

Input parameters:

- `after` (integer)
- `card` (string|null)
- `clip_id` (string, required)
- `enter` (string|null)
- `enter_ease` (string|null)
- `enter_seconds` (number|null)
- `event` (string|null)
- `graphic` (string|null)
- `image` (string|null)
- `leave` (string|null)
- `leave_ease` (string|null)
- `leave_seconds` (number|null)
- `occurrence` (integer|null)
- `path` (string|null)
- `phrase` (string|null)
- `plan` (boolean)
- `position` (integer|null)
- `rotate` (number|null)
- `seconds` (number|null)
- `style` (string|null)
- `until_event` (string|null)
- `until_phrase` (string|null)
- `until_word_index` (integer|null)
- `width` (number|null)
- `word_index` (integer|null)
- `x` (number|null)
- `y` (number|null)

### `overlay_ls` (~182 tokens)

Input parameters:

- `path` (string|null)

### `overlay_rm` (~199 tokens)

Input parameters:

- `path` (string|null)
- `plan` (boolean)
- `position` (integer, required)

### `inset_add` (~1126 tokens)

Input parameters:

- `after` (integer)
- `asset` (string, required)
- `clip_id` (string, required)
- `dim` (number)
- `enter` (string|null)
- `enter_ease` (string|null)
- `enter_seconds` (number|null)
- `event` (string|null)
- `gain_db` (number|null)
- `leave` (string|null)
- `leave_ease` (string|null)
- `leave_seconds` (number|null)
- `level` (string|null)
- `mute` (boolean)
- `occurrence` (integer|null)
- `path` (string|null)
- `phrase` (string|null)
- `plan` (boolean)
- `position` (integer|null)
- `rect` (array, required)
- `seconds` (number|null)
- `src_in` (number)
- `until_event` (string|null)
- `until_phrase` (string|null)
- `until_word_index` (integer|null)
- `word_index` (integer|null)

### `inset_ls` (~177 tokens)

Input parameters:

- `path` (string|null)

### `inset_rm` (~184 tokens)

Input parameters:

- `path` (string|null)
- `plan` (boolean)
- `position` (integer, required)

### `follow` (~515 tokens)

Input parameters:

- `after` (string, required)
- `at_event` (string|null)
- `clip_id` (string, required)
- `dissolve` (number)
- `ease` (string)
- `from_event` (string|null)
- `path` (string|null)
- `plan` (boolean)
- `src_end` (number|null)
- `src_start` (number|null)
- `until_event` (string|null)

### `dissolve` (~293 tokens)

Input parameters:

- `clip_id` (string, required)
- `ease` (string)
- `path` (string|null)
- `plan` (boolean)
- `seconds` (number, required)
- `src_start` (number, required)

### `retime_add` (~649 tokens)

Input parameters:

- `after` (integer)
- `clip_id` (string, required)
- `event` (string|null)
- `occurrence` (integer|null)
- `path` (string|null)
- `phrase` (string|null)
- `plan` (boolean)
- `seconds` (number, required)
- `until_event` (string|null)
- `until_phrase` (string|null)
- `until_word_index` (integer|null)
- `word_index` (integer|null)

### `retime_ls` (~183 tokens)

Input parameters:

- `path` (string|null)

### `retime_rm` (~188 tokens)

Input parameters:

- `path` (string|null)
- `plan` (boolean)
- `position` (integer, required)

### `sound_add` (~854 tokens)

Input parameters:

- `after` (integer)
- `assets` (array, required)
- `clip_id` (string, required)
- `ducks` (boolean)
- `event` (string|null)
- `every` (string|null)
- `gain_db` (number)
- `jitter_db` (number)
- `min_gap` (number|null)
- `occurrence` (integer|null)
- `path` (string|null)
- `phrase` (string|null)
- `plan` (boolean)
- `src_in` (number|null)
- `src_out` (number|null)
- `word_index` (integer|null)

### `sound_ls` (~180 tokens)

Input parameters:

- `path` (string|null)

### `sound_rm` (~184 tokens)

Input parameters:

- `path` (string|null)
- `plan` (boolean)
- `position` (integer, required)

### `sound_generate` (~204 tokens)

Input parameters:

- `path` (string|null)

### `broll_brief` (~333 tokens)

Input parameters:

- `fps` (number|null)
- `path` (string|null)

### `verify` (~861 tokens)

Input parameters:

- `clip_id` (string|null)
- `language` (string|null)
- `model` (string|null)
- `overlap` (number)
- `path` (string|null)
- `render` (string, required)
- `transcript_path` (string|null)
- `window` (number)
- `windowed` (boolean)

### `check_frames` (~475 tokens)

Input parameters:

- `fps` (number|null)
- `path` (string|null)
- `target` (string|null)

### `film_check` (~454 tokens)

Input parameters:

- `path` (string|null)
- `plan` (boolean)
- `reference` (string|null)
- `reset` (boolean)

### `import_edit` (~565 tokens)

Input parameters:

- `clip_id` (string|null)
- `document` (string, required)
- `path` (string|null)
- `plan` (boolean)

### `check_black` (~311 tokens)

Input parameters:

- `fps` (number|null)
- `min_duration` (number|null)
- `path` (string|null)
- `pix_th` (number)
- `target` (string, required)

### `spot_frames` (~383 tokens)

Input parameters:

- `count` (integer)
- `fps` (number|null)
- `path` (string|null)
- `target` (string, required)
- `times` (array|null)

### `speech_overlap` (~843 tokens)

Input parameters:

- `at` (number)
- `cap` (number)
- `clip_evidence` (string)
- `clip_id` (string, required)
- `clip_in` (number|null)
- `clip_out` (number|null)
- `max_gap` (number)
- `min_seam` (number)
- `path` (string|null)
- `vo_clip_id` (string|null)

### `attenuate_noises` (~618 tokens)

Input parameters:

- `clip_id` (string, required)
- `confirm_suspect` (boolean)
- `db` (number)
- `max_event_seconds` (number)
- `max_gap_seconds` (number)
- `pad` (number)
- `path` (string|null)
- `plan` (boolean)

### `proxy_transcode` (~448 tokens)

Input parameters:

- `clip_id` (string, required)
- `force` (boolean)
- `path` (string|null)

### `review_add` (~551 tokens)

Input parameters:

- `about` (string|null)
- `baseline` (string|null)
- `kind` (string, required)
- `name` (string, required)
- `path` (string|null)
- `source` (string, required)

### `review_verdict` (~305 tokens)

Input parameters:

- `name` (string, required)
- `note` (string|null)
- `path` (string|null)
- `verdict` (string, required)

### `review_list` (~202 tokens)

Input parameters:

- `path` (string|null)

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/tydude001-proofcut/proofcut#diagnostics

## Score history

- 2026-10-24: 55
- 2026-10-23: 55
- 2026-10-22: 55
- 2026-10-21: 40
- 2026-10-20: 40
- 2026-10-19: 55
- 2026-10-18: 40
- 2026-10-17: 55
- 2026-10-16: 36
- 2026-10-15: 22
- 2026-10-14: 37
- 2026-10-13: 37
- 2026-10-12: 22
- 2026-10-04: 34
- 2026-10-03: 34
- 2026-10-02: 33
- 2026-10-01: 33
- 2026-09-30: 33
- 2026-09-29: 32
- 2026-09-28: 26
- 2026-09-27: 24
- 2026-09-26: 24
- 2026-09-25: 24
- 2026-09-24: 39
- 2026-09-23: 55
- 2026-09-22: 70
- 2026-09-21: 54
- 2026-09-20: 69
- 2026-09-19: 53
- 2026-09-18: 53

## Common questions

### What is the proofcut MCP server?

proofcut is an MCP server listed in the public MCP registry as io.github.tydude001/proofcut. Local-first AI video editor: recordings to a finished film, cut by transcript, then verified. This page covers its PyPI package (proofcut).

### Is the proofcut MCP server safe to use?

proofcut scores 55 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 24 October 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### Is the proofcut MCP server still maintained?

proofcut is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the proofcut MCP server under?

proofcut declares the LicenseRef-PolyForm-Shield-1.0.0 licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/proofcut/
- Socket report: https://socket.dev/pypi/package/proofcut
- Repository: https://github.com/tydude001/proofcut
- Website: https://github.com/tydude001/proofcut/blob/main/docs/DEMO.md
- Changelog RSS feed: https://verifymcp.io/servers/tydude001-proofcut/proofcut.xml
- Changelog JSON feed: https://verifymcp.io/servers/tydude001-proofcut/proofcut.json
- HTML version of this page: https://verifymcp.io/servers/tydude001-proofcut/proofcut
