CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
kyanitelabs avatar

mcp-video

kyanitelabs/mcp-video
3518 toolsSTDIOregistry active
Summary

Wraps FFmpeg in 119 structured MCP tools so agents can trim, merge, caption, and export video without shell command guesswork. Includes preflight validation to catch bad parameters before render, AI transcription for subtitle generation, scene detection, audio normalization, and local repurposing workflows that turn one source into platform-ready variants for YouTube Shorts, Reels, and TikTok. Also surfaces Hyperframes 0.5 for code-driven composition and cinematic planning tools that parse style packs and storyboards. Best fit when you want Claude or Cursor to drive a repeatable video pipeline with quality checkpoints instead of hoping raw FFmpeg flags work. Python 3.11+, requires FFmpeg on PATH.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →

Tools

Public tool metadata for what this MCP can expose to an agent.

18 tools
get_job_resultCheck job status and result. Poll every 60 seconds — do NOT poll more frequently. Video processing typically takes 3-5 minutes. Progress may stay at 20% during frame analysis for 1-3 minutes — this is completely normal. Do NOT interpret slow progress as failure. Only report fa...3 params

Check job status and result. Poll every 60 seconds — do NOT poll more frequently. Video processing typically takes 3-5 minutes. Progress may stay at 20% during frame analysis for 1-3 minutes — this is completely normal. Do NOT interpret slow progress as failure. Only report fa...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
db_job_idstring
Use when different from job_id (e.g. for video_url). Usually same as job_iddefault:
job_idstring
The job_id returned by a start/narrate tool
get_upload_urlGET A SIGNED UPLOAD URL for uploading a local video to NarrateAI cloud storage. Use this ONLY when running in HTTP/remote mode and the user has a local video file. After getting the URL, upload the file with curl, then pass the returned temp_file_path to any processing tool as...2 params

GET A SIGNED UPLOAD URL for uploading a local video to NarrateAI cloud storage. Use this ONLY when running in HTTP/remote mode and the user has a local video file. After getting the URL, upload the file with curl, then pass the returned temp_file_path to any processing tool as...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
filenamestring
Original filename of the video (e.g. 'demo.mp4')
generate_narration_scriptNARRATION SCRIPT – generates an AI-written timed script for a SILENT video. No audio output. Use when the user wants a timed narration script, text-only narration, or sync data for a silent video. This does NOT extract existing speech (use transcribe_video for that). This does...4 params

NARRATION SCRIPT – generates an AI-written timed script for a SILENT video. No audio output. Use when the user wants a timed narration script, text-only narration, or sync data for a silent video. This does NOT extract existing speech (use transcribe_video for that). This does...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
languagestring
Language code for narration (en, es, fr, de, etc.)default: en
manual_contextstring
Optional description of the video for better narrationdefault:
video_sourcestring
Public URL (http/https) or local file path of the video
narrate_video_fullFULL NARRATED VIDEO – produces a downloadable video with AI voiceover. Use when the user wants: "narrate this video", "add voiceover", "make a narrated video". VOICE OPTIONS — ask the user which they prefer: 1. AI voice: male1 (default, fastest), female1 (default, fastest), fe...6 params

FULL NARRATED VIDEO – produces a downloadable video with AI voiceover. Use when the user wants: "narrate this video", "add voiceover", "make a narrated video". VOICE OPTIONS — ask the user which they prefer: 1. AI voice: male1 (default, fastest), female1 (default, fastest), fe...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
languagestring
Language code (en, es, fr, de, etc.)default: en
manual_contextstring
Optional description of the video for better narrationdefault:
video_sourcestring
Public URL (http/https) or local file path of the video
voice_samplestring
Path or URL to audio file for voice cloning (overrides voice_type)default:
voice_typestring
AI voice preset: male1, female1, female2, female3, female4, male2, male3default:
abandon_jobAbandon/cancel a processing job. Call this when the user cancels on the agent side. Stops the backend from continuing audio generation and video assembly. Use after narrate_video_transcript or when continue_to_full_video was started but user cancelled. Returns: JSON with succe...2 params

Abandon/cancel a processing job. Call this when the user cancels on the agent side. Stops the backend from continuing audio generation and video assembly. Use after narrate_video_transcript or when continue_to_full_video was started but user cancelled. Returns: JSON with succe...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
job_idstring
The db_job_id or job_id of the job to cancel
transcribe_videoTRANSCRIPTION ONLY – video with existing voice -> speech-to-text -> timed transcript. No translation, no narrated video. Returns original speech as-is. Use when the user wants to transcribe a video that already has spoken audio (podcast, interview, meeting recording, etc.). CR...3 params

TRANSCRIPTION ONLY – video with existing voice -> speech-to-text -> timed transcript. No translation, no narrated video. Returns original speech as-is. Use when the user wants to transcribe a video that already has spoken audio (podcast, interview, meeting recording, etc.). CR...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
source_languagestring
Language of the speech in the video (REQUIRED). Ask user if not specified
video_sourcestring
Public URL (http/https) or local file path of the video
transcribe_and_translateTRANSCRIBE & TRANSLATE (new upload) – video with voice -> speech-to-text -> translate -> translated transcript. No TTS, no video output. Returns translated timed transcript only. Use when the user uploads a new video and wants a translated transcript (e.g. Spanish podcast -> E...4 params

TRANSCRIBE & TRANSLATE (new upload) – video with voice -> speech-to-text -> translate -> translated transcript. No TTS, no video output. Returns translated timed transcript only. Use when the user uploads a new video and wants a translated transcript (e.g. Spanish podcast -> E...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
source_languagestring
Language of the speech in the video (REQUIRED)
target_languagestring
Language to translate to (REQUIRED)
video_sourcestring
Public URL (http/https) or local file path of the video
translate_existing_videoTRANSLATION (existing video) – Translate transcript of a video already in the user's library. Loads transcript from cloud, translates, returns. No upload. Sync – returns immediately. Use when the user wants to translate a video they already narrated/dubbed with NarrateAI (e.g....4 params

TRANSLATION (existing video) – Translate transcript of a video already in the user's library. Loads transcript from cloud, translates, returns. No upload. Sync – returns immediately. Use when the user wants to translate a video they already narrated/dubbed with NarrateAI (e.g....

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
job_idstring
The job_id of the completed video from user's library
source_languagestring
Language of the current transcript (REQUIRED)
target_languagestring
Language to translate to (REQUIRED)
dub_video_fullFULL AUTO-DUBBING – transcribe -> translate -> extract speaker voice -> TTS with cloned voice -> dubbed video. No refinement screen. Uses the video's own speaker voice for the dubbed audio. Use when the user wants a complete dubbed video (e.g. Spanish video -> English dubbed)....5 params

FULL AUTO-DUBBING – transcribe -> translate -> extract speaker voice -> TTS with cloned voice -> dubbed video. No refinement screen. Uses the video's own speaker voice for the dubbed audio. Use when the user wants a complete dubbed video (e.g. Spanish video -> English dubbed)....

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
preserve_background_musicboolean
Keep background music (true) or replace with silence (false)
source_languagestring
Language of the speech in the video (REQUIRED)
target_languagestring
Language to dub into (REQUIRED)
video_sourcestring
Public URL (http/https) or local file path of the video
generate_documentDOCUMENT GENERATION – produces a structured markdown document from a silent video. Use when the user wants: a document, article, guide, tutorial, or written content based on a video. NOT for narrated video or voiceover. The agent MUST ask which document type the user wants bef...5 params

DOCUMENT GENERATION – produces a structured markdown document from a silent video. Use when the user wants: a document, article, guide, tutorial, or written content based on a video. NOT for narrated video or voiceover. The agent MUST ask which document type the user wants bef...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
document_typestring
Document type: user_onboarding, tutorial_guide, feature_showcase, business_overview, or product_documentationdefault: user_onboarding
languagestring
Language code (en, es, fr, de, etc.)default: en
manual_contextstring
Optional description of the video for better document generationdefault:
video_sourcestring
Public URL (http/https) or local file path of the video
generate_ttsTEXT-TO-SPEECH – generate audio from text. Returns a downloadable audio URL. Use when the user wants: "read this aloud", "generate speech", "text to speech", "convert text to audio", "make an audio file from this text". VOICE OPTIONS — ask the user which they prefer: 1. AI voi...5 params

TEXT-TO-SPEECH – generate audio from text. Returns a downloadable audio URL. Use when the user wants: "read this aloud", "generate speech", "text to speech", "convert text to audio", "make an audio file from this text". VOICE OPTIONS — ask the user which they prefer: 1. AI voi...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
languagestring
Language code (en, es, fr, de, etc.)default: en
textstring
The text to convert to speech
voice_samplestring
Path or URL to audio file for voice cloning (overrides voice_type)default:
voice_typestring
AI voice preset: male1, female1, female2, female3, female4, male2, male3default: male1
narrate_batchBATCH NARRATION – narrate multiple videos in parallel. Each gets a full narrated video with voiceover. Use when the user has multiple videos to narrate (e.g. "narrate these 3 videos"). Maximum 5 videos per batch. Each video is processed independently – one failure does not aff...6 params

BATCH NARRATION – narrate multiple videos in parallel. Each gets a full narrated video with voiceover. Use when the user has multiple videos to narrate (e.g. "narrate these 3 videos"). Maximum 5 videos per batch. Each video is processed independently – one failure does not aff...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
contexts_jsonstring
JSON array of per-video contexts matching video order, e.g. '["context1", "", "context3"]'default:
languagestring
Language code (en, es, fr, de, etc.). Applies to all videosdefault: en
manual_contextstring
Shared context for ALL videos. Ignored if contexts_json is provideddefault:
video_sources_jsonstring
JSON array of video URLs or paths, e.g. '["url1.mp4", "url2.mp4"]'. Max 5
voice_typestring
AI voice preset: male1, female1, female2, female3, female4, male2, male3default:
batch_generate_scriptsBATCH SCRIPT GENERATION – generate AI narration scripts for multiple silent videos in parallel. Each video gets a timed narration script (text only, no audio). Maximum 5 videos per batch. One failure does not affect others. CRITICAL – Context handling: Before calling, ask the...5 params

BATCH SCRIPT GENERATION – generate AI narration scripts for multiple silent videos in parallel. Each video gets a timed narration script (text only, no audio). Maximum 5 videos per batch. One failure does not affect others. CRITICAL – Context handling: Before calling, ask the...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
contexts_jsonstring
JSON array of per-video contexts matching video orderdefault:
languagestring
Language code (en, es, fr, de, etc.). Applies to all videosdefault: en
manual_contextstring
Shared context for ALL videos. Ignored if contexts_json is provideddefault:
video_sources_jsonstring
JSON array of video URLs or paths, e.g. '["url1.mp4", "url2.mp4"]'. Max 5
batch_transcribeBATCH TRANSCRIPTION – transcribe speech from multiple videos in parallel. Each video must have existing spoken audio. Returns timed transcript per video. CRITICAL: source_language is REQUIRED – ask user if not specified. Applies to all videos. Maximum 5 videos per batch. One f...3 params

BATCH TRANSCRIPTION – transcribe speech from multiple videos in parallel. Each video must have existing spoken audio. Returns timed transcript per video. CRITICAL: source_language is REQUIRED – ask user if not specified. Applies to all videos. Maximum 5 videos per batch. One f...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
source_languagestring
Language of the speech in ALL videos (REQUIRED)
video_sources_jsonstring
JSON array of video URLs or paths, e.g. '["url1.mp4", "url2.mp4"]'. Max 5
batch_dubBATCH DUBBING – dub multiple videos into another language in parallel. Each video gets full auto-dubbing (transcribe -> translate -> voice clone -> dubbed video). CRITICAL: source_language, target_language, preserve_background_music are REQUIRED – ask user. All videos share th...5 params

BATCH DUBBING – dub multiple videos into another language in parallel. Each video gets full auto-dubbing (transcribe -> translate -> voice clone -> dubbed video). CRITICAL: source_language, target_language, preserve_background_music are REQUIRED – ask user. All videos share th...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
preserve_background_musicboolean
Keep background music (true) or replace with silence (false)
source_languagestring
Language of the speech in ALL videos (REQUIRED)
target_languagestring
Language to dub into (REQUIRED)
video_sources_jsonstring
JSON array of video URLs or paths, e.g. '["url1.mp4", "url2.mp4"]'. Max 5
update_transcriptUPDATE TRANSCRIPT – edit the narration script before continuing to full video. Use after generate_narration_script returns a transcript and the user wants to change wording, timing, or content of specific segments. The user describes changes naturally; you apply them and call...5 params

UPDATE TRANSCRIPT – edit the narration script before continuing to full video. Use after generate_narration_script returns a transcript and the user wants to change wording, timing, or content of specific segments. The user describes changes naturally; you apply them and call...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
job_idstring
The job_id from generate_narration_script, list_videos, or translate_existing_video
reset_for_reprocessingboolean
Set true to reset a completed video for re-narration (e.g. after translation)default: false
target_languagestring
Language of the new transcript (required when reset_for_reprocessing is true)default:
transcript_jsonstring
Full transcript as JSON array, e.g. '[{"start_time": 0.0, "end_time": 2.5, "text": "Welcome"}]'
list_videosLIST VIDEOS – get the user's video library (previously processed videos). Use when the user wants to see their existing videos, re-translate a previously narrated video, or work with videos they already processed. Returns paginated list with job IDs, filenames, status, and tim...3 params

LIST VIDEOS – get the user's video library (previously processed videos). Use when the user wants to see their existing videos, re-translate a previously narrated video, or work with videos they already processed. Returns paginated list with job IDs, filenames, status, and tim...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
pageinteger
Page number for paginationdefault: 1
per_pageinteger
Results per page (max 100)default: 20
continue_to_full_videoContinue from transcript to full narrated video. Use after generate_narration_script returns a transcript and the user is satisfied with it. VOICE OPTIONS — ask the user which they prefer: 1. AI voice: male1 (default, fastest), female1 (default, fastest), female2, female3, fem...5 params

Continue from transcript to full narrated video. Use after generate_narration_script returns a transcript and the user is satisfied with it. VOICE OPTIONS — ask the user which they prefer: 1. AI voice: male1 (default, fastest), female1 (default, fastest), female2, female3, fem...

Parameters* required
api_keystring
NarrateAI API key (or set NARRATEAI_API_KEY env var)default:
db_job_idstring
The db_job_id from the transcript step (for video URL retrieval)default:
job_idstring
The job_id from generate_narration_script or narrate_video_full
voice_samplestring
Path or URL to audio file for voice cloning (overrides voice_type)default:
voice_typestring
AI voice preset: male1, female1, female2, female3, female4, male2, male3default:

Kinocut - guardrailed video editing for AI agents

Kinocut

Guardrailed video editing MCP server for AI agents.
Local-first FFmpeg tools, Video Receipts, quality gates, Hyperframes, and Shorts/Reels repurposing — for Claude Code, Cursor, and any MCP client. Free, Apache-2.0. Formerly mcp-video.

PyPI kinocut.dev CI 196 MCP tools on development tip 167 CLI commands on development tip Python 3.11+ Apache 2.0

Demo • Status • 1.15.1 • Changelog • Beyond • Install • Quick Start • Tools • Tool Reference • Rescue • 360 assembly • AI-video • Agent Skill • kinocut.dev • What is Kinocut? • FAQ • llms.txt

Kinocut is a free, open-source video editing MCP server and AI agent workflow engine (plus Python client and kino CLI) that lets AI agents trim, caption, repurpose, and quality-gate local video media with typed tools and Video Receipts — not invented FFmpeg flags.

Table of contents

  • What is Kinocut?
  • See It Work
  • Installation
  • Quick Start
  • MCP Tools
  • Status and releases
  • 360 dual-cam assembly
  • Changelog
  • FAQ
  • Agent Skill

What is Kinocut?

TL;DR: Kinocut is a free, local-first video editing MCP server (plus Python client and kino CLI) so AI agents can trim, caption, repurpose, and quality-gate media with typed tools and Video Receipts — not invented FFmpeg flags.

Kinocut is a free, open-source Model Context Protocol (MCP) server, Python library, and kino CLI that gives AI agents a guardrailed local video-editing surface. It wraps FFmpeg (and optional Hyperframes / Whisper extras) with typed tools, preflight validation, Video Receipt provenance, and quality/release checkpoints so agent-produced media can be inspected before publish.

Also known askino (CLI); formerly mcp-video / mcp_video
Latest published release1.15.1 (2026-08-31)
Product sitekinocut.dev
PyPIkinocut
MCP Registryio.github.KyaniteLabs/kinocut
SourceGitHub (public collab) · Forgejo (canonical source)
LicenseApache-2.0
Runs onYour machine (macOS, Linux, Windows) — FFmpeg required on PATH
NotA hosted cloud editor, credit-metered SaaS, or untyped FFmpeg shell wrapper

Best-fit searches: video editing MCP server · AI agent video editing · FFmpeg MCP · Claude Code video tools · Cursor MCP video · Shorts/Reels automation · local AI video workflow · guardrailed agentic media.

Machine-readable brief for AI crawlers: llms.txt · site: kinocut.dev/llms.txt.

See It Work

Tell the agent what you want in plain language:

"Trim this interview to the strongest 45 seconds, add burned captions, make it vertical, and quality-check it before export."

Kinocut turns that into typed, guardrailed tool calls - no FFmpeg flags to guess, no silently broken exports:

from kinocut import Client
video = Client()

clip = video.trim("interview.mp4", start="00:02:15", duration="00:00:45")
video.ai_transcribe(clip.output_path, output_srt="captions.srt")
captioned = video.subtitles(clip.output_path, subtitle_file="captions.srt")
short = video.resize(captioned.output_path, aspect_ratio="9:16")
video.release_checkpoint(short.output_path)  # thumbnail + quality gate before you publish

Primary job: turn a local interview or podcast into captioned vertical clips with a Video Receipt agents can re-run and humans can approve.

Three things people use it for

  • Repurposing — one recording into captioned Shorts, Reels, and TikTok packages with manifests and review artifacts.
  • Podcast & interview cuts — find the strongest segment, normalize audio, add chapters, and export.
  • Agent-driven media in CI — repeatable, reviewable edits from Claude Code, Cursor, Codex-style clients, or scripts.

Paths: Install matrix · Golden path · Prompts · Tutorial · Compare · When to recommend

Status and releases

SurfaceVersion / tipWhat it means
PyPI / npm / GitHub Release1.15.1 (2026-08-31)Latest published Kinocut. Install with pip install kinocut.
This repository (master)1.15.1 counts · 196 MCP / 167 CLISame public counts as published 1.15.1.
Next public releaseTBDHuman residuals (directories, launch posts) stay gated; further bumps need a new go-ahead.

Install from PyPI for the stable package. Clone master when you want tip work after the latest tag (today that includes object-matte; see docs/PRODUCT_MATTE.md).

What's in 1.15.1

Kinocut 1.15.1 is a maintenance release on top of 1.15.0: the mcp-video compatibility shim 1.6.12 carries the registry ownership marker, the legacy io.github.KyaniteLabs/mcp-video registry entry was republished so directory listings (Glama, PulseMCP) point at living metadata (#469), and the object-matte engine now streams decode with scratch-directory caps — bounded memory on large inputs (#414). Surface stays 196 MCP / 167 CLI — no new public tool name.

What's in 1.15.0

Kinocut 1.15.0 (2026-08-19) was the Windows/diagnostics release: first-class Windows support and honest diagnostics on top of 1.14.x (same 360 dual-cam assembly and performance surface), driven by a community bug report. Surface stays 196 MCP / 167 CLI — no new public tool name.

  • Honest MCP startup failures — kino --mcp keeps the "requires the 'mcp' package" hint only when mcp is genuinely absent; every other server-tree import failure now prints its real cause (filesystem paths redacted, markup-safe) and exits non-zero. Reported in #445.
  • doctor verifies the MCP server import — new required mcp-server-import check imports the same server tree --mcp uses, so kino doctor can no longer report OK while MCP mode is broken.
  • First-class Windows support — portable projectstore file locking (#446, landed with credit) makes kino --mcp importable on Windows; lock errors follow a contention-only contract; kino --help no longer crashes on legacy cp1252 consoles; and a windows-latest CI smoke job (lint, import checks, kino doctor, public-surface tests) guards the platform on every change.
  • 360 dual-cam assembly — any stitched equirect MP4 (Insta360, Ricoh Theta, GoPro MAX, DJI Osmo 360, …) → reviewable 360_assembly_plan (desk / table / front_back, split / switch / PiP / single) → approve → FFmpeg v360 render. MCP: video_intent goal= + video_review_decide. Python: Client.propose_360_assembly / decide_360_assembly / render_360_assembly. Raw .insv / .360 rejected. Director is a plug (local first; cloud opt-in). Not an optimized-AI claim. Guide: docs/360_ASSEMBLY.md.
  • Faster 360 and import path — single-pass split/PiP/switch filter_complex (source audio kept); sampled quality-gate analyze window; SHA-256 path/mtime cache; merge can skip re-probe when infos= is supplied; batched 360 storyboard stills; lazy mcp_video / CLI / Client.search_tools; doctor skips npx --yes unless Hyperframes is already on PATH.
  • Lazy public import — import kinocut no longer eagerly loads Client/engines (PEP 562). from kinocut import Client and kinocut.Client is mcp_video.Client still hold.
  • Ship-seam honesty — CLI/Client repurpose default --min-score 80; shorts-package fail-closed unless --allow-fail; durable MCP video_repurpose does not apply min_score.
  • Compatibility window — mcp-video==1.6.12 installs kinocut==1.15.1. mcp_video imports, MCP_VIDEO_* env vars, ~/.mcp-video data, mcp-video:// resources, and legacy receipt keys remain supported on the 1.14.x+ line.

Also already on the published line from 1.13.x:

  • Intent-verb surface — video_intent / intent (~10 verbs) to dry-run plans without silent media mutations
  • Watching guardrail floor — video_review_run / video_review_decide (blackdetect/LUFS + first-15s inspection)
  • B-roll proposals, ES-first caption translation, still/plate editor, cutfile-render, metric-qc
  • Agent workflow engine, dedicated video rescue, layered compositing, Hyperframes, Shorts/Reels repurposing
  • Canonical counts — 196 MCP tools and 167 CLI commands

Full notes: CHANGELOG.md · published v1.15.0

Beyond 1.15.1 (draft / gated)

1.15.1 is the latest published release. Live directory submissions and launch posts remain operator/human residual (docs/HUMAN_GATES.md) and are not claimed complete.

Staged and Gated Surfaces

While the core FFmpeg editing, 360 assembly, workflow engine, still/plate editing, AI-video review/salvage, and sound capabilities are fully integrated on the published 1.15.x line, the following surfaces remain gated, partial, or unreleased:

  • Desktop MCPB Packaging: The staged desktop package (mcpb/) is a staged configuration and is not a published self-contained native runtime yet (pending FFmpeg provenance, licensing, and clean-machine gates). See docs/MCPB.md.
  • Sonic World Audio (kinocut_sound): While the S1–S12 capabilities are integrated on the published line, the remaining slices are blocked or gated:
    • S13 (Host Joins / bindings): Blocked — external owner receipts incomplete.
    • S14 (Dual-class Benchmark): Partial — x86 available, Apple Silicon host unavailable.
    • S15 (Adversarial Gate): Gated under a release STOP — requires S13 receipts, dual-class benchmarks, and explicit human authorization.
  • Trusted Execution Kernel: The protected-timeline trusted execution kernel is post-program/gated and does not execute without the named upstream contract and human gating (docs/plans/2026-07-09-kinocut-trusted-execution-layer.md).
  • Paid Generative / Dubbing Plans: Generative spend-capped plans and TTS dubbing remain non-executable draft definitions until external backends and credentials are configured.
  • Product / object matte: Catalog and shop cutouts on the existing hyperframes-remove-background command (--model birefnet-general, extra kinocut[object-matte]). Default remains people. Not a new MCP/CLI name. Published in 1.15.1 (streaming decode + scratch caps, #414); the ONNX extra installs via kinocut[object-matte]. Guide: docs/PRODUCT_MATTE.md.

Product checklist: ROADMAP.md.

Agent Workflow Engine

Agents can plan, validate, render, recover, and prove a multi-step local video job from a single JSON job-spec — through MCP (video_workflow_*), the CLI (workflow-*), or the Python client (Client.workflow_*) — with receipts strong enough for another agent or a human to trust before and after a render. Ops are a small allowlist (probe | trim | resize | convert | merge | add_text | composite_layers) mapped 1:1 to the same vetted engine functions the individual tools use; media references are symbolic and workspace-confined; everything fails closed.

{
  "schema_version": 1,
  "name": "captioned-vertical-short",
  "sources": { "hero": { "path": "input/hero.mp4" } },
  "steps": [
    { "id": "trim-hero", "op": "trim", "inputs": { "src": "@sources.hero" },
      "params": { "start": 0, "duration": 6 }, "output": "@work/hero_trim.mp4" },
    { "id": "vertical", "op": "resize", "inputs": { "src": "@work/hero_trim.mp4" },
      "params": { "width": 1080, "height": 1920 }, "output": "@work/hero_vertical.mp4" },
    { "id": "caption", "op": "add_text", "inputs": { "src": "@work/hero_vertical.mp4" },
      "params": { "text": "Watch this", "position": "bottom-center" }, "output": "@outputs.master" }
  ],
  "outputs": { "master": { "path": "output/final.mp4" } }
}
kino workflow-validate --spec job.json    # cheap structural gate, no render
kino workflow-plan     --spec job.json --save-plan plan.json     # dry-run op graph + hashes
kino workflow-render   --spec job.json --save-receipt receipt.json   # execute + provenance receipt
kino workflow-inspect  --receipt receipt.json    # read-only integrity re-check

The render receipt records per-step input/output hashes, a resume cursor, and a cleanup manifest, all with workspace-relative paths:

{
  "receipt_kind": "workflow",
  "versions": { "mcp_video": "1.13.2", "ffmpeg": "8.1" },
  "spec_hash": "sha256:be2f3a9b...",
  "steps": [
    { "id": "trim-hero", "op": "trim", "status": "completed",
      "input_hashes": { "src": "sha256:3b976d49..." },
      "output": "work/be2f3a9b-2effedb3/mcp_video_hero_trim.mp4", "output_hash": "sha256:00727499..." },
    { "id": "caption", "op": "add_text", "status": "completed",
      "output": "output/final.mp4", "output_hash": "sha256:8633ad2a..." }
  ],
  "cleanup_manifest": { "cleaned": true, "policy": "clean-on-success" },
  "resume_cursor": { "last_completed_step": "caption", "next_step": null },
  "status": "completed",
  "render_determinism_scope": "spec/input/output hashes are deterministic; rendered bytes may vary across FFmpeg builds"
}

--all-variants emits N distinct outputs from one declaration, and --resume continues a job that failed with its intermediates kept (fail-closed on a changed spec). Full schema, @ref grammar, variants, resume, and cleanup are in docs/WORKFLOWS.md; a runnable spec is in examples/workflows/.

Governed AI-video review

In Kinocut, a contract-first path is provided for agent-edited media that must stay attributable and reviewable:

  1. Ingest the source into a private content-addressed project (video_ingest / video-ingest)
  2. Preflight + temporal inspection on the stored asset (video_preflight, video_inspect_temporal)
  3. Verdict + acceptance with exact human evidence (video_verdict, video_acceptance_eval)
  4. Bounded derivatives only — audio-preserving body swap or allowlisted salvage recipes (video_body_swap, video_salvage), each with lineage and a fresh non-approved review slot

There is no force/bypass flag. Analyzer output alone cannot approve. Stale, aliased, or protected inputs fail closed. Operating guide: docs/AI_VIDEO_REVIEW_AND_SALVAGE.md. These surfaces are fully integrated in the published 1.15.x line — see Status and releases.

Dedicated Video Rescue

For "fix this clip" requests where the story and timeline must remain unchanged, use the review-first rescue pipeline. Plan and inspect the diagnosis, approve only safe repair IDs, render, then inspect the verified package. The source stays immutable; master and universal sharing copy are always verified; optional captions remain sidecars. See docs/RESCUE.md for CLI, MCP, Python, cancellation, resume, and stable errors.

Layered Compositing

composite-layers / video_composite_layers adds a spec-driven ordered layer stack for agents that need more than two-shot overlay primitives. It supports image, video, and solid layers; normal alpha compositing; per-layer opacity; x/y placement; transform sizing; timing windows; and mask/matte alpha sources — plus full-canvas blend modes (multiply, screen, overlay, darken, lighten) and rotation with a new pivot reference point. Dry-run plans and deterministic layer_plan v2 receipts capture source, filtergraph, and output hashes.

kino composite-layers --spec layers.json --dry-run --save-layer-plan layer-plan.json
kino composite-layers --spec layers.json -o out.mp4 --save-layer-plan layer-plan.json

Use composite-layers when an agent needs a planned stack of overlays, mattes, lower thirds, blurback plates, or platform variants that should be reviewed before rendering. A non-normal blend layer must be full-canvas (position {0,0}, full opacity, no scale/mask/timing) or it fails closed; output is video-only. Positioned/scaled/masked/timed blend, rotation + mask, and per-layer effect routing are tracked as later phases so this surface stays deterministic and preflightable.

360 dual-cam assembly

Any stitched equirect 360 MP4 (Insta360, Ricoh Theta, GoPro MAX, DJI, …) can become a two-cam 16:9 or 9:16 edit without a new tool name. Export from the camera app first — Kinocut does not stitch .insv or GoPro .360.

from kinocut import Client

video = Client()
plan = video.propose_360_assembly("x4-export.mp4", goal="desk 360 split 9:16")
approved = video.decide_360_assembly(plan, "approve")
video.render_360_assembly(approved, "desk-split.mp4")

Agents: video_intent with a 360/desk/table goal and source=, then video_review_decide. Full contract: docs/360_ASSEMBLY.md.

Still / Image Editing

Kinocut treats multi-still packages as first-class media — plan → receipt → fail-closed gate, same safety posture as video rescue. Requires pip install "kinocut[image]"; run kino doctor to verify the image stack.

Workflow: establish a hero plate → edit beats toward it → match shared WB/exposure → grade (optional signal LUT) → cohesion gate.

# Image analysis: extract colors, generate palettes, analyze products
kino image-extract-colors product.jpg -n 8
kino image-generate-palette scene.png --harmony triadic
kino image-analyze-product listing.jpg --use-ai

# Still/plate editing: match package to hero, grade, gate
kino still-match --hero establish.png --inputs beat1.png beat2.png --output-dir out/matched
kino still-grade --inputs out/matched/*.png --hero establish.png --output-dir out/graded
kino still-gate  --inputs out/graded/*.png --output-dir out/gate

# Establish-locked edit with plan/receipt (dry-run first)
kino image-edit --source beat.png --reference establish.png \
  --intent "match establish world and light" --output-dir out/edit --dry-run

# Or run the full pipeline in one shot
kino still-package --establish establish.png --beats beat1.png beat2.png --output-dir out/pkg
from kinocut import Client

c = Client()
c.still_match(hero="establish.png", inputs=["a.png", "b.png"], output_dir="out/m")
c.still_gate(inputs=["out/m/a_matched.png", "out/m/b_matched.png"], output_dir="out/g")

still-gate fails closed on luma spread and shadow green/cyan metrics; every tool writes a JSON receipt with hashes and gains. Paid generative backends stay off by default (prefer=edit, allow_paid_gen=false). Full guide: docs/STILL_PLATES.md.

Public Discovery

Kinocut is built to be findable and citable by both search engines and AI answer engines:

  • Canonical product URL: https://kinocut.dev/
  • GitHub README + llms.txt with entity facts, install commands, and safety rules
  • Official MCP Registry record under io.github.KyaniteLabs/kinocut
  • FAQ answers in this README and docs/faq.md (answer-first, versioned claims)

Kinocut vs raw FFmpeg (and vs cloud editors)

KinocutRaw FFmpeg in agent shellTypical cloud editor API
InterfaceTyped MCP / Python / CLIFree-form flagsHosted HTTP API
PreflightGuardrails before renderAgent invents flagsVendor-specific
ProvenanceVideo Receipts + hashesAd-hoc logsVendor dashboard
Media locationLocal-firstLocalUpload required
Core costFree (Apache-2.0)FreeOften metered

Why It Exists

AI agents can write FFmpeg commands, but they should not have to guess flags, parse brittle stderr, or silently publish broken media. Kinocut gives agents typed operations, inspectable tool metadata, structured results, preflight guardrails, and quality checkpoints so a video workflow can be automated and reviewed without turning into shell-command roulette.

Use it when you want an AI assistant to:

  • trim, merge, resize, crop, rotate, transcode, or export video;
  • add text, subtitles, watermarks, overlays, filters, fades, effects, and transitions;
  • extract audio, normalize audio, synthesize audio, add generated audio, or create waveforms;
  • detect scenes, make thumbnails, generate storyboards, compare quality, and create release checkpoints;
  • match, grade, and gate still packages with establish-locked color cohesion, or analyze product images for colors and palettes;
  • scaffold cinematic projects, read STYLE_/NEG_ blocks, parse storyboard tables, and expand shot prompts;
  • create new Hyperframes projects, inspect rendered layouts, capture websites, generate local speech, remove backgrounds, and post-process the result with FFmpeg tools;
  • repurpose one source video into vertical, horizontal, and square local delivery packages with manifests and review artifacts;
  • drive repeatable media workflows from Claude Code, Cursor, Codex-style clients, scripts, or CI.

Installation

Prerequisite: FFmpeg must be installed and available on PATH.

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

Run without a global install:

uvx --from kinocut kino doctor

Or install with pip:

pip install kinocut
kino doctor

For Claude Desktop-style MCPB installs, Kinocut includes a staged local package at mcpb/ and a local build script:

python3 scripts/build-mcpb.py

This package is honest about its runtime: it launches an existing Python environment with Kinocut installed and still requires local FFmpeg. Native self-contained bundles remain blocked pending FFmpeg provenance, licensing, and clean-machine gates. See docs/MCPB.md.

Optional C2PA signing for final MP4 exports is available on the development tip when c2patool and a manifest/signer are configured. Signing is off by default and only reports signed after a verification read succeeds. See docs/C2PA_PROVENANCE.md.

Hyperframes tools additionally need Node.js 22+ and a resolvable Hyperframes CLI. Install/pin Hyperframes in the active Node package layout, add hyperframes to PATH, or set MCP_VIDEO_HYPERFRAMES_COMMAND.

Which extra do I need?

The core install covers all FFmpeg editing tools. Optional features ship as extras — install only what you use:

You wantInstallApprox. extra size
Speech-to-text subtitles (Whisper)pip install "kinocut[transcribe]"~1 GB (torch)
Image analysis (colors, layout, contrast)pip install "kinocut[image]"~50 MB
Vocal/instrument stem separationpip install "kinocut[stems]"~2 GB (torch + demucs)
AI upscalingpip install "kinocut[upscale]"~2 GB (Python ≤3.12)
Procedural audio/music toolspip install "kinocut[audio]"~30 MB (numpy)
Everything AIpip install "kinocut[ai]"several GB

Mix freely, e.g. pip install "kinocut[transcribe,image]". Run kino doctor afterward — it reports exactly which features are available and what is missing.

Upgrading from mcp-video

Kinocut preserves the original surface during the rename window. Existing installs can upgrade without changing code:

pip install --upgrade mcp-video
mcp-video doctor

Published mcp-video==1.6.12 is a metadata-only compatibility installer for kinocut==1.15.1. The mcp_video import, mcp-video command, MCP_VIDEO_* environment variables, ~/.mcp-video data directory, mcp-video:// resource URIs, and existing receipt keys remain supported on the 1.14.x+ line. New integrations should use kinocut, from kinocut import Client, and the kino command.

En español

Kinocut es un servidor MCP de edición de video para agentes de IA. La última versión publicada es 1.15.1 (pip install kinocut, 196 herramientas MCP / 167 CLI). Incluye ensamblaje 360 de dual-cam desde un MP4 equirectangular ya stitched (no .insv), import perezoso PEP 562 y el mismo surface FFmpeg tipado para recortar, unir, subtitular, mezclar audio, efectos y reutilizar contenido (Shorts, Reels, TikTok), motor de flujos (workflow) con recibos verificables, rescate de video, revisión AI-video gobernada y barreras de seguridad antes de renderizar. Programas humanos residuales (directorios, lanzamiento) no se reclaman completos.

Requisito: FFmpeg instalado y disponible en el PATH.

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

# Instalación y diagnóstico
pip install kinocut
kino doctor

Para Claude Code:

claude mcp add kinocut -- uvx --from kinocut kino

kino doctor informa qué funciones están disponibles y qué falta instalar. La documentación completa está en inglés; los mensajes de error principales son bilingües.

Quick Start

Golden path (60 seconds)

Prove the install works before wiring an agent host:

pip install -e .          # or: pip install kinocut
kino doctor               # required checks must pass
python scripts/golden_path.py

Success criteria and failure recovery: docs/GOLDEN_PATH.md.
Shareable pack (receipt + quality + media): python scripts/generate_golden_pack.py → demo/golden-pack/.

Try the receipt-backed proof first

From a clone of this repo, run the smallest confidence workflow before wiring an agent host:

uv run --no-project --with kinocut python workflows/05-confidence-baseline/workflow.py
uv run --no-project --with kinocut python workflows/benchmarks/run_confidence_benchmark.py

The workflow generates a tiny source clip, creates a checked vertical video, runs quality/release checkpoint steps, and writes workflows/05-confidence-baseline/output/video_receipt.json.

Proof notes live in docs/proofs/. Public marketing claims (version, tool counts, URLs) live in docs/public_claims.json and are CI-guarded.

Claude Code

claude mcp add kinocut -- uvx --from kinocut kino

Claude Desktop

{
  "mcpServers": {
    "kinocut": {
      "command": "uvx",
      "args": ["--from", "kinocut", "kino"]
    }
  }
}

Cursor

{
  "mcpServers": {
    "kinocut": {
      "command": "uvx",
      "args": ["--from", "kinocut", "kino"]
    }
  }
}

Then ask your agent:

Trim this interview into a 45-second vertical clip, add burned captions, normalize the audio, make a thumbnail, and create a release checkpoint before export.

Agent Skill

Kinocut includes a public agent skill at skills/kinocut/SKILL.md. Use $kinocut in compatible agent hosts when you want the agent to choose between the MCP server, CLI, and Python client while preserving the inspect, edit, verify, and human-review workflow.

For path-based short-form packages from current tools only (no invented commands, no external publish), see skills/kinocut-repurpose/SKILL.md. That skill is an explicit marketing seed; the durable kernel-backed repurposing product is still on the trusted-execution roadmap.

Python Client

from kinocut import Client

editor = Client()

clip = editor.trim("interview.mp4", start="00:02:15", duration="00:00:45")
caption_file = "captions.srt"
editor.ai_transcribe(clip.output_path, output_srt=caption_file)
captioned = editor.subtitles(clip.output_path, subtitle_file=caption_file)
vertical = editor.resize(captioned.output_path, aspect_ratio="9:16")
checkpoint = editor.release_checkpoint(vertical.output_path)

print(checkpoint["thumbnail"])
print(checkpoint["storyboard"])

CLI

kino info interview.mp4
kino trim interview.mp4 -s 00:02:15 -d 45
kino video-ai-transcribe clip.mp4 --output captions.srt
kino subtitles clip.mp4 captions.srt
kino resize clip.mp4 --aspect-ratio 9:16
kino video-quality-check clip.mp4
kino repurpose clip.mp4 --platforms youtube-shorts instagram-reel tiktok
kino image-extract-colors product.jpg
kino still-package --establish hero.png --beats shot1.png shot2.png --output-dir out/stills

What Agents Can Do

WorkflowExample prompt
Social clips"Turn this landscape recording into a captioned TikTok and YouTube Short."
Podcast production"Find the strongest segment, trim it, normalize audio, add chapters, and export."
Product demos"Create a short launch video from screenshots, title cards, and voiceover."
Cinematic planning"Create a style pack and storyboard, then render shot prompts for generation."
Quality review"Compare these two exports, make thumbnails, and flag visual or audio problems."
Batch automation"Convert this folder of clips to web-ready MP4 with consistent loudness."
Code-created video"Scaffold a Hyperframes composition, inspect it, render it, then add subtitles and a watermark."
Local repurposing"Turn this master clip into Shorts, Reels, TikTok, and YouTube assets with thumbnails and a manifest."
Video rescue"Diagnose this damaged clip, propose only safe repairs, render an approved package, and verify the receipt."
Governed review (dev tip)"Ingest this export into a project, run preflight and temporal inspection, write a verdict, and salvage only the broken region."

MCP Tools

On the published 1.15.x surface (and matching tip), kino registers 196 MCP tools and 167 CLI commands. The table summarizes core categories — search_tools discovers the exact operation without loading every description.

CategoryCountHighlights
Core video editing32trim, merge, resize, crop, rotate, convert, overlays, subtitles, export, cleanup, templates, merge-compatibility guardrails
Project-backed inspection3content-addressed ingest, unified preflight, temporal evidence packages
Governed AI-video4exact-asset verdicts, acceptance evaluation, audio-preserving body swaps, lineage-bound salvage
Agent workflow engine4validate, plan, render, resume, inspect multi-step jobs with provenance receipts
Dedicated rescue3diagnose, approve, render, verify, quarantine, and resume local content-preserving repairs
Post-rescue planning8semantic timelines/query, EDLs, visual transforms, restoration, composition, autopilot, explicit egress
Cinematic creation4project scaffold, style-pack parsing, storyboard parsing, shot prompt expansion
AI-assisted media11transcription, scene detection, upscaling, stem separation, silence removal, color grading
Hyperframes18init, preview, render, snapshots, inspect, catalog, website capture, local TTS, transcription, background removal, diagnostics, benchmark, post-process
Repurposing2dry-run manifests, platform-ready variants, thumbnails, storyboards, release checkpoints
Procedural audio7synthesize, compose, presets, effects, sequences, generated audio, spatial audio, mix-parameter guardrails
Visual effects8vignette, glow, noise, scanlines, chromatic aberration, luma key, mask, shape mask, bounded filter parameters
Transitions3glitch, morph, pixelate
Layout and motion6grid, picture-in-picture, split-screen, animated text, counters, progress bars, auto-chapters, layout mismatch warnings
Analysis8scene detection, thumbnail, preview, storyboard, quality compare, metadata, waveform, release checkpoint
Image analysis3extract colors, generate palettes, analyze product images
Still / plate editing5still-match, still-grade, still-gate, image-edit, still-package — establish-locked color match with cohesion gate
Discovery1search_tools
from kinocut import Client

editor = Client()
matches = editor.search_tools("subtitle")
print(matches["tools"])

Full reference: docs/TOOLS.md

Agent-Safe Workflow

For autonomous agents, the intended path is inspect, edit, verify, then ask a human to review release artifacts:

from kinocut import Client

client = Client()

print(client.inspect("trim"))

result = client.pipeline(
    [
        {"op": "trim", "input": "source.mp4", "start": "00:01:00", "duration": "00:00:45"},
        {"op": "add_text", "text": "Launch clip", "position": "top-center"},
        {"op": "normalize_audio"},
        {"op": "resize", "aspect_ratio": "9:16"},
        {"op": "export", "quality": "high"},
        {"op": "release_checkpoint"},
    ],
    output_path="final-short.mp4",
)

Safety contract:

  • Media-producing calls return structured results with output paths.
  • High-risk edit paths now run preflight guardrails before FFmpeg execution: filter bounds, merge compatibility, audio mix volume/timing, overlay/watermark/chroma opacity and similarity, animated text timing/overflow, and grid/split-screen mismatch warnings.
  • Analysis and discovery calls return structured JSON reports.
  • Tool discovery is available through search_tools() and Client.inspect().
  • Unexpected keyword errors are converted into actionable MCPVideoError guidance.
  • Do not publish agent-generated video without video_quality_check, video_release_checkpoint, and human visual/audio inspection.
  • For governed AI-video derivatives, require stored identities, active human decision evidence, and a fresh review slot after every salvage or body-swap — never raw FFmpeg workarounds labeled as governed.

Changelog

1.15.1 (2026-08-31):

  • Registry ownership: mcp-video shim 1.6.12 + legacy registry republish (#469).
  • Object-matte streaming decode with scratch caps (#414).
  • mcp-video==1.6.12 installs kinocut==1.15.1.

1.15.0 (2026-08-19):

  • Honest MCP startup failures — kino --mcp reports real import causes; paths redacted, markup-safe (#448, from #445).
  • doctor mcp-server-import check — required core check; doctor can't say OK while --mcp is broken (#449).
  • First-class Windows support — portable projectstore file locking (#446), contention-only lock contract, UTF-8 stdio, windows-latest smoke job.
  • Community-driven release — @gerardoscaglia-creator credited in Contributing and the CHANGELOG acknowledgements.
  • mcp-video==1.6.11 installs kinocut==1.15.0.

1.14.1 (2026-08-13):

  • Patch on 1.14.0: pyright NoReturn on rescue cancel so GitHub Lint stays green. Same 360 + perf surface.
  • mcp-video==1.6.10 installs kinocut==1.14.1.

1.14.0 (2026-08-13):

  • Published 360 dual-cam assembly from a stitched equirect MP4 (camera-agnostic; not X4-only) via video_intent / Client.propose_360_assembly — still 196 MCP / 167 CLI.
  • Landed the performance committee top-10: single-pass 360 filter_complex (audio kept), sampled QC, lazy imports, SHA cache, batched storyboard stills.
  • mcp-video==1.6.9 installs kinocut==1.14.0.

1.13.0 (2026-08-07):

  • Added Intent-verb surface (video_intent / intent), Watching guardrail floor (video_review_run / video_review_decide), B-roll proposals (video_propose_broll), Caption translation ES-first (video_translate_captions), and Trusted execution (TE) quality-of-life additions.
  • Expanded published surface to 196 MCP tools and 167 CLI commands (fully synchronized across standard, test, and client interfaces).
  • Hardened path validation for caption translation, brand kit, and OTIO exports.

1.12.0 (2026-08-07):

  • Added Still/plate editor surface (still-match, still-grade, still-gate, image-edit, still-package) with fail-closed cohesion gating.

1.11.x (2026-07-24):

  • Added thin kinocut_sound S12 public join adapters (sound-capabilities, sound-plan-validate, sound-mix-render, etc.).
  • Post-theme security hardening to prevent absolute host-path leaks and ensure all discovered operations have fail-closed invoke paths.

See CHANGELOG.md for full historical release notes, or view the GitHub Releases page.

FAQ

What is Kinocut?

Kinocut is a free, open-source MCP server, Python library, and kino CLI for AI-agent video editing. It wraps FFmpeg (and optional Hyperframes/Whisper extras) with preflight guardrails, Video Receipts, and quality checkpoints. It was formerly named mcp-video.

How do I install it?

brew install ffmpeg   # or apt install ffmpeg
pip install kinocut
kino doctor
claude mcp add kinocut -- uvx --from kinocut kino

Is it free and local-first?

Yes. Apache-2.0, runs on your machine, no Kinocut account or API key required for the core surface, and media is not uploaded to a Kinocut cloud.

Which agents work with it?

Any MCP-compatible client that can run a local stdio server (Claude Code, Cursor, Windsurf, Cline, and similar). You can also use the Python client or CLI without an agent.

How many tools are there?

Published 1.15.0 documents 196 MCP tools / 167 CLI commands. The development tip matches those counts. 360 assembly reuses video_intent and video_review_decide — it is not a 197th MCP tool.

Can Kinocut edit Insta360 X4 360 video?

Yes — from a stitched 360 MP4, not .insv. Propose a 360_assembly_plan, approve it, then render split/switch/PiP/single. Works for other stitched equirect cameras too. See docs/360_ASSEMBLY.md.

Was it called mcp-video?

Yes. Published mcp-video==1.6.11 installs kinocut==1.15.0. Compatibility imports, CLI name, env vars, data dir, resource URIs, and receipt keys remain supported on the 1.14.x+ line.

More answers: docs/faq.md · on-site FAQ: kinocut.dev/#faq

Documentation

  • Documentation map
  • Product site
  • Tool reference
  • Python client reference
  • CLI reference
  • Agent workflow engine
  • Video receipts
  • Video rescue
  • 360 dual-cam assembly
  • Post-rescue planning
  • AI-video review and salvage
  • AI-video contracts
  • AI-video inspection
  • C2PA provenance
  • MCPB packaging
  • Product roadmap
  • Trusted execution layer plan
  • Wishlist / 1.8 program parallel plan
  • Sound program status
  • AI agent discovery guide
  • FAQ
  • Golden path (first-run proof)
  • Public claims (version / counts)
  • Golden demo pack
  • Changelog
  • llms.txt

Testing

Development verification lives in docs/TESTING.md. Keep public-surface, media workflow, and security checks current when changing tool behavior.

Development

git clone https://git.kyanitelabs.tech/KyaniteLabs/kinocut.git
cd kinocut
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/ -v -m "not slow and not hyperframes"

Community

  • Contributing
  • Code of Conduct
  • Governance
  • Maintainers
  • Security
  • Support
  • Roadmap
  • Changelog
  • GitHub issues

Community deploys

Operators who want a public MCP URL without opening home-router ports can study the community Apache-2.0 reference stack that puts Kinocut + Hyperframes behind Tailscale Funnel, Caddy, and Google OAuth (mcp-auth-proxy): hyperframes-selfhost (not affiliated with KyaniteLabs; evaluate security for your threat model).

License

Apache 2.0. See LICENSE.

Built with FFmpeg, Hyperframes, and the Model Context Protocol.


Part of KyaniteLabs

More from KyaniteLabs. Related projects:

  • Epoch — time-estimation MCP server (PERT) for AI agents
  • DialectOS — Spanish dialect localization MCP server & CLI
  • checkyourself — local-first production-readiness checks for AI-built code

→ More at kyanitelabs.tech


If Kinocut is useful to you, star or watch it — it helps other agent builders find it. If it saved you real editing hours: ko-fi.com/kyanitelabs.

Built by Simon Gonzalez De Cruz — available for Forward-Deployed / Applied-AI engineering and contract work via the public profile links above.

What is Kinocut?

Kinocut is a guardrailed video editing MCP server and CLI for AI agents that helps AI agent builders, Claude Code/Cursor users, and local media operators edit, caption, repurpose, and quality-gate video with typed FFmpeg tools.

ProductKinocut
Categoryguardrailed video editing MCP server and CLI for AI agents
Best forAI agent builders, Claude Code/Cursor users, and local media operators
Nota hosted cloud editor or untyped FFmpeg shell
SourceGitHub · Forgejo
Keywordsvideo editing MCP, AI agent video, FFmpeg MCP, Shorts Reels, Insta360 360 assembly

Who it's for

  • Primary: AI agent builders, Claude Code/Cursor users, and local media operators
  • Use when you need to edit, caption, repurpose, and quality-gate video with typed FFmpeg tools
  • Skip if you need a hosted cloud editor or untyped FFmpeg shell

FAQ

What is Kinocut?

Kinocut is a guardrailed video editing MCP server and CLI for AI agents. It helps AI agent builders, Claude Code/Cursor users, and local media operators edit, caption, repurpose, and quality-gate video with typed FFmpeg tools.

Who should use Kinocut?

AI agent builders, Claude Code/Cursor users, and local media operators.

How is Kinocut different?

Unlike raw FFmpeg scripts or unguarded agent shells, Kinocut validates tools and emits receipts.

Is Kinocut production software?

Treat the README status and release tags as source of truth for maturity. Validate against your own requirements before production use.

Can Kinocut turn an Insta360 X4 file into a two-cam edit?

Yes: export a stitched 360 MP4, then propose → approve → render. .insv is rejected. This shipped in 1.14.1 and remains in published 1.15.0.

Status

  • Maintained as of 2026 on the default branch
  • Prefer release tags when pinning dependencies
  • Report issues on the canonical remote listed above

Agent surface

  • Coding agents: read this README first, then repo docs/AGENTS.md if present
  • Prefer machine-readable briefs (llms.txt) when the repo ships one
  • MCP or skill entrypoints are documented in-repo when applicable

Contributing

Issues and PRs welcome on the canonical remote. Keep public docs free of secrets and machine-local paths.

Contributors

Kinocut improves in public, and outside contributions shape it — 1.15.0's diagnostics fixes trace directly to one excellent bug report. Reports with reproduction steps and a real traceback are contributions, and contributors are credited by name in the CHANGELOG acknowledgements and the release notes.

  • @gerardoscaglia-creator — his Windows MCP-mode investigation (#445) exposed both diagnostics gaps fixed in 1.15.0, and his portable file-locking fix (#446) landed in 1.15.0 with credit. Thank you.
  • @pedropaav-art — Windows filter-option path escaping (#458), merged 2026-08-18, shipped in 1.15.0.
  • @linhaixin45-cmyk — kino doctor Python-version floor with a visible install hint (#459), merged 2026-08-18, shipped in 1.15.0.
  • @betsmayank — first merged external fix: Hyperframes init no longer hangs under MCP without a TTY (#361).
  • @austinwmson and @ismailkattakath — external reports that closed real gaps: remotion_still runtime props (#306) and the self-host Funnel + OAuth reference stack (#432).
  • @Dodothereal and @OyaAIProd — early external PRs (ASS PlayRes for vertical burns #378, SafeSkill badges).

License

See LICENSE in this repository (or package metadata if license is package-only).

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
Categories
Media & Entertainment
Registryactive
Packagemcp-video
TransportSTDIO
UpdatedJun 4, 2026
View on GitHub

More from kyanitelabs

  • Epoch1

Related Media & Entertainment MCP Servers

View all →
synter-media-ai avatar
Synter Ads

io.github.synter-media-ai/synter-ads

Manage ad campaigns across Google, Meta, LinkedIn, Reddit, TikTok, and more via AI.
11
malamutemayhem avatar
Spotify MCP by UnClick

io.github.malamutemayhem/spotify

Spotify tools for spotify, music, playlists by UnClick.
4
malamutemayhem avatar
YouTube MCP by UnClick

io.github.malamutemayhem/youtube

Search YouTube and get video, channel, playlist, and caption details. By UnClick.
4
zlatkoc avatar
Youtube Summarize

zlatkoc/youtube-summarize

MCP server that fetches YouTube video transcripts and optionally summarizes them
3
studiomeyer-io avatar
StudioMeyer Video

io.studiomeyer/video

Video production: recording, editing, effects, captions, TTS, screenshots. 8 tools.
2
csoai-org avatar
Voice Audio Mcp

csoai-org/voice-audio-mcp

Voice Audio MCP server. Tools: text to speech, list voices, transcribe. Built by MEOK AI Labs.
1