Skip to main content
Glama

Levea — Prompt-First AI Video Editor (MCP Server & Cloud Production Harness)

Prompt-to-video editing without manual timelines. Levea is an agentic AI video production platform that turns natural-language creative direction, transcripts, and source footage into fully structured, editable video projects. An open-source MCP client wrapper connects your local AI agent (Claude Desktop, Claude Code, Cursor, Cline, OpenClaw, Hermes) to our cloud GPU production harness—executing frame-accurate cuts, 40+ kinetic caption styles, verified motion graphics (HyperFrames), Google Cloud TTS voiceovers, active-speaker reframing, and cloud-rendered MP4 exports without taxing your local machine.

npm MCP Registry ClawHub Plugin ClawHub Skill License: MIT


⚡ The Levea Philosophy: Prompt-to-Project

Unlike traditional one-shot AI video generators that output locked, un-editable pixels, Levea maintains a fully structured, multi-layer project and timeline (Scene IR) containing assets, text, masks, audio, and brand kits.

  • Frontier LLMs for Planning: We use probabilistic Frontier LLMs solely for planning, semantic analysis, and parameter parsing.

  • Cloud-Accelerated Production Harness: Heavy computation (Vulkan rendering, GPU WhisperX transcription, active-speaker face tracking, and HyperFrames motion graphics) executes on our remote cloud GPU cluster. You get instant 4K and vertical reel exports without melting your local laptop CPU or installing CUDA.

  • Open-Source Client, Hosted Engine: The client-side MCP server wrapper (levea-mcp-server), OpenClaw plugins, and skills are open-source (MIT). They connect to our hosted video production engine via API key. You can generate an API key with free starter credits at livecore.ai.


Related MCP server: ViralSpin MCP

🏗️ Platform Architecture

Levea separates probabilistic creative reasoning from deterministic project execution:

                     Creative Intent + Source Media
                                  │
                                  ▼
               Probabilistic Multimodal Intelligence
                      (Gemini / Frontier LLMs)
                                  │
                                  ▼
                CanonicalActionIR (179 Typed Actions)
                                  │
                                  ▼
                        CanonicalPlanCompiler
                                  │
                    ┌─────────────┴─────────────┐
                    ▼                           ▼
              Workflow DAG                   Scene IR
        (Task Dependencies & Gating)   (Timeline & Layer Hierarchy)
                    └─────────────┬─────────────┘
                                  │
                                  ▼
               Deterministic Video-Production Harness
                   ├── Perception Engine (Face Tracking, Active Speaker, Shot Cuts)
                   ├── Timeline and Scene Graph (Tracks, Layers, Geometry)
                   ├── Media Operators (Silence Cuts, Slip/Slide, Ripple, Split-Screen)
                    ├── Caption & Typography Engine (39 MSDF Fonts, 41 Templates, Kinetic Word Sync)
                   ├── Animation & Motion Physics (Damped Spring Solvers, 17 Blend Modes)
                   ├── Audio Mastering (EBU R128 Loudness, Google Cloud TTS, Auto-Duck)
                   ├── Composition & Asset Execution
                   │   ├── HyperFrames — procedural charts, audio waveforms, cards, 3D
                   │   ├── Vulkan/WebGPU — GPU shaders, primitives, final compositing
                   │   ├── Lottie — authored vector animations
                   │   └── Veo / Imagen 3 — generated supporting media
                   ├── Gated Executor (gatedExecute Atomic Mutations)
                   ├── Project Versioning (Immutable Scene History)
                   └── Export Pipeline (Hardware-Accelerated / Vulkan MP4)
                                  │
                                  ▼
                  Verification → Bounded Repair → Editable Scene
                                                    ├── Return Scene JSON
                                                    ├── Queue Media Work
                                                    └── Optional Multi-Platform Export

1. Multimodal planning

The planning layer interprets user prompts, transcripts, visual references, and timeline boundaries. It compiles raw natural language into a highly optimized, typed Workflow DAG of sequential and parallel editing operations. The hosted planner currently utilizes Gemini through Google AI and Vertex AI.

2. Workflow DAG and Scene IR (Intermediate Representation)

These represent the dual brain-body architecture of Levea:

  • The Workflow DAG maps the editing tasks, dependencies, gating, verifiers, and asset-generation jobs.

  • The Scene IR is the serializable media schema representing the complete timeline: canvas dimensions, tracks, layers, custom transitions, effects, and assets.

Separating intent from execution makes edits fully inspectable, repeatable, and independently repairable without transferring project ownership to an LLM.

3. Deterministic Production Harness

Typed production operators execute the plan against the scene graph. The native renderer compiles Scene compositions through native Vulkan and browser WebGPU paths, subsequently compositing them with verified motion graphics produced by HyperFrames (which handles rich editorial layouts, data charts, stat cards, and diagrams).

4. Versioning and Export

All revisions are saved in a durable, linear undo/redo history backed by immutable scene payloads, preventing state corruption during multi-step iterations. Export is optional—Levea can return the updated editable scene, queue asset rendering, deliver an MP4, or bundle assets for multi-platform delivery.


🛠️ Dual-Path Quickstart (Get Started in 60 Seconds)

Whether you are an AI developer looking to integrate automated editing into your agent loops, or a content creator building an automated faceless channel, Levea has a native path for you.

🟣 Claude Code plugin (one command)

Install Levea as a Claude Code plugin. It bundles the hosted Levea MCP server (OAuth sign-in, nothing to run locally) and the Levea editing skills:

/plugin install levea-video-editor --marketplace brajendrak00068/agentic-ai-video-production

Or from your shell:

claude plugin marketplace add brajendrak00068/agentic-ai-video-production
claude plugin install levea-video-editor@levea

On first use, run /mcp, select levea, and sign in to your Levea account in the browser. Then describe the edit, for example: "Cut a 30-second vertical clip from https://example.com/talk.mp4 with word-by-word captions and export an MP4."

🧑‍💻 Path A: For Developers & AI Engineers (The MCP Route)

Expose Levea as a client-side Model Context Protocol (MCP) server stdio wrapper (levea-mcp-server) in your favorite AI editors (Cursor, Cline, Windsurf, or Claude Desktop).

1. Get an API Key

Sign up at livecore.ai and generate a Levea API key.

2. Register the MCP Server

Add the following configuration block to your editor's MCP settings:

{
  "mcpServers": {
    "levea": {
      "command": "npx",
      "args": ["-y", "levea-mcp-server"],
      "env": {
        "LEVEA_API_URL": "https://api.livecore.ai",
        "LEVEA_API_KEY": "your-key-from-livecore.ai"
      }
    }
  }
}

Note: LEVEA_API_URL should point to the bare host domain https://api.livecore.ai. The client-side wrapper handles endpoint appending automatically.

Client

Setup Commands / Instructions

Cursor & Windsurf

Go to Settings -> Features -> MCP -> Add New MCP Server. Set type to command and insert the config above.

Cline

Open settings, scroll to MCP, and add the config to the Cline MCP settings file.

Claude Code

Run: claude mcp add levea -e LEVEA_API_URL=https://api.livecore.ai -e LEVEA_API_KEY=... -- npx -y levea-mcp-server

Claude Desktop

Add the server block to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows).

Hermes

Native plugin: hermes-plugin/ (hermes plugins install levea-video-editor && hermes plugins enable levea-video-editor). Or register levea-mcp-server as an MCP server using the bundled hermes-levea/mcp.json.

OpenClaw

Install via ClawHub: openclaw plugins install clawhub:openclaw-ai-video-editor or add via CLI openclaw mcp add levea --command "npx -y levea-mcp-server" --env LEVEA_API_URL=https://api.livecore.ai --env LEVEA_API_KEY=....


🎨 Path B: For Creators & Marketers (The OpenClaw Route)

Deploy Levea as an autonomous editing agent directly inside the OpenClaw workspace.

  1. Install the Plugin: Search for openclaw-ai-video-editor on ClawHub and install it to gain system-level execution, asset upload UI, and rendering support.

  2. Install the Skill: Subscribe to levea-ai-video-editor on ClawHub Skills directory to give your agent professional editorial taste, system instructions, and pacing rules.

  3. Run your first edit:

    "Review my vertical video, remove the opening silence, auto-apply Hormozi-style captions with highlighted keywords, add subtle background music, and export the Reels-ready MP4."


🧩 OpenClaw Integration: Plugin vs. Skill

Levea is built for modular agent platforms. When deploying Levea inside platforms like OpenClaw or Hermes, we split execution capabilities from cognitive strategies:

  • The Plugin (openclaw-ai-video-editor): Acts as the physical body. It exposes the core MCP tool surface, registers tool schemas, manages API keys, sets up SSE progress pipelines, and handles physical file uploads and rendering hooks.

  • The Skill (levea-ai-video-editor): Acts as the cognitive mind. It is a prompt-engineered, context-aware instruction set (system prompts and few-shot creative templates) that teaches the agent how to act as a professional director—enforcing brand rules, safe zones, timing pacing, and layout aesthetics.

We recommend installing both to unlock the full power of autonomous editing with a professional finish.


🎬 What It Does: Say It in Plain Language

Say it in plain language; Levea plans, executes, and finishes the complete edit:

You ask

It does

"Turn this into 5 viral clips with captions and vertical reframe"

Identifies narrative peaks, cuts clips, applies bold captions, reframes to 9:16 vertical, and exports.

"Cut a 60-second highlight from this 2-hour podcast"

Discovers strongest continuous story segment, trims dead air, and packages with captions.

"Make this TikTok-ready"

Vertical 9:16 reframe + captions + silence removal + keyword emphasis kit.

"Export for TikTok, Reels, Shorts, YouTube, and Instagram"

One pass, all platform-specific aspect ratios in one package.

"Replace the green screen with a beach, keep the speaker centered"

Chroma key + background composite + face tracking in one call.

"Remove the background — no green screen"

AI background removal via Robust Video Matting (RVM) alpha matte on any footage.

"Swap my background for a city skyline — no green screen"

AI matte isolates subject cleanly, compositing the new background behind.

"Remove all silences and filler words, add background music"

Cleans audio track (cuts um, uh, like), adds ducked music bed under speech.

"Auto-zoom on whoever's talking"

Active-speaker detection + dynamic zoom-follow framing.

"Caption this and highlight every time they say 'launch'"

Auto-captions + keyword emphasis (scaling / glow / pulse).

"Find every clip where Alex appears"

Cross-asset facial identity search using AI facial embeddings.

"Add narration in a cloned voice over the intro"

Voice cloning + Google Cloud TTS overlay + auto-ducking.

"Caption this Hormozi-style with karaoke word highlighting"

Word-synced karaoke captions — active word fills and underlines in sync with speech.

"Generate B-roll over the product mention"

AI B-roll generation + placement at the exact timestamp.

"Color grade this like a Netflix doc"

Cinematic LUT color grade with contrast and film-look curve.

"Slow-mo the climax, freeze on the reveal"

Speed change (0.5× slow-mo) + freeze-frame hold on key action.

"Reframe to vertical but don't crop the lower-third captions"

Caption-safe 9:16 reframe (detects on-screen text regions and reframes around them).

"Pull the key stats from this and animate them as charts"

Transcript-driven SVG charts (bars, lines, donuts) + stat-callout motion graphics via HyperFrames.

"Sync these 3 camera angles and cut between them on the active speaker"

Multi-cam audio cross-correlation sync + automatic angle switching.

"Blur the license plates and bleep the swearing"

Privacy redaction (face and moving object blur) + transcript profanity cleanup.


⚡ Levea vs. Legacy Editors

Capability

Legacy (Premiere, DaVinci, CapCut, Descript)

Levea Agentic Editor & Production Harness

Interface

Drag, drop, keyframe by hand on a manual timeline

One natural-language prompt; the agent plans and finishes the edit

Auto-analysis on upload

Manual scene detection + subtitles

Faces, active speakers, shot cuts, and on-screen text regions detected automatically

"Make this viral"

You manually hunt for hooks, crop, splice, and align

Single preset — vertical 9:16 + captions + silences + face tracking

Cross-asset search

Filename search

"Find every clip where Alex appears" using AI facial embeddings across your library

Background replace

Key out green screen or draw rotoscope masks by hand

One call — Robust Video Matting (RVM) handles any footage without a green screen

Broadcast-grade audio

Manual loudness metering + compression + EQ

Auto LUFS loudness-normalized (EBU R128), true-peak limited, music ducked under speech

Editorial reasoning

You listen and hunt for the climax

Agent surfaces narrative peaks and high-retention moments

Verification & Repair

You eyeball it and manually re-render

Deterministic verifiers run after execution; auto-repairs bounded failures

Multi-platform export

One render per aspect ratio

TikTok + Reels + Shorts + YouTube in one pass

Extensibility

Plugins call external binaries

179 typed canonical actions orchestrated through a deterministic Workflow DAG


🎬 Creator & Dev Use Cases

Use Case / Request

Typical Autonomous Production Path

Organic Keywords

Faceless Channel Generator

Segment transcript, plan layout, overlay B-roll, generate AI background music, and render.

faceless-video, auto-reels, short-form-video

CapCut Auto-Cap Alternative

Run whisper transcription, highlight keywords, style fonts, align timing, and apply animation presets.

auto-captions, video-subtitles, kinetic-typography

Shorts & Reels Highlights

Extract high-engagement hooks, crop canvas to vertical 9:16 safe zones, and apply motion graphics.

viral-clips, clip-generator, tiktok-video, youtube-shorts

Corporate Interview Polish

Cut long silence gaps, bleep profanity, apply color grades, and add lower third speaker graphics.

silence-removal, audio-cleanup, lower-thirds

Green Screen & Backdrop Swap

Isolate speaker matte, layer background photo/video, align depth tracks, and composite.

chroma-key, green-screen, background-removal

Multi-Cam Active Speaker Cuts

Synchronize dual camera angles, run diarization, and automatically cut to the active speaker.

multi-cam-sync, active-speaker, video-automation


⚙️ Robust Verification & Repair Containment

To ensure that AI planning errors never result in broken compositions or corrupt files, Levea operates a closed-loop verification and repair containment pipeline.

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
  • Internal Verifier-Driven Repair: Levea currently supports verifier-driven bounded repair for supported typed failures. Verifier failures identify the unsatisfied invariant, repair begins from the last verified scene revision, and every repaired result is verified again before it is committed.

  • User-Directed Semantic Repair: User-directed repair operates at the level of user-visible semantic nodes rather than low-level infrastructure tasks. Where a node type supports natural-language repair, Levea resolves the user’s reference—such as “the second chart,” “the last title,” or “the graphic after the pricing section”—to a stable semantic node and compiles the requested change into a typed patch.

  • Subgraph Invalidation: The repair system then determines which dependent planning, asset, composition, rendering, and verification nodes are affected. Only that subgraph is invalidated and executed again; unrelated verified work is preserved. User language never directly mutates arbitrary scene JSON or internal execution tasks.

  • Bounded Budgets: Natural-language node repair is available only for semantic node types that expose stable identity, editable fields, and a repair policy. All repair attempts remain bounded by action, attempt, cost, and time budgets.

  • Asynchronous Completion Verification: A workflow may return a pending or partial result while optional media jobs continue. A result is considered fully verified only after all required artifact jobs complete and their outputs pass verification.


📂 Capability Status

Availability of specific tracks varies by deployment, active model tiers, and account quotas.

Supported Production Paths

  • Project and timeline state: Full NLE track and clip operations (insert, overwrite, lift, extract, ripple delete/trim, slip, slide, freeze frame, reverse), multi-track management, nesting containers, and durable linear undo/redo.

  • Captions and motion graphics: automatic captions, word timing, keyword emphasis, 41 caption templates (Hormozi, Minimal-Pro, Karaoke, Typewriter...), lower thirds, title cards, charts, counters, and diagrams through verified HyperFrames motion composites, supported native fallbacks, verified Lottie assets, and procedural animation.

  • Layout and perception: multi-cam synchronization and active-speaker cuts, scene and shot cut analysis, face detection and tracking, cross-clip face identity search, on-screen text-region detection and OCR recognition (PP-OCRv5 det + rec), safe zones, and explicit-region tracking or masking.

  • Compositing: chroma key, masks, blend modes (17 modes), adjustment layers, alpha-matte background replacement (Robust Video Matting), content-aware inpainting (LaMa) for on-screen text / logo / watermark removal, and GPU volumetric shaders (smoke, fire, glitch, portal, lightning).

  • Audio: silence and filler-word cleanup, word-level muting, crossfades, EQ, denoise, ITU-R BS.1770 / EBU R128 loudness normalization, Google Cloud TTS voiceover, voice cloning (Chirp 3 Instant Custom Voice), speech-aware ducking, musical beat sync (pacing_beat_sync), and AI stem separation (separate_stems, Demucs).

  • Autonomous Directing: automated cold-open hook extraction, podcast polish macros, contextual B-roll placement, auto lower thirds, and slideshow generation.

  • Verification: typed task contracts, structural validation, perceptual checks, requirement tracking, bounded repair, and partial-success reporting.

Model- or Deployment-Dependent

  • Generated video, images, B-roll, music, sound effects, voiceover, and voice cloning quality/availability vary by model tier and quota (all are wired as canonical actions in production).

  • Neural alpha matting and background replacement quality.

  • CJK / RTL caption rendering: cosmic-text bidi shaping and RTL language handling ship in production; the 39-font MSDF atlas is Latin-ASCII, so CJK/RTL glyph coverage depends on system-font fallback when preserveUnicode is enabled.


📂 MCP Tool Surface

The MCP server exposes one high-level editing entry point plus typed management and polling tools:

Group

Tools

Description

Edit

autonomous_edit, autonomous_edit_streaming, queue_edit

Single-entry edit prompts, SSE progress streaming, and asynchronous queuing.

Job Polling

check_job_status, check_task_status, get_active_task

Track rendering, B-roll generation, tracking status, and active tasks.

Caption Templates

list_caption_templates, apply_caption_template, save_caption_template

CRUD operations for styling templates (Hormozi, MrBeast, Viral Pop, Karaoke, …); list_caption_templates returns the exact ids.

Brand Kits

list_brand_kits, get_brand_kit, create_brand_kit, update_brand_kit

Manage brand colors, fonts, logos, speaker voice clones, and grading rules.

Projects

list_projects, get_project, create_project

Project workspace management.

Assets

asset_upload_url, list_assets, transcribe_asset

Request signed upload URLs, list assets, and request fast Whisper transcriptions.

Diagnostics

editor_health

Unauthenticated network sanity probe.


🔮 Organic SEO FAQ for Developers & Creators

How does Levea compare to generic video generators like Sora, Veo, or Runway?

Generic generative video models (Sora, Runway, Veo) output raw, locked pixels. You cannot edit a layer, adjust caption typography, swap background music, or correct a word timing afterward. Levea is a full-featured timeline editor that builds structured project layers. It uses generative models (like Omni/Veo/Imagen) only as optional asset generation plugins, keeping your editing pipeline fully editable, inspectable, and deterministic.

Is Levea safe to use in enterprise productions?

Yes. Every mutation runs inside a secure, gated environment (GatedExecutor). High-level action contracts ensure that LLMs cannot inject arbitrary mutations or bypass security profiles. If you configure requirePlanApproval: true, the system will halt and present the creative plan to your team for approval before executing any edits or rendering assets.

What coding and agent environments does Levea support?

Levea integrates natively with Model Context Protocol (MCP) hosts like Claude Desktop, Cursor, Cline, Windsurf, and Claude Code. For standalone agent systems, Levea exposes structured packages for OpenClaw and Hermes.

Can I use custom brand fonts, logos, and specific caption templates?

Absolutely. Using our Brand Kits API and tools, you can declare custom typography scales, palette hex codes, logo image references, and custom voice prints. The planning model reads these rules and automatically enforces them across the timeline during the composition pass.


Support & Contact: brajendrak00068@gmail.com


License

MIT

Available Tools

25 tools
apply_caption_templateApply caption templateAInspect

Apply a caption template to a scene synchronously (without going through autonomous_edit).

NameRequiredDescriptionDefault
modeNo
sceneNoInline scene (alternative to project_id).
project_idNoProject / scene id to apply to.
template_idYesTemplate slug / id from list_caption_templates.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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[].

NameRequiredDescriptionDefault
fileNameYes
fileTypeNovideo | image | audio (heuristic from extension if omitted).
projectIdNoOptional project to associate the asset with.
contentTypeNoMIME type, e.g. video/mp4.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 videoA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
sceneNoOptional existing scene/timeline state to continue editing (advanced).
assetsNoOptional input media assets. URLs must be public HTTP/HTTPS links.
promptYesNatural-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.
brandIdNoOptional per-call brand profile id (see list_brand_kits).
core_onlyNoReturn rendering-essential scene fields only (smaller payloads).
video_urlNoOptional public source video URL (HTTP/HTTPS: S3, Google Drive public link, Dropbox, direct MP4) for a new project. Local file paths are not supported.
editedPlanNoOptional pre-edited plan object returned by a prior awaiting_approval response.
project_idNoOptional project id for tracking and continuity. Reuse the projectId returned by the first call for every continuation.
flaggedIssuesNoOptional list of specific user-flagged problems for this run (e.g. ["caption #3 misspelled"]).
workingMemoryNoWorking memory returned by an awaiting-approval call; resend it to resume.
attachedImagesNoOptional reference image URLs used for planning.
projectBrandIdNoOptional default brand for the project. Persists; per-call brandId overrides.
captionTemplateModeNoHow to apply captionTemplatePreset.
requirePlanApprovalNoIf true, the backend stops after planning and returns workingMemory for user approval. Resend with workingMemory (and optionally editedPlan) to continue.
captionTemplatePresetNoOptional 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

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)A
Destructive
Inspect

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.

NameRequiredDescriptionDefault
sceneNoOptional existing scene/timeline state to continue editing (advanced).
assetsNoOptional input media assets. URLs must be public HTTP/HTTPS links.
promptYesNatural-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.
brandIdNoOptional per-call brand profile id (see list_brand_kits).
core_onlyNoReturn rendering-essential scene fields only (smaller payloads).
video_urlNoOptional public source video URL (HTTP/HTTPS: S3, Google Drive public link, Dropbox, direct MP4) for a new project. Local file paths are not supported.
editedPlanNoOptional pre-edited plan object returned by a prior awaiting_approval response.
project_idNoOptional project id for tracking and continuity. Reuse the projectId returned by the first call for every continuation.
flaggedIssuesNoOptional list of specific user-flagged problems for this run (e.g. ["caption #3 misspelled"]).
workingMemoryNoWorking memory returned by an awaiting-approval call; resend it to resume.
attachedImagesNoOptional reference image URLs used for planning.
projectBrandIdNoOptional default brand for the project. Persists; per-call brandId overrides.
captionTemplateModeNoHow to apply captionTemplatePreset.
requirePlanApprovalNoIf true, the backend stops after planning and returns workingMemory for user approval. Resend with workingMemory (and optionally editedPlan) to continue.
captionTemplatePresetNoOptional 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

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 statusA
Read-only
Inspect

Poll an export / async job by jobId (numeric). Supports wait:true to block until terminal.

NameRequiredDescriptionDefault
waitNoBlock until terminal state.
job_idYesJob id to poll (numeric).

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 statusA
Read-only
Inspect

Poll a queued edit task by taskId (returned by queue_edit). Separate from job_id (exports).

NameRequiredDescriptionDefault
task_idYesTask id from queue_edit.

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

NameRequiredDescriptionDefault
nameYes
fontsNo
paletteNo
gradeBiasNo
voiceToneNo
enforcementNo
logoAssetUrlNo
forbiddenColorsNo

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
nameYes
brandIdNo
descriptionNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 assetA
Destructive
Inspect

Delete an asset by file name (the path returned by asset_upload_url).

NameRequiredDescriptionDefault
fileNameYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 kitC
Destructive
Inspect

Delete a brand profile.

NameRequiredDescriptionDefault
brand_idYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 templateB
Destructive
Inspect

Delete a user-saved caption template by id.

NameRequiredDescriptionDefault
template_idYes

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 projectD
Destructive
Inspect

Delete a project.

NameRequiredDescriptionDefault
project_idYes

TDQS

D1.8/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose2/5

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.

Usage Guidelines1/5

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 healthA
Read-only
Inspect

Connectivity diagnostic against LEVEA_API_URL. Unauthenticated.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 taskA
Read-only
Inspect

For a given project, return the currently-running edit task (if any). Useful for reconnecting MCP clients.

NameRequiredDescriptionDefault
project_idYesProject id.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 kitC
Read-only
Inspect

Fetch one brand profile by id.

NameRequiredDescriptionDefault
brand_idYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 projectC
Read-only
Inspect

Fetch one project by id.

NameRequiredDescriptionDefault
project_idYes

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 assetsB
Read-only
Inspect

List the user's uploaded assets. Optional projectId filter.

NameRequiredDescriptionDefault
fileTypeNoOptional filter: video|image|audio.
projectIdNo

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 kitsA
Read-only
Inspect

List the user's brand profiles (palette, fonts, logo, voice, gradeBias). Returns ids you pass to autonomous_edit's brandId / projectBrandId.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 templatesA
Read-only
Inspect

List the user's caption templates (builtin + saved). Returns slugs, display names, and style summaries.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 projectsC
Read-only
Inspect

List the user's projects.

NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 editA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
sceneNoOptional existing scene/timeline state to continue editing (advanced).
assetsNoOptional input media assets. URLs must be public HTTP/HTTPS links.
promptYesNatural-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.
platformsNoOptional export platforms for the queued edit.
video_urlNoOptional public source video URL (HTTP/HTTPS: S3, Google Drive public link, Dropbox, direct MP4) for a new project. Local file paths are not supported.
autoExportNoAutomatically export after the queued edit.
project_idNoOptional project id for tracking and continuity. Reuse the projectId returned by the first call for every continuation.
captionTemplateModeNoHow to apply captionTemplatePreset.
captionTemplatePresetNoOptional 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

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
nameYesDisplay name.
tagsNoOptional tags.
styleYesStyle payload (font, color, position, animation, etc.).

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
nameYesTemplate display name.
sceneNoInline scene (alternative to project_id).
project_idNoProject to snapshot from.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
fileNameYesAsset path.
languageNoOptional ASR language hint.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 kitC
Destructive
Inspect

Update an existing brand profile by id. Body has the same shape as create_brand_kit.

NameRequiredDescriptionDefault
nameNo
fontsNo
paletteNo
brand_idYes
gradeBiasNo
voiceToneNo
enforcementNo
logoAssetUrlNo
forbiddenColorsNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 3 tool updatesv0.6.2
    • Changedautonomous_edit12 fields changed
      • changedInput schema / properties / assets / description
        Previous 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."
      • addedInput schema / properties / assets / items / properties
        Added 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"
        +  }
        +}
      • addedInput schema / properties / assets / items / required
        Added value: +[
        +  "url"
        +]
      • changedInput schema / properties / attachedImages / description
        Previous value: -"Optional base64-encoded reference images the agent should consider while planning."New value: +"Optional reference image URLs used for planning."
      • changedInput schema / properties / brandId / description
        Previous 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)."
      • changedInput schema / properties / captionTemplatePreset / description
        Previous 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."
      • changedInput schema / properties / core_only / description
        Previous value: -"If true, response carries only rendering-essential scene fields (no debug metadata)."New value: +"Return rendering-essential scene fields only (smaller payloads)."
      • changedInput schema / properties / project_id / description
        Previous 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."
      • changedInput schema / properties / prompt / description
        Previous 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."
      • changedInput schema / properties / requirePlanApproval / description
        Previous 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."
      • changedInput schema / properties / video_url / description
        Previous 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."
      • changedInput schema / properties / workingMemory / description
        Previous 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."
    • Changedautonomous_edit_streaming12 fields changed
      • changedInput schema / properties / assets / description
        Previous 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."
      • addedInput schema / properties / assets / items / properties
        Added 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"
        +  }
        +}
      • addedInput schema / properties / assets / items / required
        Added value: +[
        +  "url"
        +]
      • changedInput schema / properties / attachedImages / description
        Previous value: -"Optional base64-encoded reference images the agent should consider while planning."New value: +"Optional reference image URLs used for planning."
      • changedInput schema / properties / brandId / description
        Previous 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)."
      • changedInput schema / properties / captionTemplatePreset / description
        Previous 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."
      • changedInput schema / properties / core_only / description
        Previous value: -"If true, response carries only rendering-essential scene fields (no debug metadata)."New value: +"Return rendering-essential scene fields only (smaller payloads)."
      • changedInput schema / properties / project_id / description
        Previous 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."
      • changedInput schema / properties / prompt / description
        Previous 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."
      • changedInput schema / properties / requirePlanApproval / description
        Previous 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."
      • changedInput schema / properties / video_url / description
        Previous 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."
      • changedInput schema / properties / workingMemory / description
        Previous 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."
    • Changedqueue_edit17 fields changed
      • changedInput schema / properties / assets / description
        Previous 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."
      • addedInput schema / properties / assets / items / properties
        Added 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"
        +  }
        +}
      • addedInput schema / properties / assets / items / required
        Added value: +[
        +  "url"
        +]
      • removedInput schema / properties / attachedImages
        Removed value: -{
        -  "description": "Optional base64-encoded reference images the agent should consider while planning.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • addedInput schema / properties / autoExport
        Added value: +{
        +  "description": "Automatically export after the queued edit.",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / brandId
        Removed 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"
        -}
      • changedInput schema / properties / captionTemplatePreset / description
        Previous 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."
      • removedInput schema / properties / core_only
        Removed value: -{
        -  "description": "If true, response carries only rendering-essential scene fields (no debug metadata).",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / editedPlan
        Removed value: -{
        -  "description": "Optional pre-edited plan object returned by a prior awaiting_approval response.",
        -  "type": "object"
        -}
      • removedInput schema / properties / flaggedIssues
        Removed value: -{
        -  "description": "Optional list of specific user-flagged problems for this run (e.g. [\"caption #3 misspelled\"]).",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • addedInput schema / properties / platforms
        Added value: +{
        +  "description": "Optional export platforms for the queued edit.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / properties / projectBrandId
        Removed value: -{
        -  "description": "Optional default brand for the project. Persists; per-call brandId overrides.",
        -  "type": "string"
        -}
      • changedInput schema / properties / project_id / description
        Previous 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."
      • changedInput schema / properties / prompt / description
        Previous 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."
      • removedInput schema / properties / requirePlanApproval
        Removed 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"
        -}
      • changedInput schema / properties / video_url / description
        Previous 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."
      • removedInput schema / properties / workingMemory
        Removed value: -{
        -  "description": "Working-memory snapshot returned by a prior call (typically one that returned awaiting_approval). Re-sending resumes that run.",
        -  "type": "object"
        -}
  2. 25 tool updates
    • First observedapply_caption_template
    • First observedasset_upload_url
    • First observedautonomous_edit
    • First observedautonomous_edit_streaming
    • First observedcheck_job_status
    • First observedcheck_task_status
    • First observedcreate_brand_kit
    • First observedcreate_project
    • First observeddelete_asset
    • First observeddelete_brand_kit
    • First observeddelete_caption_template
    • First observeddelete_project
    • First observededitor_health
    • First observedget_active_task
    • First observedget_brand_kit
    • First observedget_project
    • First observedlist_assets
    • First observedlist_brand_kits
    • First observedlist_caption_templates
    • First observedlist_projects
    • First observedqueue_edit
    • First observedsave_caption_template
    • First observedsave_current_caption_template
    • First observedtranscribe_asset
    • First observedupdate_brand_kit

TDQS

C2.9/5.0

Scored across 25 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers