{"id":2,"jsonrpc":"2.0","result":{"tools":[{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Inspect the owned local cache, entry identities, logical and physical sizes without generating media.","inputSchema":{"additionalProperties":false,"properties":{"cache_root":{"description":"Local cache directory used by cache.run","type":"string"}},"required":[],"type":"object"},"name":"cutbolt_cache_inspect"},{"annotations":{"idempotentHint":true,"openWorldHint":false},"description":"Evict least-recently-used derived cache entries to explicit byte/count budgets; source media and exported files are not removed.","inputSchema":{"$defs":{"Policy":{"additionalProperties":false,"description":"Cache budget; least recently used entries are evicted until both limits hold. Results over the budget are produced but not stored.","properties":{"max_bytes":{"description":"Maximum total payload bytes, 0 to 1073741824 (1 GiB); database overhead is extra.","minimum":0,"type":"integer"},"max_entries":{"description":"Maximum number of entries, 0 to 4096.","minimum":0,"type":"integer"}},"required":["max_bytes","max_entries"],"type":"object"}},"additionalProperties":false,"properties":{"cache_root":{"description":"Local cache directory used by cache.run","type":"string"},"policy":{"$ref":"#/$defs/Policy","description":"Byte and entry budgets; least-recently-used derived entries are evicted until both are met."}},"required":["policy"],"type":"object"},"name":"cutbolt_cache_prune"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Return the JSON Schema for one command's arguments, including CLI-only commands, or for a shared type that tool listings abbreviate: project, operation, scene, template, audio_routing, transcript or captions. Large schemas come back as an outline of variants and definitions; pass select (for example operation + clip.append, or scene + Layer) for one part with everything it references. Read-only.","inputSchema":{"additionalProperties":false,"properties":{"full":{"default":false,"description":"Return the whole schema even when it is large","type":"boolean"},"name":{"description":"A command such as `scene.render` or its MCP tool name, or a shared type: `project`, `operation`, `scene`, `template`, `audio_routing`, `transcript` or `captions`.","type":"string"},"select":{"description":"One part to return: a variant tag such as `clip.append`, or a definition name such as `Layer`","type":["string","null"]}},"required":["name"],"type":"object"},"name":"cutbolt_schema"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"description":"Start a saved project at revision 0, from id/width/height/frame_rate or from a full snapshot. store_root must be an existing local directory. Retry with the same request_id and arguments to retrieve the original receipt.","inputSchema":{"$defs":{"Time":{"description":"Exact seconds: 2.5, \"5/2\", or {num,den}.","type":["number","string","object"]}},"additionalProperties":false,"properties":{"frame_rate":{"anyOf":[{"$ref":"#/$defs/Time"},{"type":"null"}],"description":"New empty project frame rate, for example 25 or \"30000/1001\"."},"height":{"description":"New empty project frame height in pixels, 1-8192.","minimum":0,"type":["integer","null"]},"id":{"description":"New empty project ID, 1-128 bytes","type":["string","null"]},"project":{"anyOf":[{"description":"Versioned project snapshot: canvas, frame rate, media and either a sequential clip list or native tracks. Returned by project.create and session.get; change it only through operations. Abbreviated; cutbolt_schema {\"name\":\"project\"} returns it.","type":"object"},{"type":"null"}],"description":"Valid snapshot saved as revision 0 of a new project"},"request_id":{"description":"Caller-chosen ID for this change, 1-128 bytes, unique within the project. Resend identical arguments with it to retry safely.","type":"string"},"store_root":{"description":"Existing local directory holding the session database (projects.sqlite3)","type":"string"},"width":{"description":"New empty project frame width in pixels, 1-8192.","minimum":0,"type":["integer","null"]}},"required":["request_id"],"type":"object"},"name":"cutbolt_session_create"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Read the saved head or a chosen immutable revision. Returns the full project. Get the head before editing; use a receipt revision for rendering.","inputSchema":{"additionalProperties":false,"properties":{"project_id":{"description":"ID of a project saved in store_root.","type":"string"},"revision":{"description":"Saved revision to read","minimum":0,"type":["integer","null"]},"save_as":{"description":"Write the result to this new workspace .json file and return a summary","type":"string"},"store_root":{"description":"Existing local directory holding the session database (projects.sqlite3)","type":"string"}},"required":["project_id"],"type":"object"},"name":"cutbolt_session_get"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"description":"Commit an atomic editing batch against expected_revision. Reuse request_id only with identical arguments after a lost response. On REVISION_CONFLICT read and reconsider; returns a receipt with semantic changes.","inputSchema":{"additionalProperties":false,"properties":{"expected_revision":{"description":"Head revision this change was prepared against; a different head fails with REVISION_CONFLICT.","minimum":0,"type":"integer"},"operations":{"description":"Editing operations applied in order as one atomic batch; any failure commits nothing.","items":{"description":"One edit in an atomic timeline.apply or session.apply batch, tagged by `op`; each must leave a valid project. The clip.* operations and timeline.ripple_delete edit the sequential `clips` list and are rejected once native tracks exist. Abbreviated; cutbolt_schema {\"name\":\"operation\"} returns it.","properties":{"op":{"description":"Variant tag; cutbolt_schema with select returns a variant's fields.","enum":["media.paths","transcript.cut","multicam.create","multicam.edit","sequence.create","sequence.edit","sequence.remove","tracks.edit","media.proxy.attach","media.proxy.detach","media.proxy.relink","preview.proxy","project.transfer","media.add","media.index","media.metadata","media.bind","media.relink","clip.append","clip.split","clip.trim","clip.remove","clip.move","clip.insert","clip.overwrite","timeline.ripple_delete","clip.slip","clip.roll","clip.slide"],"type":"string"}},"required":["op"],"type":"object"},"type":"array"},"project_id":{"description":"ID of a project saved in store_root.","type":"string"},"request_id":{"description":"Caller-chosen ID for this change, 1-128 bytes, unique within the project. Resend identical arguments with it to retry safely.","type":"string"},"store_root":{"description":"Existing local directory holding the session database (projects.sqlite3)","type":"string"}},"required":["project_id","request_id","expected_revision","operations"],"type":"object"},"name":"cutbolt_session_apply"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"description":"Undo the latest applied state as a new revision, preserving history. Repeated undo walks backward. Retry with identical request_id/expected_revision.","inputSchema":{"additionalProperties":false,"properties":{"expected_revision":{"description":"Head revision this change was prepared against; a different head fails with REVISION_CONFLICT.","minimum":0,"type":"integer"},"project_id":{"description":"ID of a project saved in store_root.","type":"string"},"request_id":{"description":"Caller-chosen ID for this change, 1-128 bytes, unique within the project. Resend identical arguments with it to retry safely.","type":"string"},"store_root":{"description":"Existing local directory holding the session database (projects.sqlite3)","type":"string"}},"required":["project_id","request_id","expected_revision"],"type":"object"},"name":"cutbolt_session_undo"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Look up whether a request ID was committed, without resending its arguments. Returns the original receipt, or REQUEST_NOT_FOUND if it never took effect. Use after a lost response or restart before deciding to retry.","inputSchema":{"additionalProperties":false,"properties":{"project_id":{"description":"ID of a project saved in store_root.","type":"string"},"request_id":{"description":"Request ID of the change to look up.","type":"string"},"store_root":{"description":"Existing local directory holding the session database (projects.sqlite3)","type":"string"}},"required":["project_id","request_id"],"type":"object"},"name":"cutbolt_session_receipt"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Read newest-first revision summaries. limit defaults to 50 (1-200). Pass next_before_revision as before_revision for the next page; null means finished.","inputSchema":{"additionalProperties":false,"properties":{"before_revision":{"description":"Return entries older than this revision","minimum":0,"type":["integer","null"]},"limit":{"default":50,"description":"Maximum entries to return, 1-200","maximum":65535,"minimum":0,"type":"integer"},"project_id":{"description":"ID of a project saved in store_root.","type":"string"},"store_root":{"description":"Existing local directory holding the session database (projects.sqlite3)","type":"string"}},"required":["project_id"],"type":"object"},"name":"cutbolt_session_history"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"description":"Read saved state, frame progress, attempt history and completion/error receipt. An exited worker triggers checked publication reconciliation or an opted-in retry within its saved limit. This can update internal job metadata but does not start a worker.","inputSchema":{"additionalProperties":false,"properties":{"detail":{"description":"summary, the default, shortens bulky parts (timing runs to one line per layer, lists to counts) and names them in the...","enum":["summary","full"],"type":"string"},"job_id":{"description":"Job ID from the render.start ticket.","type":"string"},"job_root":{"description":"Job queue directory used with render.start","type":"string"}},"required":["job_id"],"type":"object"},"name":"cutbolt_job_status"},{"annotations":{"idempotentHint":true,"openWorldHint":false},"description":"Request cancellation of a queued/running job without deleting final output. Poll until cancelled or completed; publication can win a simultaneous cancellation. Safe to repeat for the same job.","inputSchema":{"additionalProperties":false,"properties":{"job_id":{"description":"Job ID from the render.start ticket.","type":"string"},"job_root":{"description":"Job queue directory used with render.start","type":"string"}},"required":["job_id"],"type":"object"},"name":"cutbolt_job_cancel"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"description":"Reconcile saved publication and wake the queue worker to drain queued jobs, including explicitly opted-in interrupted retries within their saved attempt limit. Completed, cancelled and exhausted jobs are not rerun.","inputSchema":{"additionalProperties":false,"properties":{"job_root":{"description":"Job queue directory used with render.start","type":"string"}},"required":[],"type":"object"},"name":"cutbolt_job_resume"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"description":"Queue a long-running command in the background and return a durable ticket: export.run (H.264/AAC or lossless delivery), export.review (a review folder for a rendered cut), captions.render (a whole caption track as one transparent overlay), graphics.place (instantiate, compile and attach a graphic in one saved edit), media.transcribe (a whole file's speech into transcripts, or a known script aligned to it), media.prepare (any camera or phone file to a timeline asset, optionally for a project's rate and size), media.conform, scene.render, audio.render, audio.repair.render, hdr.conform, image.sequence.compile, proxy.generate, preview.range, cache.run or transcript.transcribe. Arguments are prepared and validated now. Follow with job.wait or job.status; the result holds the command's receipt. Independent jobs run at once, so queue several, then wait for them all with one job.wait job_ids; job.cancel stops one.","inputSchema":{"additionalProperties":false,"properties":{"arguments":{"additionalProperties":true,"description":"That command's arguments exactly as for a direct call, without `command`; cutbolt_schema with its name gives the schema.","type":"object"},"job_root":{"description":"Existing local directory holding the job queue (jobs.sqlite3)","type":"string"},"request_id":{"description":"Caller-chosen ID unique within job_root, 1-128 bytes. An identical resubmission returns the original ticket.","type":"string"},"run":{"description":"Command to run in the background: graphics.place, export.run, export.review, captions.render, media.prepare, media.transcribe, media.conform, scene.render, audio.render, audio.repair.render, hdr.conform, image.sequence.compile, proxy.generate, preview.range, cache.run or transcript.transcribe.","type":"string"}},"required":["request_id","run","arguments"],"type":"object"},"name":"cutbolt_job_start"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"description":"Wait up to timeout_seconds (default 30, at most 120) for a queued or running job to finish, then return its status, progress and result, with finished true or false. With job_ids, wait for several jobs in one call, until all (default) or any have finished: the result counts jobs by status and lists each job's receipt, error or progress. Receipts are summaries unless detail is full.","inputSchema":{"$defs":{"Until":{"description":"When a wait for several jobs returns: once `all` have finished, or as soon as `any` has.","enum":["all","any"],"type":"string"}},"additionalProperties":false,"properties":{"detail":{"description":"summary, the default, shortens bulky parts (timing runs to one line per layer, lists to counts) and names them in the...","enum":["summary","full"],"type":"string"},"job_id":{"description":"Job ID from the ticket","type":["string","null"]},"job_ids":{"description":"Several job IDs, up to 64, to wait for in one call","items":{"type":"string"},"type":["array","null"]},"job_root":{"description":"Job queue directory used with render.start or job.start","type":"string"},"save_as":{"description":"Write the result to this new workspace .json file and return a summary","type":"string"},"timeout_seconds":{"description":"Longest wait in seconds, 1 to 120","minimum":0,"type":["integer","null"]},"until":{"anyOf":[{"$ref":"#/$defs/Until"},{"type":"null"}],"description":"With job_ids: return once all of them have finished (default) or as soon as any has."}},"required":[],"type":"object"},"name":"cutbolt_job_wait"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Find likely mistakes without rendering: flash frames, out-of-sync picture and sound, jump cuts, black or silent stretches, disabled-track clips, unused assets, missing or changed media (with input_root) and words cut by clip edges (with transcripts). Returns a text summary and findings; ok means no warnings or errors. Read-only.","inputSchema":{"$defs":{"Time":{"description":"Exact seconds: 2.5, \"5/2\", or {num,den}.","type":["number","string","object"]}},"additionalProperties":false,"properties":{"input_root":{"description":"Existing directory that project media paths resolve against","type":["string","null"]},"jump_window":{"anyOf":[{"$ref":"#/$defs/Time"},{"type":"null"}],"description":"A cut between touching clips of one source that skips or repeats less than this is a jump cut"},"min_clip_frames":{"description":"Shorter picture clips are flash frames, 1-100 frames","minimum":0,"type":["integer","null"]},"project":{"description":"Project to check. A full snapshot (cutbolt_schema {\"name\":\"project\"}), or {\"project_id\", \"revision\"} to load a saved revision (default the head; store_root defaults to the workspace store).","type":"object"},"transcripts":{"default":[],"description":"Transcripts of the source media, as for timeline.outline","items":{"description":"Content-bound transcript of one source range; returned by transcript.transcribe and edited by transcript.correct. Abbreviated; cutbolt_schema {\"name\":\"transcript\"} returns it.","type":"object"},"type":"array"}},"required":["project"],"type":"object"},"name":"cutbolt_timeline_check"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"List files and folders under input_root (the workspace by default), sorted, with sizes and paths relative to it, optionally recursive and filtered by extension; engine state folders are skipped. Read-only.","inputSchema":{"additionalProperties":false,"properties":{"dir":{"description":"Relative folder inside input_root to list","type":["string","null"]},"extensions":{"default":[],"description":"Only files with these extensions, such as `[\"mkv\", \"mp4\", \"wav\"]`","items":{"type":"string"},"type":"array"},"input_root":{"description":"Existing directory to list","type":"string"},"limit":{"description":"Most entries to return, 1-1000","format":"uint","minimum":0,"type":["integer","null"]},"recursive":{"default":false,"description":"Also list files in every subfolder","type":"boolean"}},"required":[],"type":"object"},"name":"cutbolt_files_list"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Probe a local source inside an explicit input_root. Returns its content identity (path relative to input_root, SHA-256, bytes), stream metadata and `timeline`: whether the file can go on a timeline as it is, with its exact frame rate, frames, rational duration and a media.add-ready asset, or the reasons it cannot and, for video, a media.conform recipe and output to run with job.start. A source longer than media.conform's 45000 output frames gets a reason instead of a shortened recipe.","inputSchema":{"additionalProperties":false,"properties":{"input_root":{"description":"Existing directory","type":"string"},"path":{"description":"Path of the file to probe; it must lie inside input_root.","type":"string"}},"required":["path"],"type":"object"},"name":"cutbolt_media_inspect"},{"annotations":{"destructiveHint":false,"openWorldHint":false},"description":"Run a command from the enum with its usual arguments. Prefer direct tools when listed. Routed commands never delete files or cancel jobs; use direct job.cancel/cache.prune. Long-running work uses job.start. cutbolt_schema returns complete arguments.\nEditing: project, timeline, sessions and transcript assembly.\nMedia: source images, registry, proxy, conform and synchronization inspection.\nGraphics: scenes, templates, installed fonts, captions, effects, tracking and stabilization.\nAudio: levels, loudness, pause/filler edits, routing and recording inspection.\nDelivery: render/export planning, interchange, portability and backups.","inputSchema":{"additionalProperties":false,"properties":{"arguments":{"description":"The command's arguments, without command; default none.","type":"object"},"command":{"description":"Command to run.","enum":["native.import","project.portable","session.check","session.migrate","session.backup","session.recover","interchange.import","interchange.export.inspect","interchange.export","preview.sheet","preview.cuts","audio.normalize","audio.tighten","color.match","audio.beats","audio.duck","media.sheet","media.shots","transcript.inspect","transcript.correct","transcript.plan","audio.inputs","audio.record.inspect","audio.record.place","audio.repair.inspect","stabilization.inspect","reframe.inspect","tracking.inspect","sync.inspect","hdr.inspect","lut.inspect","scopes.inspect","export.inspect","effects.preset","captions.import","captions.inspect","captions.apply","captions.encode","captions.export","transcript.assemble","transcript.fillers","captions.draft","captions.scene","graphics.instantiate","templates.list","fonts.find","proxy.status","proxy.relink","media.conform.inspect","audio.inspect","registry.search","registry.status","registry.bind","registry.relink","image.sequence.inspect","expression.inspect","scene.inspect","scene.still","preview.frame","capabilities","project.create","project.validate","timeline.apply","session.restore","session.preview","render.start","timeline.meters","timeline.outline","render.plan"],"type":"string"}},"required":["command"],"type":"object"},"name":"cutbolt_run"}]}}
