levea-mcp-server
Levea — Агентная платформа видеопроизводства
Профессиональная агентная среда производства редактируемого видео. Levea превращает творческие указания на естественном языке, транскрипты и исходные медиафайлы в полностью структурированные редактируемые видеопроекты, выполняет монтаж через детерминированный производственный конвейер, проверяет результат и рендерит файлы для доставки.
Бета-уведомление: Агентный монтаж может допускать ошибки. Всегда просматривайте каждый результат перед публикацией. Для производственно-безопасных и ответственных рабочих процессов используйте
requirePlanApproval: true, чтобы остановить выполнение после этапа планирования и проверить предлагаемый список правок.
⚡ Философия Levea: Prompt-to-Project
В отличие от традиционных одношаговых ИИ-генераторов видео, которые выдают закрытые, нередактируемые пиксели, Levea поддерживает полностью структурированный многослойный проект и таймлайн (Scene IR), содержащий ассеты, текст, маски, аудио и бренд-киты.
Мы используем вероятностные Frontier LLM исключительно для планирования, семантического анализа и разбора параметров. Фактическая компоновка, тайминг, очистка аудио, отслеживание лиц и композитинг выполняются высокопроизводительным детерминированным производственным конвейером. Генеративные медиамодели — это опциональные модульные ассеты; они не владеют состоянием проекта.
Related MCP server: ViralSpin MCP
🏗️ Архитектура платформы
Levea разделяет вероятностные творческие рассуждения и детерминированное исполнение проекта:
Creative Intent + Source Media
│
▼
Probabilistic Multimodal Intelligence
(Frontier Models)
│
▼
Typed Edit Graph / Media IR
(Scene Graph DAG)
│
▼
Deterministic Video-Production Harness
├── Timeline and Scene Graph
├── Media Operators
├── Caption and Layout Engine
├── Animation and Motion System
├── Generative Media Adapters
├── Composition and Asset Execution
│ ├── Remotion — cards, charts, diagrams and editorial compositions
│ ├── Vulkan/WebGPU — captions, primitives, effects and final compositing
│ ├── Lottie — verified authored vector assets
│ ├── HyperFrames — verified data-driven motion composites
│ └── Omni/Veo — generated supporting media
├── Validators
├── Project Versioning
└── Export Pipeline
│
▼
Verification → Bounded Repair → Editable Scene
├── Return
├── Queue Media Work
└── Optional Export1. Мультимодальное планирование
Слой планирования интерпретирует пользовательские промпты, транскрипты, визуальные референсы и границы таймлайна. Он компилирует необработанный естественный язык в высокооптимизированный типизированный Workflow DAG последовательных и параллельных операций монтажа. Размещённый планировщик в настоящее время использует Gemini через Google AI и Vertex AI.
2. Workflow DAG и Scene IR (промежуточное представление)
Они представляют двойную архитектуру «мозг-тело» Levea:
Workflow DAG описывает задачи монтажа, зависимости, шлюзы, верификаторы и задания по генерации ассетов.
Scene IR — это сериализуемая медиасхема, представляющая полный таймлайн: размеры холста, дорожки, слои, пользовательские переходы, эффекты и ассеты.
Разделение намерения и исполнения делает правки полностью проверяемыми, воспроизводимыми и независимо восстанавливаемыми без передачи владения проектом LLM.
3. Детерминированный производственный конвейер
Типизированные производственные операторы выполняют план на основе графа сцены. Нативный рендерер компилирует композиции Scene через нативные пути Vulkan и браузерный WebGPU, а затем компонует их с проверенными композиционными ассетами, созданными Remotion (который обрабатывает богатые редакционные макеты, карточки и диаграммы).
4. Версионирование и экспорт
Все ревизии сохраняются в надёжной линейной истории отмены/повтора, основанной на неизменяемых полезных нагрузках сцены, что предотвращает повреждение состояния при многошаговых итерациях. Экспорт опционален — Levea может вернуть обновлённую редактируемую сцену, поставить в очередь рендеринг ассетов, доставить MP4 или собрать ассеты в комплект для доставки на несколько платформ.
🛠️ Быстрый старт по двум путям (Начните за 60 секунд)
Будь вы ИИ-разработчик, стремящийся интегрировать автоматический монтаж в свои агентные циклы, или контент-мейкер, создающий автоматизированный канал без лица, Levea предлагает для вас нативный путь.
🧑💻 Путь A: Для разработчиков и ИИ-инженеров (маршрут MCP)
Предоставьте Levea как stdio-обёртку клиентского сервера Model Context Protocol (MCP) (levea-mcp-server) в ваших любимых ИИ-редакторах (Cursor, Cline, Windsurf или Claude Desktop).
1. Получите API-ключ
Зарегистрируйтесь на studio.livecore.ai и создайте API-ключ Levea.
2. Зарегистрируйте MCP-сервер
Добавьте следующий блок конфигурации в настройки MCP вашего редактора:
{
"mcpServers": {
"levea": {
"command": "npx",
"args": ["-y", "levea-mcp-server"],
"env": {
"LEVEA_API_URL": "https://api.livecore.ai",
"LEVEA_API_KEY": "your-key-from-studio.livecore.ai"
}
}
}
}Примечание: LEVEA_API_URL должен указывать на голый домен хоста https://api.livecore.ai. Клиентская обёртка автоматически добавляет конечные точки.
Клиент | Команды настройки / Инструкции |
Cursor & Windsurf | Перейдите в Settings -> Features -> MCP -> Add New MCP Server. Установите тип |
Cline | Откройте настройки, прокрутите до MCP и добавьте конфигурацию в файл настроек MCP в Cline. |
Claude Code | Выполните: |
Claude Desktop | Добавьте блок сервера в |
🎨 Путь B: Для создателей и маркетологов (маршрут OpenClaw)
Разверните Levea как автономного агента монтажа прямо в рабочем пространстве OpenClaw.
Установите плагин: Найдите
openclaw-ai-video-editorна ClawHub и установите его, чтобы получить системное выполнение, интерфейс загрузки ассетов и поддержку рендеринга.Установите навык: Оформите подписку на
levea-ai-video-editorв каталоге навыков ClawHub, чтобы дать вашему агенту профессиональный редакторский вкус, системные инструкции и правила темпа.Запустите первый монтаж:
"Просмотрите моё вертикальное видео, удалите начальную тишину, автоматически примените субтитры в стиле Хормози с выделенными ключевыми словами, добавьте ненавязчивую фоновую музыку и экспортируйте MP4, готовый для Reels."
🧩 Интеграция с OpenClaw: плагин против навыка
Levea создан для модульных агентных платформ. При развёртывании Levea внутри таких платформ, как OpenClaw или Hermes, мы разделяем исполнительные возможности и когнитивные стратегии:
Плагин (
openclaw-ai-video-editor): действует как физическое тело. Он предоставляет основную поверхность инструментов MCP, регистрирует схемы инструментов, управляет API-ключами, настраивает конвейеры прогресса SSE и обрабатывает физическую загрузку файлов и хуки рендеринга.Навык (
levea-ai-video-editor): действует как когнитивный разум. Это набор инструкций, созданных с помощью промпт-инжиниринга и учитывающих контекст (системные промпты и few-shot креативные шаблоны), который учит агента действовать как профессиональный режиссёр — соблюдая правила бренда, безопасные зоны, темп и эстетику компоновки.
Мы рекомендуем установить оба компонента, чтобы раскрыть всю мощь автономного монтажа с профессиональным результатом.
🎬 Что можно попросить (варианты использования для создателей и разработчиков)
Levea поддерживает широкий спектр производственных инструкций на естественном языке:
Вариант использования / Запрос | Типичный путь автономного производства | Органические ключевые слова |
Генератор канала без лица | Сегментируйте транскрипт, спланируйте компоновку, наложите B-roll, сгенерируйте фоновую музыку на ИИ и выполните рендеринг. |
|
Альтернатива автосубтитрам CapCut | Запустите транскрибацию Whisper, выделите ключевые слова, настройте шрифты, выровняйте тайминг и примените пресеты анимации. |
|
Хайлайты для Shorts и Reels | Извлеките зацепки с высокой вовлечённостью, обрежьте холст до вертикальных безопасных зон 9:16 и примените моушн-графику. |
|
Полировка корпоративного интервью | Вырежьте длинные паузы тишины, заглушите ненормативную лексику, примените цветокоррекцию и добавьте нижние титры с именами спикеров. |
|
Зелёный экран и замена фона | Изолируйте маску спикера, наложите фоновое фото/видео, выровняйте дорожки глубины и выполните композитинг. |
|
Монтаж по активному спикеру с нескольких камер | Синхронизируйте два ракурса камер, выполните диаризацию и автоматически переключайтесь на активного спикера. |
|
⚙️ Надёжная верификация и локализация исправлений
Чтобы ошибки ИИ-планирования никогда не приводили к сломанным композициям или повреждённым файлам, Levea использует замкнутый конвейер верификации и локализации исправлений.
User correction
↓
Semantic-node reference resolution
↓
Typed repair patch
↓
Repair-policy validation
↓
Affected-subgraph invalidation
↓
Partial recompilation and execution
↓
Verification
↓
Atomic replacement of prior versionВнутреннее исправление на основе верификатора: Levea в настоящее время поддерживает ограниченное исправление на основе верификатора для поддерживаемых типизированных сбоев. Сбои верификатора выявляют невыполненный инвариант; исправление начинается с последней проверенной ревизии сцены, и каждый исправленный результат снова проверяется перед фиксацией.
Семантическое исправление по указанию пользователя: Исправление по указанию пользователя работает на уровне видимых пользователю семантических узлов, а не низкоуровневых инфраструктурных задач. Если тип узла поддерживает исправление на естественном языке, Levea сопоставляет ссылку пользователя — например, «вторая диаграмма», «последний заголовок» или «графика после раздела с ценами» — со стабильным семантическим узлом и компилирует запрошенное изменение в типизированный патч.
Инвалидация подграфа: Затем система исправлений определяет, какие зависимые узлы планирования, ассетов, композиции, рендеринга и верификации затронуты. Инвалидируется и выполняется заново только этот подграф; несвязанная проверенная работа сохраняется. Пользовательский язык никогда напрямую не изменяет произвольный JSON сцены или внутренние задачи выполнения.
Ограниченные бюджеты: Исправление узлов на естественном языке доступно только для типов семантических узлов, которые предоставляют стабильную идентичность, редактируемые поля и политику исправлений. Все попытки исправления остаются ограниченными бюджетами действий, попыток, стоимости и времени.
Асинхронная проверка завершения: Рабочий процесс может вернуть ожидающий или частичный результат, пока дополнительные медиазадания продолжаются. Результат считается полностью проверенным только после того, как все требуемые задания по артефактам завершены и их результаты прошли проверку.
📂 Статус возможностей
Доступность конкретных направлений зависит от развёртывания, активных тарифов моделей и квот аккаунта.
Поддерживаемые производственные направления
Состояние проекта и таймлайна: проекты Scene, вставка/обновление слоёв, группировка, обрезка, разрезание, секвенирование, ретайминг, выравнивание относительно дорожек и линейная отмена/повтор.
Субтитры и моушн-графика: автоматические субтитры, тайминг слов, выделение ключевых слов, шаблоны субтитров, нижние титры, титульные карточки, диаграммы, счётчики и графики через проверенные композиции HyperFrames/Remotion, поддерживаемые нативные запасные варианты, проверенные ассеты Lottie и поддерживаемую процедурную анимацию.
Компоновка и восприятие: анализ сцен и кадров, обнаружение лиц, рабочие процессы активного спикера, обнаружение текстовых областей на экране, безопасные зоны и отслеживание или маскирование явно заданных областей.
Композитинг: хромакей, маски, режимы наложения, корректирующие слои, замена фона с альфа-матой и GPU-эффекты.
Аудио: очистка тишины и слов-паразитов, глушение на уровне слов, кроссфейды, эквалайзер, шумоподавление, нормализация громкости и дакинг с учётом речи.
Верификация: типизированные контракты задач, структурная валидация, перцепционные проверки, отслеживание требований, ограниченное исправление и отчётность о частичном успехе.
Зависит от модели или развертывания
Сгенерированное видео, изображения, B-roll, музыка, звуковые эффекты, озвучка и клонирование голоса.
Качество нейронного альфа-матирования и замены фона.
OCR распознавание видимого текста.
📂 Поверхность MCP-инструментов
MCP-сервер предоставляет одну высокоуровневую точку входа для редактирования, а также типизированные инструменты управления и опроса:
Группа | Инструменты | Описание |
Редактирование |
| Единая точка входа для промптов редактирования, потоковая передача прогресса через SSE и асинхронная постановка в очередь. |
Опрос заданий |
| Отслеживание рендеринга, генерации B-roll, статуса трекинга и активных задач. |
Шаблоны субтитров |
| CRUD-операции для 41+ шаблонов стилей (Hormozi, Minimal-Pro, typewriter...). |
Бренд-киты |
| Управление фирменными цветами, шрифтами, логотипами, клонами голоса спикера и правилами грейдинга. |
Проекты |
| Управление рабочим пространством проектов. |
Ассеты |
| Запрос подписанных URL для загрузки, список ассетов и запрос быстрых транскрипций Whisper. |
Диагностика |
| Неаутентифицированная проверка работоспособности сети. |
🔮 Органическое SEO FAQ для разработчиков и создателей
Чем Levea отличается от обычных видеогенераторов, таких как Sora, Veo или Runway?
Обычные генеративные видеомодели (Sora, Runway, Veo) выдают «сырые», зафиксированные пиксели. Вы не можете отредактировать слой, изменить типографику субтитров, заменить фоновую музыку или исправить тайминг слова после генерации. Levea — это полнофункциональный редактор таймлайна, который строит структурированные слои проекта. Он использует генеративные модели (например, Omni/Veo/Imagen) только как опциональные плагины для генерации ассетов, сохраняя ваш конвейер редактирования полностью редактируемым, проверяемым и детерминированным.
Безопасно ли использовать Levea в корпоративных продакшенах?
Да. Каждая мутация выполняется в безопасной, изолированной среде (GatedExecutor). Высокоуровневые контракты действий гарантируют, что LLM не смогут внедрять произвольные мутации или обходить профили безопасности. Если вы настроите requirePlanApproval: true, система остановится и представит творческий план вашей команде на утверждение перед выполнением любых правок или рендерингом ассетов.
Какие среды разработки и агентные среды поддерживает Levea?
Levea нативно интегрируется с хостами Model Context Protocol (MCP), такими как Claude Desktop, Cursor, Cline, Windsurf и Claude Code. Для автономных агентных систем Levea предоставляет структурированные пакеты для OpenClaw и Hermes.
Могу ли я использовать собственные фирменные шрифты, логотипы и конкретные шаблоны субтитров?
Безусловно. С помощью Brand Kits API и инструментов вы можете задать собственные типографские шкалы, hex-коды палитры, ссылки на изображения логотипов и индивидуальные голосовые отпечатки. Планирующая модель считывает эти правила и автоматически применяет их на таймлайне во время прохода композиции.
🔗 Ссылки и ресурсы
Levea Studio и API-ключи: studio.livecore.ai
npm-обёртка MCP-сервера:
levea-mcp-serverРеестр MCP:
io.github.brajendrak00068/levea-mcp-serverСтраница плагина OpenClaw:
openclaw-ai-video-editorСтраница навыка OpenClaw:
levea-ai-video-editorПодробное руководство по интеграции агентов: AGENTS.md
Документация папки MCP: mcp-server/README.md
Поддержка и контакты: brajendrak00068@gmail.com
Лицензия
Available Tools
25 toolsapply_caption_templateApply caption templateAInspect
Apply a caption template to a scene synchronously (without going through autonomous_edit).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| scene | No | Inline scene (alternative to project_id). | |
| project_id | No | Project / scene id to apply to. | |
| template_id | Yes | Template slug / id from list_caption_templates. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false; the description adds the genuinely useful behavioral fact that execution is synchronous rather than queued through autonomous_edit. It does not disclose whether existing captions are overwritten (especially in 'clear'/'recreate' modes) or what the synchronous call returns, which matters for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler, and the synchronous/alternative-path distinction is front-loaded where an agent will see it first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested 'scene' object, a six-value mode enum, and no output schema, the definition is adequate but thin: mode semantics and the return behavior of the synchronous call are unexplained. Annotations and the 75% schema coverage fill enough of the gap that this is not a serious deficiency, but the description could say more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 75% schema description coverage and four parameters, the schema carries most of the documentation burden. The description adds nothing about the enum values for 'mode' (the one parameter lacking a schema description) or about scene vs project_id precedence, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Apply a caption template to a scene') and explicitly contrasts with the sibling autonomous_edit path, so an agent can distinguish it from the autonomous workflow. It does not convey what applying a template actually does to existing captions, but the action itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'synchronously (without going through autonomous_edit)' implies when to pick this over the autonomous siblings, which is useful routing context. However, it gives no guidance on the six modes (add vs recreate vs clear etc.), nor on when to use scene vs project_id, leaving key selection decisions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asset_upload_urlGet asset upload URLAInspect
Get a signed upload URL for a local file (so users do not have to host video / image / audio elsewhere before passing video_url to autonomous_edit). Body: { fileName, fileType?, contentType?, projectId? }. Returns { uploadUrl, fileUrl }; PUT the file bytes to uploadUrl, then pass fileUrl to autonomous_edit as video_url / in assets[].
| Name | Required | Description | Default |
|---|---|---|---|
| fileName | Yes | ||
| fileType | No | video | image | audio (heuristic from extension if omitted). | |
| projectId | No | Optional project to associate the asset with. | |
| contentType | No | MIME type, e.g. video/mp4. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly=false, destructive=false, openWorld=false; the description adds the critical non-obvious behavior that this tool does NOT upload the file - the caller must PUT the bytes to the returned uploadUrl - plus the exact return shape { uploadUrl, fileUrl }. Still missing is signed-URL expiry or size/type limits, which matter for a URL-minting tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose in the first clause, then compactly covers body shape, return values, and next step in one tight pass. No filler sentences and no repeated schema content beyond a useful reminder of the call shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no output schema, the description covers what it returns and how to consume it, which is the key gap a missing output schema would otherwise leave. The remaining omission is operational context such as URL expiration or accepted file size constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the schema already documents fileType, projectId and contentType, so the description's inline '{ fileName, fileType?, contentType?, projectId? }' mostly restates the schema's required/optional shape. It adds no format, constraint, or default detail beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a signed upload URL for a local file') and immediately ties it to its downstream consumer, autonomous_edit's video_url parameter. An agent can distinguish this from siblings like list_assets or delete_asset without reading any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit three-step workflow (call this, PUT bytes to uploadUrl, then pass fileUrl to autonomous_edit) and explains the motivating condition: avoiding external hosting of video/image/audio. It does not name an explicit exclusion or a competing alternative, which keeps it just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autonomous_editEdit videoADestructiveInspect
PRIMARY EDIT TOOL. Run a natural-language video edit end-to-end. The backend agent plans, executes, verifies, and exports. Accepts anything from a one-liner ("generate 3 viral clips with captions and export") to a multi-paragraph creative brief. Returns the final mp4 URL synchronously when an export is queued. For long renders you may prefer queue_edit + check_job_status.
| Name | Required | Description | Default |
|---|---|---|---|
| scene | No | Optional existing scene/timeline state to continue editing (advanced). | |
| assets | No | Optional input media assets. URLs must be public HTTP/HTTPS links. | |
| prompt | Yes | Natural-language description of the desired edit or creative brief. The backend planner decomposes it into canonical actions (viral clips, captions, reframe, export, …). Send the user's intent verbatim — do not pre-decompose. | |
| brandId | No | Optional per-call brand profile id (see list_brand_kits). | |
| core_only | No | Return rendering-essential scene fields only (smaller payloads). | |
| video_url | No | Optional public source video URL (HTTP/HTTPS: S3, Google Drive public link, Dropbox, direct MP4) for a new project. Local file paths are not supported. | |
| editedPlan | No | Optional pre-edited plan object returned by a prior awaiting_approval response. | |
| project_id | No | Optional project id for tracking and continuity. Reuse the projectId returned by the first call for every continuation. | |
| flaggedIssues | No | Optional list of specific user-flagged problems for this run (e.g. ["caption #3 misspelled"]). | |
| workingMemory | No | Working memory returned by an awaiting-approval call; resend it to resume. | |
| attachedImages | No | Optional reference image URLs used for planning. | |
| projectBrandId | No | Optional default brand for the project. Persists; per-call brandId overrides. | |
| captionTemplateMode | No | How to apply captionTemplatePreset. | |
| requirePlanApproval | No | If true, the backend stops after planning and returns workingMemory for user approval. Resend with workingMemory (and optionally editedPlan) to continue. | |
| captionTemplatePreset | No | Optional caption template to apply when (re)generating captions: a builtin slug (e.g. hormozi, mrbeast, viral-pop, karaoke, neon-pop, subtitle-bar) or a user-saved template id. Call list_caption_templates for the exact ids available. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag destructiveHint/openWorldHint; the description adds real behavioral context the annotations do not carry — the plan/execute/verify/export pipeline and that the mp4 URL returns synchronously when an export is queued. It does not say what project state the destructive edit overwrites or whether prior edits are recoverable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with the tool's role, then the mechanism, then the return value, then the async alternative. No filler or restatement of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter mutation tool with no output schema, the description covers the core call shape and the sync return value, and the schema itself documents the advanced resume/approval parameters well. Missing only a note on cross-call continuity via project_id, which the tool treats as an important pattern.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description only adds the usage pattern for `prompt` (send intent verbatim, any length); it says nothing about the approval-resume flow (requirePlanApproval/workingMemory/editedPlan) or asset URL requirements, which the schema already handles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with 'PRIMARY EDIT TOOL' and states a specific verb+resource: run a natural-language video edit end-to-end, with the backend planning, executing, verifying and exporting. That tells an agent exactly what this does and how it differs from queue_edit / autonomous_edit_streaming without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to prefer queue_edit + check_job_status for long renders, and gives the input range (one-liner to multi-paragraph brief) that qualifies as a call. It does not distinguish this from autonomous_edit_streaming, which remains an unaddressed alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autonomous_edit_streamingEdit video (live progress)ADestructiveInspect
Same as autonomous_edit but consumes the SSE event stream from the backend. Returns the final terminal result; per-step events (status, thinking, tool_call, tool_result, background_job_completed) are emitted as MCP progress notifications when the client supports them. Use for long-running briefs where users expect live progress.
| Name | Required | Description | Default |
|---|---|---|---|
| scene | No | Optional existing scene/timeline state to continue editing (advanced). | |
| assets | No | Optional input media assets. URLs must be public HTTP/HTTPS links. | |
| prompt | Yes | Natural-language description of the desired edit or creative brief. The backend planner decomposes it into canonical actions (viral clips, captions, reframe, export, …). Send the user's intent verbatim — do not pre-decompose. | |
| brandId | No | Optional per-call brand profile id (see list_brand_kits). | |
| core_only | No | Return rendering-essential scene fields only (smaller payloads). | |
| video_url | No | Optional public source video URL (HTTP/HTTPS: S3, Google Drive public link, Dropbox, direct MP4) for a new project. Local file paths are not supported. | |
| editedPlan | No | Optional pre-edited plan object returned by a prior awaiting_approval response. | |
| project_id | No | Optional project id for tracking and continuity. Reuse the projectId returned by the first call for every continuation. | |
| flaggedIssues | No | Optional list of specific user-flagged problems for this run (e.g. ["caption #3 misspelled"]). | |
| workingMemory | No | Working memory returned by an awaiting-approval call; resend it to resume. | |
| attachedImages | No | Optional reference image URLs used for planning. | |
| projectBrandId | No | Optional default brand for the project. Persists; per-call brandId overrides. | |
| captionTemplateMode | No | How to apply captionTemplatePreset. | |
| requirePlanApproval | No | If true, the backend stops after planning and returns workingMemory for user approval. Resend with workingMemory (and optionally editedPlan) to continue. | |
| captionTemplatePreset | No | Optional caption template to apply when (re)generating captions: a builtin slug (e.g. hormozi, mrbeast, viral-pop, karaoke, neon-pop, subtitle-bar) or a user-saved template id. Call list_caption_templates for the exact ids available. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a mutating, destructive, closed-world operation, so the safety burden is partly carried elsewhere. The description adds genuinely non-obvious behavior: it returns only the terminal result while emitting per-step events (status, thinking, tool_call, tool_result, background_job_completed) as MCP progress notifications, and only when the client supports them. It omits the approval/workingMemory continuation loop, which the schema covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the differentiation from autonomous_edit, then return shape, then the selection rule. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter, nested-object, mutating tool without an output schema, the description says almost nothing about what the "final terminal result" contains or how awaiting_approval / workingMemory / project_id continuity behaves. The rich schema compensates for parameters, but the return-shape gap keeps this at adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 15 parameters, including nested scene/assets objects and the approval resume fields, are already documented in the schema. The description adds no parameter-level guidance at all, which is acceptable here but earns only the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (edit video) and explicitly frames itself against the sibling autonomous_edit, with the distinguishing trait being SSE streaming plus progress notifications. It is slightly dependent on the reader already knowing what autonomous_edit does, but the delta is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use for long-running briefs where users expect live progress" gives a concrete selection condition and implicitly excludes short/synchronous edits (which map to autonomous_edit). It does not spell out failure modes or when streaming is unavailable, but the when-to-use signal is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_job_statusCheck job statusARead-onlyInspect
Poll an export / async job by jobId (numeric). Supports wait:true to block until terminal.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Block until terminal state. | |
| job_id | Yes | Job id to poll (numeric). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that wait:true blocks until a terminal state, but it does not explain terminal states, timeout behavior, or what the poll returns; the wait behavior is also already in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It communicates the core action, identifier requirement, and wait option efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only polling tool this is minimally adequate, but because there is no output schema, the description should say more about what status values or terminal states are returned. It also omits timeout or failure behavior for wait:true.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description repeats that job_id is numeric and wait blocks until terminal, but adds no additional format or semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb, "Poll," and resource, "export / async job," with the required identifier. It is clear, though it does not explicitly distinguish itself from sibling tools like check_task_status or get_active_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Polling an export/async job implies the use case, and wait:true is described. However, there is no explicit guidance on when to use this instead of check_task_status or get_active_task, nor any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_task_statusCheck task statusARead-onlyInspect
Poll a queued edit task by taskId (returned by queue_edit). Separate from job_id (exports).
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task id from queue_edit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds a useful identity distinction (queue_edit task vs export job), but says nothing about what the poll returns — the set of status values, whether a terminal state carries a result payload, or how often to poll.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero filler; the disambiguation from job_id sits immediately after the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return values, yet leaves the agent without any notion of status states or terminal conditions. Adequate for selecting the tool, thin for actually interpreting a poll response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, with the schema already stating 'Task id from queue_edit.' The description restates the same provenance information, adding no format or mutation detail beyond it. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (poll) and specific resource (a queued edit task), and explicitly separates itself from the job_id/export flow handled by check_job_status. An agent can distinguish it from its closest sibling without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the entry point (taskId returned by queue_edit) and implicitly routes export-job polling to check_job_status by naming job_id as a separate concept. It stops short of explicitly saying 'use check_job_status for exports' or describing what to do between polls, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_brand_kitCreate brand kitBInspect
Create a brand profile. Fields: name, palette {primary,secondary,accent,neutral,extras[]}, fonts {primary,secondary}, gradeBias (warm/cool/neutral/vivid/muted), forbiddenColors[], logoAssetUrl, voiceTone, enforcement (soft|hard).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| fonts | No | ||
| palette | No | ||
| gradeBias | No | ||
| voiceTone | No | ||
| enforcement | No | ||
| logoAssetUrl | No | ||
| forbiddenColors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the lower bar applies, but the description still says nothing beyond field names. It never explains what 'enforcement: soft|hard' actually changes in downstream behavior, whether name must be unique, whether the call is idempotent, or what happens on conflict — the one piece of genuinely non-obvious behavior here is left entirely undefined.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One purpose sentence followed by a compact field list, front-loaded and waste-free. The telegraphic brace notation is dense but readable for an agent and appropriate for an 8-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested 8-parameter creation tool with no output schema, the field inventory is complete enough to construct a call, but key behavioral questions — what enforcement governs, whether the kit is immediately active, what the call returns — are unanswered. Adequate to invoke, thin on the consequences of invoking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0% and nested objects, the description is the only source of parameter meaning, and it delivers: it enumerates every top-level field plus the internal shape of palette {primary,secondary,accent,neutral,extras[]} and fonts {primary,secondary}, and restates both enum value sets. It falls short of a 5 because the semantics of gradeBias and enforcement values are listed but not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Create a brand profile.' The create-prefix plus the sibling set (list/get/update/delete_brand_kit) makes it obvious this is the creation entry point, though the description says 'brand profile' where everything else says 'brand kit', a small naming inconsistency. No sibling is named explicitly, but the CRUD family is self-evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, no pointer to update_brand_kit for modifying an existing kit. The agent must infer entirely from the name that this is the first step before update/delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectCreate projectCInspect
Create a new project. Optional initial brandId.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| brandId | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the mutation/safety profile is covered. The description adds nothing beyond that: no auth/permission requirements, no note that name must be unique, no mention of what the call returns (e.g., the new project id) or whether brandId can be changed afterward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and with zero filler. The second sentence is a fragment, and the brevity here reflects under-specification rather than tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should say at least roughly what comes back, and it does not. For a simple three-parameter create tool the description is minimally adequate, but the unexplained `description` parameter and absent return-value note leave real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden and only partially meets it. It clarifies that brandId is an 'initial' association (implying it can be changed later), but never mentions the `description` parameter at all and gives no constraints on `name`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new project'), which is unambiguous against siblings like list_projects, get_project, and delete_project. It does not explicitly differentiate from create_brand_kit, but the resource noun does most of that work already.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to create a project versus any alternative flow, no prerequisites, and no note about what happens next (e.g., whether brand association can be changed later). The agent must infer everything about invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_assetDelete assetADestructiveInspect
Delete an asset by file name (the path returned by asset_upload_url).
| Name | Required | Description | Default |
|---|---|---|---|
| fileName | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and readOnlyHint=false, so the unsafe mutation profile is covered. The description adds practical context about where the fileName comes from but does not explain irreversibility, confirmation expectations, or post-deletion effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted language. It puts the core action first and the identifier clarification second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with annotations covering the safety profile and no output schema, the description is nearly complete. It only lacks explicit mention of permanence or any confirmation requirement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the single undocumented parameter. It does this reasonably well by identifying fileName as an asset file name and tying it to the path returned by asset_upload_url, though it does not provide format examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Delete an asset") and immediately clarifies the identifier needed via the parenthetical about the file name. An agent can distinguish this from sibling asset tools such as list_assets or asset_upload_url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful context by noting the file name is the path returned by asset_upload_url, but it does not explicitly state when to use this tool versus alternatives or outline any preconditions beyond the identifier source. The usage is implied by the destructive action and parameter requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_brand_kitDelete brand kitCDestructiveInspect
Delete a brand profile.
| Name | Required | Description | Default |
|---|---|---|---|
| brand_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=false, so the safety profile is partly covered. But the description adds nothing beyond that: it doesn't say whether the deletion is permanent, whether associated assets/captions are affected, or what permissions are needed — important for an irreversible mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero padding. It is efficient, though the terseness reflects under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, irreversible mutation with an undocumented parameter and no output schema, the description should disclose what is removed and that the action cannot be undone. It provides none of that, so an agent cannot call it confidently without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required parameter, brand_id, with 0% schema description coverage, and the description never mentions it. It doesn't clarify the expected ID format or where the ID comes from (e.g., list_brand_kits).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a brand profile'), enough to distinguish it from the list/get/create/update brand-kit siblings. Minor terminology drift ('profile' vs 'brand kit') is the only blemish.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus update_brand_kit or deleting a project, no prerequisites, no warning that the operation is permanent. The agent is left to infer everything about usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_caption_templateDelete caption templateBDestructiveInspect
Delete a user-saved caption template by id.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the delete semantics are covered structurally. The description adds the useful qualifier that only user-saved templates are eligible (built-ins presumably can't be removed), but says nothing about irreversibility, permission requirements, or behavior when the id is invalid or unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the verb and the resource front-loaded and zero filler. Nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no output schema and no annotation details beyond destructiveness, the definition is serviceable but thin. An agent still lacks error behavior, id format expectations, and any post-deletion confirmation semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single parameter, so the description carries some burden. Saying "by id" clarifies that template_id is an identifier rather than a name, but no format (UUID, slug, opaque string) or example is provided to help construct a valid call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Delete a user-saved caption template") and narrows scope to user-saved templates via "by id". The resource name is distinct from siblings such as delete_brand_kit, delete_asset, and delete_project, though it never explicitly contrasts with apply_caption_template or list_caption_templates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"User-saved" hints that only templates created via save_caption_template qualify, but the description gives no explicit when-to-use guidance, no mention of apply_caption_template as the non-destructive alternative, and no note about what to do if the template is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectDelete projectDDestructiveInspect
Delete a project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known without the description. The description adds nothing beyond that: it does not say whether deletion is permanent, what happens to assets or dependent resources inside the project, or whether confirmation is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The sentence is short but that is under-specification rather than conciseness: it has zero informational payload beyond the title. There is no front-loading problem because there is nothing to front-load.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an irreversible destructive operation with no output schema and an undocumented parameter, the definition is far too thin. It omits consequences, prerequisites, and return behavior, leaving the agent to infer everything from the name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate, but it provides no information about project_id — no format, no example, no note that it is required. The only hint is the parameter's self-explanatory name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the tool name and title verbatim ('Delete a project.'), adding no specificity about what a project is or what deletion entails. An agent learns nothing beyond the name it already has.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative is mentioned, even though sibling tools like delete_asset and get_project exist and could be confused in scope. The description gives no routing guidance whatsoever.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
editor_healthCheck editor healthARead-onlyInspect
Connectivity diagnostic against LEVEA_API_URL. Unauthenticated.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false; the description adds the useful fact that the call is unauthenticated, which tells the agent no credentials or token flow is needed. It does not say what a success versus failure response looks like, which is the key behavioral detail for a diagnostic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core purpose, zero filler. Appropriately sized for a no-argument read-only probe.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple zero-param read tool with no output schema, but for a diagnostic the agent still needs to know what result indicates healthy versus unreachable, and that is absent. The unauthenticated note covers the main prerequisite, leaving the outcome semantics as the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-parameter tool applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a concrete operation and target: a connectivity diagnostic against LEVEA_API_URL. That is more specific than the title and distinguishes it from status-checking siblings like check_job_status and check_task_status, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the word 'diagnostic' – an agent can infer it is for verifying reachability before or after other calls – but there is no explicit when-to-use, when-not-to-use, or pointer to alternatives such as check_job_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_active_taskGet active taskARead-onlyInspect
For a given project, return the currently-running edit task (if any). Useful for reconnecting MCP clients.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds two useful behavioral facts: the lookup is project-scoped and may legitimately return nothing ('if any'). It does not describe the shape of a returned task or what happens when no task is running, which matters most for a reconnection flow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the core action front-loaded ahead of the secondary 'useful for' note. Nothing could be trimmed without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining what comes back, and it only says 'the currently-running edit task (if any)' — enough to signal nullability but not the fields, identifiers, or status a client needs to actually reconnect. For a small read tool this is adequate but leaves a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single project_id parameter, so the baseline applies. The description adds only the framing that the id selects which project's active task is returned, which is a marginal restatement rather than new semantics such as format or where the id comes from.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('return the currently-running edit task') scoped to a project, which is materially clearer than a bare title restatement. However, it never distinguishes itself from the closely-named siblings check_task_status and check_job_status, leaving the agent to guess which status tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Useful for reconnecting MCP clients' implies a usage scenario, which is more than nothing. But there is no explicit when-to-use/when-not guidance and no mention of the alternatives check_task_status or check_job_status that an agent would plausibly reach for first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_brand_kitGet brand kitCRead-onlyInspect
Fetch one brand profile by id.
| Name | Required | Description | Default |
|---|---|---|---|
| brand_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds nothing beyond that: it does not say what happens with an unknown or malformed brand_id, whether a not-found error versus empty result is returned, or what fields a brand kit actually contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the retrieval scope front-loaded and zero padding. It is efficient, though the extreme brevity leaves room to add one clarifying clause without harming readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is the only place an agent could learn what a fetched brand kit returns, and it omits that entirely. For a simple read tool with readOnlyHint coverage the gap is not fatal, but an agent cannot tell whether it will receive assets, colors, fonts, or just metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, and it only weakly does: 'by id' implies brand_id is an identifier but says nothing about expected format (UUID, slug, numeric) or validity constraints. One required parameter is effectively undocumented in both structured and unstructured text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Fetch) and resource (one brand profile) qualified by 'by id', which cleanly distinguishes it from the sibling list_brand_kits. It loses a point for calling the resource a 'brand profile' while the name and siblings say 'brand kit', a small terminology mismatch an agent must reconcile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Fetch one brand profile by id' implicitly signals single-record lookup with a known identifier, so the alternative list_brand_kits is inferable. However, it never states when this tool should be chosen over list_brand_kits, nor how an agent obtains a brand_id in the first place, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectGet projectCRead-onlyInspect
Fetch one project by id.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered structurally. The description adds no behavioral context beyond that — nothing about error behavior for a missing/invalid id, or what identifiers are acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though its brevity borders on under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with annotations covering the safety profile and no output schema, the minimum needed to invoke is present. However, an agent still lacks id format guidance and any hint of the returned shape or failure mode.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter project_id is bare typed as string. The description only echoes 'by id' without clarifying format (UUID, slug, numeric?) or how to obtain a valid id, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch one project') scoped by 'by id', which implicitly separates it from list_projects and delete_project. It does not explicitly name a sibling to avoid, but the singular/read nature is clear enough to select it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus list_projects (which presumably also returns project data) or any prerequisite such as needing an existing project_id. Usage is only inferable from the word 'one' and 'by id'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assetsList assetsBRead-onlyInspect
List the user's uploaded assets. Optional projectId filter.
| Name | Required | Description | Default |
|---|---|---|---|
| fileType | No | Optional filter: video|image|audio. | |
| projectId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that results are scoped to the user's own uploads, but says nothing about ordering, result caps, pagination, or whether an empty result is possible — real gaps for a listing tool even with annotations present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the primary action, with zero filler. The brevity borders on under-specification rather than waste, so it is efficient but leaves obvious value unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with annotations covering safety, the essentials are present, but with no output schema the description is the only place an agent could learn what the response looks like (asset objects, IDs, pagination) — and it does not say. Adequate, not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: fileType carries an inline description with its allowed values, while projectId has none. The description partially compensates by calling projectId an optional filter, but never explains what a project ID represents here or that filters combine (AND) rather than replace each other.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List the user's uploaded assets") with the ownership scope made explicit, which separates it from list_projects and list_brand_kits by resource type. It stops short of naming a sibling or clarifying how it differs from the other list_* tools, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Optional projectId filter" implies the scoping use case, but there is no explicit when-to-use versus when-not, no mention of when to prefer the fileType filter, and no note about whether all assets are returned unpaginated. Usage is inferable but not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_brand_kitsList brand kitsARead-onlyInspect
List the user's brand profiles (palette, fonts, logo, voice, gradeBias). Returns ids you pass to autonomous_edit's brandId / projectBrandId.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds value beyond that by disclosing the shape of each returned profile (palette, fonts, logo, voice, gradeBias) and how the ids chain into autonomous_edit, though it says nothing about ordering, counts, or behavior when the user has no brand kits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler: the first states the resource and its payload, the second states the actionable output. Everything is front-loaded and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description must carry the return-shape burden, and it does by naming the five profile fields. The only gap is behavior at the edges — empty results, ordering, or how many kits can exist — which keeps it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No syntax or filtering concerns exist for an argument-free list call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb plus resource ("List the user's brand profiles") with an enumeration of what each profile contains, which tells an agent exactly what data comes back. It does not explicitly position itself against the sibling get_brand_kit or list_projects, so sibling differentiation is implied by plurality rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives concrete downstream context: the returned ids are fed into autonomous_edit via brandId / projectBrandId. That tells the agent when this call is a prerequisite, but there are no exclusions or explicit alternative-routing statements (e.g., when to use get_brand_kit instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_caption_templatesList caption templatesARead-onlyInspect
List the user's caption templates (builtin + saved). Returns slugs, display names, and style summaries.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description still adds value by disclosing the result composition (builtin templates mixed with user-saved ones) and the shape of each entry, which an agent couldn't infer from the empty schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the resource and scope front-loaded and the return shape immediately after. No filler, no restatement of the title alone.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with no output schema, the description supplies the one thing missing from structured data: what each returned entry contains (slug, display name, style summary). An agent has everything needed to call it and consume the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate. Baseline for a zero-parameter tool applies, and the description correctly avoids inventing filtering options that don't exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List the user's caption templates") and disambiguates scope as "builtin + saved", plus names the fields returned. The verb alone separates it from the apply/save/delete_caption_template siblings, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: mentioning that slugs are returned signals this is the discovery step before apply_caption_template, but the description never says when to use this versus list_brand_kits-style alternatives or that slugs feed other tools. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList projectsCRead-onlyInspect
List the user's projects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered structurally. The description adds nothing beyond that: no pagination behavior, no result ordering, no note about how many projects come back or whether archived projects are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the verb and resource, with no filler. Its terseness is appropriate for a four-word tool, though it borders on under-specified rather than merely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description has to carry the burden of telling the agent what comes back — and it doesn't. It says nothing about return shape, pagination, ordering, or whether the list is scoped to the authenticated user; for an agent deciding whether this is the right call, that is a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to explain and the baseline applies. The absence of parameters is consistent with a simple list operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and resource ('List' + 'projects'), so the basic action is unambiguous. But it does nothing to distinguish it from sibling list tools (list_assets, list_brand_kits, list_caption_templates) or from get_project, leaving scope boundaries implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this versus get_project (single item) or the other list_* siblings. Usage is only inferable from the name itself, which is the minimum guidance possible.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_editQueue video editADestructiveInspect
Fire-and-forget async path. Returns immediately with a taskId. Use when the edit may exceed the MCP request timeout (long viral-clip generation, multi-format export). Poll with check_task_status or get_active_task.
| Name | Required | Description | Default |
|---|---|---|---|
| scene | No | Optional existing scene/timeline state to continue editing (advanced). | |
| assets | No | Optional input media assets. URLs must be public HTTP/HTTPS links. | |
| prompt | Yes | Natural-language description of the desired edit or creative brief. The backend planner decomposes it into canonical actions (viral clips, captions, reframe, export, …). Send the user's intent verbatim — do not pre-decompose. | |
| platforms | No | Optional export platforms for the queued edit. | |
| video_url | No | Optional public source video URL (HTTP/HTTPS: S3, Google Drive public link, Dropbox, direct MP4) for a new project. Local file paths are not supported. | |
| autoExport | No | Automatically export after the queued edit. | |
| project_id | No | Optional project id for tracking and continuity. Reuse the projectId returned by the first call for every continuation. | |
| captionTemplateMode | No | How to apply captionTemplatePreset. | |
| captionTemplatePreset | No | Optional caption template to apply when (re)generating captions: a builtin slug (e.g. hormozi, mrbeast, viral-pop, karaoke, neon-pop, subtitle-bar) or a user-saved template id. Call list_caption_templates for the exact ids available. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, so safety is covered structurally; the description adds the non-obvious async contract: immediate return, a taskId, and the required polling tools. That is genuine context beyond annotations. It does not say what the edit mutates (e.g., whether an existing project_id is overwritten), which matters given destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler, and the defining trait (async, returns taskId) is front-loaded before the when-to-use guidance and the polling pointer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, nested-object tool with no output schema, the description correctly supplies the one piece of return-value information an agent needs (taskId) plus the polling loop, and the schema covers everything else. What is missing is placement within the edit family — nothing tells the agent when queue_edit loses to autonomous_edit or autonomous_edit_streaming.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already fully documents all 9 parameters including prompt semantics, public-URL constraints, and caption template ids. The description adds nothing about parameters, so the baseline 3 applies — the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description describes an async dispatch pattern ("Fire-and-forget async path. Returns immediately with a taskId") but never states the verb+resource directly; the agent must infer "queue a video edit" from the name and title. Critically, it does not distinguish this tool from autonomous_edit or autonomous_edit_streaming, which are the obvious competing edit entry points, so the agent cannot tell from the text alone which edit path to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit selection condition ("Use when the edit may exceed the MCP request timeout") backed by concrete examples (long viral-clip generation, multi-format export), and it explains the follow-up workflow by naming check_task_status and get_active_task. It stops short of naming the synchronous/streaming edit siblings as the alternative, which is the single most useful exclusion here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_caption_templateSave caption templateBInspect
Save a new caption template definition the user can re-apply later.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name. | |
| tags | No | Optional tags. | |
| style | Yes | Style payload (font, color, position, animation, etc.). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-destructive, closed-world write, so the safety profile is covered. The description adds only the persistence intent; it does not say what happens on a duplicate name, whether style is validated, or whether the saved template becomes immediately available to apply tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb, with no filler. It is efficient, though its brevity shades into under-specification rather than tight information design.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter create tool with a nested style payload and no output schema, the description covers the basic intent but omits duplicate-handling, validation expectations, and any indication of what is returned. Minimum viable, with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so name, tags, and style are already documented, and the description adds nothing beyond them. The nested style object (font, color, position, animation) is left entirely to the schema, which is acceptable but earns only the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Save a new caption template definition") with a hint of the payoff (re-apply later). It is clear on its own, but it never distinguishes itself from the very similar sibling save_current_caption_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"the user can re-apply later" implies a create-then-apply lifecycle but gives no explicit when-to-use condition, no prerequisite, and no pointer to list_caption_templates, apply_caption_template, or save_current_caption_template. An agent has to infer the choice from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_current_caption_templateSave current captions as templateBInspect
Snapshot the caption styling currently applied to a project / scene as a reusable template.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Template display name. | |
| scene | No | Inline scene (alternative to project_id). | |
| project_id | No | Project to snapshot from. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds that the capture is of 'currently applied' styling (a point-in-time snapshot), but says nothing about duplicate-name handling, overwrite behavior, or whether a template id is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The 'project / scene' slash construction is slightly loose, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a nested 'scene' object and no output schema, the description does the minimum: it names the sources but not what a successful call yields or how the inline scene differs from project_id in practice. Adequate for a 3-parameter tool, but not more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are documented, which sets the baseline at 3. The phrase 'currently applied to a project / scene' usefully clarifies that scene and project_id are alternative sources of the snapshot, but adds no format or precedence detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Snapshot' plus the resource 'caption styling currently applied to a project / scene' states precisely what the tool produces. It falls short of a 5 because it never distinguishes itself from the near-identically named sibling save_caption_template, leaving the agent to guess which one to call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, despite save_caption_template being an obvious confusable sibling. The description implies the source is current project/scene styling, but never says when this should be chosen over save_caption_template or apply_caption_template.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribe_assetTranscribe assetBInspect
Force transcription of an existing asset. Returns transcript words + timing.
| Name | Required | Description | Default |
|---|---|---|---|
| fileName | Yes | Asset path. | |
| language | No | Optional ASR language hint. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the mutation/safety profile is partly covered. The word "Force" adds real signal that an existing transcript may be recomputed or overwritten, but the description never confirms that, nor whether the call is synchronous, how long it takes, or what permissions it needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action, and the return-value note is compact. Nothing is padded, though the extreme terseness leaves key operational questions unanswered rather than making those sentences earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description usefully covers the return payload ("transcript words + timing") in the absence of an output schema. For a forced, potentially long-running transcription job it omits sync/async behavior, polling expectations, and overwrite semantics, which are the details an agent most needs before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (fileName, language) are documented in the schema, so the baseline is 3. The description adds only "existing asset" as a hint about the path and says nothing about the language hint's behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: "Force transcription of an existing asset." It is unambiguous about what the tool produces, though it never names a sibling or explains how it differs from edit/queue tools in the same family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only implied guidance: the asset must already exist. There is no statement of when to call this versus other job-oriented siblings (check_job_status, check_task_status), nor whether the call blocks, must be polled, or should be preferred over an existing transcript.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_brand_kitUpdate brand kitCDestructiveInspect
Update an existing brand profile by id. Body has the same shape as create_brand_kit.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| fonts | No | ||
| palette | No | ||
| brand_id | Yes | ||
| gradeBias | No | ||
| voiceTone | No | ||
| enforcement | No | ||
| logoAssetUrl | No | ||
| forbiddenColors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. But the description adds no behavioral context beyond that: it never says whether omitted fields are cleared or preserved (partial vs. full replace), which is the single most consequential question for a destructive update, nor does it mention permissions or irreversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and no filler. It is efficient, though the second sentence is doing load-bearing work it isn't precise enough to carry.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A destructive 9-parameter mutation with nested objects, zero schema coverage, and no output schema needs far more: partial-vs-replace semantics, per-field meaning, and what is returned. The description leaves an agent able to identify the tool but not to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters, so the description must carry the burden and largely fails. 'Body has the same shape as create_brand_kit' is a cross-reference that gives no field-level meaning for fonts, palette, gradeBias, voiceTone, enforcement, logoAssetUrl, or forbiddenColors, and the agent has no guarantee create_brand_kit's schema is visible in context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing brand profile') plus the lookup key ('by id'), which separates it cleanly from create_brand_kit, delete_brand_kit, and get_brand_kit in the sibling list. It doesn't name those siblings explicitly, but the verb makes the distinction obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'existing ... by id' — the agent infers it must already have a brand_id from list_brand_kits or get_brand_kit. There is no explicit when-to-use/when-not statement and no mention of whether create_brand_kit should be preferred for new kits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.6.2- Changed
autonomous_edit12 fields changed- changed
Input schema / properties / assets / descriptionPrevious value: -"Optional asset descriptors. Each item: { id?, type: \"video\"|\"image\"|\"audio\", url|src, mimeType?, duration? }."New value: +"Optional input media assets. URLs must be public HTTP/HTTPS links." - added
Input schema / properties / assets / items / propertiesAdded value: +{ + "duration": { + "type": "number" + }, + "id": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "type": { + "enum": [ + "video", + "audio", + "image" + ], + "type": "string" + }, + "url": { + "description": "Publicly accessible HTTP/HTTPS URL to the video, image, or audio asset.", + "type": "string" + } +} - added
Input schema / properties / assets / items / requiredAdded value: +[ + "url" +] - changed
Input schema / properties / attachedImages / descriptionPrevious value: -"Optional base64-encoded reference images the agent should consider while planning."New value: +"Optional reference image URLs used for planning." - changed
Input schema / properties / brandId / descriptionPrevious value: -"Optional brand-profile id to apply for this call (palette, fonts, logo, voice, gradeBias). Look up ids via list_brand_kits. Overrides project default brand."New value: +"Optional per-call brand profile id (see list_brand_kits)." - changed
Input schema / properties / captionTemplatePreset / descriptionPrevious value: -"Optional caption template slug to apply when (re)generating captions. One of 41 builtins (hormozi, mrbeast, viral-pop, minimal-pro, karaoke, neon-pop, typewriter, pop-wave, subtitle-bar, creator-box, …) or a user-saved template id from list_caption_templates."New value: +"Optional caption template to apply when (re)generating captions: a builtin slug (e.g. hormozi, mrbeast, viral-pop, karaoke, neon-pop, subtitle-bar) or a user-saved template id. Call list_caption_templates for the exact ids available." - changed
Input schema / properties / core_only / descriptionPrevious value: -"If true, response carries only rendering-essential scene fields (no debug metadata)."New value: +"Return rendering-essential scene fields only (smaller payloads)." - changed
Input schema / properties / project_id / descriptionPrevious value: -"Optional project id for tracking / continuity."New value: +"Optional project id for tracking and continuity. Reuse the projectId returned by the first call for every continuation." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Natural-language description of the desired edit or creative brief. The backend planner decomposes it into canonical actions (viral clips, captions, reframe, export, …). Send the user's intent verbatim — do not pre-decompose into multiple calls."New value: +"Natural-language description of the desired edit or creative brief. The backend planner decomposes it into canonical actions (viral clips, captions, reframe, export, …). Send the user's intent verbatim — do not pre-decompose." - changed
Input schema / properties / requirePlanApproval / descriptionPrevious value: -"If true, the agent stops after planning and returns { status: \"awaiting_approval\", workingMemory, plan } without mutating. Resume by re-calling with the returned workingMemory + an approval prompt (\"yes\", \"approve\", \"do it\")."New value: +"If true, the backend stops after planning and returns workingMemory for user approval. Resend with workingMemory (and optionally editedPlan) to continue." - changed
Input schema / properties / video_url / descriptionPrevious value: -"Optional source video URL. Auto-seeded as the starting layer when no scene is provided."New value: +"Optional public source video URL (HTTP/HTTPS: S3, Google Drive public link, Dropbox, direct MP4) for a new project. Local file paths are not supported." - changed
Input schema / properties / workingMemory / descriptionPrevious value: -"Working-memory snapshot returned by a prior call (typically one that returned awaiting_approval). Re-sending resumes that run."New value: +"Working memory returned by an awaiting-approval call; resend it to resume."
- Changed
autonomous_edit_streaming12 fields changed- changed
Input schema / properties / assets / descriptionPrevious value: -"Optional asset descriptors. Each item: { id?, type: \"video\"|\"image\"|\"audio\", url|src, mimeType?, duration? }."New value: +"Optional input media assets. URLs must be public HTTP/HTTPS links." - added
Input schema / properties / assets / items / propertiesAdded value: +{ + "duration": { + "type": "number" + }, + "id": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "type": { + "enum": [ + "video", + "audio", + "image" + ], + "type": "string" + }, + "url": { + "description": "Publicly accessible HTTP/HTTPS URL to the video, image, or audio asset.", + "type": "string" + } +} - added
Input schema / properties / assets / items / requiredAdded value: +[ + "url" +] - changed
Input schema / properties / attachedImages / descriptionPrevious value: -"Optional base64-encoded reference images the agent should consider while planning."New value: +"Optional reference image URLs used for planning." - changed
Input schema / properties / brandId / descriptionPrevious value: -"Optional brand-profile id to apply for this call (palette, fonts, logo, voice, gradeBias). Look up ids via list_brand_kits. Overrides project default brand."New value: +"Optional per-call brand profile id (see list_brand_kits)." - changed
Input schema / properties / captionTemplatePreset / descriptionPrevious value: -"Optional caption template slug to apply when (re)generating captions. One of 41 builtins (hormozi, mrbeast, viral-pop, minimal-pro, karaoke, neon-pop, typewriter, pop-wave, subtitle-bar, creator-box, …) or a user-saved template id from list_caption_templates."New value: +"Optional caption template to apply when (re)generating captions: a builtin slug (e.g. hormozi, mrbeast, viral-pop, karaoke, neon-pop, subtitle-bar) or a user-saved template id. Call list_caption_templates for the exact ids available." - changed
Input schema / properties / core_only / descriptionPrevious value: -"If true, response carries only rendering-essential scene fields (no debug metadata)."New value: +"Return rendering-essential scene fields only (smaller payloads)." - changed
Input schema / properties / project_id / descriptionPrevious value: -"Optional project id for tracking / continuity."New value: +"Optional project id for tracking and continuity. Reuse the projectId returned by the first call for every continuation." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Natural-language description of the desired edit or creative brief. The backend planner decomposes it into canonical actions (viral clips, captions, reframe, export, …). Send the user's intent verbatim — do not pre-decompose into multiple calls."New value: +"Natural-language description of the desired edit or creative brief. The backend planner decomposes it into canonical actions (viral clips, captions, reframe, export, …). Send the user's intent verbatim — do not pre-decompose." - changed
Input schema / properties / requirePlanApproval / descriptionPrevious value: -"If true, the agent stops after planning and returns { status: \"awaiting_approval\", workingMemory, plan } without mutating. Resume by re-calling with the returned workingMemory + an approval prompt (\"yes\", \"approve\", \"do it\")."New value: +"If true, the backend stops after planning and returns workingMemory for user approval. Resend with workingMemory (and optionally editedPlan) to continue." - changed
Input schema / properties / video_url / descriptionPrevious value: -"Optional source video URL. Auto-seeded as the starting layer when no scene is provided."New value: +"Optional public source video URL (HTTP/HTTPS: S3, Google Drive public link, Dropbox, direct MP4) for a new project. Local file paths are not supported." - changed
Input schema / properties / workingMemory / descriptionPrevious value: -"Working-memory snapshot returned by a prior call (typically one that returned awaiting_approval). Re-sending resumes that run."New value: +"Working memory returned by an awaiting-approval call; resend it to resume."
- Changed
queue_edit17 fields changed- changed
Input schema / properties / assets / descriptionPrevious value: -"Optional asset descriptors. Each item: { id?, type: \"video\"|\"image\"|\"audio\", url|src, mimeType?, duration? }."New value: +"Optional input media assets. URLs must be public HTTP/HTTPS links." - added
Input schema / properties / assets / items / propertiesAdded value: +{ + "duration": { + "type": "number" + }, + "id": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "type": { + "enum": [ + "video", + "audio", + "image" + ], + "type": "string" + }, + "url": { + "description": "Publicly accessible HTTP/HTTPS URL to the video, image, or audio asset.", + "type": "string" + } +} - added
Input schema / properties / assets / items / requiredAdded value: +[ + "url" +] - removed
Input schema / properties / attachedImagesRemoved value: -{ - "description": "Optional base64-encoded reference images the agent should consider while planning.", - "items": { - "type": "string" - }, - "type": "array" -} - added
Input schema / properties / autoExportAdded value: +{ + "description": "Automatically export after the queued edit.", + "type": "boolean" +} - removed
Input schema / properties / brandIdRemoved value: -{ - "description": "Optional brand-profile id to apply for this call (palette, fonts, logo, voice, gradeBias). Look up ids via list_brand_kits. Overrides project default brand.", - "type": "string" -} - changed
Input schema / properties / captionTemplatePreset / descriptionPrevious value: -"Optional caption template slug to apply when (re)generating captions. One of 41 builtins (hormozi, mrbeast, viral-pop, minimal-pro, karaoke, neon-pop, typewriter, pop-wave, subtitle-bar, creator-box, …) or a user-saved template id from list_caption_templates."New value: +"Optional caption template to apply when (re)generating captions: a builtin slug (e.g. hormozi, mrbeast, viral-pop, karaoke, neon-pop, subtitle-bar) or a user-saved template id. Call list_caption_templates for the exact ids available." - removed
Input schema / properties / core_onlyRemoved value: -{ - "description": "If true, response carries only rendering-essential scene fields (no debug metadata).", - "type": "boolean" -} - removed
Input schema / properties / editedPlanRemoved value: -{ - "description": "Optional pre-edited plan object returned by a prior awaiting_approval response.", - "type": "object" -} - removed
Input schema / properties / flaggedIssuesRemoved value: -{ - "description": "Optional list of specific user-flagged problems for this run (e.g. [\"caption #3 misspelled\"]).", - "items": { - "type": "string" - }, - "type": "array" -} - added
Input schema / properties / platformsAdded value: +{ + "description": "Optional export platforms for the queued edit.", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Input schema / properties / projectBrandIdRemoved value: -{ - "description": "Optional default brand for the project. Persists; per-call brandId overrides.", - "type": "string" -} - changed
Input schema / properties / project_id / descriptionPrevious value: -"Optional project id for tracking / continuity."New value: +"Optional project id for tracking and continuity. Reuse the projectId returned by the first call for every continuation." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Natural-language description of the desired edit or creative brief. The backend planner decomposes it into canonical actions (viral clips, captions, reframe, export, …). Send the user's intent verbatim — do not pre-decompose into multiple calls."New value: +"Natural-language description of the desired edit or creative brief. The backend planner decomposes it into canonical actions (viral clips, captions, reframe, export, …). Send the user's intent verbatim — do not pre-decompose." - removed
Input schema / properties / requirePlanApprovalRemoved value: -{ - "description": "If true, the agent stops after planning and returns { status: \"awaiting_approval\", workingMemory, plan } without mutating. Resume by re-calling with the returned workingMemory + an approval prompt (\"yes\", \"approve\", \"do it\").", - "type": "boolean" -} - changed
Input schema / properties / video_url / descriptionPrevious value: -"Optional source video URL. Auto-seeded as the starting layer when no scene is provided."New value: +"Optional public source video URL (HTTP/HTTPS: S3, Google Drive public link, Dropbox, direct MP4) for a new project. Local file paths are not supported." - removed
Input schema / properties / workingMemoryRemoved value: -{ - "description": "Working-memory snapshot returned by a prior call (typically one that returned awaiting_approval). Re-sending resumes that run.", - "type": "object" -}
25 tool updates
- First observed
apply_caption_template - First observed
asset_upload_url - First observed
autonomous_edit - First observed
autonomous_edit_streaming - First observed
check_job_status - First observed
check_task_status - First observed
create_brand_kit - First observed
create_project - First observed
delete_asset - First observed
delete_brand_kit - First observed
delete_caption_template - First observed
delete_project - First observed
editor_health - First observed
get_active_task - First observed
get_brand_kit - First observed
get_project - First observed
list_assets - First observed
list_brand_kits - First observed
list_caption_templates - First observed
list_projects - First observed
queue_edit - First observed
save_caption_template - First observed
save_current_caption_template - First observed
transcribe_asset - First observed
update_brand_kit
TDQS
Scored across 25 tools
Three separate entry points (autonomous_edit, autonomous_edit_streaming, queue_edit) perform essentially the same core edit operation, and the job-vs-task distinction between check_job_status, check_task_status, and get_active_task is easy to confuse. Descriptions do clarify intended use cases, but an agent must carefully parse them to pick correctly.
Most tools follow a clear verb_noun snake_case convention (list_caption_templates, create_brand_kit, delete_project, transcribe_asset). Minor deviations like asset_upload_url (noun_verb ordering) and editor_health (no verb) keep it from being fully uniform.
At 25 tools the surface is heavy, and several could be merged (e.g., the three edit entry points and separate job/task polling tools). The domain is genuinely broad—editing, captions, brand kits, projects, assets—so most tools earn their place, but the count sits at the borderline.
Core video-editing workflows are covered, including async jobs, caption templates, brand kits, projects, and asset handling. However, projects lack an update operation, assets lack a get/update path, and there is no job/task cancellation or history listing, leaving notable gaps.
Maintenance
Related MCP Connectors
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
Compose, edit and render video with your AI agent. Turn footage into finished edits with content-aware reframing, word-timed captions and motion graphics. Hosted MCP with OAuth sign-in; cloud processing uses credits.
- tonpitOAuthcom.tonpit
Video production studio for AI agents: AI media, motion graphics as code, timeline and export.
- AISTLabsOAuthai.aistlabs
Video, image and audio generation on top AI models for agents, with an AI director built in.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to edit videos through natural language, providing tools for timeline editing, audio management, rendering, and more.2MIT
- AlicenseAqualityDmaintenanceEnables AI agents to edit video assemblies from A-roll and B-roll, add captions, and publish to social media platforms.2768 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to read, edit, and export real video projects with a full multitrack timeline, effects, captions, and export capabilities.2-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to autonomously edit raw video footage into publish-ready videos with millisecond-accurate cuts, Whisper transcription, karaoke captions, motion graphics, and high-CTR thumbnails.22 npm6MIT