{"name":"io.github.KyaniteLabs/kinocut","slug":"kyanitelabs-kinocut","title":"Kinocut","description":"Guardrailed video editing for AI agents: FFmpeg, captions, effects, Hyperframes, and receipts.","url":"https://mcp.market/server/kyanitelabs-kinocut","rating":null,"grade":"B","score":75,"certified":false,"status":"active","category":"media","tags":["media"],"presence":{"score":55,"stars":160,"forks":40,"downloads_week":1366,"last_push_at":"2026-09-19T12:50:12.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/KyaniteLabs/kinocut","website":"https://kinocut.dev/","version":"1.15.1","remotes":[],"packages":[{"registryType":"pypi","identifier":"kinocut","version":"1.15.1","runtimeHint":"uvx","transport":{"type":"stdio"}}],"tools":[{"name":"async_wrapper","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"audio_compose","description":"Layer multiple audio tracks with volume mixing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"audio_effects","description":"Apply audio effects chain to a WAV file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"audio_preset","description":"Generate preset sound design elements.","write_action":false,"price_micros":0,"input_schema":null},{"name":"audio_sequence","description":"Compose multiple audio events into a timed sequence.","write_action":false,"price_micros":0,"input_schema":null},{"name":"audio_synthesize","description":"Generate audio procedurally using synthesis.","write_action":false,"price_micros":0,"input_schema":null},{"name":"effect_chromatic_aberration","description":"Apply chromatic aberration - RGB channel separation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"effect_glow","description":"Apply bloom/glow effect for highlights.","write_action":false,"price_micros":0,"input_schema":null},{"name":"effect_noise","description":"Apply film grain or digital noise.","write_action":false,"price_micros":0,"input_schema":null},{"name":"effect_scanlines","description":"Apply CRT-style scanlines overlay.","write_action":false,"price_micros":0,"input_schema":null},{"name":"effect_vignette","description":"Apply vignette effect - darkened edges.","write_action":false,"price_micros":0,"input_schema":null},{"name":"glitch_cmyk_split","description":"Apply CMYK split glitch effect.","write_action":false,"price_micros":0,"input_schema":null},{"name":"glitch_datamoshing","description":"Apply datamoshing glitch effect.","write_action":false,"price_micros":0,"input_schema":null},{"name":"glitch_depth_splatting","description":"Apply depth-based point splatting effect (requires Node.js + GPU).","write_action":false,"price_micros":0,"input_schema":null},{"name":"glitch_digital_feedback","description":"Apply digital feedback glitch effect (requires Node.js + GPU).","write_action":false,"price_micros":0,"input_schema":null},{"name":"glitch_macroblocking","description":"Apply macroblocking glitch effect.","write_action":false,"price_micros":0,"input_schema":null},{"name":"glitch_point_cloud","description":"Apply point cloud rendering effect (requires Node.js + GPU).","write_action":false,"price_micros":0,"input_schema":null},{"name":"glitch_rgb_shift","description":"Apply RGB channel shift glitch effect.","write_action":false,"price_micros":0,"input_schema":null},{"name":"glitch_scanline_jitter","description":"Apply scanline jitter glitch effect.","write_action":false,"price_micros":0,"input_schema":null},{"name":"glitch_screen_tearing","description":"Apply screen tearing glitch effect.","write_action":false,"price_micros":0,"input_schema":null},{"name":"glitch_slit_scan","description":"Apply slit-scan temporal displacement effect (requires Node.js + GPU).","write_action":false,"price_micros":0,"input_schema":null},{"name":"glitch_turbulent_displacement","description":"Apply turbulent displacement glitch effect.","write_action":false,"price_micros":0,"input_schema":null},{"name":"glitch_vhs_tracking","description":"Apply VHS tracking error glitch effect.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hyperframes_capture","description":"Capture a website as editable Hyperframes components.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hyperframes_catalog","description":"Browse Hyperframes catalog blocks/components.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hyperframes_compositions","description":"List compositions in a Hyperframes project.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hyperframes_info","description":"Print Hyperframes project metadata.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hyperframes_inspect","description":"Inspect rendered composition layout for overflow and visual issues.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hyperframes_preview","description":"Launch Hyperframes preview studio for live preview.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hyperframes_render","description":"Render a Hyperframes composition to video.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hyperframes_snapshot","description":"Capture key frames as PNG screenshots for visual verification.","write_action":false,"price_micros":0,"input_schema":null},{"name":"hyperframes_still","description":"Render a single frame as image from a Hyperframes composition.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_tools","description":"Search registered MCP video tools by keyword.","write_action":false,"price_micros":0,"input_schema":null},{"name":"shot_prompt_render","description":"Expand one storyboard shot into prompt and negative_prompt strings.","write_action":false,"price_micros":0,"input_schema":null},{"name":"storyboard_read","description":"Read a PUSHING CREATION storyboard table from storyboard.md or a project directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"style_pack_read","description":"Read STYLE_ and NEG_ blocks from a style.md file or project directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"transition_glitch","description":"Apply glitch transition between two video clips.","write_action":false,"price_micros":0,"input_schema":null},{"name":"transition_morph","description":"Apply morph transition between two video clips.","write_action":false,"price_micros":0,"input_schema":null},{"name":"transition_pixelate","description":"Apply pixelate transition between two video clips.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_acceptance_eval","description":"Evaluate exact-spec verdict and defect evidence without approving anything.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_add_audio","description":"Add, replace, or mix an audio track into a video.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_add_generated_audio","description":"Add procedurally generated audio to a video.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_add_text","description":"Overlay text on a video (titles, captions, watermarks). Returns JSON {success, output_path}. Use to burn a single text element into a video. Pass input_path as the source video, text with the string to draw, and position/size/color to style it; output_path is auto-named when omitted.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_add_texts","description":"Overlay multiple text elements on a video in a single FFmpeg pass.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_ai_color_grade","description":"Apply a color grade to a video — by LUT file, style preset, or reference video.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_ai_remove_silence","description":"Remove silent sections from video.","write_action":true,"price_micros":0,"input_schema":null},{"name":"video_ai_scene_detect","description":"Detect scene changes in video.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_ai_stem_separation","description":"Separate audio into stems using Demucs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_ai_transcribe","description":"Transcribe speech to text using Whisper.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_ai_upscale","description":"Upscale video using AI super-resolution.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_analyze","description":"Comprehensive video analysis — transcript, metadata, scenes, audio, quality, chapters, colors.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_apply_mask","description":"Apply an image mask to a video with edge feathering.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_audio_bed","description":"Mix a looped music bed under a voice source with ducking and loudness normalization.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_audio_spatial","description":"Apply 3D spatial audio positioning.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_audio_waveform","description":"Extract audio waveform data (peaks and silence regions).","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_auto_chapters","description":"Auto-detect scene changes and create chapters.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_batch","description":"Apply the same operation to multiple video files.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_body_swap","description":"Replace video while preserving approved audio with explicit duration policy.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_chroma_key","description":"Remove a solid color background (green screen / chroma key).","write_action":true,"price_micros":0,"input_schema":null},{"name":"video_cleanup","description":"Delete intermediate video files after a workflow.","write_action":true,"price_micros":0,"input_schema":null},{"name":"video_compare_quality","description":"Compare video quality between original and processed versions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_composite_layers","description":"Composite ordered image/video layers from a JSON spec.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_convert","description":"Convert a video to a different format or codec.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_create_from_images","description":"Create a video from a sequence of images.","write_action":true,"price_micros":0,"input_schema":null},{"name":"video_design_quality_check","description":"Run comprehensive design quality analysis on a video.","write_action":true,"price_micros":0,"input_schema":null},{"name":"video_detect_scenes","description":"Detect scene changes in a video.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_duck_audio","description":"Mix background music under a video's voice with automatic ducking.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_export_frames","description":"Export frames from a video as individual images.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_extract_frame","description":"Extract a single frame from a video for visual verification.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_filter","description":"Apply a visual filter to a video.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_fix_design_issues","description":"Auto-fix design issues in a video.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_generate_subtitles","description":"Generate SRT subtitles from text entries and optionally burn into video.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_hls_segment","description":"Segment a video into HLS (HTTP Live Streaming) format.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_info","description":"Probe a video file for metadata. Returns JSON {success, info:{duration, resolution, codec, fps, size, ...}}. Use before any edit to learn the source's dimensions and length. Pass input_path as the absolute path to the existing video.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_info_detailed","description":"Get extended video metadata.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_layout_grid","description":"Create grid-based multi-video layout.","write_action":true,"price_micros":0,"input_schema":null},{"name":"video_layout_pip","description":"Picture-in-picture overlay.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_luma_key","description":"Mask out dark regions based on luminance (brightness).","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_merge","description":"Merge multiple video clips into one rendered output file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_mograph_count","description":"Generate animated number counter video.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_mograph_progress","description":"Generate progress bar / loading animation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_normalize_audio","description":"Normalize audio loudness to a target LUFS level.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_overlay","description":"Picture-in-picture: overlay a video on top of another.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_project_create","description":"Scaffold a cinematic video project with style, storyboard, and refs folders.","write_action":true,"price_micros":0,"input_schema":null},{"name":"video_quality_check","description":"Run visual quality checks on a video.","write_action":true,"price_micros":0,"input_schema":null},{"name":"video_read_metadata","description":"Read metadata tags from a video/audio file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_release_checkpoint","description":"Create preview artifacts only after the video passes quality gates.","write_action":true,"price_micros":0,"input_schema":null},{"name":"video_resize","description":"Resize a video or change its aspect ratio. Returns JSON {success, output_path}. Use to fit a video to target dimensions or a preset ratio. Pass input_path as the source video (e.g. from video_info) and either width/height or aspect_ratio to define the target.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_reverse","description":"Reverse video and audio playback so it plays backwards.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_salvage","description":"Create one lineage-bound salvage derivative and a fresh review slot.","write_action":true,"price_micros":0,"input_schema":null},{"name":"video_shape_mask","description":"Apply a geometric shape mask to a video.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_speed","description":"Change video playback speed and render a new output file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_split_screen","description":"Place two videos side by side or top/bottom.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_stabilize","description":"Stabilize a shaky video using motion vector analysis.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_subtitles_styled","description":"Burn subtitles from SRT/VTT with custom styling.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_text_animated","description":"Add animated text to video.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_trim","description":"Trim a video clip by start time and duration. Returns JSON {success, output_path} pointing at the rendered clip. Use to cut a segment out of a longer video. Pass input_path as the absolute path to the source video (e.g. from video_info), start as a timestamp, and duration or end to define the segment.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_validate_text_layout","description":"Validate a set of text overlays for visual failure modes before rendering.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_verdict","description":"Persist exact-asset analysis; approvals require active human evidence.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_write_metadata","description":"Write metadata tags to a video/audio file.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":75,"grade":"B","scanned_at":"2026-09-20T20:56:41.404Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T20:56:41.373Z","components":{"code":{"score":15,"max":25,"notes":["547 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"kinocut-1.15.1/kinocut/aesthetic/__init__.py: …False ) self._features.eval() self._head.eval() self…"},{"id":"exec.shell-true","severity":"medium","component":"code","title":"subprocess with shell=True","evidence":"kinocut-1.15.1/kinocut/ffmpeg_helpers.py: …usted internal ffmpeg/ffprobe paths; no shell=True kwargs: dict[str, Any] = {} …"}],"inputs":{"packages":[{"registryType":"pypi","identifier":"kinocut","version":"1.15.1","found":true,"weeklyDownloads":1366,"license":"Apache-2.0","dependencyCount":78,"publishedAt":"2026-08-31T04:10:20.369531Z","repositoryUrl":"https://github.com/KyaniteLabs/kinocut"}],"repo":{"found":true,"owner":"KyaniteLabs","repo":"kinocut","archived":false,"pushedAt":"2026-09-19T12:50:12Z","stars":160,"forks":40,"openIssues":13,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/272754061?v=4","ownerCreatedAt":"2026-04-01T08:12:02Z","license":"Apache-2.0"},"icon":{"url":"https://avatars.githubusercontent.com/u/272754061?v=4&s=128","source":"github"},"presence":{"stars":160,"forks":40,"downloadsWeek":1366,"license":"Apache-2.0","lastPushAt":"2026-09-19T12:50:12.000Z","score":55}}}},"grade_history":[],"reviews":[]}