MCP server

Kestroll MCP tools

Let your AI agent create viral social content in minutes. 27 tools, 139 actions.

Get Asset Data

get_asset_data
Read-only

Look up what Kestroll knows about one asset by its absolute path: metadata, summary, people, timeline segments with transcript excerpts, document pages, face appearances, tracked people, audio levels, and cached visual Q&A. Use it once you know the asset; use search to find assets. Request only the fields you need — a full timeline on an asset over ~5 minutes overflows, so window it with start_time/end_time. frame_at and view_image return actual frames or images inline. Every timestamp is source-asset time, not composition time. For who is speaking or on screen, use inspect_speakers rather than question. Read-only.

Parameters14
absolute_pathstringrequired
The absolute file path of the asset (e.g., '/Folder/Subfolder/image.jpg')
fieldsstring[]
Fields to return: 'summary'; 'file_metadata' (size, dimensions, duration, fps, probed codecs/timecode/container tags, local_system_absolute_path, and motion_graphic: {source_code, props, images, fonts} for a motion graphic); 'processing_status'; 'people' (who is in it, with slugs); 'tracked_people' (face tracks — pass a person_slug to composition track_person); 'face_appearances' (when each named person is on screen, as merged runs); 'timeline' (segments, see timeline_fields); 'question_answers' (cached Q&A); 'pages' (document pages, see page_fields); 'asset_relationships' (groupings such as timeline_sync — see docs editing/cross_recording_timestamps.md); 'audio_levels' (RMS/peak dBFS of the mixed source audio per bucket); 'songs' (recognised music with title and artist); 'custom_metadata' (the organization's own fields). face_appearances, audio_levels and songs honor start_time/end_time. For audio_levels and songs, available: false means not measured — not silence or no music.summaryfile_metadataprocessing_statuspeopletracked_peopleface_appearancestimelinequestion_answerspagesasset_relationshipsaudio_levelssongscustom_metadata
timeline_fieldsstring[]
Sub-fields per timeline segment (default: summary only): 'summary', 'detailed_description', 'tags', 'transcript_excerpt', 'scene_layouts' (per-scene layout with who is on screen and where: 'single' = clean cut-in, 'split_lr'/'split_tb' = two-shot, avoid cutting mid-exchange, 'group', 'broll' = no person, covers transitions; speaker turns are included only when requested without transcript_excerpt). scene_layouts and detailed_description are heavy — window long assets.summarydetailed_descriptiontagstranscript_excerptscene_layouts
page_fieldsstring[]
Sub-fields to include for each document page. Options: 'summary' (short page summary), 'detailed_description' (detailed description), 'text' (extracted text content). Default: text only.summarydetailed_descriptiontext
start_timestring
For videos: start timecode in HH:MM:SS.mmm format (e.g., '00:05:47.000'). Must be used with end_time. Required with question + cached_only: false for videos.
end_timestring
For videos: end timecode in HH:MM:SS.mmm format (e.g., '00:06:51.000'). Must be used with start_time. Required with question + cached_only: false for videos.
pageinteger
For documents: if 'pages' is in fields, return only this page number instead of all pages. Required with question + cached_only: false for documents.
questionstring
A question to ask about the asset's visual content. By default (cached_only: true), only returns an answer if a matching prior Q&A is cached; otherwise indicates a cache miss and hints to re-call with cached_only: false.
cached_onlyboolean
When true (default), a question is answered only from prior cached Q&A on this asset. When false, requests a fresh visual answer and persists it for future calls. Ignored when question is not set.
frame_atstring[]
For videos: up to 6 HH:MM:SS.mmm timecodes (e.g. ['00:01:23.500']) whose frames come back inline as images, alongside any fields or answer requested. Use it to look at on-screen detail, framing, or who's in shot.
view_imageboolean
For an image, or a document with page: attach the image or rendered page inline so you can see it, alongside any fields or answer. Not for videos — use frame_at.
include_unnamedboolean
With face_appearances: also include unnamed detections ('Unknown #4', background extras). Default false; set true only for exhaustive coverage, such as counting a crowd.
transcript_granularitystring
Density of transcript_excerpt: 'sentence' (a timestamp per sentence, to verify an out-point), 'turn' (one line per speaker turn, ~6-8x smaller, enough to plan cuts) or 'word' ([start-end] per word whose bounds are safe cut points; ~3x 'sentence', so only in a narrow window). Defaults to 'turn' for composition build subagents and 'sentence' otherwise.sentenceturnword
audio_level_interval_secondsnumber
With audio_levels: bucket width in seconds, 0.1–60.0; default 1.0. Widen it on long windows to stay under the response cap.

People

people
WriteDestructive

Look up or delete the people Kestroll has identified in the organization from face recognition and transcripts. find fuzzy-matches a name, list returns people (filter by asset_paths, folder or unnamed), show returns one person's headshot inline, and delete permanently removes people. Use it to get a person_slug or confirm who someone is; to find footage of a person use search with the people filter, and to see when they appear in one video use get_asset_data face_appearances.

Actions

listfindshowdelete

'list' (default) returns people in the org, newest first, with how many assets each appears in; 'find' fuzzy-matches a name to return the closest people; 'show' returns one person's headshot image inline (requires person_slug); 'delete' permanently removes people (requires person_slugs).

Parameters7
namestring
For action 'find': a person's name to fuzzy-match (case-insensitive). Returns the closest matches, best first.
person_slugstring
For action 'show': the slug of a single person (from a prior people listing or find). Returns that person's headshot image inline.
person_slugsstring[]
For action 'delete' (required): slugs of the people to delete. Deletion is permanent.
asset_pathsstring[]
For action 'list': only people who appear in these assets (absolute paths).
folderstring
For action 'list': only people who appear in assets under this folder, including subfolders (absolute path).
unnamedboolean
For action 'list': only unnamed people that face recognition created (named 'Unknown #N').
max_num_resultsinteger
Maximum number of people to return for 'list' or 'find'. Defaults to 20.

Collections

collections
Read-only

List the organization's Collections — named, shareable groupings of assets and moments — with each one's slug and name. To find assets inside a collection, use search with the collections filter; to view or edit a collection's clips, pass its slug to composition. Read-only.

Actions

list

'list' (default) returns the org's collections.

Parameters1
max_num_resultsinteger
Maximum number of collections to return. Defaults to 20.

Composition

composition
WriteDestructive

Create, view and edit compositions (video edits) and collections (clip sets). create takes a full JSON document: read docs editing/composition_schema.md first. apply_patch is the default edit; other actions are specialized (captions, framing, splits, markers, concatenation), documented at editing/composition_commands.md#<action>. Edits save a new version at once; revert undoes. For dialogue cuts quote the transcript with the *_by_transcript actions.

Actions

createclip_by_transcriptviewview_framehistoryreviewapply_patchremove_by_transcriptreplace_by_transcriptremove_silenceslistduplicatedeleteconcatenateadd_synced_assetadd_broll_imagefollow_video_audioreanchor_videogenerate_captionsrechunk_captionsupdate_elementssnapclose_gapstrim_overhangletterbox_windowsplit_at_scenessplit_at_speaker_changestrack_persontrack_person_across_elementsframe_around_pointset_track_optionset_composition_viewadd_markerupdate_markerremove_markerrevert

The operation to perform; each is documented at editing/composition_commands.md#<command>.

Parameters70
slugstring
Artifact slug. Required except create, list, concatenate (uses slugs).
artifact_slugstring
add_broll_image: target composition slug.
namestring
For create, clip_by_transcript, duplicate, or concatenate name.
is_sectionboolean
For create, clip_by_transcript, duplicate, concatenate: the new composition is an intermediate for a later concatenate. Default false; not for collections.
aspect_ratiostring
Composition duplicate only: target aspect ratio.
asset_path_overridesobject
Composition duplicate only: element ID to replacement asset path.
drop_element_idsstring[]
Composition duplicate only: element IDs to omit.
documentobject
The complete artifact as a JSON object. Required for 'create'.
patchobject[]
apply_patch: non-empty atomic RFC 6902 list (max 1000). Address elements by id (/elements/id:cap_qnms9p/text); numeric indexes are absolute.
includestring[]
Optional 'view' extras (compositions). Dense caption lanes elide unless named in tracks or include_captions.element_metadatatimelinetranscript
include_captionsboolean
'view': expand cap lanes that would otherwise elide. Default false. Required for absolute-index patch paths.
idstring
Target marker id (from add_marker or view). For the update/remove marker commands.
atstring
Marker time, HH:MM:SS.mmm or plain seconds. Required for 'add_marker'; moves it on 'update_marker'.
timesany
split_at_speaker_changes: required; 'transcript' or an array of composition-time HH:MM:SS.mmm cuts inside element_id. view_frame: up to 6 composition times.
labelstring
Short marker note. Required for 'add_marker'; optional for 'update_marker'.
fromstring
Composition-time window start for update_elements or one-shot track_person.
composition_startstring
Caption commands only: composition-time scope start (inclusive). Omit for the composition start.
composition_endstring
Caption commands only: composition-time scope end (exclusive). Omit for the composition end.
element_typestring
For 'update_elements': select only this type; other filters must also match.videoaudioimagetext
idsstring[]
For 'update_elements': select exactly these element ids (other filters ignored).
setobject
update_elements merge-patch: text styles, static position, or single-element text. In an element style, null explicitly switches off an inherited field; active_word_style:null disables highlight. Whole caption lanes use defaults.
unsetstring[]
For 'update_elements': authored keys to REMOVE, e.g. ["text_styles.background_color"] or ["active_word_style"]. Removing a key restores inheritance from lane defaults.
only_audio_sourcesstring[]
Caption commands only: audio element ids whose speech to process. Omit for all audio sources.
chunk_sizeinteger
Captions: optional words-per-card ceiling; uses the lane policy or 12.
max_linesinteger
Captions: optional line limit; uses the lane policy or canvas default.
styleobject
generate_captions lane defaults: position, text_styles, active_word_style. Required on a lane with no style yet. Pass a user's caption-style block verbatim.
overwriteboolean
generate_captions only, default false. True rebuilds and CLOBBERS generated captions in the required lane/range, including manual edits.
modestring
'view' format, default 'document' — {slug, name, document} with elements at document.elements; use it for programmatic code_sandbox transforms. The other modes return derived data, not the artifact.documenttranscriptasset_pathssame_scene_runs
elementsstring
Optional 'view' selector (compositions): comma-separated element ids, e.g. 'intro,guest-a,guest-audio'.
composition_windowstring
Optional composition-time window for 'view', e.g. '00:12:00-00:15:00'. Renumbers elements from 0 — patch by id:, not position.
transcript_granularitystring
Density of view mode: "transcript", default 'sentence' (a timestamp per sentence). 'word' brackets every word as [start-end] in composition time, where the end is already a safe cut point — use it to nail an edit point mid-sentence. 'word' is ~3-4x the size, so pass composition_window with it.sentenceword
tracksstring
Optional 'view' lane filter — 'v1', 'v1,a1', 'cap1'. Naming an cap lane expands it if elided. Renumbers elements from 0 — patch by id:, not position.
slugsstring[]
Ordered composition slugs to 'concatenate' (minimum 2). Output plays them back-to-back in this order.
source_asset_pathstring
Required for 'add_synced_asset'. Absolute path of the synced audio or video asset to add.
image_absolute_pathstring
add_broll_image: image asset path.
sourcestring
Source asset path for clip_by_transcript (required) or replace_by_transcript.
start_phrasestring
Verbatim transcript anchor: the source's for clip_by_transcript, else the composition's.
end_phrasestring
Verbatim end anchor, same transcript as start_phrase.
replacement_start_phrasestring
replace_by_transcript: source start anchor.
replacement_end_phrasestring
replace_by_transcript: source end anchor.
silence_threshold_secondsnumber
remove_silences: minimum seconds, default 0.5.
animationstring
add_broll_image: default zoom.nonezoom
target_element_idsstring[]
Required for 'add_synced_asset'. Explicit ids of the elements whose timing the source should follow.
target_asset_pathstring
Required for 'reanchor_video'. Absolute path of the timeline-synced camera angle to repoint the element's PICTURE onto.
stepinteger
Number of edits to undo on 'revert' (default 1). Ignored when to is given.
tostring
Composition-time window end for update_elements/track_person; for revert, user_viewed restores the viewed version.
element_idstring
The target element id. For add_marker, omit it for a timeline marker or pass it to attach the marker. For update_marker, omit it to keep ownership unchanged, pass an id to attach, or pass null to detach. Optional for 'split_at_scenes' — omit it to split every video element.
element_idsstring[]
Across-elements tracking: 2+ video ids in one source scene/slot.
boundarystring
For 'snap' only. Which edge to snap.startend
window_startstring
For 'letterbox_window' only. Window start as a composition timecode — the start of the scene being letterboxed. Omit both window fields to letterbox the whole element.
window_endstring
For 'letterbox_window' only. Window end as a composition timecode; must be after window_start. Required whenever window_start is given.
personstring
Person slug from tracked_people; used by person-tracking actions.
xnumber
frame_around_point: x (0..1).
ynumber
frame_around_point: y (0..1).
focal_sizenumber
frame_around_point: focal height in (0,1]; default 0.1.
anchor_ystring
frame_around_point: focal Y anchor; default upper-third.upper-thirdcenterlower-third
subject_sizestring
Person/point framing: close, medium, wide, or (0,1].
face_ystring
Person tracking: upper-third, center, lower-third, or (0,1).
targetstring
Required for 'trim_overhang'. 'scene' = clean picture, clips the final word's audio tail; 'audio' = full word, keeps the brief flicker.sceneaudio
lanestring
Matching v{n}/a{n}/cap{n} lane. Required by add_synced_asset, set_track_option unless clear_all, and ambiguous captions; filters update_elements; follow_video_audio defaults to a1.
disableboolean
set_track_option: video/caption lane visibility; invalid for audio.
muteboolean
set_track_option: audio lane mute; invalid for video/caption.
defaultsobject
For 'set_track_option' on an cap lane: deep-merge patch to the lane style defaults (position/text_styles/active_word_style) every caption inherits. A null value removes the key.
clear_allboolean
For 'set_track_option': clear EVERY lane disable and mute in one call (style defaults kept). Ignores lane/disable/mute.
viewstring
Required for 'set_composition_view': the named timeline layout to apply.multicam
collapseboolean
For 'history' only, default true (group consecutive edits by the same author). False for raw per-version rows.
max_num_resultsinteger
Cap for 'list' (default 10), 'history' (default 20, newest first) and 'review' findings (default 20).
detailstring
For 'review': default coalesced.summarycoalescedfull
current_session_onlyboolean
For 'list': true = only this chat's artifacts (the project's, in a project chat).
scopestring
For 'list': 'global' = whole org, not the chat's project.projectglobal

Export

export
Write

Save a finished deliverable into the user's library — only when the user asks to export, render, download or save. mode: composition renders compositions (by slug) to MP4 assets in the background: start it, tell the user it's rendering, and move on; the finished MP4 lands in the library and action: status checks progress. The other modes synchronously save one still image: a composition frame, a raw video frame, or a document page. Exports the composition's current version and creates new library assets. Never use it to inspect — composition view_frame and get_asset_data frame_at show frames without creating anything. Details in docs editing/export.md.

Actions

startwaitstatus

composition mode only; default start, which starts a render per slug (a slug already rendering errors on its own). status snapshots each slug's latest export; wait returns at once and reports when each render finishes — use it only when the user asks to be told.

Parameters8
modestringrequired
composition renders slugs to MP4 assets in the background. The still modes synchronously save one image named file_name and return its path: composition_frame (composition slug + composition time), asset_frame (video slug + source time), document_page (document slug + page).compositioncomposition_frameasset_framedocument_page
slugsstring[]
composition mode only. Composition artifact slugs to operate on. Pass one slug for a single export, or many to batch. Duplicates are deduplicated.
resolutioninteger
start only: the short side in px (2160 = 4K); the long side follows the aspect ratio. Defaults to 1080 — set it only when the user asks for a resolution. Applies to every slug.720108014402160
ignore_not_shown_to_userboolean
start only, default false. True skips the check that the composition was shown to the user before export. Set it when the user explicitly asked to export and you show the composition in the same reply; for a proactive offer, show it first and wait for confirmation.
slugstring
The single target of the still modes: a composition artifact slug (composition_frame), a video asset slug (asset_frame) or a document asset slug (document_page).
timestring
composition_frame / asset_frame. Timecode in HH:MM:SS.mmm (e.g. '00:00:12.500') — composition time for composition_frame, the video's own source time for asset_frame.
pageinteger
document_page only. 1-based page number.
file_namestring
Still modes only. Name for the new image, e.g. 'hero'. The extension is set from the format actually produced and the name is suffixed if taken — read asset_path from the result.

Inspect Speakers

inspect_speakers
Read-only

Find out who is talking and who is on screen across a span — to pick the person and window for composition track_person, or to check that a shot frames the right speaker. Use it instead of get_asset_data question for any who-is-speaking or who-is-on-screen question. Pass asset_path with source-time from/to (pooling every synced angle), or artifact_slug with composition-time from/to (one window per shot). Returns time-resolved measurements per visual window from independent sources — diarized audio turns, transcript, lip-motion readings and on-screen faces — each with its own status, never one verdict: a window can hold several speakers in turn, so you decide the framing. Read-only.

Parameters8
asset_pathstring
Absolute path of the source asset to ask about (e.g. '/Folder/interview.mp4'). Mutually exclusive with artifact_slug. from/to are this file's own source time.
artifact_slugstring
Slug of the composition artifact to ask about — NOT a person_slug. Mutually exclusive with asset_path. from/to are composition time, and the answer is one visual window per shot in that range.
fromstringrequired
Start of the span, HH:MM:SS.mmm.
tostringrequired
End of the span, HH:MM:SS.mmm. Must be after from.
methodsstring[]
Which evidence sources to run. Omit to run all of them (they are all cheap DB reads). visual_speaking = lip motion readings over time; audio_speaker = diarized turns over time; transcript = the words, as segments; on_screen = who is framed at the sampled instants.visual_speakingaudio_speakertranscripton_screen
include_synced_assetsboolean
Asset mode only. Default true: query every synced angle of this asset's session at its offset-corrected time and report each separately. Set false to ask only about this one file.
timesstring[]
Instants to sample for on-screen presence and frames, HH:MM:SS.mmm, in the same time as from/to. Each window always samples its own midpoint as well.
include_imagesboolean
Render annotated frames (boxed, labeled faces plus the visible crop) at the sampled instants. Default false. Use when sources disagree and you need to see whose lips are moving.

Edit Asset Data

edit_asset_data
WriteDestructive

Change data stored on a source asset — only when the user explicitly asks. edit_transcript replaces a verbatim phrase in the asset's transcript (copy it from get_asset_data); the new wording flows into search and into the captions of every composition drawing on that asset. link_local_file records the path of the asset's original file on the user's computer; nothing is uploaded. To fix one composition's captions use composition; to cut a composition by transcript use its *_by_transcript actions.

Actions

edit_transcriptlink_local_file

Operation to perform: edit_transcript or link_local_file.

Parameters4
pathstringrequired
Asset absolute path (e.g. /Footage/interview.mp4).
original_textstring
Verbatim phrase to find in the asset's transcript. Must be unique — widen with surrounding words if ambiguous. Required for edit_transcript.
replacement_textstring
Replacement text. Pass an empty string to delete the matched span. Required for edit_transcript.
local_system_absolute_pathstring
Absolute path to the source file on the user's local system. Required for link_local_file (e.g. /Volumes/Media/interview.mp4).

Filesystem

filesystem
WriteDestructive

Browse and reorganize the library's files and folders: list_folders lists folders (optionally narrowed by glob_pattern) with their absolute paths and asset counts, move_assets moves assets into a folder, create_folder creates folders, and delete_assets permanently deletes assets and/or whole folders with everything inside — there is no undo, so only on a clear request from the user. Takes absolute paths from search or list_folders. NAS-synced assets can't be moved and come back in skipped; unresolved paths come back in not_found; title collisions are renamed automatically. Project bins are managed with project, not here.

Actions

list_foldersmove_assetsdelete_assetscreate_folder

'list_folders' lists folders (read-only); 'move_assets' moves assets into a folder; 'delete_assets' permanently deletes assets and/or folders; 'create_folder' creates folders.

Parameters7
glob_patternstring
For list_folders: a glob pattern to match folder paths (e.g. '/Projects/**/*' for Projects and everything under it recursively, '/Projects/*' for direct children only). Omit to list all folders.
max_num_resultsinteger
For list_folders: maximum number of folders to return. Defaults to 20.
asset_pathsstring[]
For move_assets (required) and delete_assets: absolute paths of the assets (e.g. ['/Footage/clip1.mp4', '/Footage/clip2.mp4']).
target_folder_pathstring
For move_assets (required): absolute path of the destination folder (e.g. /Projects/Approved).
create_target_folderboolean
For move_assets: create the target folder and any missing parents. Default false, which returns folder_not_found for a missing folder; set true when the user names a new folder.
folder_pathsstring[]
Absolute folder paths (e.g. ['/Old Footage']). For delete_assets: folders to delete, including every subfolder and asset inside them. For create_folder (required): folders to create.
scopestring
Result scope. Defaults to 'project' — only items in the chat's current project, when it has one. Pass 'global' to search across the whole organization instead.projectglobal

Project

project
WriteDestructive

Manage Projects, Projects-page folders, and their Media Library. Read product/projects.md with docs before using this tool for operations, parameters, and deletion behavior.

Actions

listlist_folderscreate_folderrename_foldermove_folderdelete_foldermove_projectsshowcreaterenameaddmoveremovewatchdelete_project

Which operation to perform.

Parameters20
projectstring
Project slug to act on, or "current" (the default: the chat's current project). For set_current: the project to move this chat to.
namestring
For create (optional — auto-named if omitted), create_folder (optional — defaults to New Folder), and rename/rename_folder (required): the new name.
project_folderstring
Projects-page folder slug from list_folders/create_folder. Required source for rename_folder/move_folder/delete_folder (root forbidden). Destination for move_projects, parent for create_folder, or folder for a new project with create (without bin_path); for those actions omit or pass / for top level. Separate from in-project bins and filesystem folders.
target_project_folderstring
For move_folder: destination Projects-page folder slug. Omit or pass / to move the source project_folder to the top level. Cannot be the source or its descendant.
project_slugsstring[]
For move_projects (required): project slugs from list to file into project_folder. Every project must be visible to you; the move is atomic.
bin_pathstring
Absolute bin path (e.g. /Selects/Scene 1). The destination for add/move/watch (default: project root, created if missing), the bin to create for create, the bin to rename for rename.
bin_pathsstring[]
For move/remove: absolute paths of existing bins to move or delete.
item_idsstring[]
For move/remove: Media Library item ids (the id from action "show"). Targeting a master also affects its moments.
item_idstring
For rename: a single Media Library item id.
compositionsstring[]
Composition slugs. For add: projectless compositions to file; for move: compositions in this project to re-file; for remove: compositions to detach.
folder_pathsstring[]
For add: absolute filesystem folder paths to import (subfolders become sub-bins, one-time snapshot). Runs synchronously, so a very large tree can take a while.
asset_slugsstring[]
For add: asset slugs to file as masters.
momentsobject[]
For add: sub-clips of assets to save as moments (each also ensures the asset's master).
collectionstring
For add: slug of a collection artifact whose clips to add.
clip_idsstring[]
For add with collection: specific clip ids/labels to add. Omit to add every clip.
folder_pathstring
For watch: absolute path of the filesystem (NAS) folder to watch. Omit to stop watching bin_path.
include_subfoldersboolean
For watch: also mirror the folder's subfolders as sub-bins and pull their assets. Default false.
target_projectstring
For move: slug of another project to move/copy item_ids into (bin_path is then in that project).
modestring
For move with target_project: 'move' (default) removes the items from the source project; 'copy' leaves them in place.movecopy
max_num_resultsinteger
For list/show: maximum projects, or library items / compositions, to return. Defaults to 20.
Read-only

Read Kestroll's reference docs before non-trivial work with the other tools: composition schema and commands, captions, framing, sync, export, asset processing, socials, and product surfaces. list returns every doc's path, title and description — start there when you don't know the path. search ranks docs by keyword, read returns one doc (or one section with path#anchor, the form review findings carry), and outline lists a doc's anchors. Examples in the docs are authoritative. Read-only.

Actions

listsearchreadoutline

'list' every doc with its title and description; 'search' by keyword; 'read' one doc, or one section with path#anchor; 'outline' a doc's section anchors.

Parameters3
pathstring
Doc path with its category prefix, .md optional, e.g. editing/split_screen.md. Required for 'read' and 'outline'. Append #<anchor> to read one section; review findings' doc: values work verbatim.
querystring
For 'search': keywords, case-insensitive. A doc matches if any word appears; ranked by how many match, then reranked.
rerankstring
'search' ranking: 'filter' (default) reorders and drops docs that only incidentally match; 'reorder' keeps everything, for a broad sweep; 'off' is raw match order.filterreorderoff

Templates

templates
Read-only

Find curated example edits — Kestroll's and the organization's own — to use as a reference when the user wants a style or format you haven't built before. search by description, then view one by its key: summary, file metadata, timeline segments with transcript excerpts, audio levels, songs, frames and visual questions. view works like get_asset_data, except nothing is added to the library, so the template has no path for other tools. Request only the fields you need and window long timelines with start_time/end_time. Every timestamp is the template's own time. Read-only.

Actions

searchview

'search' finds templates; 'view' looks at one by its key.

Parameters10
querystring
For 'search': what kind of edit you want an example of. Any word may match; leave empty to list every template.
template_keystring
For 'view': the template's key from search.
fieldsstring[]
For 'view': fields to return: 'summary'; 'file_metadata' (size, dimensions, duration, fps); 'timeline' (segments, see timeline_fields); 'audio_levels' (RMS/peak dBFS of the mixed audio per bucket); 'songs' (recognised music with title and artist). audio_levels and songs honor start_time/end_time; for those two, available: false means not measured, not silence or no music.summaryfile_metadatatimelineaudio_levelssongs
start_timestring
Start timecode in HH:MM:SS.mmm format. Must be used with end_time. Required with question.
end_timestring
End timecode in HH:MM:SS.mmm format. Must be used with start_time. Required with question.
questionstring
A question about the visual content of the start_time/end_time window, answered fresh by a vision model on every call.
timeline_fieldsstring[]
Sub-fields per timeline segment (default: summary only): 'summary', 'detailed_description', 'tags', 'transcript_excerpt', 'scene_layouts' (per-scene layout with who is on screen and where: 'single' = clean cut-in, 'split_lr'/'split_tb' = two-shot, avoid cutting mid-exchange, 'group', 'broll' = no person, covers transitions; speaker turns are included only when requested without transcript_excerpt). scene_layouts and detailed_description are heavy — window long assets.summarydetailed_descriptiontagstranscript_excerptscene_layouts
frame_atstring[]
For videos: up to 6 HH:MM:SS.mmm timecodes (e.g. ['00:01:23.500']) whose frames come back inline as images, alongside any fields or answer requested. Use it to look at on-screen detail, framing, or who's in shot.
transcript_granularitystring
Density of transcript_excerpt: 'sentence' (a timestamp per sentence, to verify an out-point), 'turn' (one line per speaker turn, ~6-8x smaller, enough to plan cuts) or 'word' ([start-end] per word whose bounds are safe cut points; ~3x 'sentence', so only in a narrow window). Defaults to 'turn' for composition build subagents and 'sentence' otherwise.sentenceturnword
audio_level_interval_secondsnumber
With audio_levels: bucket width in seconds, 0.1–60.0; default 1.0. Widen it on long windows to stay under the response cap.
WriteDestructive

Organization-wide memory shared by every member and conversation, for durable facts such as brand guidelines, preferences and standing instructions. list shows every memory's name and description, save adds a memory, read loads its full body, edit revises or renames it, and delete removes it; those four address a memory by its kebab-case name. Writes are visible to the whole organization and to every future conversation.

Actions

listsavereadeditdelete

"list" to see every memory's name and description, "save" to add a new memory, "read" to load one's full body, "edit" to revise one, "delete" to remove one.

Parameters4
namestring
Memory name — a short kebab-case slug, e.g. "brand-palette". Required for every action but "list". For "save": the slug for the new memory. For "read"/"edit"/"delete": identifies the memory, copied exactly from your Memory index or "list".
new_namestring
"edit" only — rename the memory to this slug.
descriptionstring
One line (max 200 chars) shown in the Memory index — must let a future agent decide from it alone whether to read the full body. Required for "save".
contentstring
Full memory body — self-contained and generalizable, written for a future conversation with zero context from this one. Required for "save".
Read-only

Report friction to the Kestroll team: a missing/awkward tool, confusing or wrong data, a feature you wish you had, your own frustration, or a problem the user is causing. Logged for the team — does not affect or block the current task.

Parameters3
summarystringrequired
One-line gist of the complaint. Be specific, e.g. "search returns no results for partial filenames".
detailsstring
Optional fuller explanation: what happened, what got in your way, and what would have helped.
categorystring
Optional kind of complaint. "missing_tool"/"awkward_tool" for tooling gaps, "confusing_data" for bad/unclear data, "feature_request" for something you wish existed, "frustration" for general friction, "user_issue" for something the user is doing wrong, "bug" for broken behavior, else "other".frustrationmissing_toolawkward_toolconfusing_datafeature_requestuser_issuebugother

Settings

settings
WriteDestructive

Organization and user settings, custom fonts, and plan usage. Read product/settings.md before editing settings and product/custom_fonts.md before adding a font.

Actions

view_settingsedit_settingsshow_custom_fontsadd_custom_fontshow_usage
Parameters2
settingsobject
For 'edit_settings': only the keys to change, as returned by 'view_settings'.
asset_pathstring
For 'add_custom_font': absolute library path of a .ttf or .otf file.

Workflow

workflow
WriteDestructive

Read and manage the organization's workflows: named procedures invoked as /slash_commands. When the user types a /slash_command, or a request matches a workflow's description, read it (omit workflow_command to list them all) and follow its instructions. create_new, edit (a full rewrite), patch (change part of one field) and delete change workflows for the whole organization — only when the user asks, and always read before writing. Kestroll-team workflows are read-only. YAML fields and patch rules are in docs agent_capabilities/workflows.md.

Actions

readeditpatchdeletecreate_new

Operation to perform.

Parameters8
workflow_commandstring
The workflow's /slash_command. Required for edit, patch, and delete; optional for read (omit to list all); ignored for create_new.
yaml_contentstring
YAML body describing the workflow. Required for create_new and edit.
confirm_removalsboolean
For edit: set true only to re-send an edit that was rejected for dropping content, after checking every removed line listed in the error is one you meant to remove.
fieldstring
When patching: which field to edit. Defaults to instructions.instructionsdescriptionslash_command
findstring
When patching: literal text to find, copied exactly from the field's current value — including newlines and indentation. If what you are copying from is dumped YAML rather than the raw field, its block scalar indents the body by two spaces: drop those two spaces from EVERY line of both find and replacement, not just the first. Include enough surrounding lines to be unique. To delete a step, find the whole step (its heading and every bullet under it) and replace with an empty string.
replacementstring
When patching: text the matched region is replaced with. Empty string deletes the match.
is_regexboolean
When patching: treat find as a Ruby regex (and allow \1 backreferences in the replacement). Defaults to false — prefer literal text.
replace_allboolean
When patching: replace every match instead of requiring a single unique match. Defaults to false.

Scheduled Work

scheduled_work
WriteDestructive

Manage the organization's Scheduled Work: saved prompts that start a new Kestroll chat on a cron schedule. list and view read schedules and their recent runs. create, update and run (start a chat right now) act as the current user — only when the user asks. update replaces the whole prompt, so view first and send it back complete.

Actions

listviewcreateupdaterun

'list' shows schedules, 'view' shows one, 'create' adds one, 'update' changes one, 'run' starts one now.

Parameters8
idstring
For 'view', 'update' and 'run': the schedule's id from list.
querystring
For 'list': only schedules whose name or prompt contains this text.
mineboolean
For 'list': true for only the schedules that run as you.
namestring
For 'create' (required) and 'update': the schedule's name.
promptstring
For 'create' (required) and 'update': the prompt sent to each run. On update it replaces the whole prompt — view first and send it back complete.
cronstring
For 'create' (required) and 'update': five-field cron (minute hour day month weekday), e.g. '0 9 * * 1-5' for weekdays at 9am.
timezonestring
For 'create' and 'update': IANA time zone the cron is read in, e.g. 'America/New_York'. Use the user's own zone; defaults to America/Los_Angeles.
enabledboolean
For 'list': filter to schedules that are on (true) or paused (false). For 'create' and 'update': false pauses the schedule, true runs it.

Chats

chats
WriteDestructive

List, summarize, rename, and delete the user's chats.

Actions

listsummarizerenamedelete

'list' lists the user's chats, 'summarize' summarizes one, 'rename' renames one, 'delete' deletes one.

Parameters9
idstring
For 'summarize', 'rename' and 'delete': the chat's id from list.
namestring
For 'rename': the new name.
min_messagesinteger
For 'list': only chats with at least this many messages (yours and the user's).
max_messagesinteger
For 'list': only chats with at most this many messages.
created_afterstring
For 'list': ISO 8601 date or time; only chats created at or after it.
created_beforestring
For 'list': ISO 8601 date or time; only chats created before it.
last_message_afterstring
For 'list': ISO 8601 date or time; only chats whose last message was sent at or after it.
last_message_beforestring
For 'list': ISO 8601 date or time; only chats whose last message was sent before it.
limitinteger
For 'list': how many chats to return (default 25, max 100).

Timeline Sync

timeline_sync
WriteDestructive

Put recordings of one shoot on a shared timeline. inspect (free, read-only, always first): each asset's capabilities and timeline membership, and which alignment methods can run on each pair. probe: measure how far apart recordings started — every method you name runs on every pair and reports its own verdict; never average offsets that disagree, decide which to trust. validate: check a plan is possible (never that it is right) and get a validation_id. apply_plan: write a validated or inline plan. edit: write an offset a person supplied, with a reason. delete: take assets off their timeline. Writes return the final placements, normalized so the earliest member starts at 0 — report those, not what you submitted. See docs editing/timeline_sync.md.

Actions

inspectprobevalidateapply_planeditdelete

inspect → probe → validate → apply_plan is the flow; edit writes an offset a person supplied, delete takes assets off their timeline.

Parameters8
asset_pathsstring[]
inspect: assets you are considering syncing (1 or more). probe: recordings to measure against each other (2 or more). delete: assets to remove from their current timeline. Absolute paths.
methodsstring[]
probe: alignment checks to run on every pair: metadata (~25ms, embedded timecode), audio (~400ms, needs shared sound), transcript_matching (~700ms, works with no shared audio), llm_turn_taking (~60s, for recordings sharing neither audio nor words). Start with metadata + audio + transcript_matching.metadataaudiotranscript_matchingllm_turn_taking
refineboolean
probe: sharpen the best-supported offset to ~1ms with audio phase correlation. Default false. 2.6s warm, up to 210s cold. Use when the offsets will drive lip-synced audio.
validation_idstring
apply_plan: validation_id from validate.
relationship_idstring
validate / apply_plan inline: existing timeline to change; omit to create one. Required if any named asset is already synced. Members you do not list keep their current placements. edit: required — the existing timeline to correct.
membersobject[]
validate / apply_plan inline: the files to place, and where each one starts on the shared timeline. edit: the hand corrections to write.
removestring[]
validate / apply_plan inline: absolute paths to remove from the timeline named by relationship_id. Must already be members of it — use delete to take an asset off a different timeline.
reasonstring
edit only, required: where the offset came from — who supplied it and how they knew. Stored with the correction.

Asset Processing

asset_processing
WriteDestructive

Diagnose and rebuild an asset's analysis (transcript, speakers, faces, object tracks, scene layouts, segments, moments) when get_asset_data shows it missing or wrong. Always inspect first: it reports each step's last success, failure and in-flight state, plus prerequisites and skip reasons. run rebuilds a preset, overwriting existing analysis over several minutes — only with the user's confirmation; kill stops in-flight work; await (or run with await) watches for the data you need instead of you polling. Read docs asset_processing/pipeline.md before the first run.

Actions

inspectrunkillawait

'inspect' (read-only; call it first): each step's last success, failure and in-flight state, plus prerequisites, skip reasons and stale data. 'run' rebuilds the analysis for a preset, repairing missing inputs itself. 'kill' stops everything in flight for the asset. 'await' returns at once and tells you when the data you need is ready — never sleep-poll.

Parameters6
absolute_pathstring
Absolute file path of the asset (e.g. '/Folder/file.mp4'). Looked up scoped to the current organization.
asset_pathsstring[]
For await only, when waiting on several assets at once (max 25). Combinable with absolute_path.
presetstring
For run, default 'all': the whole analysis, and the only preset for images and documents. 'transcript': the transcript and what reads it, for a wrong, truncated or missing transcript; faces and tracks are kept. 'person_tracking': speaker identity, faces, tracks, scene layouts and active speaker, for wrong people or framing; the transcript is kept.alltranscriptperson_tracking
forceboolean
For run, default false. True also rebuilds the analysis INPUTS (metadata, proxies, scene cuts) from scratch, and with preset 'all' first wipes every analysis byproduct; the preset's steps recompute either way. Only when the inputs themselves are suspect — re-encoding a large original is slow.
awaitstring
For run. Omit to just start the rebuild. Otherwise also get notified when it reaches this point, in one call — same meanings as wait_for.initial_datafull_data
wait_forstring
For await, default 'initial_data': ready once the transcript settles and the asset can be placed in a composition — faces, tracks and speaker identity may still be missing, which is expected. 'full_data': the whole pipeline finished; use it before syncing, exporting, or reading people, tracks or scene layouts.initial_datafull_data

Web Fetch

web_fetch
Read-onlyReaches the web

Fetch a URL. A web page or PDF comes back as markdown text. A public YouTube, TikTok or Instagram post, or a direct image/video/audio file URL, is instead imported into the library as a new asset (several at once with imports): it returns right away with the new asset_path while the download and analysis run in the background. Find media URLs with web_search; call asset_processing await if the next step needs the import ready. Private, removed or bot-blocked posts fail during the background download.

Parameters7
urlstring
The http(s) URL to fetch. A web page or PDF is read; a public YouTube, TikTok, or Instagram post link or a direct image/video/audio file URL is imported. Use imports instead to import several files in one call.
max_charsinteger
For a page read: cap on returned page text (default 20000, max 80000). Content past the cap is cut and the result says so — raise it only when you actually need the rest of a long document.
file_namestring
For an import: name for the new asset, extension optional (e.g. 'Vikings Stadium'); suffixed if taken. Defaults to the video title or the URL's file name. Passing it forces an import — use it for an image URL with no extension, never for a page read.
importsobject[]
Several files to import in one call (up to 20), instead of url + file_name. Each entry is imported independently — a bad URL fails only its own entry. All entries share the project_bin below.
project_binstring
For an import: optional bin path in the current project's Media Library to file the import into (e.g. /Selects). Defaults to the project root bin when working in a project; has no effect otherwise.
audio_onlyboolean
For an import: save YouTube links as mp3 audio only instead of mp4 video (default false). YouTube only — any other URL in the call fails. Applies to every entry in imports.
audio_subtypestring
For an audio_only import: "music" for a song or score, "sound_effect" for a sound effect; omit for anything else (podcast, speech). Applies to every entry in imports.musicsound_effect

Asset Editor

asset_editor
Write

Make an edited copy of an existing library asset. edit_image_with_ai applies a prompt to an image; edit_video_with_ai applies a prompt to 3-15 seconds of a video (e.g. removing an object), keeping its audio; remove_image_background cuts an image's subject out into a transparent PNG (use it, not an edit prompt, for transparency); remove_video_background cuts the people out of up to 5 minutes of video into a transparent video that keeps the audio. Always creates a new asset and never modifies the original. Returns the new asset_path at once; the AI edits and the video cutout finish in the background. To generate an image from scratch, use create_asset. See docs agent_capabilities/image_generation.md.

Actions

edit_image_with_aiedit_video_with_airemove_image_backgroundremove_video_background

Required: 'edit_image_with_ai' (a prompt edit of an image), 'edit_video_with_ai' (a prompt edit of 3-15 seconds of video), 'remove_image_background' (a transparent PNG) or 'remove_video_background' (the people cut out into a transparent video).

Parameters7
asset_pathstringrequired
Absolute library path of the existing asset to work on — an image, or a video for edit_video_with_ai and remove_video_background. The result is always saved as a new asset; this one is left unchanged.
promptstring
edit_image_with_ai and edit_video_with_ai (required). The edit instruction, e.g. 'make it nighttime'. An edit prompt cannot produce transparency — use action: 'remove_image_background' for that.
file_namestring
Name for the new asset; the extension follows the output and a taken name is suffixed. Required for edit_image_with_ai and edit_video_with_ai; the background removals default to '<source name> (No Background)'.
aspect_ratiostring
Optional, edit_image_with_ai only. Aspect ratio of the result (e.g. 16:9 for widescreen, 9:16 for vertical, 1:1 for square).1:12:33:23:44:34:55:416:99:1621:9
subject_descriptionstring
Optional, remove_image_background only. The person or object to keep from a photo, such as 'LeBron James holding a basketball'. If omitted, the primary foreground subject is kept.
start_secondsnumber
Optional, edit_video_with_ai and remove_video_background. Where in the source video to start, in seconds. Defaults to 0.
end_secondsnumber
Optional, edit_video_with_ai and remove_video_background. Where in the source video to stop, in seconds. Defaults to the end of the video.

Create Asset

create_asset
Write

Create a brand-new library asset. ai_generate_image generates an image from a prompt; ai_generate_video generates a short video clip with audio from a prompt; create_motion_graphic renders self-contained Remotion/React code (lower-thirds, title cards, charts, callouts) into a transparent video; generate_speech speaks text as an mp3, optionally in the voice from a sample clip. Returns the new asset_path at once and finishes in the background; place the result in a composition as an ordinary image, video, or audio element. Assets never change — to revise one, create it again. To edit an existing image, use asset_editor. Read docs editing/motion_graphics.md before writing motion-graphic code.

Actions

ai_generate_imageai_generate_videocreate_motion_graphicgenerate_speech

Required. Asset creation action.

Parameters20
promptstring
For ai_generate_image and ai_generate_video: what to generate.
file_namestring
For ai_generate_image, ai_generate_video, and generate_speech: name for the new asset; the name is suffixed if already taken.
aspect_ratiostring
For ai_generate_image and ai_generate_video: optional aspect ratio. Video accepts only 16:9 (default) or 9:16.1:12:33:23:44:34:55:416:99:1621:9
duration_secondsinteger
For ai_generate_video: clip length in whole seconds, 3-15 (default 10).
reference_imagesstring[]
For ai_generate_video: optional library image asset paths (at most 6) the video should keep consistent, such as a character, product, or style.
namestring
For create_motion_graphic: short descriptive asset name; .mov is added automatically.
codestring
For create_motion_graphic: self-contained TSX with a default-exported React component. It may import only react and remotion, with no network access or external resources.
propsobject
For create_motion_graphic: optional JSON props passed to the component.
imagesobject
For create_motion_graphic: optional map of names to library image asset paths (SVG, PNG, WebP, GIF, JPEG, AVIF); the component receives them as images.<name>. Not URLs: import web images with web_fetch first.
fontsobject[]
For create_motion_graphic: optional font faces the code uses, from the font catalog or the organization's uploaded fonts (at most 8), one entry per face. The code names them with the family quoted inside the string, since CSS drops names like 42dot Sans otherwise: fontFamily: "'42dot Sans'", with the matching fontWeight (400, 600 or 700) and fontStyle.
widthinteger
For create_motion_graphic: output width in pixels (16-4096).
heightinteger
For create_motion_graphic: output height in pixels (16-4096).
textstring
For generate_speech: the words to speak (up to 10000 characters).
voicestring
For generate_speech: optional stock voice name, listed in docs agent_capabilities/speech_generation.md (default Darian).
voice_sample_pathstring
For generate_speech: optional audio or video asset whose speaker's voice to use instead of a stock voice.
voice_sample_startnumber
For generate_speech: optional start of the voice sample, in seconds.
voice_sample_endnumber
For generate_speech: optional end of the voice sample, in seconds.
fpsnumber
For create_motion_graphic: frames per second (greater than 0, at most 120).
duration_framesinteger
For create_motion_graphic: output duration in frames (1-9000; width × height × duration_frames ≤ 5e9).
preview_framesinteger[]
For create_motion_graphic: optional 1-8 frame numbers to preview instead of rendering. Returns those frames as images in about a minute and makes no asset; call again without it to render the graphic.

Sound Effects

sound_effects
Write

Kestroll's built-in sound-effects library, for adding sound effects to an edit. action: search finds sounds by description (whooshes, impacts, pops, clicks, dings, risers, room tone, ambience…); import the picks with action: import. action: import copies sounds (sound_ids from search) into the library and returns their asset_paths. Place imported sounds as audio elements with composition; see docs editing/sound_effects.md.

Actions

searchimport

search (default) finds catalog sounds; import copies chosen ones into the library.

Parameters6
querystring
For search: what the sound should be, in plain words — e.g. 'fast whoosh', 'deep cinematic impact', 'bubble pop', 'office room tone'. Every word must match, so keep it to the sound itself rather than the scene.
categorystring
For search: restrict to one category.transitionsimpactsuitechambience
min_durationnumber
For search: shortest acceptable length in seconds.
max_durationnumber
For search: longest acceptable length in seconds.
limitinteger
For search: how many candidates (default 10, max 30).
sound_idsstring[]
For import: catalog ids from a search result (up to 20).

File Transfers

file_transfers
WriteReaches the web

Move files in and out of the organization's Kestroll library, and check on what's coming in. list returns recent transfers of every kind — uploads, cloud storage imports, NAS syncs, and web and video imports — newest first. inspect (with a file_transfer_id from list) adds per-file rows and errors. To send files from where you're running, upload returns per file either put_url + headers (curl -T <file> -H ...) or parts: PUT each part_size_bytes piece (split -b) to its part_number's url. Then complete the upload_file_ids; anything missing comes back with fresh URLs. download gives one asset's url, or a zip download_id for folders or several paths — call again with it until it has a url. For connected cloud storage, connections says what's connected; an organization owner connects an account in Agent → Connectors. browse lists a folder. search finds files and folders by name. import brings files or whole folders into the library, where they download and process in the background. Importing a file twice makes a second copy.

Actions

listinspectuploadcompletedownloadconnectionsbrowsesearchimport

Which action to run; the tool description says what each does.

Parameters15
file_transfer_idstring
For 'inspect' (required): the id returned by 'list', 'upload' or 'import'.
statusstring
Optional filter for 'list'.pendingin_progresscompletedfailedcancelled
original_sourcestring
Optional filter for 'list' — where it came from (e.g. 'file_upload', 'dropbox', 'nas', 'youtube', 'url').
max_num_resultsinteger
Maximum results for 'list', 'browse' or 'search' (default 20, max 100). A 'browse' cursor keeps its first page's size.
destination_pathstring
For 'upload': library folder, e.g. '/Footage'; created if missing. Default '/'.
filesobject[]
For 'upload' (required). filename may include subfolders ('day1/a.mp4').
upload_file_idsstring[]
For 'complete' (required): from 'upload'.
pathsstring[]
For 'download': absolute asset/folder paths. A folder or several paths are zipped (max 200 files).
download_idstring
For 'download': a zip's id, for its status and url.
providerstring
For 'browse', 'search' and 'import' (required): which connected cloud storage.dropbox
folderstring
For 'browse': the folder's id from an earlier result; omit for the root. For 'search': optional folder to search within.
cursorstring
For 'browse': the cursor from a previous page, to read the next page of the same folder.
querystring
For 'search' (required): words to match against file and folder names.
file_typestring
For 'search': only return this kind of item.videoaudioimagedocumentfolder
itemsstring[]
For 'import' (required): ids of files and/or folders from 'browse' or 'search'. A folder imports every supported file under it, up to 200 files per call.

Socials

socials
WriteDestructiveReaches the web

Work with the organization's connected social accounts (TikTok, YouTube, Instagram, Facebook Pages, X).list_channels returns each account with its status and engagement totals; list_posts returns posts with engagement stats as of the account's last sync; refresh_channels re-syncs every account, or one channel, from its platform now. make_post publishes a library video or a text post to one account now, schedules it, or saves a draft. list_publications returns the posts made through Kestroll, including drafts and scheduled ones; update_post, unschedule_post, and delete_post change one until it starts publishing. Posting is public — only post what the user asked for, and read docs agent_capabilities/socials.md first for each platform's options.

Actions

list_channelsrefresh_channelslist_postsmake_postlist_publicationsupdate_postunschedule_postdelete_post

'list_channels' returns the connected social accounts; 'refresh_channels' re-syncs them now; 'list_posts' returns their posts; 'make_post' posts to one account; 'list_publications' returns posts made through Kestroll, including drafts and scheduled ones; 'update_post', 'unschedule_post', and 'delete_post' change one until it starts publishing.

Parameters15
platformstring
For 'make_post' (required): the account's platform.tiktokyoutubeinstagramfacebookx
channelstring
A channel's slug or @handle from 'list_channels'. Optional for 'refresh_channels', 'list_posts', and 'list_publications'; required for 'make_post'.
slugstring
For 'update_post', 'unschedule_post', and 'delete_post' (required): the post's slug from 'list_publications' or 'make_post'.
statusstring
For 'list_publications': only posts with this status.draftscheduledpublishingsentpublishedfailed
sort_bystring
For 'list_posts': order, highest first. 'date' (default) is newest first.dateviewslikescommentsshares
max_num_resultsinteger
For 'list_posts' and 'list_publications': maximum to return (default 20, max 100).
video_pathstring
For 'make_post' and 'update_post': absolute library path of the video.
captionstring
For 'make_post' and 'update_post': the caption, YouTube description, or X post text.
titlestring
For 'make_post' and 'update_post': the YouTube title.
optionsobject
For 'make_post' and 'update_post': the platform's settings, as listed in agent_capabilities/socials.md.
cover_frame_secondsnumber
For 'make_post' and 'update_post': cover from the video frame at this time.
cover_image_pathstring
For 'make_post' and 'update_post': cover from this library image.
timingstring
For 'make_post' (required). For 'update_post': 'now' or 'schedule'; omit to keep the post's timing.nowscheduledraft
scheduled_atstring
With timing 'schedule': ISO 8601 with a UTC offset.
time_zonestring
For 'make_post' and 'update_post': the user's IANA time zone.
MCP tools — Kestroll Docs