kyanitelabs avatar

mcp-video

kyanitelabs/kinocut

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.

tools
18
transport
STDIO
last updated
Nov 10, 2026

Tools

18 tools

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

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:

Sponsors

Readme

Kinocut - guardrailed video editing for AI agents

Kinocut

Your agent edits the video. You approve the cut.
A local, guardrailed video-editing MCP server, Python client and kino CLI. Free, Apache-2.0. Formerly mcp-video.

On Hermes: hermes plugins install kinocut, then see the Hermes plugin guide. Other agents: see Install below.


View the full README on GitHub

Details

Repository
github.com/kyanitelabs/kinocut
Website
kinocut.dev
Category
Media & Entertainment
Package
mcp-video
Transport
STDIO
Registry
MCP registry, active

More from kyanitelabs

Related Media & Entertainment MCP servers

View all
1juzzydee avatarAudio Analyzerjuzzydee/audio-analyzer-rsGives LLMs ears. Spectral, harmonic, rhythm, stereo, and structural audio analysis.27stars
2mindstone avatarOpusClipmindstone/mcp-serversOpusClip MCP server — clip long-form videos, manage projects, collections, censor jobs, posts0stars
3csoai-org avatarMusic Production Ai Mcpcsoai-org/music-production-ai-mcpMusic Production Ai MCP Server by MEOK AI Labs2stars
4trendsmcp-ai avatarTikTok Trends MCPtrendsmcp-ai/tiktok-trends-mcpTikTok hashtag volume over time, with growth for any hashtag. Free key at trendsmcp.ai1stars
5social-freak-ltd avatarSocial Fetchsocial-freak-ltd/socialfetch-mcpPublic social-data API and live docs for AI coding agents.1stars
6aryankeluskar avatarAryankeluskar Poke Video Mcparyankeluskar/poke-video-mcpSearch your Flashback video library with natural language to instantly find relevant moments. Get…0stars