MCP App Store
by KeenEthics

Overview

layZ AI turns ChatGPT and Codex into a full video workflow for creators. Start a workflow, create a video, then either open the layZ web video editor to adjust the timeline yourself, or let the AI handle everything and export so the finished video lands right in chat. Paste a YouTube, TikTok, Instagram, Reels, Shorts, or similar link and layZ downloads the clip, cleans it up, and gets it ready to publish. Make entire videos end to end, from script and voiceover through edit and export. Remove watermarks, captions, and burned-in text. Enhance and upscale footage. Analyze clips and build timeline edits with live progress in your layZ workspace. Connect your layZ account once, then ask for what you need: download, clean, enhance, edit, run a workflow, or create a full video, and layZ handles the rest.

Tools

layz_advance_step

ChatGPT
Move to the next module. By default marks the current step complete first.

layz_analyze_videos

ChatGPT
Transcribe source audio and return metadata for this run. This server analysis does not watch frames, track subjects, infer scenes or measure engagement. Inspect actual footage with layz_view_video_frames and available video/audio tools; never use a transcript as evidence of unseen visual events.

layz_apply_default_edit

ChatGPT
Apply a quick baseline to a fresh timeline, not the current stored template's full instructions. Fill the canvas while preserving existing orientation and source audio, set narration to 100%, and generate fallback commentary captions. No sound effect is added or retimed by this shortcut; existing SFX are preserved unless reset is requested. Optional flip, muteSourceAudio, narrationVolume and effectName request those specific changes. The deprecated peakMomentTime parameter remains accepted as a returned timing hint only, and never inserts an unmeasured cymbal. Search and inspect an actual sound, then place its observed climax with layz_editor_add_sound_effect or a batch via layz_apply_editor_commands. For reference matching, first call layz_get_current_step and follow its actual guided template instructions with the matching layz_editor_* tools. Review framing, typography, timing and mix; this shortcut does not claim a finished or reference-matched edit. reset explicitly discards earlier edits.

layz_apply_editor_commands

ChatGPT
Batch one or more already-exposed layZ editor operations in a single save/sync. Each operation type is also a dedicated tool named layz_editor_<command> (for example layz_editor_add_media_to_timeline). Prefer those individual tools for a single edit. Use this only to apply a known batch. Each item is { type, params } where type is a fixed editor command enum. Params, limits and examples are in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. responseMode full (default) returns the detailed timeline; compact returns every result, changed IDs and sync state. includeChangedElements adds complete detail for changed elements only.

layz_approve_script

ChatGPT
Guided Commentary only. Call ONLY after the human explicitly approves the exact current script shown to them. Never self-approve, fabricate approval, or use silence/general delegation/approval of an older draft. The script remains editable; edits revoke approval before paid voiceover.

layz_autopilot

ChatGPT
Baseline-only shortcut: creates a commentary run, downloads supplied public links, saves the script YOU (the connected AI) must write and provide, generates the saved voice, fits source clips, adds default captions and starts a draft render. It does not execute the template's adaptive production instructions, select semantic caption colors, design shot-specific sound or graphics, or review the result. Use only when the user requests an unattended baseline draft. For tailored production use layz_start_workflow and the guided steps; the connected AI authors the script, makes creative edits and reviews the actual export. Poll layz_wait_for_processing (kind 'export') for render completion, which is not production approval.

layz_begin_edit_session

ChatGPT
Start an isolated draft for this run's editor project. Until the session is reviewed or discarded, every layz_editor_* / layz_apply_editor_commands edit changes only the draft (results say draftSession) and the user's live project is untouched. approvalMode manual (default): layz_review_edit_session publishes the draft as a proposal the user applies or rejects in the web editor. auto: review applies the whole draft immediately. Either way the applied draft is one undo step.

layz_complete_run

ChatGPT
Mark the whole workflow run as completed.

layz_contact_sheet

ChatGPT
Returns ONE image: a grid of timestamp-labelled frames (or a single full-size frame), rendered on the layZ server, so agents without screenshots, a video player or local ffmpeg can still see the footage. source file (default) samples a run video, image or completed export; source timeline samples the current edit before export, showing the clip on top at each time with its mirror, plus the on-screen text listed in the JSON. Timeline sheets do not render captions, graphics, crops or effects; export and sheet the export to check those. Pick what to see: an overview (intervalSeconds 5, or count), a close look at one moment (around 12.3 with window 1 and intervalSeconds 0.1, or everyFrame true for every decoded frame of fast action), or exact times; one time gives a single large frame. Up to 64 frames per image. Short file ranges (up to 60 s) decode once and label each frame with its exact time. Zoom in as often as needed: overview first, then dense sheets around moments that matter (an action, cut, reveal, caption timing or sound hit). compareFileId puts a second video beside each frame at the same time (A left, B right): original vs enhanced or text-removed copy, or the timeline vs its export. Cheaper than many separate frames and good for clients that limit images.

layz_create_project

ChatGPT
Create a new empty web editor project (name, canvas width/height in pixels, fps). Returns projectId; then call layz_open_editor_project to edit it here. Common sizes: 1080x1920 vertical, 1920x1080 landscape, 1080x1080 square.

layz_delete_project

ChatGPT
Permanently delete a saved editor project with its timeline, project media and temporary exports, exactly like deleting it in the web editor. Cannot be undone. Only call after the user explicitly confirms this projectId; pass confirm:true.

layz_discard_edit_session

ChatGPT
Throw away the draft (and withdraw a pending proposal from the web editor). The live project is unchanged. Use when the user declines or the draft went wrong; start a new session to try again.

layz_download_media

ChatGPT
Download public media URLs into a layZ workflow. Pass urls, or sourceFileIds for files already in layZ, or runId to continue an upload handoff. Returns view, download, and workflow links.

layz_download_videos

ChatGPT
Download one or more source videos into the run (video-downloader step). Successful files include owned viewUrl/downloadUrl links for the connected agent to inspect or download locally; refresh links with layz_list_run_files.

layz_duplicate_project

ChatGPT
Make a full copy of a saved editor project (project settings, timeline and its uploaded media) under a new projectId, for safe experiments or variants. Save pending browser changes first. The original is unchanged.

layz_editor_add_effect

ChatGPT
Apply the ADD_EFFECT editor operation to this run's timeline. Params match the ADD_EFFECT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_add_keyframe

ChatGPT
Apply the ADD_KEYFRAME editor operation to this run's timeline. Params match the ADD_KEYFRAME entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_add_local_music

ChatGPT
Apply the ADD_LOCAL_MUSIC editor operation to this run's timeline. Params match the ADD_LOCAL_MUSIC entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_add_marker

ChatGPT
Add a named timeline marker for review notes, beats or chapter points. params {time, label?, color?: red|orange|yellow|green|blue|purple|pink|gray, note?, duration?}. Time snaps to project frames. Markers do not render into the export. The result message returns the new markerId; markers appear in layz_get_editor_context.

layz_editor_add_media_to_timeline

ChatGPT
Apply the ADD_MEDIA_TO_TIMELINE editor operation to this run's timeline. Params match the ADD_MEDIA_TO_TIMELINE entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_add_motion_graphic

ChatGPT
Apply the ADD_MOTION_GRAPHIC editor operation to this run's timeline. Params match the ADD_MOTION_GRAPHIC entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_add_sound_effect

ChatGPT
Apply the ADD_SOUND_EFFECT editor operation to this run's timeline. Params match the ADD_SOUND_EFFECT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_add_sticker

ChatGPT
Apply the ADD_STICKER editor operation to this run's timeline. Params match the ADD_STICKER entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_add_text

ChatGPT
Apply the ADD_TEXT editor operation to this run's timeline. Params match the ADD_TEXT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_add_track

ChatGPT
Apply the ADD_TRACK editor operation to this run's timeline. Params match the ADD_TRACK entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_add_transition

ChatGPT
Apply the ADD_TRANSITION editor operation to this run's timeline. Params match the ADD_TRANSITION entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_apply_animation_to_track

ChatGPT
Apply the APPLY_ANIMATION_TO_TRACK editor operation to this run's timeline. Params match the APPLY_ANIMATION_TO_TRACK entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_apply_camera_move

ChatGPT
Add a camera move to a video or image clip as editable position/scale keyframes (renders in preview and export). params {trackId, elementId, move: push-in|pull-out|slow-zoom|snap-zoom|pan-left|pan-right|pan-up|pan-down|ken-burns|shake|zoom-in-out (in, then back by the end)|instant-zoom (cut-in that holds), intensity?:0..1=0.5, startOffset?:clip seconds=0, moveDuration?:seconds (default rest of clip), focusX?/focusY?:-0.5..0.5 of the layer to zoom toward a subject}. Replaces earlier position/scale keyframes on that clip; opacity/rotation keys stay. Pans zoom in just enough to keep the frame covered.

layz_editor_apply_design_style

ChatGPT
Apply a saved design style to text layers. params {style: name or styleId, elements:[{trackId, elementId}] or allCaptions:true}. Content, timing and position are unchanged.

layz_editor_apply_filter

ChatGPT
Apply the APPLY_FILTER editor operation to this run's timeline. Params match the APPLY_FILTER entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_apply_layout

ChatGPT
Arrange video/image clips into a layout: split-horizontal, split-vertical (2), pip-top-right|pip-top-left|pip-bottom-right|pip-bottom-left (2: background then inset; inset must be on a higher track), three-up (3, stacked on vertical canvases), grid-2x2 (4) or full (1, reset). params {layout, elements:[{trackId, elementId}] in cell order (left to right, top to bottom), gap?:0..200 px}. Each clip covers its cell and is cropped with an editable rectangle mask; clips should overlap in time to appear together.

layz_editor_apply_text_preset

ChatGPT
Apply the APPLY_TEXT_PRESET editor operation to this run's timeline. Params match the APPLY_TEXT_PRESET entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_apply_theme

ChatGPT
Give the whole video one visual direction in one step: restyle every title and caption with a theme's font, colours, outline/shadow and card. params {theme (id or name from themes in editor context: clean-studio, noir-gold, bold-pop, neon-runner, paper-cut, boardroom, kawaii-bubble, y2k-chrome, varsity-bold, zen-white, pixel-arcade, journal-ink), scope?:all|titles|captions=all}. Caption font sizes are refitted to the canvas. Undo reverses it.

layz_editor_auto_grade

ChatGPT
Auto colour-correct one video or image clip: measures it like INSPECT_COLOR, then adds a 'Auto grade' custom adjustment layer over the clip's time range that neutralises colour casts and balances exposure, contrast and saturation. params {trackId, elementId, strength?:0..1=0.8, samples?:1..12=6}. The layer grades everything visible in that range and stays editable (UPDATE_EFFECT_PARAMS / REMOVE_EFFECT).

layz_editor_auto_place_captions

ChatGPT
Keep captions off the subject: for each caption, compare how much of the picture's subject (faces, detail, motion) sits under its usual position versus the mirrored top/bottom zone, and move it only when the other zone is clearly emptier. params {reset?:true} returns every caption to its usual position. Analyses at most 240 frames.

layz_editor_auto_reframe

ChatGPT
Fit a video clip to the canvas shape (e.g. 16:9 footage in a 9:16 project) and follow its subject: frames are sampled about every 0.5s, scored for faces/skin tones, detail and motion, and turned into smooth position keyframes that jump on shot changes. params {trackId, elementId, smoothing?:0..1=0.5 (higher = steadier camera)}. Change the canvas size first; replaces the clip's position/scale keyframes.

layz_editor_beat_grid

ChatGPT
Beat times from a known tempo, without analysis. params {mediaId (source seconds) or trackId+elementId of a placed clip (timeline seconds), bpm? (default the stored SET_MEDIA_INFO tempo), offset?, subdivision?:1|2|4, action?:report|markers, markEvery?=4}. Use DETECT_BEATS when the tempo is unknown.

layz_editor_check_safe_zones

ChatGPT
Check that text, captions and overlays stay clear of platform UI. Vertical canvases keep 6% left, 16% right (buttons), 12% top and 25% bottom (caption and handle) clear; landscape and square keep 5% title-safe margins. params {fix?:true (move each offending item just inside), kinds?:[caption,text,overlay]}. Full-frame footage is ignored. Text size is estimated from font metrics.

layz_editor_clear_element_mask

ChatGPT
Clear the mask on a timeline clip. This removes the current mask shape and is hard to reverse without recreating it. Requires runId plus trackId/elementId in params. Read layz_get_editor_context for IDs.

layz_editor_clear_markers

ChatGPT
Remove every timeline marker in the project. Clips and render output are unchanged.

layz_editor_clear_selection

ChatGPT
Preview/UI control CLEAR_SELECTION for the layZ editor. Has no render effect on export. Read layz_get_capabilities for params. For timeline changes use the matching edit tools.

layz_editor_clear_timeline

ChatGPT
Remove every clip, caption, effect and transition from unlocked tracks in one step, to rebuild an edit from scratch. params {}. The main track stays (empty), locked tracks are kept, and the media library, markers and project settings are unchanged. Reversible with UNDO_LAST_CHANGE.

layz_editor_close_gaps

ChatGPT
Apply the CLOSE_GAPS editor operation to this run's timeline. Params match the CLOSE_GAPS entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_create_sequence

ChatGPT
Add another timeline to this project (a teaser, an alternate cut, a different aspect). params {name, from?: empty|current=empty, switch?:boolean=true}. Timelines share the media library; each keeps its own tracks and markers.

layz_editor_cut_transcript

ChatGPT
Text-based editing: cut spoken words out of the edit by their transcript. params {query (phrase to remove), occurrence?: 1-based number or 'all'='all', padding?:0..0.3=0.05 seconds, trackIds?}. Finds the phrase in captions (FIND_IN_TRANSCRIPT first to review), then removes that time from every track: clips, linked audio, captions and effects are split and later material moves earlier. Caption text keeps only the remaining words. Needs captions (GENERATE_CAPTIONS). One undo step.

layz_editor_delete_version

ChatGPT
Delete a saved version. params {versionId}.

layz_editor_denoise_audio

ChatGPT
Reduce steady background noise (hiss, hum, room tone, fans) in a voice. params {trackId, elementId (audio clip, or a video clip whose audio is separated first), strength?:0.05..1=0.6 dry/wet, off?:true}. Learns the noise from the quietest passages, attenuates it, and bakes a cleaned WAV that replaces the clip's audio (cached per strength), so preview and export match. Lower strength if the voice sounds thin. Not for music or sudden noises.

layz_editor_detect_beats

ChatGPT
Find the tempo and beat times of a music clip. params {trackId, elementId, action?:report|markers=report, markEvery?:1..16=4}. Returns BPM and beat times in timeline seconds (first 200 listed); markers adds pink 'Beat N' markers on every markEvery-th beat. Read-only for report.

layz_editor_detect_scenes

ChatGPT
Find shot/scene changes inside one video clip by analysing its picture. params {trackId, elementId, threshold?:0.05..0.9=0.3 (lower finds softer cuts), minScene?:0.1..30=0.5 timeline seconds, action?:report|markers|split=report}. report lists timeline cut times; markers adds yellow 'Scene N' markers; split cuts the clip (and linked audio) at every scene change in one undoable step and returns the piece IDs in order. Reversed clips are rejected.

layz_editor_duck_audio

ChatGPT
Apply the DUCK_AUDIO editor operation to this run's timeline. Params match the DUCK_AUDIO entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_duplicate_element

ChatGPT
Apply the DUPLICATE_ELEMENT editor operation to this run's timeline. Params match the DUPLICATE_ELEMENT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_find_best_shots

ChatGPT
Rank the technically best-looking windows of a video clip (sharp focus, good exposure, steady camera) for B-roll picks, thumbnails or montage selects. params {trackId?, elementId? (default the longest video clip), length?:0.5..30=3, count?:1..10=3, action?:report|markers (blue range markers)}. Measures frames about every 0.5 s; it does not judge content.

layz_editor_find_highlights

ChatGPT
Find the most energetic moments of a clip for shorts/teasers: scores sliding windows by audio energy, shot-change pace and emphatic caption words. params {trackId?, elementId? (default the longest video/audio clip), length?:1..120=8 seconds, count?:1..20=3, action?:report|markers=report}. markers adds green range markers 'Highlight N' with the reasons. Use with REMOVE_TIME_RANGE or SPLIT to build a cut; judge story value yourself.

layz_editor_find_in_transcript

ChatGPT
Search caption text for a phrase (case and punctuation insensitive). params {query}. Returns each match's timeline start/end, word-accurate when captions carry word timing, otherwise estimated. Read-only.

layz_editor_generate_captions

ChatGPT
Apply the GENERATE_CAPTIONS editor operation to this run's timeline. Params match the GENERATE_CAPTIONS entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_hide_element

ChatGPT
Apply the HIDE_ELEMENT editor operation to this run's timeline. Params match the HIDE_ELEMENT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_hide_track

ChatGPT
Apply the HIDE_TRACK editor operation to this run's timeline. Params match the HIDE_TRACK entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_import_project_file

ChatGPT
Replace this edit with a .layz.json project file (from layz_export_timeline format layz or the web Export timeline menu). params {content: file text} or {fileId: uploaded file in this run}. Timeline media is matched by mediaId, then by file name and type; missing media rejects the import with the file names to import first. One undo step.

layz_editor_import_run_media

ChatGPT
Apply the IMPORT_RUN_MEDIA editor operation to this run's timeline. Params match the IMPORT_RUN_MEDIA entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_import_subtitles

ChatGPT
Apply the IMPORT_SUBTITLES editor operation to this run's timeline. Params match the IMPORT_SUBTITLES entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_inspect_color

ChatGPT
Read a video or image clip's colour like scopes: samples frames and returns luma mean, 2–98% range, RGB means, chroma, clipped shadows/highlights, a 16-bin luma histogram and plain notes (exposure, contrast, colour cast, saturation). params {trackId, elementId, samples?:1..12=6}. Read-only.

layz_editor_mask_words

ChatGPT
Bleep or silence spoken words and star them out in captions, without cutting anything. params {query or queries:[words or phrases] (found in word-timed captions), audio?:beep|silence|original=beep, caption?:mask|original=mask, maskText?='**', padding?:0..0.2=0.03, allowEstimated?:true}. The voice is ducked to silence over each word (video audio is separated first); beep adds 1 kHz bleeps on a 'Bleeps' track. Only mask words the user chose. Music and sound effects are untouched.

layz_editor_move_element

ChatGPT
Apply the MOVE_ELEMENT editor operation to this run's timeline. Params match the MOVE_ELEMENT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_move_element_to_track

ChatGPT
Apply the MOVE_ELEMENT_TO_TRACK editor operation to this run's timeline. Params match the MOVE_ELEMENT_TO_TRACK entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_move_track_down

ChatGPT
Apply the MOVE_TRACK_DOWN editor operation to this run's timeline. Params match the MOVE_TRACK_DOWN entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_move_track_up

ChatGPT
Apply the MOVE_TRACK_UP editor operation to this run's timeline. Params match the MOVE_TRACK_UP entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_multicam_cut

ChatGPT
Cut between synced angles onto a new 'Multicam program' track. params {elements:[{trackId, elementId}] (angles, index = angle number from 0), switches?:[{time, angle}] absolute timeline seconds, or auto:true (loudest angle wins, minShot?:0.5..30=2 seconds), audioAngle?: index to keep as the single audio source}. Angle tracks are hidden and muted afterwards; edit the program clips like any clips.

layz_editor_multicam_sync

ChatGPT
Line up 2-6 camera angles of the same event by their audio (each angle on its own track; the first is the reference). params {elements:[{trackId, elementId}]}. Moves (or trims) the other angles so the same sound lines up and reports offsets with confidence. Normal speed only.

layz_editor_mute_element

ChatGPT
Apply the MUTE_ELEMENT editor operation to this run's timeline. Params match the MUTE_ELEMENT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_mute_track

ChatGPT
Apply the MUTE_TRACK editor operation to this run's timeline. Params match the MUTE_TRACK entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_normalize_audio

ChatGPT
Apply the NORMALIZE_AUDIO editor operation to this run's timeline. Params match the NORMALIZE_AUDIO entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_open_panel

ChatGPT
Preview/UI control OPEN_PANEL for the layZ editor. Has no render effect on export. Read layz_get_capabilities for params. For timeline changes use the matching edit tools.

layz_editor_pause

ChatGPT
Preview/UI control PAUSE for the layZ editor. Has no render effect on export. Read layz_get_capabilities for params. For timeline changes use the matching edit tools.

layz_editor_play

ChatGPT
Preview/UI control PLAY for the layZ editor. Has no render effect on export. Read layz_get_capabilities for params. For timeline changes use the matching edit tools.

layz_editor_redo_last_change

ChatGPT
Redo the most recently undone MCP edit batch. Send alone with params {}. Any new edit clears redo.

layz_editor_remove_effect

ChatGPT
Apply the REMOVE_EFFECT editor operation to this run's timeline. Params match the REMOVE_EFFECT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_remove_element

ChatGPT
Apply the REMOVE_ELEMENT editor operation to this run's timeline. Params match the REMOVE_ELEMENT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_remove_fillers

ChatGPT
Cut filler words out of every track using word-timed captions (captions follow). Removes hesitations (um, uh, er, ah, hmm…) and immediate repeats ("the the") by default. params {dryRun?:true (list only), verbal?:true (also you know, I mean, like, basically, actually, literally, sort of, kind of), repeats?:false, extra?:[words or phrases], padding?:0..0.15=0.02, trackIds?}. Run dryRun first and review: verbal fillers are often meaningful. Captions without word timing are skipped and reported.

layz_editor_remove_keyframe

ChatGPT
Apply the REMOVE_KEYFRAME editor operation to this run's timeline. Params match the REMOVE_KEYFRAME entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_remove_marker

ChatGPT
Remove one timeline marker by params.markerId (or params.time when only one marker sits on that frame).

layz_editor_remove_media_folder

ChatGPT
Remove a media folder; its items return to the top level (nothing is deleted). params {folder}.

layz_editor_remove_time_range

ChatGPT
Extract a time range from the whole edit (or trackIds): params {start, end} timeline seconds. Splits everything at both edges, removes the inside and closes the gap; transitions in the range are removed; locked tracks with material there reject the edit. Caption text follows the cut.

layz_editor_remove_track

ChatGPT
Apply the REMOVE_TRACK editor operation to this run's timeline. Params match the REMOVE_TRACK entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_remove_transition

ChatGPT
Apply the REMOVE_TRANSITION editor operation to this run's timeline. Params match the REMOVE_TRANSITION entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_remove_watermark

ChatGPT
Remove the logo watermark added with SET_WATERMARK. params {}.

layz_editor_rename_element

ChatGPT
Apply the RENAME_ELEMENT editor operation to this run's timeline. Params match the RENAME_ELEMENT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_rename_media_folder

ChatGPT
Rename a media library folder. params {folder, newName}.

layz_editor_rename_sequence

ChatGPT
Rename a timeline. params {sequenceId, name}.

layz_editor_rename_track

ChatGPT
Apply the RENAME_TRACK editor operation to this run's timeline. Params match the RENAME_TRACK entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_replace_media

ChatGPT
Replace the media source on an existing timeline clip. Video/audio uses the new source duration and validates existing trims before rebinding; images keep authored timing. Start time and following clips stay unchanged. Incompatible linked-source ranges reject without changes. Requires runId plus trackId, elementId and mediaId in params from layz_get_editor_context.

layz_editor_request_follow_up

ChatGPT
Ask the web editor UI to prompt the user with a follow-up question. Preview/UI only: it does not change the rendered timeline or export. Pass runId and params.message (or the prompt text field documented in layz_get_capabilities).

layz_editor_restore_version

ChatGPT
Replace the current edit with a saved version. params {versionId} from layz_get_editor_context versions[]. Refused if the version uses media no longer in the library. UNDO_LAST_CHANGE reverses a restore.

layz_editor_revert_caption_translation

ChatGPT
Restore the original caption text saved by TRANSLATE_CAPTIONS (mode replace). params {trackId?}.

layz_editor_ripple_delete

ChatGPT
Apply the RIPPLE_DELETE editor operation to this run's timeline. Params match the RIPPLE_DELETE entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_roll_edit

ChatGPT
Apply the ROLL_EDIT editor operation to this run's timeline. Params match the ROLL_EDIT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_save_project

ChatGPT
Apply the SAVE_PROJECT editor operation to this run's timeline. Params match the SAVE_PROJECT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_seek

ChatGPT
Preview/UI control SEEK for the layZ editor. Has no render effect on export. Read layz_get_capabilities for params. For timeline changes use the matching edit tools.

layz_editor_select_element

ChatGPT
Preview/UI control SELECT_ELEMENT for the layZ editor. Has no render effect on export. Read layz_get_capabilities for params. For timeline changes use the matching edit tools.

layz_editor_separate_audio

ChatGPT
Apply the SEPARATE_AUDIO editor operation to this run's timeline. Params match the SEPARATE_AUDIO entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_audio_envelope

ChatGPT
Apply the SET_AUDIO_ENVELOPE editor operation to this run's timeline. Params match the SET_AUDIO_ENVELOPE entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_audio_fades

ChatGPT
Apply the SET_AUDIO_FADES editor operation to this run's timeline. Params match the SET_AUDIO_FADES entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_audio_processing

ChatGPT
Apply the SET_AUDIO_PROCESSING editor operation to this run's timeline. Params match the SET_AUDIO_PROCESSING entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_background_color

ChatGPT
Apply the SET_BACKGROUND_COLOR editor operation to this run's timeline. Params match the SET_BACKGROUND_COLOR entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_background_type

ChatGPT
Apply the SET_BACKGROUND_TYPE editor operation to this run's timeline. Params match the SET_BACKGROUND_TYPE entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_canvas_size

ChatGPT
Apply the SET_CANVAS_SIZE editor operation to this run's timeline. Params match the SET_CANVAS_SIZE entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_captions

ChatGPT
Apply the SET_CAPTIONS editor operation to this run's timeline. Params match the SET_CAPTIONS entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_chroma_key

ChatGPT
Green/blue-screen removal on a video or image clip, rendered identically in preview and export. params {trackId, elementId, chromaKey: {color?:#RRGGBB=#00ff00, similarity?:0..1=0.4, smoothness?:0..1=0.08 soft edge, spill?:0..1=0.5 fringe removal, enabled?:boolean} or null to remove}. Omitted fields keep the clip's current key. Put the replacement background on a lower track. Inspect frames: raise similarity if screen remains, lower it if the subject disappears.

layz_editor_set_clip_lut

ChatGPT
Grade a video or image clip with a 3D .cube LUT (camera log conversions, film looks), rendered identically in preview and export. params {trackId, elementId, cube?: .cube text, fileId?: an uploaded .cube in this run, name?, intensity?:0..1=1, enabled?} or {lut:null} to remove. Without cube/fileId, intensity/enabled update the existing LUT. Large LUTs are resampled to 33 points.

layz_editor_set_element_blur

ChatGPT
Apply the SET_ELEMENT_BLUR editor operation to this run's timeline. Params match the SET_ELEMENT_BLUR entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_element_keyframes

ChatGPT
Apply the SET_ELEMENT_KEYFRAMES editor operation to this run's timeline. Params match the SET_ELEMENT_KEYFRAMES entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_element_mask

ChatGPT
Apply the SET_ELEMENT_MASK editor operation to this run's timeline. Params match the SET_ELEMENT_MASK entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_element_opacity

ChatGPT
Apply the SET_ELEMENT_OPACITY editor operation to this run's timeline. Params match the SET_ELEMENT_OPACITY entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_element_position

ChatGPT
Apply the SET_ELEMENT_POSITION editor operation to this run's timeline. Params match the SET_ELEMENT_POSITION entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_element_rotation

ChatGPT
Apply the SET_ELEMENT_ROTATION editor operation to this run's timeline. Params match the SET_ELEMENT_ROTATION entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_element_scale

ChatGPT
Apply the SET_ELEMENT_SCALE editor operation to this run's timeline. Params match the SET_ELEMENT_SCALE entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_element_speed

ChatGPT
Apply the SET_ELEMENT_SPEED editor operation to this run's timeline. Params match the SET_ELEMENT_SPEED entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_element_timing

ChatGPT
Apply the SET_ELEMENT_TIMING editor operation to this run's timeline. Params match the SET_ELEMENT_TIMING entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_element_volume

ChatGPT
Apply the SET_ELEMENT_VOLUME editor operation to this run's timeline. Params match the SET_ELEMENT_VOLUME entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_fps

ChatGPT
Apply the SET_FPS editor operation to this run's timeline. Params match the SET_FPS entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_image_compositing

ChatGPT
Apply the SET_IMAGE_COMPOSITING editor operation to this run's timeline. Params match the SET_IMAGE_COMPOSITING entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_set_media_folder

ChatGPT
Organise the media library into folders (shared with the web Media panel). params {mediaIds:[...], folder: name or null for the top level}. Folders are created on use; media and the timeline are unchanged.

layz_editor_set_media_info

ChatGPT
Label, describe and tag library items so they are easy to find later, and store a known tempo. params {mediaIds, label?, description?, tags?:[...] (replaces), addTags?:[...], bpm?:30..300, beatOffset?:seconds of the first downbeat}; null clears a field. Metadata only. The values appear on each mediaLibrary item in editor context.

layz_editor_set_watermark

ChatGPT
Brand the video with a logo watermark: places (or updates) one image layer on a top 'Watermark' track spanning the whole edit. params {mediaId (image already in the media library; import with layz_import_image), position?:top-left|top-right|bottom-left|bottom-right|center=bottom-right, size?:0.03..0.5 of frame width=0.12, opacity?:0.05..1=0.7, margin?:0..0.2 of frame width=0.04}. Omitted values keep the current watermark's settings. Re-run after the edit length changes.

layz_editor_slip_element

ChatGPT
Apply the SLIP_ELEMENT editor operation to this run's timeline. Params match the SLIP_ELEMENT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_split_element

ChatGPT
Apply the SPLIT_ELEMENT editor operation to this run's timeline. Params match the SPLIT_ELEMENT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_split_keep_left

ChatGPT
Split a clip at a timeline time and discard the right side, keeping only the left portion. This permanently removes the right segment from the timeline. Requires runId plus trackId, elementId and time in params.

layz_editor_split_keep_right

ChatGPT
Split a clip at a timeline time and discard the left side, keeping only the right portion. This permanently removes the left segment from the timeline. Requires runId plus trackId, elementId and time in params.

layz_editor_style_all_captions

ChatGPT
Apply the STYLE_ALL_CAPTIONS editor operation to this run's timeline. Params match the STYLE_ALL_CAPTIONS entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_switch_sequence

ChatGPT
Open another timeline of this project. params {sequenceId or name}. The current timeline is stored first; later edits and exports apply to the opened one. UNDO_LAST_CHANGE reverses the switch.

layz_editor_sync_at_points

ChatGPT
Line up 2-6 clips on a shared moment you can see or hear (a clap, slate, flash or word) and link them, e.g. camera + external audio. params {elements:[{trackId, elementId, point}] (point = seconds from that clip's start on the timeline; the first clip stays put), link?:false}. Use MULTICAM_SYNC to find the offset from the audio automatically.

layz_editor_sync_cuts_to_beats

ChatGPT
Re-time the media clips on one track so every cut lands on a beat of the music (montage / music-video editing; works for video and image clips). params {trackId (clips to retime), musicTrackId + musicElementId (analysed) or beats:[timeline seconds] from DETECT_BEATS, beatsPerCut?:1..16=1, startTime?}. Clips keep their order and source in-points, start on a beat and last beatsPerCut beats (fewer when the source is too short; images stretch). Only that track moves. Tracks with detached linked audio are rejected. One undoable step.

layz_editor_translate_captions

ChatGPT
Translate the timeline captions you have read from layz_get_editor_context (translate the text yourself). params {language, translations:[{elementId, text}], mode?:replace|add-track=replace, trackId?}. replace keeps timing and style and stores the originals (REVERT_CAPTION_TRANSLATION restores them); add-track adds a second caption track above for bilingual captions. Word-by-word highlighting is dropped on translated captions because word timings no longer apply. Keep each translation about as long as the original so it fits on screen.

layz_editor_trim_element

ChatGPT
Apply the TRIM_ELEMENT editor operation to this run's timeline. Params match the TRIM_ELEMENT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_undo_last_change

ChatGPT
Undo the most recent MCP edit batch for this run (one batch = one step, up to 20 steps). Send alone with params {}. Refused when the project changed afterwards, for example in the web editor, so later work is never discarded; undo those changes where they were made. layz_get_editor_context lists history.undo/redo labels.

layz_editor_unmask_words

ChatGPT
Restore masked words: voice volume, captions and bleeps. params {query or queries} for specific words, or {all:true}.

layz_editor_unmute_element

ChatGPT
Apply the UNMUTE_ELEMENT editor operation to this run's timeline. Params match the UNMUTE_ELEMENT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_unmute_track

ChatGPT
Apply the UNMUTE_TRACK editor operation to this run's timeline. Params match the UNMUTE_TRACK entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_update_all_text_style

ChatGPT
Apply the UPDATE_ALL_TEXT_STYLE editor operation to this run's timeline. Params match the UPDATE_ALL_TEXT_STYLE entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_update_effect_params

ChatGPT
Apply the UPDATE_EFFECT_PARAMS editor operation to this run's timeline. Params match the UPDATE_EFFECT_PARAMS entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_update_keyframe

ChatGPT
Apply the UPDATE_KEYFRAME editor operation to this run's timeline. Params match the UPDATE_KEYFRAME entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_update_marker

ChatGPT
Edit a timeline marker. params {markerId (or time), newTime?, label?, color?, note?, duration?}. Omitted fields keep their values; an empty note or duration 0 clears it.

layz_editor_update_motion_graphic

ChatGPT
Apply the UPDATE_MOTION_GRAPHIC editor operation to this run's timeline. Params match the UPDATE_MOTION_GRAPHIC entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_update_sticker_color

ChatGPT
Apply the UPDATE_STICKER_COLOR editor operation to this run's timeline. Params match the UPDATE_STICKER_COLOR entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_update_text_animation

ChatGPT
Apply the UPDATE_TEXT_ANIMATION editor operation to this run's timeline. Params match the UPDATE_TEXT_ANIMATION entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_update_text_content

ChatGPT
Apply the UPDATE_TEXT_CONTENT editor operation to this run's timeline. Params match the UPDATE_TEXT_CONTENT entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_update_text_position

ChatGPT
Apply the UPDATE_TEXT_POSITION editor operation to this run's timeline. Params match the UPDATE_TEXT_POSITION entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_update_text_style

ChatGPT
Apply the UPDATE_TEXT_STYLE editor operation to this run's timeline. Params match the UPDATE_TEXT_STYLE entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_update_transition_params

ChatGPT
Apply the UPDATE_TRANSITION_PARAMS editor operation to this run's timeline. Params match the UPDATE_TRANSITION_PARAMS entry in layz_get_capabilities. Target trackId/elementId/mediaId from layz_get_editor_context. For several known edits in one save, use layz_apply_editor_commands with the same type values.

layz_editor_wait_for_completion

ChatGPT
Pause until the web editor UI signals completion of an interactive step. Preview/UI only: it does not edit the timeline or start an export. Prefer layz_wait_for_processing for real async render/pipeline jobs.

layz_enhance_media

ChatGPT
Upscale, denoise, sharpen and restore. Pass urls (downloaded first), sourceFileIds, or runId to continue from a prior step such as layz_remove_text. Check the result against the original with layz_contact_sheet (fileId original, compareFileId enhanced) before using it.

layz_export_subtitles

ChatGPT
Read saved visible timeline captions as SRT or WebVTT text, using actual edited timing. Returns filename and text content for the connected client to save. No video render or additional transcription is performed. Choose trackId if several caption tracks are visible. Plain subtitles preserve words and cue times, not fonts, colors, animation or WebVTT positioning.

layz_export_timeline

ChatGPT
Hand the saved timeline to Final Cut Pro, DaVinci Resolve or Premiere Pro. format:fcpxml returns FCPXML 1.10 with the primary storyline, gaps, connected video/audio lanes, plain titles, speed changes, clip volume and named markers. format:edl returns a CMX3600 EDL of one track (default main video, or trackId) with source/record timecode, M2 speed lines and marker LOC comments. Read-only: returns filename and text content for the client to save; no render. Media paths use mediaBaseUrl (an absolute folder URL) or a placeholder folder to relink. Effects, transitions, masks, keyframes and caption styling are not carried; warnings[] lists anything omitted.

layz_export_video

ChatGPT
Render and export the finished video from the headless timeline. Starts an async render; poll with layz_wait_for_processing (kind 'export'), then review the export (watch/listen if your client can; otherwise layz_contact_sheet with the export fileId, compareFileId against the timeline, and layz_inspect_audio for the mix) and hand the user the link. For Commentary videos, include the saved publicationTitle separately in the same user-facing message as the export link and project link when available; if missing, save a compliant title and read it back with layz_get_script_brief before delivery.

layz_generate_voiceover

ChatGPT
Generate voiceover using the chosen template voice. If the user supplies their own voiceover file, use layz_import_user_file with purpose voiceover instead. New Commentary runs must choose automatic or guided first. Guided mode requires explicit human approval of this exact current saved script via layz_approve_script; changed or override text cannot reuse older approval. Automatic mode does not ask for routine approval.

layz_get_capabilities

ChatGPT
Read-only inventory of this MCP server's already-exposed editor tools (each layz_editor_ operation), web parity notes, transitions, motion graphics, source discovery and searchable sticker/SFX catalogs. It does not execute edits or hidden operations. Use before planning unfamiliar edits; call the matching layz_editor_ tool (or batch via layz_apply_editor_commands) to change the timeline.

layz_get_current_step

ChatGPT
Get detailed current-module guidance and editor recipe. Official Commentary uses current creative instructions with explicit pinned/effective revision metadata while preserving the run graph, execution settings and saved choices. Personal templates keep their own instructions; unavailable unpinned configuration is marked as fallback.

layz_get_edit_session

ChatGPT
Status of this run's edit session: drafting (with the draft's timeline context), pending-review, applied, rejected or discarded. When the user applied a manual proposal, this reloads the live project so later edits build on it.

layz_get_editor_context

ChatGPT
Read-only snapshot of the saved project/workflow timeline, media library, availableProjectMedia, sync revision, styling and motion. It does not execute edits. Use layz_open_editor_project first for an existing web project. Place unused uploads with layz_import_project_media, then edit via the matching layz_editor_* tool or a batch through layz_apply_editor_commands. Default full returns all detail without pagination caps; compact returns concise IDs/timing and up to 50 items per collection with explicit continuation. Use scope/page for targeted reads; follow nextPage with expectedRevision to avoid mixing revisions.

layz_get_run

ChatGPT
Check a workflow run's status and files. Optionally waits up to waitSeconds (default 55). Returns done, eta when still running, and view/download/workflow links. Use layz_show_run to display the player panel.

layz_get_script_brief

ChatGPT
Read this template's prompt, reference scripts and saved direct footage observations so YOU write the script. Commentary excludes legacy analyzer output. Commentary-specific style and ending guidance is returned only for templates that enable it. Does not generate or charge for a server script. Save your script with layz_set_script.

layz_get_source_discovery_brief

ChatGPT
Read stored reference URL, source candidates, evidence and a practical connected-AI research workflow. The connected AI does the research and script writing.

layz_get_status

ChatGPT
Get the current status, step and live link for a run.

layz_go_to_step

ChatGPT
Move to a specific step index (0-based).

layz_import_image

ChatGPT
Upload a generated or user-provided PNG/JPEG/WebP into this owned workflow's temporary media library and sync it to the web editor. Accepts base64 or a base64 data URL up to 6 MiB decoded, preserving transparency. No API key, server login or direct database access is needed. It does not place the image on the timeline: use the returned mediaId with ADD_MEDIA_TO_TIMELINE, then normal transforms/keyframes. Web users can upload the same file through Media. For external image generation, use your own available image tool first; this tool does not generate or remove backgrounds.

layz_import_project_media

ChatGPT
Lazily import one mediaId from the owned project's availableProjectMedia inventory into its temporary MCP editor library. Provide runId from layz_open_editor_project or projectId; at least one is required, and both must identify the same project when supplied together. Save pending browser edits first. Keeps the original mediaId, reuses previous imports and existing permanent cloud assets, and does not add anything to the timeline. Use layz_editor_add_media_to_timeline explicitly afterward. Source download URLs remain internal.

layz_inspect_audio

ChatGPT
For agents that cannot listen (and a quick check for those that can): returns a time-labelled waveform image of a run audio or video file (voiceover, music, source or completed export) plus loudness per half second, silent stretches, the loudest moments and integrated loudness/true peak, all computed on the layZ server. transcribe true adds a word-timed transcript (up to 15 minutes) to check that narration says what the script says and where each word lands. Use it to find dead air, clipping, a too-quiet voice, music drowning narration in an export, or where a beat hits. This is measurement, not listening: report it as such.

layz_list_exports

ChatGPT
Export history for the run's editor project: each completed export's jobId, fileId, format, resolution, duration, creation and expiry time, newest first. Review an export with layz_view_video_frames (fileId) and layz_measure_audio before delivering it. Read-only.

layz_list_projects

ChatGPT
The user's saved web editor projects, newest first: projectId, name, last update, canvas size and fps. Open one with layz_open_editor_project. Read-only.

layz_list_recent_files

ChatGPT
List recent video files across the user's workflow runs so you can reuse them with sourceFileIds (no re-download). Use when they say 'the video I uploaded earlier' or 'clean that last download'.

layz_list_run_files

ChatGPT
List the files in a run (uploads, downloads, cleaned videos). Poll this after layz_request_upload until a video appears, then continue with that runId.

layz_list_runs

ChatGPT
List the user's recent workflow runs.

layz_list_templates

ChatGPT
List the video workflow templates that can be run via MCP: layZ's guided prebuilt workflows plus the user's own templates.

layz_list_voices

ChatGPT
List available AI voices for the voiceover step.

layz_measure_audio

ChatGPT
Measure integrated LUFS, loudness range (LU), true peak (dBTP), sample peak (dBFS) and decoded audio duration for an owned, unexpired workflow audio/video file or completed export. Read-only: no gain changes and no claim of listening. First audio stream only; up to 30 minutes and 512 MiB. Uses one bounded audio-only scan with a short result cache; retry shortly if busy. For a waveform picture, silences and a word-timed transcript use layz_inspect_audio.

layz_open_editor_project

ChatGPT
Open an existing owned web editor project by its projectId (from the editor URL or copied project context). Reuses its active workflow or creates one temporary editor session, preserving the original cloud project ID and revision. Reads the saved timeline and lists all saved project media. Only timeline-referenced source bytes are imported automatically; use layz_import_project_media to lazily import another listed upload. Does not change the cloud timeline or create permanent media copies. Save pending browser changes first. Use the returned runId with editor tools, context, graphics, captions and export tools.

layz_plan_workflow

ChatGPT
Work out which layZ modules a request needs, without running anything. Use it when you want to confirm the chain with the user first.

layz_probe_media

ChatGPT
Technical details and timeline usage for one editor media item: type, duration, resolution, frame rate, video codec, pixel format, audio presence and channels, file size, and every timeline clip that uses it (track/element IDs, timeline and source ranges). Read-only. Use before replacing media, choosing an export frame rate or checking whether a source is still used. For pictures, use layz_view_video_frames with the item's fileId.

layz_remove_text

ChatGPT
Strip burned-in captions, subtitles, watermarks and logos. Pass urls (downloaded first), sourceFileIds, or runId to continue from a prior step. For a follow-up enhance, call layz_enhance_media with this runId. Check the result against the original with layz_contact_sheet (fileId original, compareFileId cleaned).

layz_repair_media

ChatGPT
Make an owned workflow video browser-playable while copying its picture stream unchanged. Defaults to re-encoding audio as AAC; remove audio only with explicit copy-video-drop-audio. Preserves the original and returns a new run file. Use after a real decode failure, then inspect and reimport the result.

layz_request_upload

ChatGPT
When the user has a local file you cannot pass directly (no public URL, and no chat attachment you can hand to layz_import_user_file). purpose picks what it is: source-video (default), voiceover (their own narration instead of generated voice), audio (music or other sound for the editor) or image. Returns (1) uploadUrl — a one-click upload page that accepts that file type and (2) workflowUrl — the full run page. Give BOTH links to the user. Pass runId to upload into an existing run (required for voiceover, audio and image); otherwise a new source-video run is created. Poll layz_list_run_files until the file appears. For voiceover, audio and image, then call layz_import_user_file with that fileId and purpose to put it to use.

layz_review_edit_session

ChatGPT
Finish the draft. manual: syncs any new media and shows the user a 'Review AI changes' proposal with a change summary in the web editor; poll layz_get_edit_session for applied or rejected and do not claim the edit is applied before then. auto: applies the whole draft to the live project now (one undo step) and syncs it.

layz_search_fonts

ChatGPT
List the fonts the layZ preview and export renderers support (the same list as the web font picker), optionally filtered by name, with whether a bold weight is available and which built-in text designs use each font. Use the exact name as fontFamily in ADD_TEXT, UPDATE_TEXT_STYLE or caption styles. Read-only.

layz_search_sound_effects

ChatGPT
Search the same curated sound library available to web users, including short accents, whooshes, impacts and ambience. Inspect duration and editHints, then preview and inspect the actual source. Catalog hints are not verified timing: an early detected hit may not be a riser climax. Measure or listen to the intended onset/peak with trim-aware timing before aligning it to a meaningful beat. Measurements alone do not verify listening. Place with layz_editor_add_sound_effect {params:{soundId,...}}. Shape its tail with layz_editor_set_audio_fades or layz_editor_set_audio_envelope; layz_editor_duck_audio dips a music/SFX clip under explicit narration intervals. Vary the palette and cue count to fit each story; protect voice intelligibility.

layz_search_stickers

ChatGPT
Discover the web editor's built-in layZ stickers and Iconify icon/emoji catalog. Returns exact IDs, previews and available palette/proportions. Place with layz_editor_add_sticker {params:{iconName:id,...}}.

layz_set_script

ChatGPT
Overwrite the saved narration script for this run with the original script YOU (the connected AI) wrote from layz_get_script_brief and the footage. Replaces any previously saved script text. In guided Commentary, changing the script also revokes prior human approval until layz_approve_script is called again. No server script model or script credits are used. The workflow page and voiceover step pick up the new text.

layz_set_script_brief

ChatGPT
Save the explicit automatic/guided assistance choice, story structure, tone, target duration, angle, verified context and things to avoid in the same brief shown on the web script step. Partial fields merge with saved choices. Does not generate a script, overwrite an approved script or charge credits.

layz_set_source_discovery

ChatGPT
Save commentary reference intake and source-search provenance. Verified matches require frame timestamp evidence or an explicit user-provided original. Replaces the entire saved discovery record (prior unverified candidates are lost unless included again), so preserve candidates still relevant.

layz_set_step_data

ChatGPT
Persist data onto a step (defaults to the current node). Overwrites matching keys on that step and can revoke guided script approval when script fields change or scriptApproval is cleared. scriptApproval:null may revoke consent; only layz_approve_script can record actual human approval. Save commentaryReview on the video-editor node for durable per-export verified/unverified/failed QA and human handoff; read productionWorkflow.reviewRecord for the schema. Overall review status is derived from evidence scopes.

layz_show_run

ChatGPT
Put the layZ panel for a run in the chat: a player for every file, Open and Download buttons, and an Open workflow button. Call it once when a run finishes (after layz_get_run reports done: true) or whenever the user asks to see or play the result. Returns immediately; it does not wait.

layz_skip_step

ChatGPT
Skip an optional module without marking it complete.

layz_start_workflow

ChatGPT
Create a new run for a template and return the first step plus a link the user can open to watch progress.

layz_view_video_frames

ChatGPT
Inspect source footage or a completed export: returns JPEG frames from an unexpired video belonging to this run at exact or evenly spaced timestamps. Pass the export fileId to review rendered captions, graphics and cuts. Defaults to the first source video; inspecting an export never adds it to the timeline. Frames do not provide audio listening. For an overview in one image, a before/after comparison, or the unexported edit, use layz_contact_sheet; for audio, layz_inspect_audio.

layz_wait_for_processing

ChatGPT
Wait for an async job to progress, then return its status. Call again if not done. An explicit kind 'export' polls the saved export job even while another pipeline is running. Without an export job, a run started by layz_download_media, layz_remove_text or layz_enhance_media waits on that pipeline. Processing may take several calls before done is true.

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

Similar Apps