Clueso
Server Details
Make videos and docs with your AI agent — describe what you need, every output stays editable.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- clueso-ai/clueso-mcp
- GitHub Stars
- 5
- Server Listing
- Clueso MCP
Available Tools
40 toolsadd_article_mediaAdd article media (image or GIF)AInspect
Add a screenshot or GIF to the article. Returns a screenshot_id to place in the article via update_article using <SCREENSHOT screenshot_id>.
kind="image": pass
timestampto capture a frame from the project's base video, OR passmcp_upload_id(from the upload tool) to attach an uploaded image. One of the two is required.kind="gif": pass
timestamp(start) andduration(seconds). Captures a short GIF clip from the base video. Requires the project to have a video clip.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | 'image' or 'gif'. | |
| duration | No | kind='gif' only: GIF duration in seconds. | |
| timestamp | No | kind='image': capture frame at this timestamp (seconds). kind='gif': GIF start time. | |
| project_id | Yes | Project ID. | |
| mcp_upload_id | No | kind='image' only: attach an uploaded image (mcp_upload_id from the upload tool) instead of capturing from video. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive operation. The description adds value by explaining that the tool returns a screenshot_id and requires a subsequent update_article call to place the media. It also clarifies the conditional parameter requirements, though it could be more explicit about error handling or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a clear main statement followed by bullet-point details for each kind. Every sentence adds value, and the total length is appropriate for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, conditional logic, no output schema), the description covers the essential workflow: adding media, getting an ID, and placing it via update_article. It mentions prerequisites for gif but lacks explicit error scenarios or confirmation that the media is stored. Still, it is largely complete for practical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, but the description significantly enhances parameter understanding by explaining the conditional dependencies: for kind='image', one of timestamp or mcp_upload_id is required; for kind='gif', timestamp and duration are used. It also links mcp_upload_id to the upload tool, which the schema does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a screenshot or GIF to an article, specifying the return value (screenshot_id) and how to use it with update_article. This distinguishes it from sibling tools like upload_file or generate_media by focusing on article media attachment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides detailed conditional usage for the two modes (image vs. gif), including prerequisites (e.g., project must have a video clip for gif). However, it does not explicitly compare this tool to alternatives like upload_file, generate_media, or update_article_media, leaving the agent to infer when to use this vs. other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_audioAdd audio trackAInspect
Add a music track or sound effect that plays as a project-level audio layer over all clips. Does NOT consume a clip slot. Use this for background music or a soundtrack that should play under the existing timeline. (For inserting an audio file as its own sequential clip with auto-transcription, use add_clips(kind='video') with an audio mime_type instead.)
type="music": requires src, name, source_duration.
srcis either thesrcfrom a find(type='music') result, or an mcp_upload_id (prefixedmup_) from upload_file — upload ids resolve to a presigned URL server-side. For a Freesound result thesrcis an opaque handle; pass it through unchanged and Clueso downloads + hosts the original server-side (do not try to fetch it yourself). Getsource_durationfrom the find result, or from analyze_audio mode='features' (data.duration_ms / 1000). Optional: guide_start_time, guide_end_time, music_start_time, music_end_time (trim the source track), volume, loop, fade_in, fade_out.type="sfx": pass the
src,name, andsource_durationfrom a find(type='sfx') result, plus guide_start_time (Freesoundsrcis an opaque handle, resolved server-side just like music). Optional: volume. (Legacy: a fixed-librarysfx_keylike 'whoosh' still works instead of src.)
Concurrency: whole-project mutation (conflict domain: the entire project) — serialize; do not run in parallel with ANY other mutation on the same project_id (including element/voiceover edits). Size your clips BEFORE calling add_audio, or pass guide_end_time explicitly — the default ('end of project') is captured at call time and will NOT auto-extend if clips are added or resized afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| src | No | Audio source. For type='music' (required) or a stock type='sfx': the `src` from a find(type='music'|'sfx') result (may be an opaque Freesound handle — pass as-is), or an mcp_upload_id (prefixed 'mup_') from upload_file. Not needed for legacy fixed-library sfx (use sfx_key). | |
| loop | No | Loop the track if project is longer than the source. Music only. (default: false) | |
| name | No | Track/effect name. From the find result, or any descriptive label when using mcp_upload_id. Required for type='music' and for stock type='sfx' (passed via src). | |
| type | Yes | Audio type: 'music' or 'sfx' | |
| volume | No | Volume as percent (0–100). Default: 50 for music, 80 for sfx. | |
| fade_in | No | Fade-in duration in seconds. Music only. (default: 0.5) | |
| sfx_key | No | LEGACY fixed-library SFX key (e.g. 'whoosh', 'pop', 'click'). Optional alternative to src for type='sfx'. Prefer the src/name/source_duration from a find(type='sfx') result. | |
| fade_out | No | Fade-out duration in seconds. Music only. (default: 0.5) | |
| project_id | Yes | The project ID | |
| guide_end_time | No | When to stop playing (seconds). Music only. Default = end of project AT CALL TIME — captured once at insert and NOT recomputed when clips are later added or resized. Pass an explicit value (e.g. the intended final project duration) when adding audio before clips are sized. | |
| music_end_time | No | Out-point within the SOURCE track (seconds) — trims where playback ends in the music file. Music only. Default = source_duration. | |
| source_duration | No | Source duration in seconds. From the find result, or analyze_audio mode='features' (data.duration_ms / 1000). Required for type='music' and for stock type='sfx' (passed via src). | |
| guide_start_time | No | When to start playing in the guide timeline (seconds). Required for type='sfx', optional for music (default 0). | |
| music_start_time | No | In-point within the SOURCE track (seconds) — trims where playback begins in the music file. Music only. Default 0 (start of source). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, destructiveHint=false, openWorldHint=false. The description goes far beyond by explaining the non-clip-slot nature, differentiating music vs sfx behaviors, and detailing critical runtime semantics like guide_end_time being captured at call time and not auto-extending. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with type-specific bullet points, a concurrency note, and a clear front-loaded purpose. While fairly long, every sentence adds value and aligns with the tool's complexity (14 params, two types). Could be slightly tighter, but the organization is logical and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 14 parameters, 2 required, no output schema, and complex behavior (type-specific logic, concurrency domain, default timing caveats), the description covers the necessary details for correct invocation. It addresses edge cases (legacy sfx_key, mcp_upload_id, guide_end_time capture behavior) and provides actionable guidance for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% already, but the description adds significant extra meaning: for src, it explains the opaque Freesound handle and mcp_upload_id usage; for source_duration, it cites analyze_audio as an alternative; for guide_end_time, it elaborates on the capture-time default. This greatly enhances the agent's understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') and clearly identifies the resource as a 'project-level audio layer over all clips'. It explicitly states it does NOT consume a clip slot, distinguishing it from the sibling tool add_clips. The contrast with add_clips(kind='video') for audio-as-clip further sharpens purpose clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('background music or a soundtrack that should play under the existing timeline') and when NOT to use it (for inserting an audio file as its own sequential clip, referencing add_clips). It also provides concurrency guidance ('serialize; do not run in parallel with ANY other mutation') and warns about guide_end_time behavior. This is comprehensive and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_clipsAdd clips to projectAInspect
Create new clips on a project. One tool, three sources:
kind="blank": empty slide clips you'll populate with add_elements / generate_media. Pass
clips: [{title?, duration?}, ...]. Note: create_project already creates clip 0; calling with N blank entries gives N+1 clips total.kind="pptx": extract slides from an uploaded .ppt/.pptx. Pass
mcp_upload_id(from upload_file), optionalslide_indices. Each slide becomes a slide_clip with native text/image/shape elements pre-populated.kind="video": cut clips from an uploaded video/audio. Pass
mcp_upload_idand optionallymime_type(default video/mp4),title,voiceover_text,cuts: [{start_seconds, end_seconds, heading?}],auto_elements. Withoutcutsthe whole upload becomes one clip. Pipeline (download → transcribe → insert) runs in the background; subsequent calls on the same upload hit a 24h cache and return synchronously. (To overlay a video ONTO an existing clip — picture-in-picture, b-roll, background loop — rather than insert it as its own clip, use add_elements(element_type='video') instead.)
All variants accept after_clip_id to control insertion position; appends at end if omitted.
Concurrency: whole-project mutation (conflict domain: the entire project) — serialize. Do not run it in parallel with ANY other mutation on the same project_id, including element/voiceover edits; run them one at a time. (Mutations to different projects run in parallel freely.)
| Name | Required | Description | Default |
|---|---|---|---|
| cuts | No | kind='video' only: per-clip cuts. Each entry becomes one inserted clip. Omit to insert the full upload as a single clip. | |
| kind | Yes | Source for the new clips: 'blank' | 'pptx' | 'video'. | |
| clips | No | kind='blank' only: one entry per blank clip. Optionally set background_color/background + transition per clip at creation — no follow-up update_clips needed. | |
| title | No | kind='video' only: clip title (default 'Video'). | |
| mime_type | No | kind='video' only: MIME type (default 'video/mp4'). Audio MIME types insert the file as a sequential clip with auto-TTS; for background music, use add_audio instead. | |
| project_id | Yes | Project (guide) ID. | |
| after_clip_id | No | Insert after this clip ID; appends at end if omitted. | |
| auto_elements | No | kind='video' only: when true, run auto-element detection (zooms, spotlights, blurs). Default false. Only meaningful on cache miss; cache hits clone the originating run's auto-elements. | |
| mcp_upload_id | No | kind='pptx' or 'video': mcp_upload_id from the upload_file tool. | |
| slide_indices | No | kind='pptx' only: 0-based slide indices to insert. Omit to insert all slides. | |
| voiceover_text | No | kind='video' only: post-AI voiceover script (saved as v2). Original audio is always retained as the base transcript. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) are basic, but the description adds extensive behavioral details: concurrency constraints, 24h caching, background pipeline for video, and the note that create_project already creates clip 0. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections for each kind, but it is somewhat long due to thorough details (e.g., caching, concurrency). Every sentence contributes value, though minor trimming could improve conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all aspects: parameter usage, side effects, ordering, concurrency, alternatives, and caching behavior. However, it lacks explicit mention of the return value (what the tool outputs after creating clips), which would be useful given no output schema. Still very complete overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, yet the description adds significant context: for blank clips, it explains that background/transition can be set at creation; for video kind, clarifies mime_type default and the effect of omitting cuts; for pptx, slide_indices optional. All parameter meanings are enriched beyond raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates new clips on a project and distinguishes three sources (blank, pptx, video) with explicit use cases. It differentiates from sibling tools like add_elements for video overlays and add_audio for background music.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use each kind and when not (e.g., for overlays use add_elements, for background music use add_audio). Provides concurrency advice: serialize mutations on the same project, do not run in parallel with other mutations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_commentAdd commentAInspect
Post a review comment on a project, attributed to "Clueso AI".
Use this to leave feedback, suggestions, or notes — either at the project level (no clip_id) or pinned to a specific clip with an optional timestamp inside that clip.
| Name | Required | Description | Default |
|---|---|---|---|
| clip_id | No | Optional clip ID to pin the comment to. Omit for a project-level comment. | |
| project_id | Yes | The project (guide) ID | |
| comment_text | Yes | Comment text to post | |
| clip_timestamp | No | Optional timestamp within the clip (seconds). Only used when clip_id is provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the key behavioral trait that comments are attributed to 'Clueso AI' rather than the user, which is not evident from the annotations alone. Annotations already indicate that the tool is not read-only, not destructive, and not open-world, so the description adds value by revealing the attribution behavior. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the first sentence stating the core action and attribution, and the second sentence explaining the two usage modes. Every sentence adds value, and there is no redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, 2 required, no output schema, no nested objects), the description covers the essential behavioral aspects and usage contexts. It does not explain the return value, but with no output schema, the agent can infer success/failure from typical API patterns. It is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for all four parameters with clear descriptions, so the baseline is a 3. The description does not add any additional semantic detail beyond what the schema offers—it only restates the purpose of clip_id and clip_timestamp in context. No deduction or bonus is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('post a review comment'), the target ('on a project'), and the attribution ('Clueso AI'). It further distinguishes the two modes (project-level or pinned to a clip with an optional timestamp), which adds precision and helps differentiate it from any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool—'to leave feedback, suggestions, or notes'—and explicitly describes the two usage contexts (project-level vs. pinned to a clip). It does not mention when NOT to use it or list any alternative sibling tools, which is acceptable given the clear context and the lack of obvious overlapping tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_elementsAdd elements to clipsAInspect
Add many elements across one or more clips in a single tool call. Replaces the per-element tool — always batch.
Use after calling get_element_schema to confirm the type_data shape per element_type. Items within one call are applied in order; returns one result entry per input item so partial success is fine.
Reuse instead of rebuilding: an item may pass component_id INSTEAD of element_type/type_data to insert a saved component from this workspace exactly as stored — no generation, instant — returning every new element_id plus its parameter_schema; set its content afterwards with update_elements(type_data.parameter_values). Find them with find(type='element_components'). Use base_component_id (with element_type='animation' and a prompt) only when you want a NEW variant rather than that component.
Grouping: pass group: "<name>" to keep a unit together (a card and its label, a stat and its caption) so the user can move or hide it as one thing. Items in one call sharing a name land in the same group, and a later call with that name adds to it. Grouping never changes coordinates. It does affect z-order: a group's members render contiguously at the group's slot, and a NEW group takes the slot of its first member, so grouping already-adjacent elements keeps their z-position while grouping scattered ones pulls them together at the lowest member's slot.
Concurrency: parallel-safe (conflict domain: the individual element). Each element is applied as a granular patch under a per-guide lock and merged onto the latest data, so you can fan this tool out across parallel subagents — even targeting the same clip — as long as they touch different elements. Only two edits to the SAME element id serialize (last write wins). Do NOT run it concurrently with a whole-clip or whole-project mutation on the same guide (update_clips on that clip, add_clips/remove_clip/split_clip/duplicate_clip, add_audio, update_project) — those rewrite a larger scope and would clobber the element.
Element-type quirks (handled per-item): • zoom → x/y/width/height are ignored; use center_x/center_y in type_data • image → provide x/y/width/height (the clip is located by clip_index; the clip_id input is accepted but unused) • animation → x/y/width/height default to the full canvas if omitted (the clip is located by clip_index) For everything else, x/y/width/height are required.
Animation: pass a top-level keyframes array (sibling of x/y/type_data, NOT inside type_data) — entries are { timestamp, positionX?, positionY?, width?, height?, interpolation? } in canvas pixels. positionX/Y use the SAME alignment-aware origin as the element's x/y. Text caveat: width/height are not keyframable on text — animate its size with fontSize (letterSpacing/lineHeight/padding* are also keyframable).
Position origin: x/y is the top-left corner for every element type EXCEPT text — center-aligned text positions by its CENTER POINT, right-aligned text by its top-right. Batching text alongside other shapes? Set alignment explicitly on each text item so you know which origin you're using.
| Name | Required | Description | Default |
|---|---|---|---|
| elements | Yes | Elements to add — at least one entry. | |
| project_id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations being present (readOnlyHint: false, destructiveHint: false), the description adds extraordinary behavioral detail: it explains the per-guide lock and merge semantics for concurrency, clarifies that partial success is fine (returns one result per input item), describes ordering ('Items within one call are applied in order'), and notes that clip_id is accepted but unused for most element types. The description goes far beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear section headers (element-type quirks, position origin, animation, grouping, concurrency, reuse instead of rebuilding). It is longer than ideal, but every section provides critical, non-obvious information that an agent would need to use the tool correctly. Minor deduction for density; each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's high complexity (many element types, animation keyframes, component system, grouping, concurrency issues), the description is remarkably complete. It covers element-type-specific behaviors, keyframe structure and constraints (≥2 entries, interpolation defaults, property-level overrides), component re-use workflow (find, insert via component_id, customize with update_elements), grouping semantics (z-order, new groups take first member's slot, animations cannot be grouped immediately), and concurrency conflict domains. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though schema description coverage is 100% (all parameters documented in the schema), the description adds significant meaning: it explains the origin semantics for position (top-left vs center vs top-right based on alignment), clarifies that zoom ignores x/y/width/height and uses center_x/center_y, notes that image requires x/y/width/height while clip_id is unused, states that animation defaults to full canvas dimensions, and explains that width/height are not keyframable on text. It also describes the relationship between component_id and element_type/type_data (mutually exclusive), and adds context about grouping behavior that is not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds elements to clips and immediately distinguishes itself from a per-element tool by saying 'Replaces the per-element tool — always batch.' It specifies the primary action (adding many elements across clips in a single call) and contrasts with sibling tools like update_elements and remove_elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides extensive usage guidance: it tells when to use get_element_schema first, explains the workflow for reusing components versus generating new ones (component_id vs base_component_id), details grouping behavior, and gives explicit concurrency warnings including which tools to avoid running simultaneously (update_clips, add_clips, remove_clip, split_clip, duplicate_clip, add_audio, update_project). This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_sync_pointAdd a sync point at a word + timestampAInspect
Insert one sync marker on a clip's transcript.
Use this when:
The user is explicit about WHERE the camera should pause / cut (e.g. "sync the word 'submit' to 4.2s of the demo").
auto_syncran but missed a step you care about.
How matching works:
word: case-insensitive, punctuation-stripped. The first match in the transcript is used unlessoccurrence > 1.occurrence: 1-indexed — pass 2 to target the SECOND time that word appears, 3 for the third, etc. Required when the word repeats.timestamp_seconds: clip-relative seconds. When the clip has run TTS already (generated_timestampspresent), the server inverse-maps this to original-recording seconds automatically.
Constraints: the clip MUST be a video clip with a source recording (otherwise the frame thumbnail can't be extracted). The transcript must already contain the word — if not, you'll get word_not_found with a 200-char excerpt of the transcript to help you retry.
| Name | Required | Description | Default |
|---|---|---|---|
| word | Yes | Target word (case-insensitive; trailing punctuation is stripped). | |
| clip_id | No | Clip ID (preferred). If omitted, clip_index is used. | |
| clip_index | No | Zero-based clip index. Ignored if clip_id is provided. | |
| occurrence | No | 1-indexed match number when the word repeats. Defaults to 1 (first occurrence). | |
| project_id | Yes | Project ID. | |
| sync_point_name | No | Optional label (e.g. 'Click submit'). Defaults to 'Sync point N' using the next order number. | |
| timestamp_seconds | Yes | Clip-relative timestamp in seconds. Auto-mapped to original-recording seconds when the clip has generated_timestamps. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate destructiveHint=false, readOnlyHint=false, and openWorldHint=false, so the description does not need to cover safety again. However, the description adds valuable behavioral context: it explains how word matching works (case-insensitive, punctuation-stripped, first match by default), the role of the occurrence parameter, and the timestamp auto-mapping behavior. It also discloses constraints (clip must be video with source recording, transcript must contain the word) and error handling (word_not_found with excerpt). This enriches the agent's understanding beyond annotations, though a minor gap is lack of detail on what happens after insertion (e.g., is the clip modified in place? Are there side effects on other sync points? Still, 4 is justified for solid transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a brief introduction, bullet-style usage guidance, and detailed notes on matching and constraints. The information is front-loaded with the core action and when-to-use, followed by specifics. It is not excessively verbose, but the 'How matching works' section could be slightly tighter. Overall, it earns its length and is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, 3 required, no output schema), the description covers the core semantics, matching logic, constraints, and error handling. It explains inputs well but does not describe the output or return value (e.g., what the agent receives after success, or how to interpret the result). Since there is no output schema, the agent would benefit from knowing the response format (e.g., sync point ID, confirmation). Nonetheless, for a mutation tool with no output schema, the description is largely complete for guiding correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters' types and basic roles. The description adds significant meaning beyond the schema: it explains the matching semantics for 'word' (punctuation-stripped, first match strategy), clarifies that 'occurrence' is 1-indexed and required for repeated words, and describes the auto-mapping of timestamp_seconds when generated_timestamps exist. It also implies the optionality of sync_point_name and the fallback between clip_id and clip_index. These details are not present in the schema alone and help the agent use parameters correctly. A score of 5 would require explicit examples or edge-case handling, but 4 is strong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Insert' and the resource 'sync marker on a clip's transcript', clearly distinguishing its purpose from sibling tools like 'auto_sync' (which runs automatic sync) and 'split_clip' (which cuts the clip). It states the tool adds a sync point at a specific word and timestamp, leaving no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'when the user is explicit about where the camera should pause/cut' and 'when auto_sync ran but missed a step you care about'. It also implies when not to use it (rely on auto_sync for automatic syncing) and gives context about matching behavior and constraints, providing clear guidance for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_audioAnalyze audioARead-onlyInspect
Analyze an audio file. Modes:
transcript: Speech-to-text with word-level timestamps. Works on BOTH speech and sung lyrics — routes to a music-aware provider when content is detected as music. Use to get
words[{w,start_ms,end_ms}]for caption timing, script editing, or word-level visual sync. Note: features.has_speech may report false on pure music while transcript still successfully extracts lyrics.silences: list of silent regions with start/end/peak. Use for auto-trim, smart-split, or pause-aware editing.
beats: tempo (bpm) + beat positions for music tracks. Returns empty for non-music. Use to align animations/zooms to a beat.
features: duration, peak/rms/lufs loudness, speech-vs-music heuristic. Cheap dispatcher — call once to decide which other mode to use, or to get duration_ms for source_duration when calling add_audio.
Source: provide exactly one of mcp_upload_id (from upload tool) or file_url (already-public URL, e.g. a find(type='music') result or Clueso CDN file). Optional time range: range_start_ms / range_end_ms crops the analysis window.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Which analysis to run. | |
| file_url | No | Public http(s) URL to the audio. Use when the file is already accessible (e.g. find(type='music') result, Clueso CDN). Validated against private/loopback ranges. | |
| range_end_ms | No | End of analysis window in milliseconds. Default: whole file. | |
| mcp_upload_id | No | MCP upload ID from the upload_file tool. Use this OR file_url, not both. | |
| range_start_ms | No | Start of analysis window in milliseconds. Default 0 (beginning). | |
| silences_options | No | Options for mode='silences'. | |
| transcript_options | No | Options for mode='transcript'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=true and destructiveHint=false, so the tool is clearly read-only. The description goes beyond this by noting behavioral traits: transcript works on both speech and lyrics by routing to a music-aware provider, features.has_speech may report false on pure music while transcript still extracts lyrics, and beats returns empty for non-music. This adds useful context beyond annotations, though it doesn't cover all edge cases thoroughly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear header, bullet points for modes, and organized paragraphs for source and optional parameters. Every sentence adds value, and the front-loaded mode descriptions make scanning easy. No wasted words—concise yet comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (7 parameters, 1 required, nested objects, 4 modes with specific behaviors) and absence of an output schema, the description is remarkably complete. It covers all modes, edge cases (music handling, empty beats), source options, time range, and notes caveats like false negatives. An AI agent can confidently invoke this tool without additional clarification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning by explaining how mode values work (e.g., transcript produces words[{w,start_ms,end_ms}]), source constraints, and offering default behaviors (default whole file for range). However, it does not explain all nested options (silences_options, transcript_options) in full detail, lacking a small step to a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes audio files and enumerates four distinct modes (transcript, silences, beats, features) with specific use cases. It differentiates from siblings like add_audio (which adds audio to a project) and check_uploads (which checks upload status), and provides enough specificity for an AI agent to understand the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use each mode (e.g., 'Use for auto-trim, smart-split' for silences, 'align animations/zooms to a beat' for beats), mentions a cheap dispatcher mode features, and gives alternatives like 'call once to decide which other mode to use'. It also clarifies source options (mcp_upload_id vs file_url) and optional time range, fully satisfying this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_syncAuto-generate sync pointsADestructiveInspect
Run the agentic auto-sync pipeline against a clip with a source recording. Detects natural sync points (UI state changes, narrated steps) and inserts sync-marker nodes into the clip's transcript.
Async: returns immediately with a status enum from the pre-flight; sync-marker nodes appear in the transcript a few seconds later. Poll get_clip if you need to verify.
Capacity: capped at 3 concurrent runs platform-wide. Returning status='success' means the job was accepted, not that it finished.
Sync points are required input for voiceover TTS on video clips — without them, the TTS has no per-step pacing reference. (See resource clueso://docs/sync-points for the full model.)
| Name | Required | Description | Default |
|---|---|---|---|
| clip_id | Yes | Clip ID to auto-sync. | |
| project_id | Yes | Project ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant behavioral details beyond annotations: async nature, immediate return of status enum, delayed insertion of sync markers, polling recommendation, and platform-wide concurrency cap. Annotations already indicate destructiveness, but the description enriches understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Approximately 100 words, well-structured into three logical paragraphs. Every sentence adds value: purpose, async behavior, capacity, and usage context. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, async behavior, concurrency, and usage context. References external docs for more detail. However, does not enumerate possible status enum values returned from the pre-flight, which is a minor gap given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with two parameters. The description does not add any additional meaning beyond the parameter names and brief descriptions in the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'run the auto-sync pipeline' and resource 'clip with source recording'. Distinguishes from sibling 'add_sync_point' by description of automation. The title 'Auto-generate sync points' aligns with the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides strong context: sync points are required for TTS, and describes capacity limits and async behavior. Implicitly differentiates from manual sync point addition. However, lacks explicit when-not-to-use guidance or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_uploadsCheck upload statusARead-onlyInspect
Fetch all files the user uploaded via the hosted upload page. Returns one mcp_upload_id per file — pass each to the appropriate tool (add_clips, add_article_media, etc.). Call this once after the user confirms they are done uploading; the token covers all files they dropped on the page.
| Name | Required | Description | Default |
|---|---|---|---|
| upload_token | Yes | The upload_token returned by upload_file(request_hosted_upload: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds that it returns one mcp_upload_id per file and that the token covers all files. No contradictions, but no additional behavioral traits like error handling or pagination are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the main action, no extraneous words. Each sentence serves a distinct purpose: action, returns, and usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and no output schema, the description covers the essential workflow and return value. It could mention edge cases like empty uploads but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description covers 100% of the parameter, and the description adds context about the token's scope ('the token covers all files they dropped on the page'), which goes beyond the schema's definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch all files' and the resource 'uploaded via hosted upload page', and distinguishes from siblings by specifying it returns mcp_upload_id per file to be passed to other tools like add_clips and add_article_media.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to call ('once after the user confirms they are done uploading'), explains that the token covers all files, and instructs to pass each returned ID to the appropriate tool for further processing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_clueprintCreate clueprintAInspect
Create a new clueprint (reusable video template). A clueprint is a structured file directory with design notes, composition rules, and screenshots that can be used to generate videos.
Use human-readable folder categories: design/ (colors, typography, backgrounds, animation), rules/ (composition, voiceover, editing), screenshots/ (rendered clip previews). See the "Creating Clueprints" section in the system instructions for the full structure.
If source_guide_ids are provided, guide data is automatically extracted clip-by-clip into the clueprint as reference material.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the clueprint | |
| visibility | Yes | 'private' = only you, 'workspace' = everyone in your workspace | |
| description | No | Description of what this clueprint does | |
| source_guide_ids | No | IDs of existing projects to extract template data from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description is not required to repeat that. It adds value by disclosing the automatic extraction behavior ('guide data is automatically extracted clip-by-clip') and the structured folder categories, which are behavioral traits beyond the annotations. No contradiction detected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all essential: definition, usage advice, and conditional behavior. No filler, front-loaded with the primary purpose. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the purpose, usage, and a key side effect (auto-extraction). It references external documentation for full structure, which is acceptable. However, it does not mention what the tool returns (e.g., clueprint ID) nor any next steps. Given no output schema, a slight gap exists, but overall it is sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds meaningful extra context: for source_guide_ids, it specifies 'clip-by-clip' extraction and 'reference material', which the schema lacks. It also orients the agent toward folder categories, though these are not directly tied to a parameter. This exceeds the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new clueprint' with a specific verb and resource. It defines a clueprint as a 'reusable video template' and explains its structure (file directory with design notes, rules, screenshots). This effectively distinguishes it from sibling tools like get_clueprint or update_clueprint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage hints such as using human-readable folder categories and referencing the system instructions, but it does not explicitly compare this tool to siblings like create_project. There is no guidance on when not to use it or alternatives, leaving the agent to infer from the sibling list. The conditional behavior with source_guide_ids offers some contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectCreate projectAInspect
Create a new blank Clueso project. Returns the projectId and initialClipId — the project starts with one blank clip already at index 0 (default short duration). Use update_clips to resize/retitle clip 0, add_clips(kind='blank') to append more clips, add_elements to place content, and add_audio to attach a project-level music track.
Optionally place the project inside a folder (use find(type='folders') to find folder IDs) and set a description at creation time.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Project title | |
| folder_id | No | Optional folder ID to nest the project under. Use find(type='folders') to discover IDs. Omit to create at workspace root. | |
| description | No | Optional project description (max ~500 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behavioral details beyond annotations: the project starts with one blank clip at index 0 with default short duration, and the tool returns projectId and initialClipId. Annotations already indicate mutation (readOnlyHint=false) and non-destructiveness, so the description adds useful context about initial state and return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences: first states purpose and return, second lists follow-up tools, third covers optional folder and description. It is front-loaded, every sentence adds value, and there is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 optional parameters and no output schema, the description covers initial state, return values, and post-creation workflow. It does not explain potential constraints (e.g., title uniqueness) or error cases, but for a simple creation tool, the coverage is reasonably complete and actionable for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some value by explaining the folder_id context (use find to discover IDs, omit for root) and mentioning description at creation, but these are largely redundant with the schema descriptions. No additional semantic depth is provided beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new blank Clueso project' with a specific verb and resource. It distinguishes from sibling tools by outlining post-creation steps (update_clips, add_clips, etc.), implying this tool is for initial creation only. The return values (projectId and initialClipId) are also specified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool (for initial creation) and references sibling tools (update_clips, add_clips, add_elements, add_audio) for subsequent actions. It also advises on folder placement using find(type='folders'). However, it does not explicitly state when not to use it (e.g., for duplicating a project), though this is implied by the listed alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_clipDuplicate a clipAInspect
Clone one clip — within the same project, or from another project — into a target project.
Same project: pass
target_project_idandsource_clip_id(omitsource_project_id).Cross-project: pass
target_project_id,source_project_id,source_clip_id. The source clip's S3 assets (voiceover audio, original video footage, generated video, etc.) are re-hosted into the target guide's S3 namespace, so the new clip is independent of the source — deleting the source project later won't break it.
Insertion: pass after_clip_id to place immediately after a specific clip in the target. Omit to append at end.
Returns the new clip_id and its final index. Concurrency: whole-project mutation (conflict domain: the entire target project) — serialize; do not run in parallel with any other mutation on the same target_project_id.
| Name | Required | Description | Default |
|---|---|---|---|
| after_clip_id | No | Insert after this clip ID in the target. Appends at end if omitted. | |
| source_clip_id | Yes | ID of the clip to duplicate. | |
| source_project_id | No | Cross-project mode: ID of the project the source clip lives in. Omit for same-project duplication. | |
| target_project_id | Yes | Project (guide) ID to insert the duplicate into. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, destructiveHint=false, and openWorldHint=false, which are minimal. The description compensates thoroughly by disclosing S3 asset re-hosting, independence from source project (deleting source later won't break the new clip), insertion behavior, return value shape (clip_id and final index), and concurrency domain (entire target project as a conflict domain). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise and well-structured: one core sentence, then bullet-point-style sections for modes, insertion, returns, and concurrency. Every sentence provides unique guidance with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param mutation tool with no output schema and only three basic annotations, the description fully covers all necessary behavioral details: both modes, asset independence, insertion, return value, and concurrency. Nothing critical is missing for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage, so baseline is 3. The description adds value by explaining the semantics of parameter combinations (e.g., when to omit source_project_id) and the effect of after_clip_id, which goes beyond the schema's field-level descriptions. However, it doesn't reference the target_project_id parameter explicitly beyond its brief schema description, so the added value is strong but not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a clear verb ('Clone') and resource ('one clip'), and immediately distinguishes two distinct modes (same-project vs cross-project) with precise parameter guidance. This differentiates it from sibling tools like duplicate_project or add_clips.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use different parameter combinations for same-project vs cross-project duplication, and gives specific guidance on insertion behavior via after_clip_id. Also provides concurrency guidance ('serialize; do not run in parallel'), which helps the agent decide usage timing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_projectDuplicate projectAInspect
Clone an entire project — every clip, voiceover, asset, and metadata field — into a fresh project. The copy has its own S3 namespace, so changes or deletions to the source never affect the duplicate.
Defaults:
new_title omitted → "{source title} (copy)" when no folder_id is given (or it's empty) and the source stays in the same org; pass an explicit non-empty folder_id and the title is preserved.
folder_id omitted → copy lives in the same folder as the source.
Returns the new project's id and title. Concurrency: whole-project read+create — serialize against other mutations on the same source_project_id; do not run them in parallel.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | No | Place the duplicate in this folder. Omit to keep the same folder as the source. Pass '' (empty string) to move to workspace root. | |
| new_title | No | Override the title of the duplicate. | |
| source_project_id | Yes | Project (guide) ID to duplicate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant value beyond annotations: it states the copy has its own S3 namespace (so source changes don't affect the duplicate), describes the default title creation logic, explains folder placement behavior, mentions return values (id, title), and provides concurrency constraints. This fully characterizes the tool's behavior without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (main action, defaults, return value, concurrency). It is slightly verbose but every sentence earns its place by providing essential guidance. Front-loading the main action helps quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no output schema, and adequate annotations, the description covers the major behavioral aspects: copy scope, isolation, defaults, return format, and serialization advice. It is complete enough for an agent to use correctly. Minor omissions (e.g., error cases, permission requirements) are acceptable given the annotations and schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds crucial context: the interplay between new_title and folder_id (e.g., title preserved when explicit folder_id given, otherwise '(copy)' suffix), and the folder_id behavior (same folder if omitted, empty string moves to root). This explains edge cases and defaults that the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Clone') and resource ('entire project'), lists what is copied (clips, voiceovers, assets, metadata), and distinguishes from related tools like create_project and duplicate_clip by implying full project duplication. The S3 namespace detail further clarifies the isolation behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear defaults for when to omit new_title or folder_id, and gives explicit concurrency guidance: serialize against other mutations on the same source_project_id. It implicitly tells when to use this tool (full project copy) vs alternatives (e.g., duplicate_clip for single clips), but lacks an explicit 'when not to use' statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_durationEstimate clip durationARead-onlyInspect
Estimate voiceover duration for one or many clips at once (~150 words/minute). Pass an array of voiceover texts — one per clip. Returns durations in the same order, ready for add_clips.
| Name | Required | Description | Default |
|---|---|---|---|
| texts | Yes | Array of voiceover texts to estimate — one string per clip. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint: true and destructiveHint: false, so the description's revelation that this is a non-destructive estimation (no actual clips created) aligns perfectly. The description adds the key behavioral detail of 150 words/minute, which is valuable beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first sentence states the verb and resource, the second explains the input and output structure. Every word earns its place, and the key speed assumption is front-loaded with a parenthetical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, single-parameter, annotated read-only tool with no output schema, the description covers the purpose, input structure, output ordering, and intended use. Could mention what happens with empty texts or unusual characters, but given the low complexity, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds that the texts are voiceover texts and that one string corresponds to one clip, but this mostly restates the schema's description. No significant new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool estimates voiceover duration for one or many clips at once, with a specific speed approximation (~150 words/minute). It differentiates itself from siblings like add_clips or voiceover_batch by focusing on estimation rather than actual addition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool: before adding clips, by passing an array of voiceover texts. It mentions the returned durations are 'ready for add_clips', implying a workflow. No explicit exclusions or alternatives are given, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_projectExport projectAInspect
Kick off a video export of the project. Returns immediately with an export_id; the export pipeline runs in the background. The user can find the rendered video in the Exports tab in the editor.
Defaults: 1080p / 30fps / no captions / English. Pass overrides only when needed.
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | Frames per second (default 30) | |
| captions | No | Burn subtitles into the video (default false) | |
| project_id | Yes | The project ID to export | |
| resolution | No | Output resolution (default 1080p) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate no read-only or destructive behavior, and the description adds value by clarifying the asynchronous nature ('returns immediately... background'), the defaults for resolution, fps, captions, and language, and where the user finds the result. This goes beyond annotations to explain the background pipeline behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two short sentences plus a defaults summary. Each sentence provides essential information (async behavior, where to find output, defaults, guidance on overrides) with no filler. It is front-loaded with the main action and outcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters and no output schema, the description covers the core behavior, defaults, and async feedback mechanism. It could mention what happens on error (e.g., if export fails) or the output schema (export_id type), but this is minor. The context is mostly complete for a tool with 100% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by stating defaults for all optional parameters (1080p, 30fps, no captions) and advises passing overrides only when needed, which prevents agents from redundantly specifying defaults. It also mentions language (English) as a hidden default, which is not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it kicks off a video export of a project, distinguishing it from other tools like 'get_project' or 'update_project'. It uses specific verbs ('kick off') and resources ('video export of the project'), and mentions the asynchronous return of an 'export_id', which differentiates it from synchronous operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (to start an export) and notes that overrides are only needed for non-default values. However, it does not explicitly mention when not to use it or alternatives among the 39 sibling tools, such as 'estimate_duration' which might be used first to check feasibility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
findFind resourcesARead-onlyInspect
Find any resource in Clueso by type, optionally filtered by name or exact id. One tool for listing and searching across the workspace.
type:
• projects | folders | clueprints | workspaces
• backgrounds | voices | image_gen_style_packs | element_components
• images | videos | music | sfx — media; each result carries a source ('org' = your saved-media library, 'stock' = a stock/curated provider). Scope with source, pick the library with provider (see below). Stock results are a short described shortlist — pick the best fit and use its src. Stock video results also carry safe_src and a video_files tier list with one entry marked recommended — use safe_src (or the recommended tier) in add_elements; tiers above 1080p can exceed its ~200MB source cap and fail. For a Freesound music/sfx result, src is an OPAQUE handle (not a playable URL) — pass it straight to add_audio and the original is fetched + hosted by Clueso server-side; a preview_url is included only so you can tell what it sounds like.
(image_gen_style_packs = generation style presets for generate_media kind='image' style_id; element_components = saved components (e.g. animations) from THIS WORKSPACE only — there is no community library for components (unlike clueprints); each reports param_keys. Insert one AS-IS with add_elements(component_id=...), or generate a variant from it with base_component_id.)
Filters (all optional): • query — for stock media it's the search phrase (real semantic search for provider='clueso'; provider keyword search otherwise). For clueprints a query runs a relevance-ranked search across your workspace + the global community library (search_summary, relevance_reason, tags, is_community, fork_count). For everything else it's a case-insensitive name substring. • provider — which stock library to search (ONE call, no merging). Choose by strength: images → 'pexels' (default; realistic photography) or 'pixabay' (illustrations, vectors, icons, clip-art — set image_type) videos → 'pexels' (default; real-world footage) or 'pixabay' (motion graphics — set video_type='animation') music → 'clueso' (default; our curated, brand-safe library with the best descriptions/search — try this FIRST) or 'freesound' (niche/genre tracks) sfx → 'freesound' (default; vast sound-effect library) or 'clueso' (curated sfx) • image_type — images + provider='pixabay': 'photo' | 'illustration' | 'vector' • video_type — videos + provider='pixabay': 'film' | 'animation' • id — exact id; returns just that one record (any type) • source — media only: 'org' | 'stock' | 'all' (default = org + stock). Under 'all', stock is appended only when a query is given. sfx is stock only. • folder_id — projects + saved media (images/videos/music): restrict to a folder • engine / language — voices only • creator_id / mine_only — clueprints only • orientation — stock images/videos: 'landscape' | 'portrait' | 'square' • color — stock images: a color name/hex, e.g. 'blue' • size — stock videos: 'large' | 'medium' | 'small' • min_duration / max_duration — stock videos + freesound audio: length bounds in seconds • page / limit — paging for large sets (projects, components, clueprints — a clueprint list is sliced to the limit with no marker when more exist, so page through rather than assuming the first page is everything); stock media ignores these (fixed shortlist)
Returns { type, count, items: [{ id, name, type, ... }] }. Feed the returned id straight into the consuming tool (set_voice, update_clips background, generate_media style_id, add_audio src, use_clueprint, etc.). Any duration on a returned item is in SECONDS — pass it straight to add_audio's source_duration.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Exact id — returns just that record. | |
| page | No | Page (default 1) — projects/element_components/clueprints. | |
| size | No | stock videos only: minimum resolution bucket. | |
| type | Yes | Resource type to find. | |
| color | No | stock images only: color name or hex, e.g. 'blue'. | |
| limit | No | Page size (default 50; voices default 5 — a '_more' item flags further pages). | |
| query | No | Case-insensitive substring match on name. | |
| engine | No | voices only: 'eleven' | 'cartesia' | 'google'. | |
| source | No | media types (images/videos/music/sfx) only: where to search — 'org' (your saved workspace media), 'stock' (stock library — images/videos via Pexels, music from Clueso's catalog), 'all' (both; default). sfx is stock-only. | |
| language | No | voices only: e.g. 'en'. | |
| provider | No | stock media: which library to search (exactly one). images/videos: 'pexels' (default — polished real-world photos & footage) | 'pixabay' (illustrations, vectors, clip-art, icons + more variety; pair with image_type/video_type). music/sfx: 'clueso' (default for music — our curated, brand-safe, well-described library, best semantic search) | 'freesound' (huge community library; best for niche music and sound effects — default for sfx). | |
| folder_id | No | projects/images/videos/music only: restrict to a folder. | |
| mine_only | No | clueprints only: only ones I created. | |
| creator_id | No | clueprints only: filter by creator id. | |
| image_type | No | stock images + provider='pixabay' only: 'photo' | 'illustration' | 'vector' (flat/drawn graphics, icons, clip-art). Use illustration/vector for graphic looks; photo (or Pexels) for realism. | |
| video_type | No | stock videos + provider='pixabay' only: 'film' (live footage) | 'animation' (motion graphics). | |
| orientation | No | stock images/videos only: result orientation. | |
| max_duration | No | stock videos + freesound audio: maximum clip length in seconds. | |
| min_duration | No | stock videos only: minimum clip length in seconds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds significant behavioral details: return format, special handling of stock media results (opaque handles, safe_src, preview_url), pagination behavior for clueprints, and constraints like 'stock media ignores these (fixed shortlist)'. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points, clear sections, and indentation for readability. However, it is verbose (several paragraphs), and some details could be condensed without losing meaning. Every sentence earns its place, but the length slightly impacts rapid scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (19 parameters, 12 resource types, stock media integration, no output schema), the description covers all necessary aspects: parameter behavior, result handling, constraints, and consumption guidance. It even addresses edge cases like 'stock results are a short described shortlist' and 'duration is in seconds'. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds immense semantic value beyond the schema: it explains how 'query' behaves differently per type (semantic search for clueprints, case-insensitive substring for others), provider selection strategy, and parameter interactions (e.g., 'image_type only with provider=pixabay'). This transforms the schema from a list of options into a usable decision tree.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Find any resource in Clueso by type, optionally filtered by name or exact id. One tool for listing and searching across the workspace.' This clearly identifies the specific verb (find), resource (any resource in Clueso), and scope (listing and searching), and distinguishes it from siblings as no other tool is a generic finder.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides extensive when-to-use guidance, including detailed instructions for stock media provider selection, pagination behavior ('page through rather than assuming the first page is everything'), and explicit warnings about limitations (e.g., 'tiers above 1080p can exceed its ~200MB source cap and fail'). It also gives context on when to use alternatives (e.g., 'use safe_src... in add_elements').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_mediaGenerate AI media (image or animation)AInspect
Generate an AI image or canvas-code-based animation directly into a clip.
kind="image": text-to-image. Pass
prompt. Optional:style_id(from find type='image_gen_style_packs'),reference_image_urlormcp_upload_idfor image-to-image grounding.kind="animation": canvas-code animation rendered from a prompt. Pass
prompt. Optional:voiceover_text(drives timing),base_component_id(reuse a saved animation as the starting point),reference_image_urlormcp_upload_idfor visual grounding.
Generation is asynchronous: the element is created immediately with a stable element_id and rendered in the background. Poll get_clip (the phantom flag drops once rendering completes).
Tip: use this tool whenever the user asks for a "generated", "AI", or "create me a" visual. For uploaded photos / logos / icons / GIFs, use add_elements with element_type='image' and a src or mcp_upload_id instead.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Top-left X in canvas pixels. | |
| y | Yes | Top-left Y in canvas pixels. | |
| kind | Yes | 'image' = AI text-to-image; 'animation' = canvas-code-based motion graphic. | |
| width | Yes | Width in pixels. | |
| height | Yes | Height in pixels. | |
| prompt | Yes | Generation prompt. For animations, be SPECIFIC: name the UI elements, interaction sequence, timing feel, and visual style. Vague prompts produce bad output. | |
| clip_id | Yes | Clip ID to place the generated element into. | |
| end_time | No | Disappear at (seconds). | |
| style_id | No | Image only. Style preset ID from find(type='image_gen_style_packs'). See resource clueso://docs/generation-styles. | |
| project_id | Yes | Project ID. | |
| start_time | No | Appear at (seconds). | |
| mcp_upload_id | No | mcp_upload_id from the upload flow. Resolved server-side to a presigned URL before generation. | |
| voiceover_text | No | Animation only. Paces the motion to the spoken script — and as a side effect sets this clip's voiceover text and triggers speech generation for the clip. | |
| base_component_id | No | Animation only. Reuse a saved animation component as the starting point (from find(type='element_components')). To re-skin its tunable parameters, set parameter_values via update_elements after it renders. | |
| reference_image_url | No | Public URL of a reference image. Mutually exclusive with mcp_upload_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that generation is asynchronous, with immediate element_id creation and background rendering, and instructs to poll get_clip for completion. It also discloses side effects of voiceover_text (sets voiceover and triggers speech generation). These details go well beyond the sparse annotations (readOnlyHint=false, etc.) and provide essential behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line summary, bulleted breakdown by kind, async behavior note, and a usage tip. Every sentence is necessary and adds value, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the two generation modes, async behavior with polling instructions, and alternatives. It is thorough for a tool with 15 parameters and complex behavior. However, it omits details on error handling, timeouts, or what happens on generation failure, which would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented. However, the tool description adds significant extra meaning: grouping parameters by kind, explaining optional parameters' sources (e.g., style_id from find), mutual exclusivity of reference_image_url and mcp_upload_id, and the side effect of voiceover_text. This raises the value above baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates AI images or canvas-code animations into a clip. It distinguishes between two kinds (image and animation) and explicitly contrasts with the sibling tool add_elements for uploaded media, making the boundary unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'use this tool whenever the user asks for a generated, AI, or create me a visual' and 'for uploaded photos / logos / icons / GIFs, use add_elements'. It also explains when to use each kind and optional parameters, giving clear decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_articleGet articleARead-onlyInspect
Get the article content as markdown. Screenshots appear as <SCREENSHOT {id}> placeholders. Returns the markdown text and a list of screenshot IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already confirm readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is clear. The description adds valuable context about the markdown format and how screenshots are represented ('Screenshots appear as <SCREENSHOT {id}> placeholders'), which annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every word earns its place. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple 1-param, read-only tool with full schema annotation, the description is mostly complete. It explains the return format and screenshot handling. However, it could mention if the markdown includes metadata or if any special error cases exist (e.g., article not found), but this is not a critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single parameter 'project_id'. The description does not add meaning beyond what the schema provides (e.g., no context on where to find the project ID or what it represents). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Get the article content') and identifies the resource ('article') and return format ('as markdown'). It distinguishes itself from sibling tools like 'update_article' and 'get_clip' by clearly indicating a read operation returning content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for reading article content and nothing else, but it does not explicitly state when to use this vs. other read tools like 'get_project' or 'get_clip'. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_clipGet clip detailsARead-onlyInspect
Read one clip: its elements (positions/sizes in canvas pixels), voiceover (text, voice, duration, voiceover_volume), background and transition. Pass render to also get a PNG of the frame.
ASK FOR WHAT YOU NEED. A full read is large — on a dense clip the per-word voiceover array and the element type_data blobs dominate it, and repeated full reads are the main way a long session runs out of context. select returns exactly the parts you name:
select: ['elements.x','elements.y','elements.width','elements.height'] → geometry only, to fix a layout select: ['elements.name','elements.start_time','elements.end_time'] → a timing pass select: ['words'] → word timings only, to sync visuals to narration select: ['elements.textdata','words'] → rewrite copy against the VO select: ['elements'] → whole element rows, no words select: [] → no JSON at all (pair with render for the PNG alone — smallest read) (omit select) → everything; fine for a first look, expensive to repeat
render is the other output, and it is separate from select: select shapes the JSON, render produces a PNG.
render: {} → the frame at t=0 render: { timestamp: 2.5 } → the frame 2.5s into the clip render: { save: true } → also uploads the PNG and returns presigned_url select: [], render: {} → the PNG alone, no JSON select: ['elements'], render: {} → element rows AND the frame
Omitting render renders nothing. timestamp and save live inside it because they only mean anything for a render — there is no way to ask for them without asking for the image.
element_ids is the other axis: it picks WHICH element rows come back, independently of select. Combine them for the leanest read — e.g. element_ids: ['el_9'], select: ['elements.x','elements.y'].
Element shape: universal wrapper fields (id, geo, name, x, y, width, height, start_time, end_time, rotation) plus type-specific data (textdata/shapedata/imagedata/videodata/zoomdata) plus an optional keyframes array when animated. Keyframes come back in the same flat wire shape add_elements takes — { timestamp, positionX?, positionY?, width?, height?, interpolation? } in canvas pixels — so you can round-trip read → edit → update_elements without reshaping.
Clip-level fields include transition (the current transition object — sibling of the update_clips transition arg; null if none) and voiceover_words (per-word timestamps; null on clips with no transcription).
| Name | Required | Description | Default |
|---|---|---|---|
| render | No | Render a PNG of the frame. Presence of this object IS the request to render — omit it and nothing is rendered. `{}` renders at t=0. Independent of `select`, which only shapes the JSON: pair `select: []` with `render: {}` for the PNG alone (smallest read). CHECKING YOUR WORK: pass a mid-clip `timestamp`, not the t=0 default — text and image elements have entry animations (a ~0.4s slide/fade by default), so at t=0 they have not arrived yet and a correct edit renders as an empty frame. Shapes have no entry animation and do show at t=0, which makes a t=0 render especially misleading: some elements appear and others don't. | |
| select | No | Ask for exactly the JSON you want, GraphQL-style. Omit for everything; pass [] for none. Sections: 'elements' (whole element rows), 'words' (per-word VO timings). Rendering is `render`, not a value here. Per-key: 'elements.<key>' projects element rows to just those keys (id is always kept). Keys: name, geo, x, y, width, height, start_time, end_time, rotation, keyframes, textdata, shapedata, imagedata, videodata, zoomdata, codedata, parent_id. Examples: ['elements.x','elements.y','elements.width','elements.height'] to read geometry; ['elements.name','elements.start_time','elements.end_time'] for a timing pass; ['words'] to sync visuals to narration; [] with render:{} returns the PNG with no JSON (smallest read); ['elements.textdata','words'] to rewrite copy against the VO. Mixing 'elements' with 'elements.<key>' returns whole rows. Use element_ids to choose WHICH rows — that is independent of this. | |
| clip_index | Yes | Zero-based clip index | |
| project_id | Yes | The project ID | |
| element_ids | No | WHICH element rows to return — all others are dropped. Independent of `select`, which chooses the sections/keys. Use it to re-inspect just what you added or updated; most add_elements/update_elements already echo the element's resolved layout, so often you don't need this at all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare `readOnlyHint: true` and `destructiveHint: false`, so the description doesn't need to restate safety. Instead, it adds enormous value by detailing the tool's expensive nature ('A full read is large'), the relationship between `select` and `render` as independent axes, and how keyframes and voiceover data are returned. This goes far beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections and examples, making it highly informative. However, it is quite lengthy (over 600 words). While every sentence adds value, the sheer volume slightly impacts conciseness; a slightly tighter version could retain clarity while being more scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, nested objects, no output schema), the description is remarkably complete. It covers what the tool reads, how to control the output via `select` and `element_ids`, how `render` works independently, and the structure of the returned elements. The only minor gap is no explicit mention of return format (e.g., JSON object), but the 'Read one clip' phrase implies a single response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% coverage with descriptions for all 5 parameters. The description goes far beyond the schema by explaining the exact effect of combinations (e.g., `select: [], render: {}` yields only a PNG), providing concrete examples, and describing the returned data shapes (element wrapper fields, type-specific data). This adds immense meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read one clip' with a specific verb and resource, and lists all the retrievable components (elements, voiceover, background, transition). It distinguishes itself by describing the `select` mechanism and the `render` parameter, which are unique to this tool and not present in sibling tools like `update_clips` or `update_elements`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives. It directly warns about the cost of 'repeated full reads' and explains how `select` can minimize context usage. It also hints at when to use sibling tools like `update_clips` (for transitions) and `update_elements` (for element edits) by describing the return format, enabling the agent to decide to read before editing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_clueprintGet clueprintARead-onlyInspect
Fetch clueprint data. Use include to control how much you pull back:
include="metadata": just the clueprint's name/description/tags/visibility/thumbnail.
include="tree": metadata + the full file tree (path, mime_type, and size per entry). Call this first when exploring an unfamiliar clueprint.
include="files": the contents of the files listed in
file_paths(no metadata — call include='tree' first if you also need metadata). Text inline, binary as presigned GET URLs.include="all": metadata + the file tree + the contents of every file in the clueprint (use sparingly on large clueprints).
Calling this also logs the clueprint as "used" (fire-and-forget) so the workspace's recents list stays accurate — no follow-up use_clueprint call needed.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | What to return: 'metadata' | 'tree' | 'files' | 'all'. Defaults to 'tree'. | tree |
| file_paths | No | include='files' only: relative paths to read (e.g. ['design/colors.md', 'rules/voice.md']). Ignored for other modes. | |
| clueprint_id | Yes | ID of the clueprint. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description does not need to reiterate those. It adds significant behavioral context beyond annotations: it explains that calling the tool logs the clueprint as 'used' (fire-and-forget) for the recents list, and that binary files return presigned URLs. This excellent additional detail earns a high score; a 5 would require even more coverage, such as explicit mention of rate limits or size limits on responses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections for each include mode, uses bullet points for readability, and front-loads the key verb. Every sentence provides direct value; there is no fluff or repetition of schema fields. The bonus detail about usage logging is a single, concise sentence at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (3 parameters, 1 required, 1 enum) and the absence of an output schema, the description does a good job explaining return formats (metadata vs. tree vs. files with presigned URLs). It covers side effects (usage logging) and best practices for large clueprints. However, it lacks details on pagination or limits for very large clueprints, and the 'all' mode could use more caution about performance. A 5 would address these edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds substantial meaning beyond the schema for the 'include' parameter by explaining the effect and best practices for each enum value (e.g., 'metadata + the full file tree' and 'binary as presigned GET URLs'). For 'file_paths', it reinforces the dependency on include='files'. This is useful enrichment, earning a 4; a 5 would require adding similarly rich context for all parameters, which is already done well but not exhaustive for 'clueprint_id'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches clueprint data and uses a specific verb ('Fetch') along with the resource ('clueprint data'). It thoroughly distinguishes the various include modes, making it very clear what each call returns, which differentiates it from siblings like 'create_clueprint' or 'update_clueprint'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use each include mode, e.g., 'Call include="tree" first when exploring an unfamiliar clueprint' and 'use sparingly on large clueprints' for 'all'. It tells the agent exactly how to decide between modes, though it does not explicitly mention when not to use the tool, but the guidance is so clear that exclusions are implied. No alternative sibling tool is named for similar operations, but the tool itself covers many use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_guideGet design guideARead-onlyInspect
Clueso's house style for composing video clips — how to think about concept, typography, color, composition, motion, and pacing. Read it before composing or editing a clip's visuals when you're NOT following a clueprint, or to fill gaps a clueprint leaves silent. General craft, not clueprint-specific.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only behavior is covered. The description adds value by explaining that the tool provides 'general craft' guidance and describes what the guide covers (concept, typography, color, etc.), which gives the agent a clear expectation of the content. It's nearly perfect; a slight deduction because it doesn't explicitly state that the tool returns a textual guide or that no side effects occur, though these are implied by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, each earning its place: first states what it is, second gives usage conditions, third clarifies scope. No redundancy, no filler. It's perfectly sized for the task.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, clear annotations, and a simple retrieval purpose, the description fully covers what an agent needs: what the tool does, when to use it, and what content it covers. The sibling tool list is long and varied, so the clear usage guidance is essential for disambiguation. The description is complete and leaves no obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters with 100% coverage, so the baseline is 3. The description adds value by implicitly explaining the scope of the returned content (the 'house style' covering specific design aspects), which helps the agent understand what to expect even though no parameters are needed. The score is elevated because the description compensates for the lack of parameter context by detailing the content domains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'Clueso's house style for composing video clips' and specifies the domains it covers ('concept, typography, color, composition, motion, and pacing'). It also distinguishes itself from other tools by clarifying it's for general craft guidance, not clueprint-specific, which helps differentiate from potentially sibling tools that might offer template-specific advice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool ('before composing or editing a clip's visuals when you're NOT following a clueprint, or to fill gaps a clueprint leaves silent'). This provides precise usage context, including both primary use case and a secondary fallback scenario, which effectively guides the agent's decision among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_element_schemaGet element schemaARead-onlyInspect
Return the JSON schema for an element type's type_data. Call this before add_elements / update_elements when you don't already know the field shape for the element_type you're placing.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 'add' returns required + optional fields; 'update' returns all-optional. | add |
| element_type | Yes | One of: text, callout, rectangle, arrow, blur, spotlight, zoom, image, video, animation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's safety profile is covered. The description adds that it returns 'the JSON schema for an element type's type_data', which is useful behavioral context. However, it doesn't disclose details like response format, error behavior, or rate limits, which are not critical for a simple read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, both front-loaded with the primary action. Every sentence earns its place: the first states the purpose, the second provides usage guidance. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters, no output schema, and no nested objects, the description is fully adequate. It explains the return value (JSON schema), the use case, and the relationship to sibling tools. An agent can confidently select and invoke this tool without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters fully described with enums and descriptions in the input schema). The description does not add additional meaning beyond what the schema provides. Baseline 3 is appropriate; the description does not need to compensate for missing schema info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a JSON schema for an element type's type_data, with a specific verb ('Return') and resource ('JSON schema for element type's type_data'). It explicitly distinguishes from sibling tools 'add_elements' and 'update_elements' by positioning itself as a prerequisite call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call this before add_elements / update_elements when you don't already know the field shape', providing clear context for when to use. It doesn't explicitly state when not to use (e.g., when schema is known) or list alternative tools, but the guidance is sufficient for most agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectGet project dataARead-onlyInspect
Get a summary of a project: canvas dimensions, per-clip summary (ids, indices, durations, element counts, voiceover_volume), and audio_tracks — every music/SFX entry on the project flattened to the same wire shape add_audio accepts (id, src, name, source_duration, guide_start_time/end_time, music_start_time/end_time, volume, loop, fade_in, fade_out). To copy an audio track to another project: read it from audio_tracks here and feed the same fields to add_audio on the target project. Call this to understand what's in the project before making changes.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description thoroughly discloses the output structure beyond what annotations provide: it lists canvas dimensions, per-clip summary fields (ids, indices, durations, element counts, voiceover_volume), and audio_tracks (with a detailed field list matching the add_audio shape). Since annotations already declare readOnlyHint=true and destructiveHint=false, the description adds rich behavioral context about the data format, which is critical given the absence of an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph of moderate length, front-loaded with the primary purpose. Every sentence adds value: the first sentence states the purpose, the second lists contents, and the third gives a usage example. It is clear and efficient, though slightly dense; breaking into bullet points could enhance readability, but it remains well-structured for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description provides a comprehensive view of the return values (canvas, per-clip summary, audio_tracks with detailed fields). It also explains the relationship between audio_tracks and the add_audio input shape, which is essential for cross-project workflows. For a one-parameter read-only tool, this description is complete and leaves no ambiguity about what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a basic description for the single parameter 'project_id' ('The project ID'). The description does not add any additional semantic information about the parameter (e.g., format, constraints, or how to obtain it). With high schema coverage, the baseline is 3, and no extra value is provided by the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get a summary of a project' and enumerates the specific contents (canvas dimensions, per-clip summary, audio_tracks). This provides a precise verb+resource combination, and the detail distinguishes it from sibling get tools (e.g., get_clip, get_article) by specifying the project-level scope and the exact data returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises when to call this tool: 'Call this to understand what's in the project before making changes.' It also provides a concrete workflow example for copying audio tracks to another project using add_audio. This gives clear context and implicit alternatives (e.g., use mutation tools after reading), meeting the criteria for explicit when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_screenRecord screenAInspect
Create a screen-recording clip in a project. Creates blank placeholder clips, registers job entities, and sends the job to AVS.
The blank clips this tool creates are placeholders; they become video clips when processing completes, so removing one loses that scene. Article placeholders are also inserted automatically into plainDoc.
Requires the Auto-Recording add-on and per-workspace sign-in credentials for the product being recorded. Workspaces without it get back the manual path instead (upload_file, then add_clips(kind='video')) rather than a failure.
| Name | Required | Description | Default |
|---|---|---|---|
| scenes | Yes | REQUIRED — the recording to make, as a list of scenes. This is the ONLY way to specify what to record. A normal single recording is exactly ONE scene; a code-wizard multi-scene / marketing video is N scenes (one clip per scene, and ALL cuts of one video go in a SINGLE record_screen call). A narrated scene REQUIRES a non-empty narration_script; a b-roll scene is silent (no narration, no article). A cut that starts somewhere disconnected is just a scene with entry.mode "fresh". Cleopatra orgs accept exactly ONE narrated scene. Do not set scene_id — it is assigned server-side. | |
| chat_id | Yes | Conversation context ID | |
| guide_id | Yes | Target guide ID | |
| language | No | Language code for the recording (default: en) | en |
| edit_scene_ids | No | The clip id(s) this edit replaces. Only used when recording_session_id is set; scenes you do not name are not re-filmed. Set preceding_clip_id to the clip you are replacing — an edit naming a clip that is not in the guide is refused rather than appended to the end. | |
| video_intention | No | One-line intent shared across all scenes of a multi-scene recording (e.g. "punchy 30s launch teaser for feature X"). Ignored for single-scene recordings. | |
| preceding_clip_id | Yes | Clip ID after which to insert the new clip | |
| exact_video_script | No | Set to true when the video narration must be used exactly as written — the agent that does the recording will not reword, rephrase, or rewrite video_script at all. Default false. | |
| custom_instructions | No | Optional per-recording instructions (e.g. "select project X", "add rectangle 200x100"). Not related to mocking. | |
| exact_article_script | No | Set to true when the article must be used exactly as written — the agent that does the recording will not reword, rephrase, or rewrite article_script at all. Default false. | |
| recording_session_id | No | EDIT an existing recording instead of shooting a new one. Pass the recording_session_id from the record_screen that made it, or read it off get_clip. The recorder restores that take's code, notes and click script and changes only what you ask for, which is far faster and cheaper than re-recording. Omit for a fresh recording. Only code-wizard recordings are editable; get_clip omits the field for any clip that is not. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral detail beyond the annotations: clips are placeholders that become video only after processing, deleting one loses that scene, article placeholders are inserted into plainDoc, and jobs are sent to AVS. There is no contradiction with the readOnlyHint=false or destructiveHint=false annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core action appears first, followed by placeholder semantics, prerequisites, and fallback behavior. Each sentence provides distinct information without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex asynchronous tool with no output schema, the description covers the core action, side effects, prerequisites, and alternative path well. The main gap is that it never states the return value or response shape, though the recording_session_id parameter and AVS references indirectly signal async behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% parameter coverage with rich explanations, so the description is not required to repeat parameter details. It does not add parameter-specific meaning, but no extra compensation is needed given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise action: 'Create a screen-recording clip in a project,' and further clarifies the pipeline by mentioning blank placeholder clips, job entities, and AVS submission. It also distinguishes itself from the manual path (upload_file, then add_clips) so an agent can tell it apart from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: it requires the Auto-Recording add-on and per-workspace credentials, and clearly names the fallback for workspaces without it: 'upload_file, then add_clips(kind='video')'. This is a concrete decision rule rather than an implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_clipRemove clipADestructiveInspect
Remove a clip from the project by index. Cannot remove the last remaining clip.
After removal, all clips with index > clip_index shift down by 1. When removing multiple clips by index, remove from highest index to lowest (or capture clip_ids first and re-derive indices between calls). Concurrency: whole-project mutation (conflict domain: the entire project) — serialize. Do not run it in parallel with ANY other mutation on the same project_id, including element/voiceover edits; run them one at a time. (Mutations to different projects run in parallel freely.)
| Name | Required | Description | Default |
|---|---|---|---|
| clip_index | Yes | Zero-based clip index to remove | |
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true), the description reveals the index shift behavior, the restriction on removing the last clip, and the full concurrency conflict domain. This adds significant value and does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three well-structured sentences: core purpose, index shift and multi-removal guidance, then concurrency warning. Every sentence adds unique information with no redundancy. Front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the effect (removal and shift), constraints (last clip), and concurrency. No output schema exists, but the description explains the behavior sufficiently. Lacks explicit error conditions (e.g., out-of-bounds index), but overall adequate for a straightforward removal tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The description adds value by explaining the effect of clip_index (shifts down by 1) and the implication for multiple removals, which goes beyond the schema's 'Zero-based clip index to remove.' This is useful behavioral context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Remove a clip from the project by index' with a specific constraint 'Cannot remove the last remaining clip.' This distinguishes it from sibling tools like 'remove_elements' (which removes elements, not clips) and other project-level mutations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: the last clip cannot be removed, and for multiple removals it advises 'remove from highest index to lowest' or capture IDs. Also gives clear concurrency instructions: serialize all mutations on the same project_id, do not run in parallel with any other mutation on the same project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_elementsRemove elements from clipsADestructiveInspect
Remove many elements across one or more clips in a single tool call. One entry per element ({clip_index, element_id}).
Concurrency: parallel-safe (conflict domain: the individual element) — same as add_elements/update_elements. Each removal is a granular element_remove patch merged under a per-guide lock, and the whole batch lands in ONE save. Fan out across subagents freely; two edits to the SAME element id serialize. Do NOT run concurrently with whole-clip/whole-project mutations on the same guide (update_clips on that clip, structural clip ops, add_audio, update_project). To remove an audio track (not an element), use remove_from_project(target='audio').
| Name | Required | Description | Default |
|---|---|---|---|
| removals | Yes | Elements to remove — at least one entry. | |
| project_id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true. The description adds significant behavioral context: conflict domain is individual element, batch lands in one save, per-guide lock, and explicit concurrency constraints with whole-clip mutations. This goes well beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two distinct paragraphs: purpose then concurrency/alternatives. Every sentence adds unique value. No redundant or verbose phrases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters, no output schema, and concurrency considerations, the description covers purpose, parameter structure, behavioral details, concurrency rules, and alternative tools. It is fully sufficient for an agent to use correctly, despite not describing return values explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description restates the structure of removals entries but adds no new meaning beyond the schema. Baseline 3 is appropriate as the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Remove many elements across one or more clips' with specific verb and resource. It distinguishes from siblings like remove_clip (whole clip) and remove_from_project (audio tracks) by explicitly mentioning the alternative for audio removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use (removing elements), concurrency advice (parallel-safe for different elements, avoid whole-clip/whole-project mutations), and a clear alternative: 'To remove an audio track, use remove_from_project(target='audio')'. This fully covers usage context and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_projectRemove element or audio trackADestructiveInspect
Remove an element or audio track from a project.
target="element": removes an element from a clip (requires clip_index + element_id)
target="audio": removes a music/SFX track (requires music_id — returned by add_audio)
Concurrency: target='element' is element-scoped (conflict domain: the individual element) — parallel-safe with other element edits on different elements, same as remove_elements. target='audio' is a whole-project mutation — serialize it against any other mutation on the same project_id. (Mutations to different projects run in parallel freely.)
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | What to remove: 'element' or 'audio' | |
| music_id | No | Music/SFX track ID to remove (required for target='audio') | |
| clip_index | No | Zero-based clip index (required for target='element') | |
| element_id | No | Element ID to remove (required for target='element') | |
| project_id | Yes | The project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true and readOnlyHint=false, so the mutation nature is clear. The description adds valuable concurrency details (element-scoped vs whole-project mutation) and references the music_id source ('returned by add_audio'). While it doesn't discuss reversibility or error states, the concurrency guidance is a meaningful addition beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a brief introductory sentence followed by a bulleted list for target modes and a separate concurrency section. It is concise at ~100 words and front-loads the core purpose. The only minor issue is that the concurrency section could be slightly more compact, but overall it earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (two modes, conditional parameters) and no output schema, the description covers the essential use cases, parameter dependencies, and concurrency behavior. It could be improved by noting what happens on success (e.g., returns confirmation or updated project state) and error conditions (e.g., invalid element_id), but it is largely complete for an AI agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by clarifying the target-dependent parameter requirements (e.g., 'requires music_id — returned by add_audio') and explaining the relationship between target and conditional parameters, but the schema already describes each parameter's purpose adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool removes an element or audio track from a project, specifying two distinct targets ('element' and 'audio') with their required parameters. This distinguishes it from sibling tools like 'remove_clip' (which removes entire clips) and 'remove_elements' (which likely removes multiple elements at once).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use each target mode ('target=element' vs 'target=audio'), including the required parameters for each (clip_index+element_id vs music_id). It also provides concurrency guidance, telling the agent to serialize 'target=audio' mutations on the same project while noting element-scoped operations are parallel-safe with other element edits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorder_elementsReorder elements within a clipAInspect
Reorder the elements inside a clip. List position IS the z-index — later entries in ordered_element_ids render on top of earlier ones.
You MUST pass the full set of element IDs currently in the clip. The handler rejects partial lists so a reorder can never silently drop an element. Get the current list via get_clip.
| Name | Required | Description | Default |
|---|---|---|---|
| clip_index | Yes | Zero-based clip index. | |
| project_id | Yes | Project ID. | |
| ordered_element_ids | Yes | All element IDs currently in the clip, in the new order. Position N = z-index N (later = on top). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, which is consistent with the mutating nature of reordering. The description adds valuable context: the handler rejects partial lists to prevent silent drops, and explains the z-index behavior. No additional behavioral traits (e.g., permissions, reversibility) are mentioned, but the core safety behavior is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only three sentences, all essential. It starts with the action, then explains the ordering, and ends with the critical usage constraint. No redundant or unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the purpose, constraint, and prerequisite (get_clip). However, it does not mention the return value or any confirmation of success. Since there is no output schema, the agent would benefit from knowing what to expect after a successful reorder.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each parameter. The description adds the critical constraint that the handler rejects partial lists, which is not in the schema. This provides meaningful guidance beyond the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Reorder' and the resource 'elements inside a clip', and explains the z-index ordering semantics. It distinguishes itself from sibling tools like add_elements and remove_elements by focusing exclusively on reordering existing elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs the agent to pass the full set of element IDs and warns that partial lists are rejected. It also directs the agent to get the current list via get_clip, providing a clear prerequisite. However, it does not explicitly state when not to use this tool or list alternative tools beyond get_clip.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_voiceSet voiceAInspect
Set the voiceover voice for every clip in a project.
Use this to apply a clueprint's voice (read voiceover.voice.name and voiceover.voice.engine from the clueprint source data), or to switch all clips to a specific voice in one call. The voice is looked up by name + engine; lookup is case-insensitive on the name.
Common engines: 'eleven' (ElevenLabs), 'cartesia', 'google'.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project (guide) ID | |
| voice_name | Yes | Voice name as stored in the voices table (e.g. 'Alex', 'Sofia') | |
| voice_engine | Yes | Voice engine — 'eleven', 'cartesia', 'google', etc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already show destructiveHint=false and readOnlyHint=false, so the agent knows it is a mutation that is not destructive. The description adds that it affects every clip, is case-insensitive on name, and lists common engines, which provides useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three short sentences, each serving a distinct purpose: stating the action, providing usage context, and listing examples. There is no wasted text, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 required parameters, no output schema), the description is mostly complete. It could briefly mention the return value or confirmation behavior, but the context signals indicate low complexity, so the description suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for each parameter. The description adds value by clarifying that voice_name lookup is case-insensitive and by listing common engine examples, but these are enhancements rather than necessities since the schema already documents the parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sets the voiceover voice for every clip in a project. It distinguishes between applying a clueprint's voice and switching all clips to a specific voice, differentiating it from sibling tools like voiceover_batch or update_clips.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases: applying a clueprint's voice or switching all clips to a specific voice. It gives guidance on how to read voice data from clueprints, but does not explicitly state when not to use it (e.g., for individual clip voice changes) compared to alternatives like update_clips.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_clipSplit clipAInspect
Split a video clip into two clips at the given timestamp. The left clip keeps the original clip ID; the right clip gets a new ID and is inserted immediately after. Elements spanning the split point are duplicated into both clips with adjusted timing. Voiceover transcript and transcribed words are split proportionally.
Concurrency: whole-project mutation (conflict domain: the entire project) — serialize. Do not run it in parallel with ANY other mutation on the same project_id, including element/voiceover edits; run them one at a time. (Mutations to different projects run in parallel freely.)
| Name | Required | Description | Default |
|---|---|---|---|
| clip_index | Yes | Index of the clip to split | |
| project_id | Yes | The project ID | |
| split_time | Yes | Time in seconds within the clip where to split (clip-relative, not timeline-relative). Must be > 0.1s and < clip_duration − 0.1s; values outside this range are rejected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations (which only indicate mutation and non-destructiveness) by detailing key behaviors: ID assignment for left/right clips, element duplication across the split point, proportional voiceover splitting, and runtime validation of split_time. This fully compensates for the lack of annotation depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is remarkably efficient: the first paragraph covers all core functionality, and the second paragraph provides essential concurrency constraints. No redundant sentences or filler words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (affecting clips, elements, transcripts) and the absence of an output schema, the description is complete. It covers validation, side effects, ID behavior, and concurrency. An agent receives sufficient information to execute the tool correctly without needing external context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds significant value by explaining that split_time is clip-relative and by specifying the rejection range (>0.1s and < clip_duration-0.1s). It also elaborates on the ID and element effects, which the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair ('Split a video clip') and details the behavioral outcome (IDs, element duplication, voiceover splitting). It clearly distinguishes from sibling tools like 'duplicate_clip' and 'remove_clip' by specifying the split mechanics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the tool's purpose and provides concurrency guidance ('Do not run it in parallel with ANY other mutation'). While it doesn't name alternative tools for non-split operations, the context of splitting is unambiguous and the serialization advice is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_workspaceSwitch active workspaceAInspect
Switch the active workspace for this session. Use find(type='workspaces') to see available options.
| Name | Required | Description | Default |
|---|---|---|---|
| workspaceId | Yes | Workspace ID to switch to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is non-destructive and not read-only. The description adds that the switch is for the session, which is useful context. However, it does not disclose potential side effects, authorization needs, or error handling beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The first sentence states the purpose, and the second provides actionable guidance. Well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is mostly complete. It could mention the return value (e.g., confirmation or workspace object) but is sufficient for an agent to understand usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with a clear description for the workspaceId parameter. The description does not add significant meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Switch the active workspace for this session.' It uses a specific verb and resource, and it is distinct from sibling tools like 'find' and 'create_project'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description guides the agent to use 'find(type='workspaces')' to list available workspace IDs, which is helpful. However, it does not explicitly state when not to use this tool or contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_articleUpdate articleAInspect
Update article text content from markdown. Use <SCREENSHOT {id}> placeholders to position screenshots. Screenshots in the markdown are kept. Screenshots removed from markdown are deleted. Order in markdown defines final order. Get the current article first with get_article, modify the markdown, then call this.
| Name | Required | Description | Default |
|---|---|---|---|
| markdown | Yes | Updated article content as markdown with <SCREENSHOT {id}> placeholders | |
| project_id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behaviors: screenshots kept in markdown are retained, those removed are deleted, and order in markdown defines final order. The annotations already indicate mutability (readOnlyHint: false) and no destruction (destructiveHint: false), so the description adds valuable context beyond just 'update'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with no wasted words. All four sentences provide essential information: purpose, screenshot placeholder syntax, screenshot lifecycle, and the recommended workflow. Information is front-loaded well.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's lack of output schema and moderate complexity (2 params, one with placeholder syntax), the description covers the core function and screenshot behavior. It could mention what happens if markdown is invalid or provide example usage, but it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters described), so baseline is 3. The description adds meaning by explaining the markdown parameter includes <SCREENSHOT {id}> placeholders and their behavior, which goes beyond the schema's generic description. This extra context justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates article text content from markdown and describes the use of <SCREENSHOT {id}> placeholders. It lacks explicit differentiation from siblings like add_article_media or update_article_media, but the purpose is specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear workflow: get the article first, modify the markdown, then call this. It does not explicitly specify when not to use this tool versus alternatives, but the workflow guidance is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_article_mediaUpdate or inspect article mediaAInspect
Update an article image/GIF (screenshot), or inspect its current state.
Provide one or more of
zoom_factor,crop,shapesto change metadata.Pass
render=true(with no other updates) to fetch the current details without mutating.
To DELETE an article image/GIF: call update_article with markdown that omits the <SCREENSHOT id> reference. Unreferenced media is pruned server-side on save. There is no separate delete tool — the markdown IS the source of truth for what's present.
| Name | Required | Description | Default |
|---|---|---|---|
| crop | No | Crop data: { position: [x,y], size: [w,h] } in fractional coords. | |
| render | No | If true (and no other updates supplied), returns current details and a PNG preview without mutating. | |
| shapes | No | Array of shape objects for annotations. | |
| project_id | Yes | Project ID. | |
| zoom_factor | No | Zoom magnification (1.0 = no zoom). | |
| screenshot_id | Yes | Screenshot ID (from get_article). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that render=true is read-only, and that deletions are handled by a sibling tool via markdown. It explains the server-side pruning behavior. Annotations declare readOnlyHint=false and destructiveHint=false, which are consistent. The description adds valuable context beyond annotations, such as the deletion workflow and the tool's non-destructive update nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short, well-structured paragraphs. Each sentence serves a purpose: first states purpose, second gives usage bullets, third explains deletion via sibling. No fluff or repetition. Information is front-loaded and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and complex parameters (nested objects), the description covers most scenarios: update, inspect, and how to delete (via sibling). It mentions that render=true returns 'current details and a PNG preview', but does not specify what happens upon update (return value). Slightly incomplete for the update path, but overall well-rounded.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, providing baseline of 3. The description adds guidance on how parameters interact: 'Provide one or more of zoom_factor, crop, shapes to change metadata' and 'Pass render=true (with no other updates) to fetch current details.' This clarifies usage patterns beyond the schema, earning a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update an article image/GIF (screenshot), or inspect its current state.' It specifies the resource (article media) and actions (update metadata, inspect state). It distinguishes from sibling tools like add_article_media and update_article by explicitly stating the deletion mechanism via update_article.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: use render=true for inspection without mutation; provide one or more of zoom_factor, crop, shapes for updates. It directly tells the agent when NOT to use this tool (for deletion) and names the alternative (update_article). This is exemplary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_audioUpdate an existing audio trackAInspect
Mutate fields on an existing music/SFX track by id. Read existing tracks via get_project.audio_tracks — the per-entry shape there matches this tool's args, so you can flip a knob (volume, fades, timing, loop) and write it back without losing the track's id.
Only fields you pass are changed; omitted fields are preserved. To delete a track entirely, use remove_from_project(target='audio') instead.
| Name | Required | Description | Default |
|---|---|---|---|
| loop | No | Whether the track loops | |
| volume | No | New playback volume 0-100 | |
| fade_in | No | Fade-in duration (seconds) | |
| fade_out | No | Fade-out duration (seconds) | |
| music_id | Yes | ID of the audio track (from get_project.audio_tracks[].id) | |
| project_id | Yes | The project ID | |
| guide_end_time | No | New end time on the project timeline (seconds) | |
| music_end_time | No | New end offset within the source file (seconds) | |
| guide_start_time | No | New start time on the project timeline (seconds) | |
| music_start_time | No | New start offset within the source file (seconds) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (mutation) and destructiveHint=false (no destruction). The description adds the partial-update behavior ('Only fields you pass are changed; omitted fields are preserved'), which is useful. However, it does not discuss side effects, idempotency, or permission requirements, so it adds moderate but not deep behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two short paragraphs. The first sentence immediately states purpose. The rest efficiently explains how to get the id, the partial-update nature, and the deletion alternative. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 parameters, no output schema, and no nested objects, the description covers essential context: how to obtain the id (via get_project), that updates are partial, and the alternative for deletion. It does not explain error handling or validation, but for a mutable tool with good sibling references and schema, it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – all 10 parameters have individual descriptions in the input schema. The description lists a few examples (volume, fades, timing, loop) but adds no new semantic meaning beyond what the schema already provides. The baseline of 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Mutate fields on an existing music/SFX track by id.' It uses a specific verb ('mutate') and resource ('audio track'), and the mention of flipping knobs like volume, fades, timing, loop distinguishes it from sibling tools like add_audio (adding new tracks) and remove_from_project (deleting tracks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: read existing tracks via get_project.audio_tracks to get the id and current shape, then use this tool to update specific fields. It also clearly directs to use remove_from_project(target='audio') for deletion, a key alternative. It does not explicitly mention when to use add_audio instead, but the context is strong enough for an agent to differentiate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_clipsUpdate clips (batch)ADestructiveInspect
Update one or more clips in a single call — background, transition, duration, title, visibility, position, and (video clips) the footage transform via video_styling. Always batch.
Each entry: { clip_index, duration?, title?, background_color? | background?, transition?, hidden?, position?, voiceover_volume?, video_styling? }
voiceover_volume: 0-100. This is how you make a clip SILENT — set 0 to mute the narration while keeping the text and its word timings. get_clip and get_project report the current value, so read it before muting to restore it later. There is no "delete voiceover" tool; muting is the supported way.
background_color: hex (keeps the existing pattern/image, changes color). background: full object from find(type='backgrounds') — replaces the whole background.
transition: { type, duration, direction?, color? }, or null to remove. Set on the OUTGOING clip — the transition plays at the END of clip_index, into the next clip. Types: circleWipe, rainbowWipe, cornerWipe, stack, colorWipe, dissolve, pushPull, fadeToColor. Directions: rainbowWipe/cornerWipe take topLeft|topRight|bottomLeft|bottomRight; colorWipe left|right; stack/pushPull left|right|top|bottom.
position: move the clip to a new zero-based index. Moves apply FIRST (in array order), then property patches — keep reorders in a separate call from property edits so indices stay predictable.
video_styling (VIDEO CLIPS ONLY — ignored on slide clips): reposition/resize the clip's recording on the canvas, e.g. into a designed window slot. { position?: [cx, cy], size?: [w, h] } as canvas fractions 0–1 ([1,1] = full-bleed, position is the footage CENTER), plus crop? and border?. Fields merge onto the clip's existing video_styling.
Concurrency: parallel-safe per clip — all property updates land in ONE save. Safe to fan out across DIFFERENT clips. Do NOT run concurrently with element/voiceover edits on the SAME clip, or whole-project mutations (add_clips, add_audio, update_project). When adding audio + resizing clips, run update_clips BEFORE add_audio.
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | One entry per clip to update. | |
| project_id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the destructiveHint annotation. It explains that all property updates land in one save, position moves apply first before property patches, video_styling is for video clips only, and voiceover_volume=0 mutes narration without deleting it. No contradiction with annotations (destructiveHint: true is consistent with mutation).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bulleted sections for each parameter. It is lengthy but every sentence earns its place given the complexity of the tool. The front-loading of the purpose and '[Always batch]' immediately orients the reader. Slightly verbose in explaining transition directions, but that is relevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all parameters, provides edge-case handling (voiceover mute, background vs background_color), concurrency constraints, and ordering dependencies. With no output schema, the description adequately fills any gaps about what the tool does (it updates and presumably returns the project or success). The complexity of the input schema (nested objects for transition, video_styling) is thoroughly explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema coverage, the description adds substantial value beyond the schema. For transition, it clarifies that transitions play at the END of the clip. For position, it explains move ordering and recommends separate calls. For voiceover_volume, it details the mute behavior and restoration. For background_color vs background, it distinguishes between color change and full replacement. This significantly aids correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates one or more clips in a single call and enumerates all updatable fields (background, transition, duration, title, visibility, position, voiceover_volume, video_styling). It distinguishes itself from sibling tools like remove_clip or add_clips by emphasizing batch operation and specific property scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Always batch' suggests using this tool even for single clip updates. It includes concurrency rules ('parallel-safe per clip', 'do NOT run concurrently with element/voiceover edits on the SAME clip or whole-project mutations') and ordering advice ('run update_clips BEFORE add_audio when adding audio + resizing clips'). This is exceptional guidance for selecting this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_clueprintUpdate clueprintADestructiveInspect
Update a clueprint's metadata and/or file contents in one call.
Metadata fields (name, description, tags, visibility, thumbnail_path) are applied as a patch — only the fields you pass change. Pass at least one to update metadata.
files is a list of file mutations:
Write text:
{ path, content }Write binary:
{ path, content, encoding: "base64" }Write from URL:
{ path, source_url }(presigned URL, e.g. from get_clip with save=true)Delete:
{ path, content: null }
You can mix writes and deletes in a single call. Existing files at the same path are overwritten.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name. | |
| tags | No | New tags (replaces existing). | |
| files | No | File mutations — writes and deletes. Empty/omitted for metadata-only updates. | |
| visibility | No | New visibility. | |
| description | No | New description. | |
| clueprint_id | Yes | ID of the clueprint to update. | |
| thumbnail_path | No | Relative path of a screenshot in the clueprint to use as thumbnail (e.g. 'screenshots/title-slide.png'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and the description confirms destructive behavior by explaining file overwrites and deletions. It adds valuable behavioral context (patch semantics for metadata, file mutation types) beyond the annotations. Slightly missing details on reversibility but sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using bullet points for file mutations and clear sentences for metadata patch behavior. Every sentence adds value, and the structure front-loads the main purpose while organizing details logically. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description comprehensively covers input semantics and behavioral expectations for a mutation tool. It lacks explicit output/return value information, but given no output schema and the tool's nature (update idempotency), the agent can infer success from errors. Minor gap for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema coverage, the description adds significant value by grouping parameters (metadata vs files), explaining file mutation patterns with concrete examples (write text, binary, from URL, delete), and clarifying the use of 'content: null' for deletion. This is a substantial improvement over the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Update a clueprint's metadata and/or file contents in one call', using a specific verb and resource. It distinguishes itself from siblings like 'create_clueprint' and 'get_clueprint' by detailing the combined metadata patch and file mutation operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use the tool (e.g., metadata patch, file writes, deletes) and how to use different file mutation formats (inline, base64, URL). It lacks explicit mention of when not to use it or alternative tools for specific scenarios, but the context is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_elementsUpdate elementsADestructiveInspect
Update many elements across one or more clips in a single tool call. Replaces the per-element tool — always batch.
Each item can update position/timing fields alone, or type-specific fields via type_data (use get_element_schema in 'update' mode to see what's settable for an element_type). Items within one call are applied in order; partial success is fine.
Grouping: pass group: "<name>" to move an element into a named group (created on demand), or group: "" to pull it back out to the clip root. Several items sharing a name collect into one group — the way to tidy loose elements into units the user can move or hide together. Grouping never changes coordinates. It does affect z-order: a group's members render contiguously at the group's slot, and a NEW group takes the slot of its first member, so grouping already-adjacent elements keeps their z-position while grouping scattered ones pulls them together at the lowest member's slot.
Customising a component: after add_elements(component_id=...), set its content here with type_data.parameter_values on the animation element it returned.
Concurrency: parallel-safe (conflict domain: the individual element), same as add_elements — fan out across subagents freely; the server merges per-element under a per-guide lock. Two edits to the same element id serialize. Do NOT run concurrently with whole-clip/whole-project mutations on the same guide (update_clips on that clip, structural clip ops, add_audio, update_project).
Keyframes: pass a top-level keyframes array (sibling of x/y/type_data, NOT inside type_data) to set, or null to clear. Per-entry shape: { timestamp, positionX?, positionY?, width?, height?, interpolation? } in canvas pixels; positionX/Y use the element's alignment-aware origin.
Text elements: pass fit_to_lines: N to run an automatic widen + font-shrink pass after the entry's regular update lands. The server reshapes the element so the rendered text wraps to at most N lines without overlapping its neighbours.
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | Element updates — at least one entry. | |
| project_id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description extensively discloses behavioral traits beyond the destructiveHint annotation. It explains partial success, grouping effects on z-order and coordinates, concurrency safety with per-element locking, keyframe replacement behavior (only specified tracks replaced, null/empty clears all), and fit_to_lines automatic sizing. These details are not in the annotations and are critical for correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (batch, grouping, customizing, concurrency, keyframes, text elements) and front-loaded with the core purpose. It is longer due to necessary details, but every sentence adds value. Minor improvement could be tighter phrasing in some areas, but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple element types, grouping, keyframes, concurrency, text-specific features), the description covers most essential aspects. It explains partial success, return of component_id for save_as_component, concurrency constraints, and references get_element_schema for type_data. Missing: explicit specification of the response format or error handling, but the output schema is absent, so the description carries the burden well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% coverage with clear descriptions for each parameter. The description adds contextual meaning, such as the batch nature of updates, group semantics (new group takes first member's slot), keyframes placement (sibling of x/y, not inside type_data), and fit_to_lines behavior. This goes beyond the schema, though the schema itself is already strong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates many elements across clips in a single call, explicitly distinguishing it from a previous per-element tool and implying its batch nature. The verb 'update' and resource 'elements' are specific, and the contrast with sibling tools like add_elements and remove_elements is evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: it replaces the per-element tool (always batch), advises against concurrency with whole-clip/whole-project mutations on the same guide, and references get_element_schema for type_data fields. It also specifies when to use fit_to_lines for text elements. However, it does not explicitly compare to alternative update tools (e.g., reorder_elements) beyond the batch nature, which keeps it from a top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectUpdate projectAInspect
Update a project's metadata: rename, change description, move to a different folder, or change aspect ratio.
Only fields you provide are changed. To move a project to the workspace root, pass folder_id="" (empty string).
Aspect ratio: pass any "W:H" (positive integers). The canvas is fit inside 1920×1080 keeping the ratio, so element pixel coordinates use the resulting canvas. Common values:
"16:9" → 1920×1080 (landscape, YouTube/web — default)
"9:16" → 608×1080 (portrait — TikTok/Reels/Shorts)
"1:1" → 1080×1080 (square — Instagram feed)
"3:4" → 810×1080 (portrait card)
"4:5" → 864×1080 (portrait — Instagram feed)
Element coordinates are stored as fractions of the canvas, so existing elements reflow to the new canvas automatically — no element coordinates are rewritten.
Concurrency: whole-project mutation (conflict domain: the entire project) — serialize. Do not run it in parallel with ANY other mutation on the same project_id, including element/voiceover edits; run them one at a time. (Mutations to different projects run in parallel freely.)
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New project title | |
| folder_id | No | New folder ID. Pass '' (empty string) to move to workspace root. | |
| project_id | Yes | The project ID to update | |
| description | No | New description | |
| aspect_ratio | No | New aspect ratio as 'W:H' (positive integers). Common: '16:9' landscape, '9:16'/'4:5'/'3:4' portrait, '1:1' square. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Disclosed beyond annotations: partial update (only provided fields change), aspect ratio conversion to canvas (1920×1080 fit), element coordinates reflow automatically, and whole-project mutation conflict domain. Annotations only provide readOnlyHint=false and destructiveHint=false, so description adds critical behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with a summary sentence followed by parameter details and behavioral notes. Not overly verbose, though the aspect ratio examples could be shortened. Still efficiently communicates essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers expected behavior comprehensively: partial update, parameter semantics, effect on canvas and coordinates, concurrency constraints. No missing information for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value: explains aspect ratio format with common examples and canvas sizing, clarifies folder_id empty string for root, and notes element coordinates are fractions that reflow. Slightly redundant with schema but enriches understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update a project's metadata' and lists specific operations (rename, change description, move to folder, change aspect ratio). It distinguishes from sibling tools like create_project, duplicate_project, and get_project by focusing on modifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs when to use: 'Only fields you provide are changed' and how to move to root with empty string. Provides concurrency rules: 'Do not run it in parallel with ANY other mutation on the same project_id' and allows parallel mutations on different projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileUpload fileAInspect
Upload one or more files to Clueso. Three modes — pick by client + where the file lives:
file_name — HOSTED upload, the default for any non-UI / programmatic upload (Claude Code, Cursor, Claude Desktop, scripts). Returns an upload URL on Clueso's OWN base domain + a ready-to-run curl that streams a single local file to it; Clueso relays the bytes to storage server-side. The PUT targets the base domain — NOT cloud storage directly — so it works on desktop/agent clients that can't reach or are blocked from S3. Requirement: the client must be able to PUT bytes to the Clueso base domain (run the returned curl, or any HTTP PUT). The agent (or the user at a shell prompt) runs the curl. Prefer this whenever there's no human at a browser.
file_url: Pass a public https URL. Server fetches and stages the file. Returns mcp_upload_id immediately. Use when the file is already on the open web — no user interaction needed.
request_hosted_upload (UI mode — use ONLY when a human should pick files in a browser: many files at once, or a host with no shell / no PUT capability): Returns a single upload_token + upload_page URL. Share the link with the user; they open it in a new browser tab, drop their files, click Done. Then call check_uploads(upload_token) to retrieve all mcp_upload_ids. Call once for all files.
Hosted uploads cover any number of files per call: one call issues one upload_token, and that token covers every file the user drops on the page. Repeat calls issue additional tokens, each tracking only its own files.
The returned mcp_upload_id (prefixed mup_) can be passed to:
add_elements / update_elements (image or video → an element ON a clip: pass it as
type_data.mcp_upload_id, on either tool — this is how a local image becomes on-canvas content, and how an existing element's source is swapped). To fill an animation's image slot, pass it insidetype_data.parameter_valueson update_elements only — parameter_values is an update-path field and is stripped on add.add_audio (audio → project music track that plays under all clips)
add_clips(kind='video') (video or audio → sequential clip with auto-transcription)
add_clips(kind='pptx') (.ppt/.pptx → slide clips)
add_article_media (image/GIF → article asset)
analyze_audio (audio → transcript / silences / beats / features)
| Name | Required | Description | Default |
|---|---|---|---|
| file_url | No | Public URL to fetch the file from | |
| file_name | No | File name with extension. Returns a Clueso upload URL + curl command that streams this single local file to us (single file). | |
| file_names | No | List of file names the user will upload (for hosted mode). Shown on the upload page as guidance. | |
| request_hosted_upload | No | If true, returns a hosted upload page. Call once for all files — the page accepts multiple uploads under one token. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are readOnlyHint=false (write operation) and destructiveHint=false, which align with the description. The description goes far beyond annotations by detailing the upload flow: file_name returns a curl command that the agent/user must execute, the PUT targets the base domain (not cloud storage), and the hosted mode returns a token requiring a subsequent call to check_uploads. It also explains behavioral constraints like 'one call issues one upload_token' and that hosted uploads can handle multiple files. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a numbered list and bold headings for each mode. It is front-loaded with the three-mode summary. However, it is somewhat verbose—the final paragraph repeating how mcp_upload_id is used in other tools is partially redundant with the earlier usage guidance. Every sentence is valuable, but some consolidation could improve conciseness. Still, it is clear and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (three modes, 4 parameters, no output schema, many sibling tools), the description is remarkably complete. It covers the full upload flow, explains how to handle the returned identifiers, and integrates with downstream tools. It also addresses potential client limitations (e.g., desktop vs browser). The description leaves no significant gaps for an AI agent to misunderstand.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds significant value beyond the schema by explaining the three modes and how parameters interact (e.g., file_name vs file_names vs request_hosted_upload). It also clarifies the implications of each parameter (e.g., file_names is 'shown on the upload page as guidance'). The description enriches the agent's understanding of parameter semantics, justifying a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: uploading files to Clueso. It explicitly defines three distinct modes (file_name, file_url, request_hosted_upload), each with a specific use case and resource. The description also explains how the returned mcp_upload_id integrates with sibling tools like add_elements, add_audio, and add_clips, making the tool's role in the ecosystem unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use each mode. For file_name, it says 'Prefer this whenever there's no human at a browser.' For file_url, 'Use when the file is already on the open web.' For request_hosted_upload, 'use ONLY when a human should pick files in a browser.' It also explains when not to use the UI mode (no shell/no PUT capability) and directs to check_uploads afterward. This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
voiceover_batchSet voiceover scriptsADestructiveInspect
Set voiceover text and/or trigger speech generation for any number of clips in a single call.
Each entry chooses its own action:
"set_text" — set transcript for a clip (clip_index + text)
"generate_speech" — async TTS for a clip (clip_id; returns immediately)
"set_and_generate" — set text and kick off TTS in one entry (clip_index + clip_id + text)
Entries within one call are applied in order. Returns one result object per input entry. All text-set actions land in ONE save; the TTS for generate/set_and_generate runs async per clip after.
IMPORTANT — generating speech retimes the clip: when audio is generated (generate_speech / set_and_generate), the clip's duration is reset to the spoken audio length (auto-fit). Any element start/end times you authored against a planned duration then play against that new length, and element time past the audio end is cut. So size timings against the spoken length: estimate it up front with estimate_duration (or generate speech BEFORE placing time-sensitive elements), then read the clip back after generation to confirm its final duration.
Concurrency: parallel-safe (conflict domain: a clip's voiceover). The server merges each clip's voiceover under a per-guide lock and preserves that clip's elements, so you can fan voiceover work out across subagents by clip — and it's safe to run alongside element edits. Two edits to the SAME clip's voiceover serialize. Do NOT run concurrently with whole-clip/whole-project mutations on the same guide (update_clips on that clip, structural clip ops, add_audio, update_project).
| Name | Required | Description | Default |
|---|---|---|---|
| entries | Yes | Voiceover entries — at least one. | |
| project_id | Yes | Project ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true), the description reveals critical behavioral details: async TTS generation, one-save-batch behavior, retiming side effects that reset clip duration and cut elements, and concurrency conflict domain. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary, bulleted action list, an important warning block, and concurrency guidance. Every section earns its place given the tool's complexity. It is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (batch, three actions, async, side effects, concurrency), the description covers almost all aspects. Minor gap: the return value ('one result object per input entry') lacks detail on structure, but no output schema is provided. Still, the description is highly informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline is 3. The description adds value by explaining entry ordering, async nature of generate_speech, and the relationship between clip_index and clip_id across actions. It also clarifies the effect of set_and_generate combining both steps. This surpasses baseline but does not add structural details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Set voiceover text and/or trigger speech generation for any number of clips in a single call,' specifying the verb (set/trigger), resource (voiceover scripts for clips), and unique batch capability. It differentiates the three action types explicitly, distinguishing from any single-clip tools like set_voice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use each action, including ordering ('Entries within one call are applied in order'), concurrency rules ('parallel-safe' for different clips, serial for same clip), and explicit warnings about not running alongside whole-clip/project mutations. It also advises when to use estimate_duration or generate speech early to avoid timing issues.
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. Dates show when Glama detected each change.
1 tool update
- Changed
record_screen2 fields changed- added
Input schema / properties / edit_scene_idsAdded value: +{ + "description": "The clip id(s) this edit replaces. Only used when recording_session_id is set; scenes you do not name are not re-filmed. Set preceding_clip_id to the clip you are replacing — an edit naming a clip that is not in the guide is refused rather than appended to the end.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / recording_session_idAdded value: +{ + "description": "EDIT an existing recording instead of shooting a new one. Pass the recording_session_id from the record_screen that made it, or read it off get_clip. The recorder restores that take's code, notes and click script and changes only what you ask for, which is far faster and cheaper than re-recording. Omit for a fresh recording. Only code-wizard recordings are editable; get_clip omits the field for any clip that is not.", + "type": "string" +}
40 tool updates
- First observed
add_article_media - First observed
add_audio - First observed
add_clips - First observed
add_comment - First observed
add_elements - First observed
add_sync_point - First observed
analyze_audio - First observed
auto_sync - First observed
check_uploads - First observed
create_clueprint - First observed
create_project - First observed
duplicate_clip - First observed
duplicate_project - First observed
estimate_duration - First observed
export_project - First observed
find - First observed
generate_media - First observed
get_article - First observed
get_clip - First observed
get_clueprint - First observed
get_design_guide - First observed
get_element_schema - First observed
get_project - First observed
record_screen - First observed
remove_clip - First observed
remove_elements - First observed
remove_from_project - First observed
reorder_elements - First observed
set_voice - First observed
split_clip - First observed
switch_workspace - First observed
update_article - First observed
update_article_media - First observed
update_audio - First observed
update_clips - First observed
update_clueprint - First observed
update_elements - First observed
update_project - First observed
upload_file - First observed
voiceover_batch
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Agentic video editing on real footage: cut, caption, reframe, score, and export at full quality.
On-brand creative studio for AI agents: images, video, audio, and 3D.
AI workspace for you, your team, and every agent. Tables, docs (images, 4K video), formulas.
Generate AI videos from a prompt or document (PDF/PPTX/DOCX/URL) and export shareable MP4s.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceA creative agent that plans and executes across image, video, and audio. Uses 30+ tools, orchestrates 20+ AI models, and does agentic timeline editing.MIT- AlicenseNot gradedqualityAmaintenanceEnables AI agents to generate narrated videos from topics or scripts, with stock footage, home videos, or local AI clips.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to produce professional promo videos by providing tools for capture, media search, scene writing, rendering, editing, and incremental revision.165MIT
- AlicenseBqualityCmaintenanceEnables AI agents to edit videos locally by inspecting media, applying templates, cutting clips, and delivering finished files, with memory of human preferences.183Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Most tools have clearly distinct purposes, but there is notable overlap between remove_elements and remove_from_project(target='element'), which both remove elements from a clip. This duplication could cause an agent to misselect. Otherwise, tools like add_clips, add_elements, add_audio, and analyze_audio are well-differentiated.
All tools follow a consistent verb_noun pattern (e.g., add_clips, create_project, get_clip, update_elements). There are no camelCase or mixed conventions. Even compound names like voiceover_batch and auto_sync fit the pattern. This makes the tool set predictable for an agent.
With 40 tools, the set is significantly larger than the 3-15 range that typically earns its place. While the domain of video creation is broad, several tools seem redundant (remove_elements vs remove_from_project) or narrowly scoped (get_design_guide, get_element_schema), inflating the count. The number feels heavy for the apparent scope.
The tool surface covers most lifecycle operations: create, read, update, delete for projects, clips, elements, audio, articles, and clueprints. Minor gaps exist, such as no explicit tool to delete a voiceover (only mute via update_clips) and no folder management beyond listing. Overall, agents can accomplish full workflows with few workarounds.