Organizing, automation and housekeeping
The tidying-up half of the app: names and folders, the presets and schedules that run on their own, settings, and the calls that free disk space.
rename_stack
Rename a stack — the folder, stack.json, the hub folder tree and the upload defaults all move along.
| Parameter | Type | Description |
|---|---|---|
stack (required) |
string | Current stack name. |
new_name (required) |
string | New stack name. |
duplicate_stack
Duplicate a stack (config, widget states and assets — rendered outputs are not copied, they get re-rendered).
| Parameter | Type | Description |
|---|---|---|
stack (required) |
string | Stack to copy. |
new_name |
string | Name for the copy (default: |
delete_stack
DELETE a stack permanently — its config, assets and rendered videos. only_outputs=true deletes just the rendered videos and keeps the stack. Requires confirm=true after the user confirmed.
| Parameter | Type | Description |
|---|---|---|
stack (required) |
string | Stack to delete. |
only_outputs |
boolean | Only delete the rendered videos, keep the stack. |
confirm (required) |
boolean | Required true. Only pass it after the user explicitly confirmed this deletion in chat. |
move_stack_to_folder
Move a stack into a hub folder (created if missing). Empty folder = move it back to the root level.
| Parameter | Type | Description |
|---|---|---|
stack (required) |
string | Stack name. |
folder |
string | Folder name ('' = root). |
set_stack_labels
Attach or remove a label on one or more stacks (label id or name; definitions live in the settings). The three auto labels (finished/rendered/uploaded) follow the render/upload state while auto-labels are on — overrides only bite when they're off.
| Parameter | Type | Description |
|---|---|---|
stacks (required) |
array of string | Stack names. |
label (required) |
string | Label id or name. |
on |
boolean | true = attach (default), false = remove. |
reset_stack_labels
Clear the manual on/off overrides of the auto labels on the given stacks (hub: 'Clear manual label overrides').
| Parameter | Type | Description |
|---|---|---|
stacks (required) |
array of string | Stack names. |
set_folders
Replace the whole stack or brand folder tree (create/rename/delete folders, move members): tree = [name, …, {type:'folder', name, stacks|brands:[…]}]. Read get_folders first; move_stack_to_folder / move_brand_to_folder move one item.
| Parameter | Type | Description |
|---|---|---|
kind (required) |
string | 'stacks' or 'brands'. |
tree (required) |
array of object |
save_assembly_preset
Create or update an assembly-line preset (full automation recipe for run_assembly). Pass flat {field: value} — unspecified fields keep their current value (or default when new). See list_presets for existing fields.
| Parameter | Type | Description |
|---|---|---|
name (required) |
string | Preset name. |
fields (required) |
object | Field values, e.g. {"stack_preset": "9x16", "topic": "…"}. |
A schedule's real run flag is not the whole permission. In the API upload modes the 09:00 run stays a dry run until the guardrails allow schedules to approve themselves — the posts it proposes wait in the review queue instead.
save_schedule
Create or update an assembly schedule: preset (assembly preset name), time 'HH:MM', days (Mon=0..Sun=6, empty = daily), enabled, approved (real run instead of dry run — needs confirm=true). Pass id to update an existing entry. Runs while the app is open; a time already past today never fires on save.
| Parameter | Type | Description |
|---|---|---|
id |
string | Existing schedule id (update); omit to create. |
preset |
string | Assembly preset name (list_presets). |
time |
string | Time of day 'HH:MM' (default 09:00). |
days |
array of integer | Weekdays Mon=0..Sun=6; empty = daily. |
enabled |
boolean | |
approved |
boolean | Real run instead of dry run (confirm-gated). |
confirm |
boolean | Required true. Only pass it after the user explicitly confirmed this action in chat. |
delete_schedule
Delete an assembly schedule by id (confirm-gated).
| Parameter | Type | Description |
|---|---|---|
id (required) |
string | Schedule id from list_schedules. |
confirm (required) |
boolean | Required true. Only pass it after the user explicitly confirmed this action in chat. |
save_caption_style
Create or update a user-defined caption style (font, colors, highlight mode, glow…). Built-in style keys are protected.
| Parameter | Type | Description |
|---|---|---|
key (required) |
string | Style key (lowercase slug). |
style (required) |
object | Style fields — copy a built-in from list_caption_styles as the starting point. |
save_video_template
Create or update an output-format template. The built-in Default is protected.
| Parameter | Type | Description |
|---|---|---|
name (required) |
string | Template name. |
settings (required) |
object | Template fields (width/height/fps/codec/crf/bitrate…) — copy an entry from list_video_templates as the starting point. |
rename_item
Rename a stack preset, assembly preset or video template.
| Parameter | Type | Description |
|---|---|---|
kind (required) |
enum: stack_preset, assembly_preset, video_template |
|
name (required) |
string | Current name. |
new_name (required) |
string | New name. |
delete_item
DELETE a stack preset, assembly preset, caption style or video template. Built-ins (Default template, built-in caption styles) are protected. Requires confirm=true after the user confirmed.
| Parameter | Type | Description |
|---|---|---|
kind (required) |
enum: stack_preset, assembly_preset, caption_style, video_template |
|
name (required) |
string | Name (caption styles: the key). |
confirm (required) |
boolean | Required true. Only pass it after the user explicitly confirmed this deletion in chat. |
API keys, the AI/TTS provider switch and the guardrails themselves are
not writable over MCP. You manage those in the app; an assistant can only change
what get_settings returns as writable.
set_settings
Write app settings (any key get_settings returns, except its read_only list). API keys, provider switches and guardrails cannot be written over MCP — the user manages those in the app.
| Parameter | Type | Description |
|---|---|---|
values (required) |
object | {setting: value} — e.g. {"upload_mode": "late_dev"} (modes: late_dev, late_csv, metricool_drive, metricool_api). |
test_connection
Settings → AI 'Test connection' against the STORED configuration: kind 'ai' makes one tiny call with the saved AI provider/key/model, kind 'tts' one tiny synthesis with the saved voiceover provider. Returns ok/level/message — never the key.
| Parameter | Type | Description |
|---|---|---|
kind |
string | 'ai' (default) or 'tts'. |
clean_cache
Empty one cache folder (target: proxies, voiceovers, motion_titles or logs) — they refill on demand. Files in use are skipped. confirm-gated.
| Parameter | Type | Description |
|---|---|---|
target (required) |
string | proxies |
confirm (required) |
boolean | Required true. Only pass it after the user explicitly confirmed this action in chat. |
delete_renders
Delete the rendered videos (the whole rendered/ folder) of the given stacks — the stacks themselves stay and can be re-rendered. confirm-gated.
| Parameter | Type | Description |
|---|---|---|
stacks (required) |
array of string | Stack names. |
confirm (required) |
boolean | Required true. Only pass it after the user explicitly confirmed this action in chat. |
This is permanent — the Drive trash is bypassed, because a trashed file still counts against the quota. Files a scheduled Metricool post still uses are refused, and the call is confirmation-gated like every other delete.
delete_drive_uploads
Permanently delete VidVertex's Google Drive uploads — by default every file no scheduled Metricool post uses (get_drive_uploads' deletable list: free + unverified), or the given ids. Files of Metricool CSV exports (csv_export) are left alone unless include_csv_exports=true — only once every export is imported. Files a scheduled post still uses are refused; the Drive trash is bypassed. confirm-gated.
| Parameter | Type | Description |
|---|---|---|
ids |
array of string | Drive file ids from get_drive_uploads; omit = all deletable. |
include_csv_exports |
boolean | Without ids: also delete the csv_export files. Only when the user confirmed that every Metricool CSV export has been imported. |
confirm (required) |
boolean | Required true. Only pass it after the user explicitly confirmed this action in chat. |
restore_backup
Roll one config file back to a backup version (see list_backups). The current version is kept as a fresh .bak1, so this is reversible — still requires confirm=true after the user confirmed the rollback.
| Parameter | Type | Description |
|---|---|---|
path (required) |
string | File path from list_backups. |
index |
integer | Backup index (default 1 = newest). |
confirm (required) |
boolean | Required true. Only pass it after the user explicitly confirmed this deletion in chat. |
fix_render_status
Hub 'Fix render status': rebuild the render manifest for legacy renders and refresh the render signature so a stack with existing outputs counts as rendered again.
| Parameter | Type | Description |
|---|---|---|
stacks (required) |
array of string | Stack names. |
open_in_explorer
Open a stack's folder, any path, or the shortcuts 'logs' / 'data' on the user's desktop (Explorer, or the default app for a file — e.g. a finished export CSV).
| Parameter | Type | Description |
|---|---|---|
stack |
string | |
path |
string | Folder/file path, or 'logs' / 'data'. |
Prev: Agent control · Next: AI setup