AwesomeVideo
Server Details
Video for AI agents: captions in 28 styles, transcription, translation, dubbing, shorts. REST+MCP.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 52 tools
There are several overlapping paths: trim and remove_silences are explicitly the same operation, shorts and create_clips both extract highlight clips with reframe/captions, and caption_video, burn_captions, prepare_client_burn, preview, and style_preview overlap around caption rendering. The detailed descriptions help somewhat, but an agent can easily misselect between paid, free, preview, and client-render paths.
All names are snake_case and generally readable, but conventions are mixed: verb_noun names like create_upload, get_job, list_presets, and save_glossary sit alongside bare noun/action names like batch, plan, quote, preview, transcribe, translate, dub, trim, and shorts. Duplicate aliases such as trim/remove_silences and shorts/create_clips further weaken predictability.
At 52 tools this is well above the typical 3-15 range and above the 25+ heavy threshold. The platform is broad, but the count is inflated by overlapping aliases and many granular upload, preset, billing, and job tools, making the surface hard to discover and select from.
The surface is very complete for a video captioning/transcription suite: upload/import, transcribe/translate/dub, burn/render/preview, clips/shorts/trim, presets, glossary, reviews, jobs, metadata, and billing are all covered. Minor gaps remain, such as no explicit cancel-running-job or delete-uploaded-media tool, but most workflows can be completed or worked around.
Available Tools
52 toolsabort_uploadAbort multipart uploadBDestructiveIdempotentInspect
Free. Cancel an unfinished multipart upload and drop its parts.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description does add real value beyond them: 'drop its parts' discloses exactly what is destroyed, and 'Free' discloses cost behavior — a genuinely useful addition. But it omits what happens to the file record itself and any error behavior on an already-completed upload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The only structural quibble is that the cost note 'Free' is front-loaded ahead of the actual action, so the purpose verb arrives second, though the description remains trivially 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?
For a one-parameter destructive tool with annotations covering destruction and idempotency and no output schema, the description is minimally adequate. It would be complete enough if it said what fileId refers to and whether aborting a completed or unknown upload errors out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter, fileId, so the description must carry the burden — and it says nothing about it. It does not clarify whether fileId is an upload identifier, a file identifier, or where the agent obtains it. This is a real gap for the only input.
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 ('Cancel') on a specific resource ('an unfinished multipart upload'), which unambiguously separates it from create_multipart_upload and complete_upload in the sibling list. It stops short of naming those siblings explicitly, but the resource qualifier does the differentiation work.
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?
'Unfinished multipart upload' implies the precondition (an in-progress upload exists), and 'Free' hints that there is no billing consequence. However, there is no explicit statement of when to use this instead of complete_upload, nor what happens if the target upload is already finished or nonexistent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batchBatch jobsAIdempotentInspect
Quote and run up to 10 transcribe or burn items. dryRun returns the quote and does not debit. Otherwise the call refuses with 402 before any item starts when the balance cannot cover the total.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| dryRun | No | ||
| preset | No | ||
| operation | Yes | ||
| maxCredits | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by disclosing billing semantics (dryRun debits nothing) and atomic pre-flight failure: a 402 refuses 'before any item starts' when the balance cannot cover the total. That all-or-nothing guarantee is exactly the kind of behavior an agent can't get from readOnlyHint/destructiveHint alone. It doesn't address partial failure after start or what the success response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what the tool does, then the two conditional behaviors. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 5 parameters, the description covers the dryRun/billing contract but says nothing about what a successful batch returns (job IDs? per-item results?), what happens after the pre-flight check passes, or how preset/maxCredits interact with items. Adequate, not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema coverage is effectively 0%, so the description must compensate; it does explain dryRun's meaning and implies operation via 'transcribe or burn items'. But maxCredits and preset are never mentioned, and the per-item object shape is left entirely to nested schema 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?
States a specific verb and resource: 'Quote and run up to 10 transcribe or burn items', which pins down both scope (max 10) and the two operations. Sibling differentiation is implicit via the batching framing rather than naming transcribe or burn_captions directly, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the dryRun path ('returns the quote and does not debit') and the insufficient-balance case, which is real usage guidance. However, it never says when to prefer this over the single-item siblings (transcribe, burn_captions) or what maxCredits/preset overrides are for, leaving the selection decision largely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
burn_captionsBurn captionsAIdempotentInspect
Burn captions into video with native ffmpeg and an ASS script generated from an AwesomeVideo preset. This is the paid server path and costs more per audio minute than transcription. The container uses a fast x264 preset, scales to a moderate resolution, copies the original audio, and scales to zero after the job. Pass subtitles (SRT, VTT, or JSON) or a transcription job id, plus a preset id or name. A key that cannot pay gets 402 insufficient_balance with requiredCents and howToBuy. For a render that costs AwesomeVideo nothing, call prepare_client_burn instead and burn in the browser or a future WebMCP client. Pass platform (tiktok, instagram_reels, youtube_shorts, youtube, ...) when the user names where the video goes, e.g. "subtítulos para TikTok" → platform=tiktok: captions move inside that app's safe zone (style unchanged, same price) and the result includes safe_zone {platform, margins}, plus a warning if the video shape does not match (e.g. 16:9 for TikTok; use shorts to crop to 9:16).
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | No | ||
| preset | No | Preset id or name, or custom:cp_... for your own saved preset. Use presetId or presetName too. | |
| autoFit | No | Default true: caption size, words per caption (4 on 9:16, 5 on 1:1, 7 on 16:9), and a default safe zone follow the video shape, so text reads the same at 720p and 1080p and stays clear of app UI. Pass false only when the user wants the preset's exact fixed pixel sizes. Same price. | |
| combined | No | Also return SRT, VTT, and transcript JSON. Same burn price. | |
| mediaUrl | No | ||
| platform | No | Where the video will be posted: tiktok, instagram_reels, youtube_shorts, facebook_reels, snapchat_spotlight, linkedin, youtube, x (aliases like reels, instagram, shorts, snap, twitter; case-insensitive). Keeps captions out of that app's buttons and text. If the user says "para TikTok" / "for Reels", pass it; if they did not say and it matters, ask. Same price. Unknown values return 422 invalid_platform before any charge. See list_platforms. | |
| presetId | No | ||
| faceAvoid | No | true = move captions off faces (samples faces at 2 fps, same price; result.faceAvoid.faceLayout). Shortcut for styleOverrides.faceAvoid. | |
| subtitles | No | SRT, VTT, or JSON cues. | |
| maxCredits | No | ||
| presetName | No | ||
| webhookUrl | No | ||
| audioVisual | No | Audio-only input (mp3/m4a/wav...): render the web editor's audio export (visualizer + captions) on the server, same price as the burn. On a video input it returns 422 audio_visual_needs_audio_input (not charged). Omit it on audio to get the default bars. | |
| notifyEmail | No | ||
| brandPresetId | No | Saved font, color, position, and optional logo. | |
| highlightColor | No | #RRGGBB for highlightWords. Default #FACC15. | |
| highlightWords | No | Shortcut: words or phrases to color in every caption (accent/case-insensitive), e.g. ["AwesomeVideo", "gratis"]. Maps to styleOverrides.wordHighlights rule {id:"custom", words, color}. Same price. | |
| styleOverrides | No | Per-call style changes deep-merged onto the preset (same fields as list_presets style; null removes a field), validated with the renderer schema and bundled fonts. Example {"fontSize":72,"maxWordsPerCaption":2,"wordEntrance":"bounce"}. Same price. No need to save_custom_preset. Every field with examples: get_style_reference. | |
| durationSeconds | No | ||
| transcriptionJobId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses paid pricing relative to transcription, x264 preset/resolution/audio-copy/scale-to-zero container behavior, the 402 insufficient_balance payload shape (requiredCents, howToBuy), 422 codes for invalid_platform and audio_visual_needs_audio_input, and that safe-zone/platform/autoFit/combined add no cost. Annotations only cover readOnly/idempotent, so this adds substantial undisclosed 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?
Front-loaded with purpose and cost, then error contract, then the alternative tool, then platform logic — a sensible order. The platform sentence is long and carries a bilingual example and a warning aside, which is slightly heavy against the value it delivers.
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 20-parameter render tool with no output schema, it covers billing, errors, safe-zone output shape, and the client-side alternative. The main gap is never stating that one of fileId/mediaUrl (or an upload id) is required despite 'required: 0', leaving the agent to guess the valid input combinations.
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 55%, and the description compensates by explaining the input-substitution rule (subtitles SRT/VTT/JSON or transcriptionJobId, plus preset id or name) and the semantic effect of platform. Still, key parameters (fileId, mediaUrl, maxCredits, presetId vs presetName precedence) are never explained in either place.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Burn captions into video') and explains the mechanism (native ffmpeg + ASS script from an AwesomeVideo preset), which distinguishes it from prepare_client_burn and caption_video. An agent can immediately tell this is the server-side paid render path.
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 routes to prepare_client_burn when cost matters ('For a render that costs AwesomeVideo nothing') and gives a clear rule for platform ('pass it when the user names where the video goes ... if they did not say and it matters, ask'). It does not contrast with sibling caption_video or transcribe, so not quite a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buy_creditsBuy creditsAInspect
Free. Returns a checkout URL that buys 500 credits for $5 for this exact key (works on self-serve keys, no sign-in). Show the URL to your human; credits arrive after payment, then retry. For bigger packs or plans use create_checkout after the key is claimed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and openWorldHint=true, and the description adds the non-obvious behavior: the call itself is free, it is a human-in-the-loop handoff, and credits only arrive after payment so the caller must retry. It does not say what happens on repeated calls (non-idempotent, could double-charge), which is the one meaningful gap for a paid flow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the cheapest fact ('Free') and then the value, the human handoff, and the alternative. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description covers everything an agent needs: cost, what is returned (a checkout URL), who must act on it, when credits appear, and which sibling to use for other purchase sizes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the fixed 500-credit/$5 quantity is stated instead. Baseline 4 applies for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Returns a checkout URL that buys 500 credits for $5 for this exact key'), including the exact price and scope. It explicitly names the sibling create_checkout as the tool for bigger packs, so the agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the preconditions ('works on self-serve keys, no sign-in'), the handoff step ('Show the URL to your human'), the post-payment retry instruction, and the exclusion ('For bigger packs or plans use create_checkout after the key is claimed'). When-to-use and when-not-to-use are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
caption_videoCaption video (one call)AIdempotentInspect
PREFER THIS for 'add/burn subtitles to this video'. One call runs transcribe -> optional translate -> burn and returns the finished MP4 link plus SRT, VTT, JSON transcript, and credits charged. Source: sourceUrl (public https link: direct file, chat attachment URL, Google Drive or Dropbox share link; YouTube is refused) or fileId (from create_upload / import_url / upload_base64). Price is exactly the sum of the steps, no surcharge: transcribe 1 + burn 4 credits per audio minute (+2 with translateTo); 1 credit = 1 cent; call quote with operation caption first if unsure. Over-limit input (2048 MB fileId, 80 MB sourceUrl, 3 h) fails with 422 limit_exceeded and charged:false; failed jobs refund automatically. wait (default true) blocks up to waitSeconds (default 45, max 50) and returns the finished result; if it is still running you get status queued/running, the job id, step, progress (0-100), eta_seconds and pollAfterSeconds: poll get_job after pollAfterSeconds, or pass webhookUrl / notifyEmail. If it fails after transcribing, resume_job reuses the transcript and charges only the rest. Use platform (tiktok, instagram_reels, youtube_shorts, youtube, ...; see list_platforms) so captions stay clear of the app UI. Person wants to check the text first? Pass review:true: it transcribes now and returns reviewUrl; the burn is charged only on approval. To fix the text yourself, use transcribe -> edit_transcript -> burn_captions.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Block until done, up to waitSeconds. Default true. | |
| fileId | No | Id from create_upload, import_url, or upload_base64. | |
| preset | No | Caption style preset id or name (list_presets), or your own saved preset as custom:cp_... (save_custom_preset). Default Clarity. | |
| review | No | Human review first: transcribes now, returns reviewUrl for the person; the burn runs and is charged only when they approve. Not with translateTo. | |
| autoFit | No | Default true: caption size, words per caption (4 on 9:16, 5 on 1:1, 7 on 16:9), and a default safe zone follow the video shape, so text reads the same at 720p and 1080p and stays clear of app UI. Pass false only when the user wants the preset's exact fixed pixel sizes. Same price. | |
| glossary | No | Names and brand terms to spell correctly, e.g. ['AwesomeVideo']. | |
| language | No | Spoken language (BCP-47, e.g. es, en). Omit for auto-detect. | |
| platform | No | Target platform: tiktok, instagram_reels, youtube_shorts, youtube, ... (aliases reels, shorts). Keeps captions clear of the app UI. Same price. | |
| faceAvoid | No | true = move captions off faces (samples faces at 2 fps, same price; result.faceAvoid.faceLayout). Shortcut for styleOverrides.faceAvoid. | |
| sourceUrl | No | Public link to the video/audio. Direct https file, chat attachment URL, Google Drive or Dropbox share link. Not YouTube. | |
| maxCredits | No | Refuse the job if it would cost more than this many credits. | |
| webhookUrl | No | Public https URL, POSTed a signed JSON body when the job finishes. | |
| audioVisual | No | Audio-only input (mp3/m4a/wav...): render the web editor's audio export (visualizer + captions) on the server, same price as the burn. On a video input it returns 422 audio_visual_needs_audio_input (not charged). Omit it on audio to get the default bars. | |
| notifyEmail | No | Email when the job finishes. Free. | |
| translateTo | No | Burn subtitles translated to this language (ISO 639-1, e.g. en). Adds 2 credits/min. | |
| waitSeconds | No | Default 45, max 50. | |
| instructions | No | review only: note shown to the reviewer. | |
| brandPresetId | No | Saved brand preset (font, colors, position, logo). | |
| highlightColor | No | #RRGGBB for highlightWords. Default #FACC15. | |
| highlightWords | No | Shortcut: words or phrases to color in every caption (accent/case-insensitive), e.g. ["AwesomeVideo", "gratis"]. Maps to styleOverrides.wordHighlights rule {id:"custom", words, color}. Same price. | |
| idempotencyKey | No | Same key returns the same job instead of charging twice. | |
| styleOverrides | No | Per-call style changes deep-merged onto the preset (same fields as list_presets style; null removes a field), validated with the renderer schema and bundled fonts. Example {"fontSize":72,"maxWordsPerCaption":2,"wordEntrance":"bounce"}. Same price. No need to save_custom_preset. Every field with examples: get_style_reference. | |
| durationSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (openWorld, idempotent, non-destructive), and the description adds substantial context beyond them: exact credit pricing per step, over-limit thresholds and the 422 limit_exceeded/charged:false behavior, automatic refunds, wait/waitSeconds blocking semantics with progress/eta/pollAfterSeconds, and the review:true approval flow that defers the burn charge. This is far more than the 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?
Front-loaded with the 'PREFER THIS' routing and the one-call pipeline before pricing and edge cases, which is the right order. It is long, but for a 23-parameter job tool nearly every sentence carries operational information; a few pricing/limit clauses could be compressed.
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 what an agent needs for a complex async job tool with no output schema: return artifacts, credit cost, size/duration limits, failure and refund behavior, polling contract with pollAfterSeconds, and the human-review variant. Nothing material is left to inference.
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 96%, so the baseline is 3; the description still adds value by tying cost to parameters (translateTo +2 credits/min, faceAvoid and highlightWords same price), clarifying sourceUrl vs fileId sources, and noting review cannot combine with translateTo. It does not add much beyond the already-rich schema for the nested audioVisual/styleOverrides objects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('add/burn subtitles to this video') and names the exact pipeline it runs (transcribe -> optional translate -> burn) plus what it returns (MP4, SRT, VTT, JSON, credits). It also distinguishes itself from siblings by saying 'PREFER THIS' and naming burn_captions/transcribe/edit_transcript as the manual path.
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?
Explicit routing: prefer this one-call tool for subtitle requests, use transcribe -> edit_transcript -> burn_captions when the user wants to fix text, use quote first if unsure of cost, poll get_job or pass webhookUrl/notifyEmail if the wait times out, and resume_job if it fails after transcribing. When-not conditions (YouTube refused, audio_visual on video input) are also stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_uploadComplete multipart uploadAIdempotentInspect
Free. After every part is PUT, assemble the file. Idempotent. Missing parts return 409 upload_incomplete with missingParts. Then pass fileId to any tool.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: it is free of charge, and a failed precondition returns 409 upload_incomplete with a missingParts field, which is valuable failure-mode disclosure. 'Idempotent' merely restates idempotentHint=true and there is no mention of auth requirements, so it is not a 5.
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?
Five telegraphic fragments, no waste, cost and precondition front-loaded before the downstream instruction. The fragment style ('Then pass fileId to any tool') is efficient but slightly ambiguous about what is actually returned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description covers cost, precondition, idempotency, error shape, and the follow-up call. The main gap is that it never states what a successful call returns or that it is the terminal step of the multipart flow.
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 0% and the single fileId parameter is undocumented in the schema, so the description must carry the burden. It implies fileId is the upload handle passed downstream, but never says where fileId comes from (presumably create_multipart_upload) or what it identifies — only partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action — assemble the file after every part is PUT — which distinguishes it from create_multipart_upload and abort_upload without naming them. 'Free' also flags no credit cost. It never explicitly names the sibling sequence it belongs to, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition ('After every part is PUT') and a clear next step ('Then pass fileId to any tool'), which is exactly the workflow context an agent needs. It does not mention the abort_upload alternative or when to give up on an upload, which keeps it below 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_checkoutCreate checkoutAInspect
Free. Checkout URL for a pack or plan: pack_5 $5=500, pack_20 $20=2,200, pack_50 $50=6,000 credits; creator $9/mo=1,200, pro $29/mo=4,500, scale $99/mo=18,000 credits/month (interval year = 10x monthly). Needs the key to be claimed by an account at https://awesomevideoeditor.com/account; otherwise returns account_required. For an unclaimed key use buy_credits.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | ||
| interval | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (openWorldHint, non-idempotent, non-destructive), the description adds a real prerequisite, a named error response, and the 'Free.' cost signal, plus a pointer to an external account page. It doesn't cover what happens on repeated calls or what the response body looks like beyond the URL, but the annotation set already carries most of the safety profile.
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?
Information-dense with no filler: the price table, prerequisite, and alternative all earn their place, and the scoping is front-loaded. However, it reads as a long semicolon-chained fragment, and the opening 'Free.' is ambiguous enough to make the agent pause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still identifies the return value (a checkout URL), the error case (account_required), and the precondition, which is everything needed to invoke this 2-param 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 coverage is 0% and the two enums are opaque on their own; the description fully compensates by mapping each product enum value to its price and credit amount, and by explaining that interval=year means 10x the monthly figure. This is exactly the semantics an agent needs and the schema cannot supply.
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 makes clear that this produces a checkout URL for a 'pack or plan' and enumerates every product with its price/credit value, so an agent knows exactly what resource is involved. The verb itself is implicit rather than stated ('Checkout URL for a pack or plan:'), relying on the tool name, and the leading 'Free.' is unexplained. Still clearly separable from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the prerequisite (the key must be claimed by an account at the given URL), the failure mode if not met (returns account_required), and the alternative tool for that case (buy_credits). That is explicit when-to-use / when-not / alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_clipsLong video to short clipsAIdempotentInspect
PREFER THIS for 'turn this long video/podcast/stream into shorts/clips/highlights'. One call: transcribes the video (or reuses transcriptionJobId/subtitles), an LLM reads the word-timed transcript and picks the count (default 3, max 10) best self-contained moments of minSeconds-maxSeconds (default 15-60, range 5-90), cuts start on a sentence start and end on a sentence or word end, then renders each as MP4: reframe face (default: 720x1280 9:16 crop that follows the speaker, falls back to center), center (plain center crop), or none (keep the source shape). captions (default true) burns captions with any preset (list_presets or custom:cp_...); platform keeps them inside the app's safe zone. Returns clips [{name, rank, start, end, seconds, title, hook, reason, score 0-100, text, url}] sorted by time (rank 1 = best) plus the transcript files. Source: sourceUrl (public https link, Drive, Dropbox; YouTube, TikTok and Instagram links are refused with 422) or fileId. Price (1 credit = 1 cent): transcribe 1/source min (0 with a transcript) + highlights 1 per started 10 source min + render 3 per output min, reserved for count x maxSeconds and the unused part refunded when the clips are shorter; e.g. a 30-min video, 3 clips up to 60 s: 42 credits reserved. quoteOnly:true with durationSeconds returns the price without a key-charge or media. Failed jobs refund automatically. wait (default true) blocks up to waitSeconds (max 50); long videos keep running: poll get_job or pass webhookUrl / notifyEmail.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Block until done, up to waitSeconds. Default true. | |
| count | No | Clips to return, 1-10. Default 3. Out of range: 422 limit_exceeded before any charge. | |
| fileId | No | Id from create_upload, import_url, or upload_base64. | |
| preset | No | Caption preset id or name, or custom:cp_.... Default Clarity. | |
| autoFit | No | Default true. Same rule as caption_video. | |
| reframe | No | face (default): 9:16 crop that follows the speaker, center fallback. center: plain center crop. none: keep the source aspect. Same price. | |
| captions | No | Burn captions into each clip. Default true. Same price. | |
| glossary | No | ||
| language | No | Spoken language (BCP-47). Omit for auto-detect. | |
| platform | No | tiktok, instagram_reels, youtube_shorts, ... (see list_platforms). Keeps captions clear of the app UI. Same price. | |
| faceAvoid | No | true = move captions off faces (samples faces at 2 fps, same price; result.faceAvoid.faceLayout). Shortcut for styleOverrides.faceAvoid. | |
| quoteOnly | No | Return the price for durationSeconds (and count/maxSeconds) without starting a job. | |
| sourceUrl | No | Public link to the video. Not YouTube, TikTok or Instagram. | |
| subtitles | No | Reuse an SRT, VTT, or JSON transcript (JSON keeps word timing for tighter cuts). | |
| maxCredits | No | Refuse the job if it would cost more than this many credits. | |
| maxSeconds | No | Longest clip, minSeconds-90 s. Default 60. | |
| minSeconds | No | Shortest clip, 5-90 s. Default 15. | |
| webhookUrl | No | ||
| notifyEmail | No | ||
| waitSeconds | No | Default 45, max 50. | |
| brandPresetId | No | ||
| highlightColor | No | #RRGGBB for highlightWords. Default #FACC15. | |
| highlightWords | No | Shortcut: words or phrases to color in every caption (accent/case-insensitive), e.g. ["AwesomeVideo", "gratis"]. Maps to styleOverrides.wordHighlights rule {id:"custom", words, color}. Same price. | |
| idempotencyKey | No | ||
| styleOverrides | No | Per-call style changes deep-merged onto the preset (same fields as list_presets style; null removes a field), validated with the renderer schema and bundled fonts. Example {"fontSize":72,"maxWordsPerCaption":2,"wordEntrance":"bounce"}. Same price. No need to save_custom_preset. Every field with examples: get_style_reference. | |
| durationSeconds | No | ||
| transcriptionJobId | No | Reuse a finished transcription: no transcription charge. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations (which only cover safety/idempotency) by disclosing the credit pricing formula with a worked example, reservation-and-refund semantics, automatic refund on failure, and the specific 422 refusals for YouTube/TikTok/Instagram source URLs. Also states the wait cap (50s) and that jobs continue server-side afterward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the routing decision and then the pipeline, so an agent reading only the first clause already knows when to call it. The rest is a dense run-on that repeats schema defaults (reframe, captions, platform, preset) and could be split into short labeled blocks for easier scanning at 27 parameters.
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 27-parameter, no-output-schema job tool this is close to complete: it spells out the returned clips array with every field and its sort order, plus pricing, async polling, and error behavior. An agent can decide, budget, and parse the result from the description alone.
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 78%, and the description still adds meaning the schema lacks: default count 3 / max 10, minSeconds-maxSeconds default 15-60 within 5-90, and what each reframe mode actually does (face-follow with center fallback vs plain crop vs source shape). A few parameters (glossary, webhookUrl, brandPresetId, idempotencyKey) get no explanation anywhere, keeping it below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('turn this long video/podcast/stream into shorts/clips/highlights') and enumerates the exact pipeline: transcribe, LLM-select moments, sentence-boundary cut, render. It explicitly claims precedence over the sibling 'shorts' tool with 'PREFER THIS', so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use trigger and internal alternatives (reuse transcriptionJobId/subtitles to skip cost, quoteOnly to price, get_job/webhookUrl/notifyEmail for long jobs). It stops short of naming when to use a sibling instead — e.g. caption_video or burn_captions when the user only wants captions burned on an existing clip.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_keyCreate API keyAInspect
Free. Create a new AwesomeVideo API key with 0 credits, no sign-in. Works without a key. Returns the token once; store it and send it as Authorization: Bearer on the MCP connection or REST calls. Paid tools then return 402 with a checkoutUrl ($5 = 500 credits, 1 credit = 1 cent). Limited to a few keys per network per day.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional label, e.g. the agent's name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond annotations: no sign-in, zero starting credits, one-time token return, required storage and Authorization header usage, downstream 402 responses with checkoutUrl, pricing, and per-network daily key limits. These details materially help an agent understand the auth and billing flow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the free/no-sign-in bootstrap context comes first, followed by token handling, downstream paid-tool behavior, and rate limits. Every sentence adds useful operational context without waste.
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 one optional parameter, no output schema, and annotations covering safety hints, the description supplies everything an agent needs: why to call it, what it returns, how to use the token, and what happens when credits run out.
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 has 100% description coverage for the single optional `name` parameter, so the schema already carries parameter meaning. The description adds no additional guidance about the `name` field, which is acceptable but not enriched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: create a new AwesomeVideo API key. It also distinguishes itself from credit-purchase tools by emphasizing that it is free, requires no sign-in, and works without an existing key.
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?
Clearly establishes the bootstrap context: call this when no key exists, then store the returned token and use it as a Bearer token. It also explains the downstream 402/checkout behavior for paid tools. It does not explicitly name a sibling alternative or state when not to call it, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_multipart_uploadCreate resumable (multipart) uploadAInspect
Free. For files over 80 MB (up to 2048 MB / 3 h), or any upload on a flaky connection. Returns fileId, partSizeBytes (default 64 MB, 5-95 MB), and parts[] with partNumber, offset, length, and a PUT url each (no API key needed, valid 24 hours). PUT bytes [offset, offset+length) of the file to each url, e.g. dd if=big.mp4 bs=1M skip=$((offset/1048576)) count=$((length/1048576)) | curl -X PUT --data-binary @- -H "Content-Length: " "" (tail -c +$((offset+1)) big.mp4 | head -c length works for any part size). Parts can go in any order or in parallel; re-sending a part replaces it. If the upload stops, call get_upload_status for missingParts and send only those, then complete_upload. Then pass fileId to caption_video, transcribe, burn_captions, shorts, trim, or preview like any upload. Up to 30 per hour.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | File name, e.g. talk.mp4. | |
| sizeBytes | Yes | Exact file size in bytes. | |
| contentType | Yes | video/* or audio/*, e.g. video/mp4. | |
| partSizeBytes | No | Bytes per part, 5242880-99614720. Default 67108864 (64 MB). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses cost (free), size and duration limits, rate limit (30 per hour), return payload, PUT URL validity, and that part URLs need no API key. It also explains parallel/out-of-order uploads and replacement behavior for re-sent parts, which is exactly the operational context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with purpose, limits, return shape, and workflow, so the agent can extract key facts quickly. It is somewhat long and includes redundant part-size details plus two shell examples, but the density is largely justified by the multipart workflow.
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 multipart creation tool with no output schema, the description covers return fields, upload mechanics, resume behavior, completion, downstream fileId usage, and limits. Nothing essential for correct invocation or recovery appears to be missing.
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 useful semantics for sizeBytes by giving an effective 80 MB to 2048 MB operating range and repeats the partSizeBytes default/range in MB, though it does not add much for filename or contentType beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (create multipart upload) and immediately scopes it to files over 80 MB or flaky connections. That size/condition threshold distinguishes it from simpler sibling upload tools without requiring the agent to inspect other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says when to use this tool (large files, flaky connections) and names get_upload_status and complete_upload for the resume/complete workflow. It does not explicitly name the small-file alternative such as create_upload, so the routing guidance is clear but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_uploadCreate upload URLAInspect
Free. Get a fileId and a single-use PUT URL (valid 15 minutes, tied to this key or account) for a local video or audio file, e.g. one the user attached in chat. Checks size first: one PUT takes up to 80 MB; bigger files (up to 2048 MB) return 422 use_multipart_upload: call create_multipart_upload instead. Then PUT the raw bytes (not multipart) with the returned headers, e.g. curl -X PUT --data-binary @clip.mp4 -H "Content-Type: video/mp4" "", and pass fileId to plan, quote, transcribe, burn_captions, shorts, trim, dub, or preview. No API key is needed for the PUT itself. Up to 30 per hour.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | File name, e.g. clip.mp4. | |
| sizeBytes | Yes | Exact file size in bytes (the PUT must match). | |
| contentType | Yes | video/* or audio/*, e.g. video/mp4. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: the URL is single-use, expires in 15 minutes, is tied to the key or account, and the PUT needs no API key. It also discloses the 80 MB/2048 MB thresholds, the 422 use_multipart_upload error, the 30-per-hour rate limit, and that the PUT must be raw bytes with matching size and headers.
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 front-loads the core promise (free, fileId plus single-use PUT URL) and then packs thresholds, error path, example command, downstream tools, and rate limit into a dense but waste-free paragraph. The single block is slightly run-on, but every sentence carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter tool with no output schema, it covers the full workflow: create the upload, PUT the raw bytes with returned headers, and pass fileId to plan, quote, transcribe, burn_captions, shorts, trim, dub, or preview. The size-based failure path and rate limit leave nothing an agent needs missing.
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 already 100%, so the baseline is 3. The description still adds consequences the schema does not: sizeBytes determines whether this endpoint succeeds or returns a 422 multipart redirect, and contentType must be the actual raw PUT Content-Type header rather than multipart.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and outputs: it returns a fileId and a single-use PUT URL for a local video/audio file. It distinguishes itself from the closest sibling by naming create_multipart_upload as the path for files over 80 MB, and its scope (local byte upload) separates it from upload_base64 and import_url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is clearly framed: try this first, and if the file exceeds 80 MB (up to 2048 MB) the API returns 422 use_multipart_upload and you should call create_multipart_upload instead. It stops short of explicitly ruling out siblings like upload_base64 or import_url, so an agent still has to infer those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_brand_presetDelete brand presetBDestructiveIdempotentInspect
Delete a saved brand preset for this key or account. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered structurally. The description adds one genuinely new fact — the call consumes no credits — but says nothing about permanence or recoverability beyond what the hints imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource; nothing is padded. The trailing "Free." fragment is terse but carries real information, so it 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?
For a one-parameter destructive delete with full annotation coverage and no output schema, the definition supplies the action, target, ownership scope, and cost. The main residual gap — what `id` refers to — is a parameter-level issue already captured above rather than a completeness failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden for the single required parameter, yet it never says what `id` identifies. The phrase "for this key or account" is ambiguous and could be read as describing the id itself or the ownership scope of the preset.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Delete a saved brand preset") with a scope hint ("for this key or account"). It does not explicitly distinguish itself from the sibling delete_custom_preset, so an agent must infer the brand-vs-custom distinction from the name alone.
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 only usage signal is the word "Free," which is a cost note rather than guidance. Nothing says when to use this instead of delete_custom_preset, or what prerequisite state (preset must exist, ownership) is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_custom_presetDelete custom presetBDestructiveIdempotentInspect
Free. Delete one of your saved custom presets. A community copy that was already approved stays in the gallery.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive, idempotent and non-read-only, so the safety profile is covered. The description still adds two genuinely non-obvious facts: the operation is free (no credits), and an already-approved community copy survives the deletion. It stops short of saying whether the preset itself is recoverable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler; the cost signal is front-loaded and the exception clause follows the main action. The leading 'Free.' is slightly abrupt but earns its place by answering the cost question early.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with annotations covering reversibility and idempotence, the description covers cost and the community-copy side effect. The unresolved 'id' semantics and the lack of any guidance on locating or confirming the target preset keep it at minimum-viable rather than 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 0% and the single 'id' property is undocumented. The description only hints that the id refers to one of the caller's own saved presets; it does not state the identifier format, where to obtain it (e.g. list_custom_presets), or what happens with another user's 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?
States a specific verb ('Delete') and resource ('one of your saved custom presets'), which implicitly separates it from delete_brand_preset and delete_glossary by scope. It does not explicitly name a sibling, so the differentiation rests on the reader's inference.
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?
'one of your saved custom presets' implies an ownership precondition, and the gallery note clarifies a boundary case. But there is no explicit guidance on when to use this versus delete_brand_preset or how it relates to submit_custom_preset/update_custom_preset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_glossaryDelete glossary termsBDestructiveIdempotentInspect
Free. Remove saved glossary terms by term, or all: true to clear it.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | ||
| terms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the description doesn't need to re-state danger. It does add real value by disclosing that the call is "Free" (no credit cost) and by clarifying the two deletion scopes, but it omits what happens with missing/nonexistent terms or whether deletion is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the "Free" cost signal and then the two deletion modes. No filler, though the single-word "Free." fragment is slightly cryptic out of context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, 2-parameter tool with no output schema and zero schema descriptions, the definition is minimally adequate: both parameters get some explanation and the cost is stated. It lacks edge-case behavior (empty terms, mixed all+terms, nonexistent term) that an agent would need to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load, and it partially does: it explains that "all: true" clears everything and that terms can be removed individually. It does not explain the `terms` array's semantics in detail, whether `all` and `terms` can be combined, or what happens when both are omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ("Remove") plus resource ("saved glossary terms") makes the operation unambiguous and clearly distinguishes it from save_glossary and get_glossary. The scope is stated up front, though it doesn't explicitly name those siblings.
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 two operating modes (per-term removal vs. "all: true to clear it") imply when each form is used, but there is no explicit guidance on prerequisites, when not to use it, or pointers to the sibling save/get glossary tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dubDub video into another languageAIdempotentInspect
Paid, per target language: voice 5 credits per source minute (voiceTier basic: en, es, fr, zh, ja, ko via Workers AI MeloTTS, hi, ar, bn, pt, ru, ur, id, de, tr, it, vi via Google WaveNet) or 12 (standard: en, es via Deepgram Aura-2, hi, ar, bn, pt, ru, ur, id, de, tr, it, vi via Google Chirp 3 HD), plus transcription 1/min and translation 2/min when you do not pass them. Transcribes, translates, voices each line, fits it to the original timing (speeds up to 1.25x, rewrites a line shorter once if needed, pads with silence), mixes over the original audio ducked to -18 dB (keepOriginalAudio duck, default) or muted, and returns an MP4 plus target-language SRT/VTT/JSON (audioTrack:true adds an M4A). Reuse work with transcriptionJobId or subtitles (source language) and translationJobId or translatedSubtitles (target language). Unsupported languages or tiers return 422 limit_exceeded before any charge; call plan first. Refunded if the job fails. No voice cloning or lip sync.
| Name | Required | Description | Default |
|---|---|---|---|
| voice | No | Voice id from list_voices (listen to sampleUrl first). Omit for the default voice of the language and tier. | |
| fileId | No | ||
| mediaUrl | No | ||
| subtitles | No | Source-language SRT, VTT, or JSON. | |
| voiceTier | No | Defaults to the voice's tier, else basic. | |
| audioTrack | No | Also return the dubbed audio as M4A. | |
| maxCredits | No | ||
| sourceLanguage | No | ||
| targetLanguage | Yes | ISO 639-1: en, es, fr, zh, ja, ko, hi, ar, bn, pt, ru, ur, id, de, tr, it, vi. | |
| translationJobId | No | A translate job into targetLanguage. | |
| keepOriginalAudio | No | ||
| transcriptionJobId | No | Reuses its cues and its stored media. | |
| translatedSubtitles | No | Target-language SRT, VTT, or JSON. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: per-language credit pricing, voice providers by tier, 1.25x timing fit, one rewrite, -18 dB ducking, output formats (MP4, SRT/VTT/JSON, optional M4A), 422 pre-charge validation, and refund-on-failure behavior. These details are consistent with readOnlyHint=false, destructiveHint=false, idempotentHint=true, and openWorldHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The information is relevant, but it is delivered as one very long run-on sentence that opens with credit pricing rather than the action. The density and lack of paragraph structure make it harder to scan than necessary.
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 13-parameter mutation with no output schema, it explains outputs, failure/refund behavior, and reuse options well. It does not explain how to supply source media via fileId vs mediaUrl, nor what maxCredits does.
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?
Explains several important parameters beyond the schema: keepOriginalAudio defaults to duck and can mute, audioTrack adds an M4A, and the two job/subtitle reuse paths. It leaves voice, fileId, mediaUrl, maxCredits, and sourceLanguage largely to the schema, which is acceptable at 62% coverage but not fully compensating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: dubbing a video into another language, then details the full pipeline (transcribe, translate, voice, timing-fit, mix, return). This clearly separates it from siblings like translate (text-only), caption_video, and burn_captions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives useful prerequisites and reuse paths: call plan first for unsupported languages/tiers, reuse via transcriptionJobId/subtitles and translationJobId/translatedSubtitles. It also excludes voice cloning and lip sync, but does not explicitly name translate or caption_video as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_transcriptEdit transcriptAIdempotentInspect
Replace the cues on a finished transcription without running Whisper again. Cost is zero. A later burn_captions that passes this transcriptionJobId pays only the burn price. Pass cues or SRT, VTT, or JSON subtitles.
| Name | Required | Description | Default |
|---|---|---|---|
| cues | No | ||
| jobId | Yes | ||
| subtitles | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and the description adds genuinely new traits: zero cost and the downstream billing effect on burn_captions. It also clarifies that edits are a full replacement of cues rather than a merge. Missing: what happens to the previous cues or the returned job state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no padding; the primary action and the cost caveat come first. The telegraphic fragments ('Cost is zero.') are efficient rather than noisy, though they read slightly clipped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with no output schema, the description covers the cost model and input formats but omits return behavior, whether the job must already be complete, and cue timing units. An agent could invoke it but might guess wrong on payload format or state assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage the description has to compensate, and it partially does by naming the two optional inputs and the accepted subtitle formats (SRT, VTT, JSON). However, it never explains jobId, whether cues and subtitles are mutually exclusive or which wins, or the units for start/end (seconds vs. milliseconds) — a significant gap for a timing-critical payload.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Replace the cues on a finished transcription.' The phrase 'without running Whisper again' implicitly contrasts it with transcribe, so an agent can distinguish the edit path from the re-transcription path. It stops short of naming a sibling tool explicitly, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use: after transcription is finished, before caption burning, and explains the cost relationship with burn_captions (passing this transcriptionJobId charges only the burn price). No explicit exclusions or preconditions (e.g., job must be in a completed state) are stated, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_metadataTitles, description, hashtags and chaptersAIdempotentInspect
Paid: 1 credit per platform when a transcript exists (no re-transcription); with only a video, transcription (1 credit/min) is added. Writes publishing metadata from what is said in the video: several title options, a description, hashtags, and YouTube chapters with timestamps (youtube only, videos of 60 s or more; first chapter at 0:00, 3+ chapters at least 10 s apart, snapped to speech). Pass transcriptionJobId (any finished transcribe, caption_video, remove_silences/trim, or translate job; for a trimmed video use its job so chapter times match the cut) or subtitles; otherwise fileId or mediaUrl. platforms: youtube (default), shorts, tiktok, instagram (one result per platform, each following that platform's lengths and hashtag norms; shorts always gets #shorts). Written in the video's language unless language (e.g. 'es', 'en') is set. titleCount 1-10 (default 5). context: optional creator notes (audience, product names). Waits up to ~40 s for the result; otherwise poll get_job. Result: platforms..{titles, description, hashtags, chapters[{start, timestamp, title}], descriptionWithChapters}.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | No | ||
| context | No | ||
| language | No | Output language. Default: the video's language. | |
| mediaUrl | No | ||
| platforms | No | ||
| quoteOnly | No | Free: return the price without starting a job or charging. With media only (no transcript) pass durationSeconds. | |
| subtitles | No | SRT, VTT, or transcript JSON. | |
| maxCredits | No | ||
| titleCount | No | ||
| durationSeconds | No | ||
| transcriptionJobId | No | Finished job with captions (transcribe, caption_video, remove_silences, translate). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already covering safety hints, the description adds substantial behavioral context: exact credit pricing, added transcription cost for video-only input, ~40 s wait before polling get_job, platform-specific output norms, language default, and YouTube chapter timing rules. This is far beyond what the 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 dense and information-rich, with most critical constraints stated up front and no obvious filler. However, it is a long single paragraph and leads with pricing rather than the core action, which slightly reduces scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter paid async tool with no output schema, the description provides unusually complete context: result shape, chapter constraints, platform behavior, language default, and polling guidance. It still leaves out maxCredits, quoteOnly, and durationSeconds behavior, which matter for cost control and previewing.
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 low at 36%, and the description compensates well for the core inputs: transcriptionJobId job types, subtitles, fileId/mediaUrl, platforms and defaults, language behavior, titleCount range/default, and context notes. It still omits meaningful detail for maxCredits, quoteOnly, and durationSeconds, so coverage is strong but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: writes publishing metadata (titles, description, hashtags, YouTube chapters) from what is said in a video. It distinguishes this from transcription by saying no re-transcription is needed when a transcript exists, and it clearly defines the generated artifacts per platform.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear input-selection guidance: pass transcriptionJobId or subtitles, otherwise fileId or mediaUrl, and for trimmed videos use the trim job so chapter times match. It also explains the async wait/poll fallback. It lacks explicit when-not guidance and does not mention cost-checking siblings like quote or plan.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceGet balanceARead-onlyIdempotentInspect
Read the prepaid balance for this API key in cents and in transcription-equivalent audio seconds. Server burns spend the burn price, which is higher than transcription. The client render path does not spend balance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a read-only, idempotent, non-destructive operation. The description adds useful domain behavior beyond the annotations: server burns spend the burn price, which is higher than transcription, and the client render path does not spend balance.
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 with no wasted text. Purpose is front-loaded, and the following two sentences add spend-model context that is directly relevant to interpreting the returned balance.
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?
Although there is no output schema, the description explains that the balance is returned in cents and in transcription-equivalent audio seconds. Combined with the annotations, this is sufficient for a no-parameter read 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?
There are zero input parameters, and the description correctly does not attempt to explain any. The baseline for a no-parameter tool is 4, and there is no parameter ambiguity to resolve.
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 gives a specific verb and resource: 'Read the prepaid balance for this API key.' It also states the units returned (cents and transcription-equivalent audio seconds), making it clearly distinct from sibling tools like get_usage or buy_credits.
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 used to check available prepaid credits, and it explains that server burns consume balance while the client render path does not. However, it never explicitly says when to call this instead of alternatives such as get_usage or before buy_credits, so usage guidance remains implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_custom_presetGet custom presetARead-onlyIdempotentInspect
Free. One saved custom preset by id (cp_... or custom:cp_...), with its full style JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds two useful non-annotation facts: the call is free (no credit cost) and it returns the full style JSON rather than a summary. It says nothing about behavior for a missing id or whether brand presets are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short fragments with no filler, and the cost note plus the resource scope are front-loaded. The telegraphic style ('Free. One saved custom preset...') is efficient but slightly stenographic compared to a full sentence, costing a bit of readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers the key unknowns: cost, id format, and that the full style JSON comes back. It is thin only on the not-found error path and on disambiguation from the preset-listing and style-reference siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single id parameter carries no description at all, so the description is the only source of format information. It supplies the accepted id shapes (cp_... or custom:cp_...), which is exactly the missing operative detail for this one required param.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific resource (a saved custom preset) and scopes it to exactly one item fetched by id, which distinguishes it from list_custom_presets and list_presets. It does not name any sibling explicitly, so an agent must infer the single-vs-list split rather than being told.
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 "by id" phrasing implies this is the follow-up call once a preset id is known, but there is no explicit when-to-use vs when-to-use-instead guidance. No mention of what to do when the id is unknown (use list_custom_presets) or how this differs from get_style_reference or list_presets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_glossaryGet saved glossaryARead-onlyIdempotentInspect
Free. The saved glossary of this account (or key): preferred spellings, brand names, slang fixes (aliases) and do-not-translate terms. It is applied to every transcribe and translate automatically.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-open-world, non-destructive, so the safety profile is covered. The description adds two things the annotations do not: that the call is free (relevant given buy_credits/get_balance siblings) and that the returned glossary is automatically enforced on transcribe/translate — real behavioral context. It stops short of describing response shape or empty-state 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?
Two sentences, zero waste. The cost signal ('Free.') is front-loaded, followed immediately by what the resource contains, and the last sentence carries the one behavioral fact that matters. Nothing is repeated from the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description carries the burden of describing the return value, and it does so semantically by enumerating the glossary's entry types. Adequate for a zero-arg read; only the concrete response field names and empty-glossary behavior are absent.
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?
Zero parameters, so the baseline is 4. The description nonetheless clarifies the scope of the implicit target — the glossary belongs to 'this account (or key)' — which tells the agent the result is scoped to its credentials rather than globally addressable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (the saved glossary of this account/key) and enumerates its contents — preferred spellings, brand names, alias fixes, do-not-translate terms — so the agent knows exactly what comes back. The verb is only implied by the name rather than stated in the description, and no sibling (save_glossary, delete_glossary) is explicitly contrasted, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: by saying the glossary 'is applied to every transcribe and translate automatically,' it hints the agent should read this to know what corrections will be applied. It never says when to call it, whether it is a prerequisite to anything, or how it differs from other read tools like list_presets or get_custom_preset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobGet jobARead-onlyIdempotentInspect
Read any job. Includes status, step (queued, transcribe, translate, burn, finalize, done, failed), progress (0-100, burn uses real ffmpeg progress), eta_seconds and estimatedCompletionAt (from media length x rolling per-step averages), pollAfterSeconds (wait that long before the next poll), cost, and an expiring result URL when the job succeeded. A failed caption job with resumable:true can be restarted with resume_job.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | Job id returned by transcribe or burn_captions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, yet the description still adds substantive behavior: the result URL is expiring, eta is derived from media length times rolling per-step averages, and burn progress is real ffmpeg progress. These are things an agent cannot infer from the annotations or schema and directly affect how it should poll and consume results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, and every clause in the long enumeration conveys distinct, useful information about a returned field. It is a dense run-on list rather than cleanly structured prose, but nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only one input param, the description carries responsibility for explaining what comes back, and it does so field-by-field (step enum values, progress scale, eta sources, cost, expiring URL). Combined with the resume_job handoff for failed jobs, an agent has enough to call it and interpret results 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?
There is a single parameter with 100% schema description coverage ('Job id returned by transcribe or burn_captions'), so the schema already carries the semantics. The description adds nothing about jobId itself, which is the baseline case for a high-coverage single-param 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?
Opens with a specific verb+resource ('Read any job') and immediately scopes it as a single-job lookup by id, which implicitly separates it from the batch-oriented list_jobs sibling. It doesn't name list_jobs explicitly, so the differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real operational guidance: 'pollAfterSeconds (wait that long before the next poll)' tells the agent how to poll, and 'A failed caption job with resumable:true can be restarted with resume_job' names a sibling and the exact condition for switching to it. It lacks an explicit statement of when to use list_jobs instead, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reviewGet reviewARead-onlyIdempotentInspect
Free. Status of a review from request_review: awaiting_review, approved (burnJobId and burnJob with the video URL when done), rejected (note says why; nothing charged), or expired.
| Name | Required | Description | Default |
|---|---|---|---|
| reviewId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, yet the description still adds real value: 'Free' (no credits consumed by polling), the full enumeration of terminal states, that rejection charges nothing, and that approval carries burnJobId plus a video URL. It does not state auth or rate-limit behavior, but the state machine disclosure is the useful part here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the cost signal ('Free.') and then the outcome branches. Every clause carries distinct information; the parentheticals are compact rather than wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by enumerating all four states and their payloads. What's missing is minor: how to obtain reviewId and what to do with a burnJobId once returned.
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 0% for the single reviewId parameter, so the schema alone gives no guidance. The description only indirectly signals provenance by tying the review to request_review, which lets an agent infer the ID comes from that call's response, but it never says so outright or states the ID format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (a review's status) and its origin ('from request_review'), which cleanly separates it from the sibling request_review that creates the review. The verb is implicit ('get status') rather than explicit, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from request_review' implies the polling flow: call request_review, then call this to check status. There is no explicit when-to-use statement, no polling cadence, and no note about whether to prefer get_job instead once a burnJobId exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_style_referenceCaption style referenceARead-onlyIdempotentInspect
Free, no key. Every caption style field (font, colors, stroke, background, shadow, position, animation, motion, reveal mode, wordStateStyles, wordHighlights rules, smartEmphasis, segmentColorCycle, caption forms, faceAvoid) with type, allowed values or range, a description and JSON examples. Use it before styleOverrides, highlightWords, save_custom_preset or validate_preset_style. To see styles on the actual video for free, call style_preview.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), and the description adds the cost/auth fact the annotations cannot express: 'Free, no key.' It also discloses the shape of what comes back — type, allowed values or range, description, JSON examples — which is genuinely useful since there is no output schema. It stops short of saying how the response is structured or how large it is.
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 lead is front-loaded and high-value ('Free, no key'), and every clause carries information. The long field enumeration is dense but purposeful for a reference tool. The only friction is that it reads as two run-on sentences rather than cleanly separated intent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description bears the burden of describing the payload, and it does so by listing the covered fields and their per-field metadata. What is missing is the response envelope — whether it returns one JSON object, a keyed map, or prose — which an agent preparing to parse the result would want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema has nothing to document and the baseline is 4. There is no argument semantics left for the description to carry, and it correctly spends no words on parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource — the caption style field reference — and enumerates exactly what it covers (font, colors, stroke, background, wordStateStyles, smartEmphasis, caption forms, faceAvoid). It also explicitly separates itself from the visual sibling by pointing to style_preview for on-video rendering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit prerequisite chain: call this before styleOverrides, highlightWords, save_custom_preset, or validate_preset_style. It also names an alternative (style_preview) and the condition that selects it (see styles on the actual video). Both when-to-use and which-alternative are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_upload_statusUpload status (resume)ARead-onlyIdempotentInspect
Free. For a multipart upload: state (uploading, completed, aborted), completedParts, missingParts, bytesReceived. Use it to resume an interrupted upload: PUT only the missing parts (same urls as create_multipart_upload), then complete_upload.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | fileId from create_multipart_upload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as read-only, idempotent, non-destructive, and closed-world. The description adds useful behavioral context beyond those annotations, including cost ('Free'), the returned status fields, and the resume workflow.
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 tight sentences with no wasted language, front-loading cost and returned fields before the resume workflow. Every sentence contributes directly to correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return values; it does so by enumerating state, completedParts, missingParts, and bytesReceived. For a one-parameter status tool, that is complete enough to support the resume workflow it describes.
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%, and fileId is already documented as coming from create_multipart_upload. The description references create_multipart_upload URLs but does not add meaningful semantics for the single parameter beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific resource and returned information: state, completedParts, missingParts, and bytesReceived for a multipart upload. It also distinguishes the tool's role by tying it to resuming interrupted uploads and naming create_multipart_upload and complete_upload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly scopes usage to resuming an interrupted upload and gives the next steps: PUT only missing parts using the same URLs then call complete_upload. It does not state when not to use this tool or explicitly contrast it with abort_upload.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageGet usageARead-onlyIdempotentInspect
30-day credit usage for this key, or for the whole account when the key has been claimed. Splits transcription and server burn. from and to are unix milliseconds.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| from | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds useful context beyond annotations: the 30-day window, key-vs-account scope, and the transcription/server burn split. It does not describe rate limits or full return shape, but the added behavioral detail is substantial.
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 concise sentences with no wasted text. The scope and key data are front-loaded, followed by the split and parameter units.
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 usage tool with no output schema, the description covers the essential window, scope, split, and parameter units. It is slightly incomplete because it does not clarify the default date-range behavior when from/to are omitted or what the response structure looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It correctly documents that from and to are unix milliseconds, which is valuable. However, it does not explain default behavior when these optional parameters are omitted, nor whether from/to override or refine the 30-day window.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and scope: 30-day credit usage for the current key or for the whole account when the key has been claimed. It also specifies that the data splits transcription and server burn. It does not explicitly distinguish itself from sibling tools such as get_balance, so it is clear but not sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the data scope but gives no explicit guidance on when to use this tool versus get_balance or other sibling tools. The only conditional statement is about account-level scope when the key has been claimed, not about when to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_urlImport from URLAInspect
Free. Download a public video or audio link into AwesomeVideo and get a fileId (same as create_upload), without downloading it yourself. Accepts direct https/http file links (chat attachment URLs, CDNs, S3 presigned URLs), Google Drive share links (large-file confirm page handled), Dropbox share links, and OneDrive links. Up to 2048 MB when the host sends Content-Length (streamed to storage), 80 MB otherwise (422 limit_exceeded, charged:false). YouTube, TikTok, and Instagram links are refused with 422: upload the file instead. Private, local, and non-standard-port addresses are blocked. Up to 30 per hour. caption_video accepts sourceUrl directly, so you only need this to reuse one file across several tools.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public link to the file. | |
| filename | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations, which only declare openWorldHint and non-idempotency. The description discloses cost ('Free'), size ceilings tied to Content-Length (2048 MB vs 80 MB), the 422 limit_exceeded code with charged:false, SSRF-style address blocking, and a 30/hour rate limit — exactly the operational facts an agent cannot infer.
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?
Purpose and the create_upload equivalence are front-loaded, then constraints in descending importance. Dense but waste-free; the single unbroken paragraph mixes limits, errors, and routing advice, which costs some scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A mutation tool with no output schema, so the description carries the burden — and it does: return value (fileId), cost semantics, failure modes, and rate limits are all covered. Nothing needed to call it correctly is missing.
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 50%: url is documented, filename is not. The description compensates richly for url by enumerating accepted link classes (direct http(s), Drive share links with large-file confirm pages handled, Dropbox, OneDrive) and rejected ones. It says nothing about filename, leaving that half of the gap unfilled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (download a public link into the platform) and immediately anchors the result: 'get a fileId (same as create_upload)'. This lets an agent distinguish it from create_upload, upload_base64, and caption_video without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when/when-not: use this only to reuse one file across several tools, because 'caption_video accepts sourceUrl directly'. It also names the excluded cases (YouTube/TikTok/Instagram) and prescribes the alternative ('upload the file instead').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audio_visualsAudio visualizer catalogBRead-onlyIdempotentInspect
Free, no key. The audio visualizers caption_video and burn_captions draw for audio-only input (mp3, m4a, wav...): 10 variants with every config field and its default, the bars presets, frame sizes per aspect, and pricing (same as the burn). Pass the chosen look as audioVisual; style_preview with audioVisual shows it free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, destructiveHint=false. The description adds real content beyond that: 'Free, no key,' which tells the agent there is no auth or credit cost, plus an inventory of what the payload contains. It stops short of describing response shape, but the 'free, no key' disclosure is genuinely useful non-annotation 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?
It is front-loaded with 'Free, no key,' which is good, but the remainder is a dense run-on: '10 variants with every config field and its default, the bars presets, frame sizes per aspect, and pricing (same as the burn).' Jargon like 'the bars presets' and 'same as the burn' requires rereading. Little fat, but poor parseability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no input params and no output schema, the description carries the full burden of explaining what comes back. It lists categories of content (variants, defaults, presets, frame sizes, pricing) but not the shape or format of the response, leaving the agent to guess how to consume it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to disambiguate. The audioVisual and style_preview references describe how to consume the result in other tools, not params here, and they add a small amount of useful connective tissue.
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 never states outright that this tool returns the visualizer catalog. The clearest fragment, '10 variants with every config field and its default, the bars presets, frame sizes per aspect, and pricing,' is a noun phrase with no verb, so purpose is inferred from the name. It does distinguish itself from siblings by naming caption_video, burn_captions, and style_preview, which helps.
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?
'Pass the chosen look as audioVisual' implies you call this first when running caption_video or burn_captions on audio-only input, and 'style_preview with audioVisual shows it free' implies a preview alternative. But neither the workflow nor any exclusion is spelled out explicitly. The agent has to reconstruct the call sequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_brand_presetsList brand presetsBRead-onlyIdempotentInspect
Font, color, position, and optional logo saved for this key, or for the account when the key is claimed. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: results are scoped to the key, or to the whole account once the key is claimed, and the operation is free (no credit cost). Only the return shape/pagination is unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the scoping rule is stated early. The phrasing is telegrammatic ('Free.') and the missing verb makes it slightly harder to parse than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param list tool with no output schema, the agent still doesn't know what a returned preset record looks like or how it differs from custom presets. Annotations carry safety, but the description should have clarified the list-vs-custom-preset distinction.
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?
Zero parameters, so the baseline is 4. The description does add implicit scoping semantics — results depend on whether the key is claimed — which is useful context even though there is no parameter to document.
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 names the resource contents (font, color, position, logo) but never states the verb — an agent must infer from the name that this returns a list. It also does not distinguish itself from sibling list_presets, list_custom_presets, or get_custom_preset, which overlap heavily.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no mention of alternatives. With four preset-related sibling tools (list_presets, list_custom_presets, get_custom_preset, get_style_reference), the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_custom_presetsList custom presetsARead-onlyIdempotentInspect
Free. Your saved custom caption presets (full style JSON) with their community review status if submitted (pending, approved, rejected).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful context beyond them: the call is free, the payload contains the full style JSON, and the review status can be pending/approved/rejected. It doesn't say whether presets are ordered or paginated, a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no waste, front-loaded with the cost signal and the resource. The 'Free.' fragment is slightly abrupt but carries real decision value for a paid API.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of characterizing the return value (style JSON plus review status) and confirmation that the call is free and argument-free. Only secondary details like list ordering or volume limits are absent, which is acceptable for a simple listing 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?
Zero parameters, so the baseline is 4; the schema is empty and fully described. The description correctly implies the call needs no inputs, matching the empty object 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?
States the specific resource (the user's saved custom caption presets) and what is returned (full style JSON plus community review status with enum values). The word 'custom' implicitly separates it from list_brand_presets/list_presets, but it never names those siblings explicitly, so an agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives in a cluster of related tools (list_presets, list_brand_presets, get_custom_preset). The only contextual cue is 'Free' and 'Your saved', leaving the agent to reason out that this is the zero-argument listing of user-owned presets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_jobsList jobsARead-onlyIdempotentInspect
Recent transcription and burn jobs for this key, or for every key on the account when this key is claimed. Includes a download URL while the result is still available.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds genuinely new behavior — results widen to all account keys when the key is claimed, and the download URL is ephemeral ('while the result is still available'). It says nothing about ordering beyond 'recent' or the pagination model the cursor implies.
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, zero waste, with the scope rule front-loaded and the ephemeral-URL caveat second. Nothing is repeated from the title or annotations.
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 read-only list tool with annotations covering safety and no output schema, the description covers scope and the notable download-URL caveat, but leaves the response shape (job fields, ordering) and all pagination behavior unexplained. Adequate to call, thin on how to page through or interpret results.
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?
Both parameters (limit, cursor) have zero schema description coverage and are never mentioned in the description. An agent gets no default page size, no maximum (100 is only in the schema), and no explanation of cursor semantics or whether 'recent' means a bounded time window — a real gap at 0% 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?
States a clear verb ('list') plus the resource ('transcription and burn jobs') and even scopes the result set by key ownership. It never names the closest sibling, get_job, so an agent must infer on its own that get_job returns a single job rather than a collection.
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 context ('recent jobs') implies when to call it and the paid-key scope note hints at account-level behavior, but there is no explicit 'use X instead when Y'. In particular, nothing routes the agent to get_job for a specific job's details or status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_platformsList platformsARead-onlyIdempotentInspect
Free, works without a key. Platforms you can pass as platform to burn_captions, shorts, preview, prepare_client_burn, and plan: id, name, aliases, expected aspect, and safe-zone margins (fractions of the frame covered by the app's UI) with the source. Use it to map what the user said ("para Reels", "for YouTube Shorts") to an id.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered; the description adds genuinely new context: 'Free, works without a key', which tells the agent no authentication is required. It also discloses the return shape including the meaning of safe-zone margins, though it says nothing about result size or ordering.
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?
Cost/auth information is front-loaded and the usage instruction comes last, so the structure is sensible. The middle sentence is dense with a nested parenthetical about safe-zone margins, which costs some readability but every clause carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the job of describing the return fields and does so, and it covers cost, auth, and downstream consumers. What remains unstated (ordering, whether the list is exhaustive) is minor for a small static enumeration 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?
The tool takes zero parameters, so there is no parameter semantics to explain; the baseline of 4 applies. The description instead spends its words on the response fields, which is the right allocation for a no-arg tool.
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 (list) and resource (platforms), then enumerates the returned fields (id, name, aliases, expected aspect, safe-zone margins) so the agent knows exactly what the payload contains. It also names the consumer tools (burn_captions, shorts, preview, prepare_client_burn, plan), which separates it from the similarly named list_presets and list_voices siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the concrete trigger: 'Use it to map what the user said ("para Reels", "for YouTube Shorts") to an id', and it identifies which downstream tools accept the resulting value. That gives the agent both the when-to-use condition and the reason the output matters, leaving little to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presetsList presetsARead-onlyIdempotentInspect
Free. List built-in AwesomeVideo caption presets, community presets that have been approved, and (with a key) your own saved custom presets (source custom, id custom:cp_...). Preset style JSON is the same document the web editor stores; copy one as a starting point for save_custom_preset. Also returns fonts: the bundled font families allowed in custom and brand presets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds non-obvious behavior beyond that: the call is free, results are scoped by API key presence, the returned style document matches what the web editor stores, and fonts are returned as a side output. Only the exact response shape/pagination is left unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the cost ('Free.') and the three result categories, then adds the handoff to save_custom_preset and the fonts note. Dense but every clause carries information; the parenthetical 'source custom, id custom:cp_...' is slightly jargon-heavy but functional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must convey returns — and it does describe three preset categories, the style-document format, the id convention, and the fonts collection. Complete enough to invoke correctly; only finer details (ordering, pagination, per-preset fields) remain unstated, which is acceptable for a zero-param read 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?
With zero declared parameters the baseline is 4, and the description adds relevant semantic context by explaining that output contents depend on whether the caller supplies a key. No invented parameters or misleading nomenclature.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource set: it lists built-in, community-approved, and (key-dependent) custom presets, plus bundled font families. That is clear and more specific than the title. It never mentions the sibling tools list_custom_presets / list_brand_presets, which overlap with the custom/brand preset portion, so the agent has to infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real usage context: copy a returned style JSON 'as a starting point for save_custom_preset', and notes that custom presets only appear 'with a key'. It stops short of stating when to prefer this over list_custom_presets or list_brand_presets, so routing among near-duplicate siblings is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_voicesList dub voicesARead-onlyIdempotentInspect
Free, works without a key. The dub voice catalog: id, language, tier (basic 5 credits/min, standard 12), provider, gender, default, creditsPerMinute, and sampleUrl (a short MP3 to listen to before choosing). Filter by language (ISO 639-1) and tier. Pass an id as voice to dub or plan; omit voice for the default.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | ||
| language | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds value beyond that with pricing semantics (basic 5 credits/min, standard 12), the keyless/free call model, and the purpose of sampleUrl for auditioning before choosing.
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 dense sentences: cost/free access first, then the catalog fields, then filtering and downstream use. Nothing is repeated from the schema and every clause adds 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?
With no output schema, the description fully documents the return shape, and it also covers the default-voice behavior and pricing relevant to choosing a voice. Nothing an agent needs to select or call this tool correctly is missing.
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 0%, so the description must carry the parameter burden, and it does: language is specified as ISO 639-1, and the tier enum values are qualified with their credit cost. Only the absence of examples or default-filter behavior keeps it from a 5.
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 names a specific resource (the dub voice catalog) and enumerates the exact fields returned (id, language, tier, provider, gender, default, creditsPerMinute, sampleUrl), which cleanly separates it from siblings like list_presets or list_custom_presets. An agent knows precisely what it gets back before calling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete downstream guidance: 'Pass an id as voice to dub or plan; omit voice for the default,' and states the tool is free and keyless. It doesn't explicitly name a contrasting sibling it should be preferred over, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
planPlan a jobARead-onlyIdempotentInspect
Free, works without a key, never charges. Price a whole pipeline before running it and check it against the limits. steps: ordered ops (caption = the one-call caption_video, with optional translateTo; transcribe, translate, burn with renderer server|client, shorts with count/minSeconds/maxSeconds/reframe (face|center, same price), trim with keepSeconds, preview, dub with targetLanguage/voiceTier/sourceLanguage). A transcribe step is added automatically when a later step needs a transcript (set hasTranscript if you already have one), and a translate step before dub (set hasTranslation if you have the target-language lines). An unsupported dub language or voice tier shows up in limitViolations. source: durationSeconds, bytes, via (upload|url), transcriptCues, or mediaUrl (only a HEAD request reads its size; nothing is downloaded). Returns steps with credits, totalCredits, totalUsd, freeAlternatives (client burn is free), feasible, and limitViolations [{code, limit, actual, unit, message, hint}]. With a key it also returns your balance and whether it is enough. Paid tools return limit_exceeded with the same violations before charging.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes | ||
| source | No | ||
| hasTranscript | No | ||
| hasTranslation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: no key required, no charge, no download (mediaUrl is HEAD-only), auto-inserted transcribe/translate steps, and unsupported dub languages surfacing in limitViolations rather than erroring. The only ambiguity is what happens when the plan itself is unusable — it implies violation reporting but doesn't say if the call still succeeds.
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 free/no-key/no-charge constraint is correctly front-loaded, and little is pure filler, but the steps sentence is a single 60-word clause pile that is hard to scan. A short bulleted op-to-parameter mapping would carry the same content with far less parsing cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description enumerates the return shape well (steps with credits, totalCredits, totalUsd, freeAlternatives, feasible, limitViolations with code/limit/actual/unit/message/hint) and the balance behavior when a key is present. Completeness is only dented by the unmentioned voice parameter and style_preview op.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden and mostly does: it maps sub-parameters to ops (count/minSeconds/maxSeconds/reframe for shorts, keepSeconds for trim, renderer for burn, targetLanguage/voiceTier/sourceLanguage for dub) and explains source.durationSeconds/bytes/via/transcriptCues/mediaUrl plus hasTranscript/hasTranslation. Gaps remain: the 'voice' string parameter and the 'style_preview' op appear in the schema but are never mentioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Price a whole pipeline before running it and check it against the limits.' Immediately distinguishes itself from the execution siblings (caption_video, burn_captions, dub) by being the dry-run cost/feasibility check, and the opening 'Free, works without a key, never charges' reinforces that it is non-executing.
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?
Explicit about the timing: price before running, and the note that 'Paid tools return limit_exceeded with the same violations before charging' tells the agent what this buys them. It does not name the nearest alternative (quote or batch), so the agent must infer which of the two pricing paths applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_client_burnPrepare client burnARead-onlyIdempotentInspect
Build an ASS subtitle script from an AwesomeVideo preset without starting ffmpeg. Cost is zero and nothing is debited. This is the seam for a future client-side or WebMCP renderer that burns captions in the user's browser. Pass subtitles or a transcription job id and a preset id or name. Optional width and height set PlayRes; the default is 1280x720.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| height | No | ||
| preset | No | ||
| autoFit | No | Default true: caption size, words per caption (4 on 9:16, 5 on 1:1, 7 on 16:9), and a default safe zone follow the video shape, so text reads the same at 720p and 1080p and stays clear of app UI. Pass false only when the user wants the preset's exact fixed pixel sizes. Same price. | |
| platform | No | Where the video will be posted: tiktok, instagram_reels, youtube_shorts, facebook_reels, snapchat_spotlight, linkedin, youtube, x (aliases like reels, instagram, shorts, snap, twitter; case-insensitive). Keeps captions out of that app's buttons and text. If the user says "para TikTok" / "for Reels", pass it; if they did not say and it matters, ask. Same price. Unknown values return 422 invalid_platform before any charge. See list_platforms. | |
| presetId | No | ||
| faceAvoid | No | true = move captions off faces (samples faces at 2 fps, same price; result.faceAvoid.faceLayout). Shortcut for styleOverrides.faceAvoid. | |
| subtitles | No | ||
| presetName | No | ||
| highlightColor | No | #RRGGBB for highlightWords. Default #FACC15. | |
| highlightWords | No | Shortcut: words or phrases to color in every caption (accent/case-insensitive), e.g. ["AwesomeVideo", "gratis"]. Maps to styleOverrides.wordHighlights rule {id:"custom", words, color}. Same price. | |
| styleOverrides | No | Per-call style changes deep-merged onto the preset (same fields as list_presets style; null removes a field), validated with the renderer schema and bundled fonts. Example {"fontSize":72,"maxWordsPerCaption":2,"wordEntrance":"bounce"}. Same price. No need to save_custom_preset. Every field with examples: get_style_reference. | |
| transcriptionJobId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, and the description adds genuinely new behavior: zero cost, nothing debited, ffmpeg never started, and it is a seam for a future client-side renderer. It stops short of describing what comes back (raw script text vs. a reference/URL) or whether a job/ID is created.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the artifact and the zero-cost guarantee before the renderer rationale. The "seam for a future WebMCP renderer" sentence is useful positioning but is the weakest use of space relative to the missing return-value information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter tool with a nested styleOverrides object and no output schema, the description leaves the response shape undefined — an agent cannot tell whether it receives the ASS text, a file reference, or a job id. Cost and no-ffmpeg behavior are well covered, so it is adequate but with a clear 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 coverage is only 46%, but the description compensates on the two axes that matter: the subtitle source (inline subtitles vs. transcriptionJobId) and the preset reference (id or name), plus the undocumented PlayRes default of 1280x720 for width/height. It does not clarify whether any of the 13 params are required or how the id/name pairs interact on conflict.
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?
"Build an ASS subtitle script from an AwesomeVideo preset without starting ffmpeg" gives a specific verb and artifact, and the ffmpeg/cost framing implicitly separates it from the server-render sibling (burn_captions). The sibling is never named, so an agent still has to infer which tool does the actual burn.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says what to pass (subtitles or transcriptionJobId plus preset id or name) and hints at the client-side/browser use case, which implies when to prefer it. There is no explicit "use X instead when you want server-side rendering" exclusion, and no note about the mutually exclusive parameter combinations an agent must choose between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
previewPreviewCIdempotentInspect
A still PNG or a clip of at most 5 seconds with the chosen preset. Flat price, at most 1 credit by default. Does not bill the full media duration.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| fileId | No | ||
| preset | No | ||
| autoFit | No | Default true: caption size, words per caption (4 on 9:16, 5 on 1:1, 7 on 16:9), and a default safe zone follow the video shape, so text reads the same at 720p and 1080p and stays clear of app UI. Pass false only when the user wants the preset's exact fixed pixel sizes. Same price. | |
| mediaUrl | No | ||
| platform | No | Where the video will be posted: tiktok, instagram_reels, youtube_shorts, facebook_reels, snapchat_spotlight, linkedin, youtube, x (aliases like reels, instagram, shorts, snap, twitter; case-insensitive). Keeps captions out of that app's buttons and text. If the user says "para TikTok" / "for Reels", pass it; if they did not say and it matters, ask. Same price. Unknown values return 422 invalid_platform before any charge. See list_platforms. | |
| presetId | No | ||
| atSeconds | No | Second of the video for the frame (or clip start). Default 0. | |
| faceAvoid | No | true = move captions off faces (samples faces at 2 fps, same price; result.faceAvoid.faceLayout). Shortcut for styleOverrides.faceAvoid. | |
| subtitles | No | ||
| maxCredits | No | ||
| clipSeconds | No | ||
| brandPresetId | No | ||
| highlightColor | No | #RRGGBB for highlightWords. Default #FACC15. | |
| highlightWords | No | Shortcut: words or phrases to color in every caption (accent/case-insensitive), e.g. ["AwesomeVideo", "gratis"]. Maps to styleOverrides.wordHighlights rule {id:"custom", words, color}. Same price. | |
| styleOverrides | No | Per-call style changes deep-merged onto the preset (same fields as list_presets style; null removes a field), validated with the renderer schema and bundled fonts. Example {"fontSize":72,"maxWordsPerCaption":2,"wordEntrance":"bounce"}. Same price. No need to save_custom_preset. Every field with examples: get_style_reference. | |
| transcriptionJobId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-destructive, idempotent, open-world behavior, but they say nothing about cost. The description fills that gap precisely: flat price, at most 1 credit by default, and explicitly not billing full media duration, plus the 5-second clip cap. It still omits whether the call is synchronous or returns a job to poll, which is a real gap given the get_job/resume_job siblings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, output form and price front-loaded, no filler. The opening is a sentence fragment with no verb, which slightly undercuts the front-loading, but every sentence contributes information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter rendering tool with no output schema, the description is far too thin. It does not describe what is returned (asset URL? job id?), whether the result must be polled, how the two input modes (fileId vs mediaUrl) differ, or how a preset is chosen without knowing presetId semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 17 parameters and only 41% schema description coverage, the description carries a heavy compensation burden but adds meaning for only two things: the preset selection and the 5-second cap on clipSeconds. It says nothing about mode, fileId vs mediaUrl, platform, atSeconds, maxCredits, or transcriptionJobId, so more than half the surface is undocumented in both places.
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 names the output artifact (a still PNG or a ≤5s clip rendered with the chosen preset) but never states a verb or what it operates on (a video via fileId/mediaUrl). Against siblings like style_preview and burn_captions it does not explain how this preview differs from those, so an agent must infer the distinction from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement, no prerequisites, and no named alternative. The presence of style_preview and burn_captions in the sibling list makes the omission costly: the agent is left to guess whether 'preview' is a cheap pre-render check or a styling dry run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quoteQuoteARead-onlyIdempotentInspect
Free. Cents (credits) a job would cost, without charging. Works without a key when you pass operation and durationSeconds. With a key you can pass fileId or mediaUrl instead and the duration is probed. Operations: caption (caption_video: transcribe+burn 5/min, +2/min with translateTo), transcribe 1/min, burn 4/min, preview 1 flat, translate 2/min, shorts 6 per source min, trim 3 per kept min (a media quote for trim is an upper bound), dub 5/min basic or 12/min standard voice per target language (the quote adds transcription and translation and shows a breakdown).
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | No | ||
| mediaUrl | No | ||
| operation | Yes | ||
| voiceTier | No | dub only. | |
| translateTo | No | caption only: include translation in the price. | |
| targetLanguage | No | dub only. Checked against the supported voices. | |
| durationSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already say readOnly/idempotent/non-destructive, and the description goes well beyond them: it discloses that nothing is charged, that it works unauthenticated in one mode, that duration is probed from media in the other, per-operation pricing units, and the caveat that a trim media quote is an upper bound. These are exactly the behavioral facts an agent needs before calling a pricing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the single most important fact ('Free'), then prerequisites, then a per-operation rate table. Dense but every clause carries pricing or invocation information; the semicolon-chained rate list is harder to scan than it could be but nothing is 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?
Seven parameters, no output schema, and the description does explain the unit of the return value (cents/credits) plus that dub quotes include a breakdown. It stops short of describing the general response shape or what an unknown/failed probe returns, which matters given the media-probing mode.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 43% schema description coverage, the description carries most of the burden and mostly does: it explains the durationSeconds vs fileId/mediaUrl tradeoff, ties voiceTier to dub (basic vs standard), translateTo to caption, and targetLanguage to dub. Gap: the enum value 'style_preview' is present in the schema but never mentioned, and fileId vs mediaUrl is not distinguished from each other.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific, unambiguous statement of what the tool does: returns cents/credits a job would cost without charging. That distinguishes it from the execution siblings (caption_video, dub, transcribe) which actually spend credits. It never names the potentially confusable sibling 'plan', so differentiation from that one is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete invocation contexts: no key needed if you pass operation + durationSeconds, keyed usage allows fileId or mediaUrl with duration probed automatically. That is real when/how guidance. It does not state when to prefer this over plan or when a quote is unnecessary (e.g., already knowing the rate), so no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_silencesRemove silences and filler wordsAIdempotentInspect
Paid: 3 credits per kept minute, plus 4 per kept minute with burnCaptions (same as burn_captions). Removes silences and filler words from a talking video and returns the cut MP4, retimed SRT/VTT/JSON captions, and stats (sourceSeconds, keptSeconds, removedSeconds, cuts, fillersRemoved). Needs a transcript: pass transcriptionJobId (from transcribe or caption_video) or subtitles. Silences: gaps between words over silenceGapSeconds (default 0.5 s) are cut, keeping paddingSeconds (default 0.08 s) on each side; ffmpeg silencedetect (silenceNoiseDb, default -35) also cuts long pauses inside word timings (detectSilences:false to skip). Fillers (default fillerMode 'clear'): uh, um, er, ah, eh, ehm, em, hmm, mm, and Spanish 'este' only when said on its own. fillerMode 'aggressive' also cuts like, you know, I mean, basically, kind of, sort of, o sea, bueno, pues, digamos, tipo, como que, a ver, only when they stand alone (comma or pause). fillers adds words or phrases; keepFillers keeps some; removeFillers:false keeps all. Every cut gets a short audio fade so joins do not click. burnCaptions:true burns the retimed captions in the same job with preset/brandPresetId/platform/autoFit (same renderer as burn_captions). Billed on the kept duration.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | No | ||
| preset | No | With burnCaptions: preset id or name (or custom:cp_...). Default Clarity. | |
| autoFit | No | ||
| fillers | No | Extra fillers to always cut, words or phrases. | |
| mediaUrl | No | ||
| platform | No | With burnCaptions: tiktok, reels, shorts, ... for safe zones. | |
| faceAvoid | No | true = move captions off faces (samples faces at 2 fps, same price; result.faceAvoid.faceLayout). Shortcut for styleOverrides.faceAvoid. | |
| quoteOnly | No | Free: return the price for durationSeconds without starting a job or charging (upper bound: every second kept). | |
| subtitles | No | ||
| fillerMode | No | ||
| maxCredits | No | ||
| keepFillers | No | Fillers to keep, e.g. ['like']. | |
| burnCaptions | No | Burn the retimed captions in the same job. | |
| brandPresetId | No | ||
| removeFillers | No | ||
| detectSilences | No | Default true: ffmpeg silencedetect also cuts long pauses. | |
| highlightColor | No | #RRGGBB for highlightWords. Default #FACC15. | |
| highlightWords | No | Shortcut: words or phrases to color in every caption (accent/case-insensitive), e.g. ["AwesomeVideo", "gratis"]. Maps to styleOverrides.wordHighlights rule {id:"custom", words, color}. Same price. | |
| paddingSeconds | No | Kept on each side of a cut. Default 0.08. | |
| silenceNoiseDb | No | Silence threshold in dB. Default -35. | |
| styleOverrides | No | Per-call style changes deep-merged onto the preset (same fields as list_presets style; null removes a field), validated with the renderer schema and bundled fonts. Example {"fontSize":72,"maxWordsPerCaption":2,"wordEntrance":"bounce"}. Same price. No need to save_custom_preset. Every field with examples: get_style_reference. | |
| durationSeconds | No | Source length for quoteOnly. | |
| silenceGapSeconds | No | Cut pauses longer than this. Default 0.5. | |
| transcriptionJobId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses pricing and billing basis, returned outputs and stats, the transcript requirement, fade-on-cut behavior, and how optional caption burning reuses the burn_captions renderer. These are material behavioral details for a paid media-processing job.
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 dense but front-loads cost, output, and transcript requirements before moving into silence and filler mechanics. The length is largely justified by 24 parameters, though the long single block could be easier to scan with clearer segmentation.
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 24-parameter tool with no output schema, the description is sufficiently complete: it enumerates the return artifacts and stats, states the transcript requirement, explains billing, and covers the main processing modes. Remaining gaps are covered by schema descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 63%, the description compensates substantially by explaining defaults and effects for silenceGapSeconds, paddingSeconds, silenceNoiseDb, fillerMode, fillers/keepFillers/removeFillers, burnCaptions, transcriptionJobId, and subtitles. It leaves source selection (fileId/mediaUrl), maxCredits, quoteOnly, highlightWords, faceAvoid, and styleOverrides mostly to the schema, so it is strong but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: removes silences and filler words from a talking video. It distinguishes itself from burn_captions by making caption burning optional and by requiring a transcript, and it names the returned artifacts, so an agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the transcript prerequisite (transcriptionJobId from transcribe or caption_video, or subtitles) and explains several behavioral switches such as detectSilences:false, removeFillers:false, and fillerMode 'aggressive'. It does not explicitly compare the tool against trim or burn_captions for adjacent use cases, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_reviewRequest human review before burningAInspect
Free. Use when the person wants to check the captions before they are burned (e.g. 'quiero revisarlo antes', 'déjame revisar los subtítulos', 'let me check it first', names, slang or brand words that must be right). Pass a finished transcriptionJobId (from transcribe) and the preset or brandPresetId for the burn. Returns reviewUrl: a private link to the AwesomeVideo web editor, valid up to 7 days, no login, scoped to this one video. Send the link to the person. They fix text and timing, preview, and press Approve (or Reject with a note). Only on Approve does burn_captions run and charge (4 credits/min, the same as burn_captions); the review itself and the waiting are free. Poll get_review (status awaiting_review -> approved -> burnJob.status succeeded) or pass webhookUrl / notifyEmail: you then get signed events review.approved (burnJobId), review.rejected (note) and review.expired, once each, and the usual job.succeeded when the burned video is ready. Reviewers can add terms to the saved glossary from the editor.
| Name | Required | Description | Default |
|---|---|---|---|
| preset | No | Preset id or name for the burn after approval. | |
| autoFit | No | Default true: caption size, words per caption (4 on 9:16, 5 on 1:1, 7 on 16:9), and a default safe zone follow the video shape, so text reads the same at 720p and 1080p and stays clear of app UI. Pass false only when the user wants the preset's exact fixed pixel sizes. Same price. | |
| combined | No | Also return SRT/VTT with the burned MP4. | |
| platform | No | Target platform (tiktok, reels, shorts, ...) for safe-zone placement, when supported by burn_captions. | |
| faceAvoid | No | true = move captions off faces (samples faces at 2 fps, same price; result.faceAvoid.faceLayout). Shortcut for styleOverrides.faceAvoid. | |
| maxCredits | No | Refuse the burn on approval if it would exceed this many cents. | |
| webhookUrl | No | Gets review.approved / review.rejected / review.expired events and the burn job result when it finishes. | |
| notifyEmail | No | ||
| instructions | No | Shown to the reviewer, e.g. 'Revisa nombres de productos'. | |
| brandPresetId | No | ||
| expiresInDays | No | Default 7. | |
| highlightColor | No | #RRGGBB for highlightWords. Default #FACC15. | |
| highlightWords | No | Shortcut: words or phrases to color in every caption (accent/case-insensitive), e.g. ["AwesomeVideo", "gratis"]. Maps to styleOverrides.wordHighlights rule {id:"custom", words, color}. Same price. | |
| styleOverrides | No | Per-call style changes deep-merged onto the preset (same fields as list_presets style; null removes a field), validated with the renderer schema and bundled fonts. Example {"fontSize":72,"maxWordsPerCaption":2,"wordEntrance":"bounce"}. Same price. No need to save_custom_preset. Every field with examples: get_style_reference. | |
| transcriptionJobId | Yes | Succeeded transcribe job id. Its media must still be stored (48 h). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations: discloses the cost model (free review and waiting, charge only on approve at 4 credits/min, same as burn_captions), link constraints (private, up to 7 days, no login, scoped to one video), the reviewer's capabilities (edit text/timing, approve/reject with note, add glossary terms), and event semantics (review.approved/review.rejected/review.expired delivered once each, plus job.succeeded). Nothing here contradicts readOnlyHint=false / destructiveHint=false.
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?
High information density with no filler — price, trigger, mechanics, and follow-up path are all load-bearing. The one knock is structure: everything is packed into a single run-on paragraph mixing pricing, link properties, and event semantics, so an agent must parse rather than 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?
For a 15-parameter, no-output-schema tool that gates a paid, irreversible burn behind a human approval, the description supplies everything needed: required input provenance, the returned reviewUrl, how to await the outcome, and what triggers the charge. No output schema is needed because the return value and event names are spelled out.
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 already 87%, so the schema carries most weight, but the description adds real meaning: transcriptionJobId must be a finished transcribe job, preset/brandPresetId govern the burn after approval, webhookUrl/notifyEmail bind to the named events, and the 7-day link lifetime clarifies expiresInDays. It doesn't touch maxCredits, autoFit, styleOverrides, or highlightWords specifics, which the schema handles well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: it creates a human review gate over captions before a burn, returning a reviewUrl. It explicitly separates itself from burn_captions ('Only on Approve does burn_captions run') and from get_review (polling status), so an agent can pick it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the trigger condition ('when the person wants to check the captions before they are burned') with multilingual example phrasings, and names the alternatives: burn_captions for the unconditional path, get_review / webhookUrl / notifyEmail for tracking the outcome. When-to-use and when-to-use-something-else are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_jobResume a failed caption jobAIdempotentInspect
Restart a failed job (caption_video, transcribe, create_clips, dub_video, trim/remove_silences, generate_metadata) from where it stopped. Long transcriptions are saved chunk by chunk (30 s pieces), so the resumed job transcribes only the missing chunks and you pay the original price minus the transcription minutes already done (1 credit/min). For caption_video a finished transcript (and translation) is reused, so usually only the burn is charged (4 credits/min). The failed job stays fully refunded. Idempotent: calling again returns the same resumed job, never a second charge. Returns a new job id; poll get_job. Example: resume_job {"jobId":""}. 422 resume_not_supported / resume_media_expired (charged:false): call the original tool again. 409 job_not_resumable with reason no_speech (charged:false): no speech was detected, so a resume would give the same result (transcribe jobs with no speech finish as succeeded with result.noSpeech:true and cost 0; caption/clips/metadata fail with error no_speech and resumable:false).
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | Id of the failed caption_video job. | |
| maxCredits | No | Refuse if resuming would cost more than this. | |
| webhookUrl | No | ||
| notifyEmail | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations: it discloses chunk-level billing (1 credit/min, only missing 30s chunks charged), that a finished transcript/translation is reused so caption_video usually only pays the 4 credits/min burn, that the failed job stays fully refunded, and that calls are idempotent with no second charge (confirming idempotentHint). It also names the error codes and whether they are charged, which an agent cannot infer from structured fields.
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 purpose and resumable-job list are front-loaded, and the pricing/idempotency/error details follow in a logical sequence. The no_speech parenthetical is quite dense and slightly over-elaborate, but nearly every sentence carries actionable 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?
Covers the return value indirectly ('Returns a new job id; poll get_job'), error codes, billing implications, and idempotency despite no output schema. The remaining gap is the unexplained webhookUrl/notifyEmail parameters, which is minor given the overall richness.
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 50%: jobId and maxCredits are documented in the schema, while webhookUrl and notifyEmail are undocumented in both places. The description adds an example call and enough billing context to make maxCredits meaningful, but it never explains the webhook/email parameters, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Restart') and resource ('a failed job'), enumerates exactly which job types are resumable (caption_video, transcribe, create_clips, dub_video, trim/remove_silences, generate_metadata), and clearly differs from siblings like get_job or caption_video. An agent can immediately tell this is the recovery path, not the creation path.
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?
Explicit when-to-use (a failed job) plus concrete routing for edge cases: 422 resume_not_supported/resume_media_expired means call the original tool again, and 409 job_not_resumable with reason no_speech explains that a resume would reproduce the same failure. These are genuine alternatives, not vague hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_brand_presetSave brand presetBRead-onlyIdempotentInspect
Save a font (one of the bundled fonts: Inter, Poppins, Oswald, Roboto, Anton, Bebas Neue, Playfair Display, Caveat, IBM Plex Mono), #RRGGBB color, position (top, center, bottom), and optional logoBase64 PNG, JPEG, or WebP. Free. Pass brandPresetId to burn_captions or preview.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| color | No | ||
| position | No | ||
| fontFamily | Yes | ||
| logoBase64 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, yet the description describes storing user-supplied data ('Save a font... optional logoBase64'), which is a persistent write. An agent reading both gets conflicting signals about whether the call mutates state. The title annotation ('Prepare client burn') also does not match the described behavior, compounding the confusion.
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?
Everything is packed into two sentences with no filler — the allowed-values list and the follow-up call are both actionable. The opening is field-enumeration rather than a scope statement, so it is dense but slightly back-loaded on the 'what am I creating' question.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should say what comes back; it only implies a brandPresetId exists by telling the caller to pass it onward. The required `name` field and any overwrite/idempotency behavior (what happens when saving a preset with an existing name) are absent, which matters for a tool whose annotations are already unreliable.
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 0%, so the description has to carry the load, and it does well: it lists the permitted font family values, the #RRGGBB color format, the three position values, and the accepted image encodings for logoBase64. The one gap is the required `name` parameter, which is never mentioned anywhere, leaving the caller to infer it.
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 enumerates exactly what gets stored (font, #RRGGBB color, position, optional logo) and names the downstream consumers (burn_captions, preview), so an agent knows the resource being created. It never states the noun directly — 'Save brand preset' is only implied by the name/title — and it never distinguishes itself from the sibling save_custom_preset, which is the main 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?
'Free. Pass brandPresetId to burn_captions or preview.' gives concrete downstream usage and cost, which is real guidance. But there is no statement of when to pick this over save_custom_preset, whether a preset must exist before burn_captions, or how to inspect saved presets (list_brand_presets).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_custom_presetSave custom caption presetARead-onlyIdempotentInspect
Free. Design and save your own full caption preset for this key (or the account when the key is claimed). Either pass style (the full document) or basePreset (e.g. 'hormozi-style', 'Clarity', or custom:cp_...) plus overrides (deep-merged; null removes a field). The style is validated with the same schema the renderer uses; invalid styles return 422 invalid_style with errors [{path, message}]. Returns id custom:cp_...: pass it as preset to burn_captions, caption_video, preview, shorts, prepare_client_burn, review or plan; server and browser renders are identical. Up to 50 presets, 20 KB each. Private until you call submit_custom_preset. Tip: get_style_reference lists every field with examples (wordHighlights rules, smartEmphasis, wordStateStyles); validate_preset_style and preview (one still) before a paid burn.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| style | No | Full caption style JSON, the same document list_presets returns in style and the web editor stores: fontFamily, fontWeight, fontSize (px at 720p), color, strokeWidth/strokeColor, backgroundEnabled/backgroundColor/backgroundOpacity/paddingX/paddingY/borderRadius, shadow*, position (top|center|bottom), margin, subtitleWidth, textTransform, letterSpacing, revealMode (none|full|progressive|word-by-word), animationEnabled + animation (Fade|Zoom In|Zoom Out|Slide Up|Slide Down), motion*, wordStateStyles {active|past|upcoming|future: partial style}, wordHighlights {rules,customLists}, smartEmphasis, segmentColorCycle. Unknown fields are rejected. fontFamily (also inside wordStateStyles) must be a bundled font: Inter, Poppins, Oswald, Roboto, Anton, Bebas Neue, Playfair Display, Caveat, IBM Plex Mono (list_presets returns fonts). Caption forms: maxWordsPerCaption 1-8 (1 = one big word at a time; wins over the autoFit words cap). activeWordReflow true = a scaled active word pushes neighbours aside. wordEntrance bounce|slide-up|fade (+ wordEntranceDuration seconds) animates each word when spoken. positionMode cycle|keyword (+ positionCycle [top|center|bottom], positionKeywords [words], keywordPosition) moves captions, always inside the safe zone. captionLayout stacked = poster, one word per line with a bigger hero word (posterHeroScale 1-3). faceAvoid true = burns detect faces and move captions off them; the result returns faceAvoid.faceLayout, store it as style.faceLayout to reuse. | |
| overrides | No | Style fields to change on top of basePreset (or of style). | |
| basePreset | No | Start from this preset (id, slug, name, or custom:cp_...) instead of a full style. | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description unambiguously describes a persistent write ('save your own full caption preset', 50-preset / 20 KB quotas, private-until-submitted state), but the annotations declare readOnlyHint=true and carry a title copied from another tool ('Prepare client burn'). An agent trusting the annotation would treat this as a non-mutating read, which is the opposite of the described 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?
Front-loaded with cost ('Free.') and the core action, then packed with actionable detail; almost every sentence carries a constraint or routing hint. It is dense and run-on rather than wasteful, so only lightly penalized for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers return value (id custom:cp_... and where to pass it), error behavior, quotas, privacy state, and a validation workflow — strong for a 5-param tool with no output schema. Gaps remain around the required `name` field and the `description` field's purpose.
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?
Adds real meaning beyond the schema: overrides are deep-merged and 'null removes a field', basePreset accepts id/slug/name/custom:cp_ forms, and invalid styles return 422 invalid_style with [{path, message}]. The required `name` and the optional `description` parameters are never explained, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Design and save your own full caption preset') and scopes it to 'this key (or the account when the key is claimed)'. It is distinguishable from sibling mutations like update_custom_preset, save_brand_preset and submit_custom_preset without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes the two calling modes (pass a full `style`, or `basePreset` plus `overrides`), names the lifecycle step ('Private until you call submit_custom_preset'), and routes the agent to prerequisites: get_style_reference, validate_preset_style, and preview before a paid burn.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_glossarySave glossary termsAIdempotentInspect
Free. Save brand names, product names, people, slang and dialect spellings so future transcriptions get them right. Each entry: term (the correct spelling), aliases (what speech-to-text writes instead, replaced word-for-word, e.g. term 'AwesomeVideo' aliases ['awesome video','ausom video']; term 'po' aliases ['pues'] only if you really want that), doNotTranslate (keep it as is when translating). Merges by term unless mode is replace. Up to 200 terms, 10 aliases each.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| entries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is non-read-only, idempotent, non-destructive, and closed-world. The description adds useful behavior beyond that: it is 'Free', merges by term unless mode is replace, replaces aliases word-for-word, and enforces limits of 'Up to 200 terms, 10 aliases each.' It leaves the full effect of mode=replace somewhat ambiguous.
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 front-loaded with 'Free. Save...' and packs useful examples and limits into one paragraph. It is dense but mostly earns its length, though the parenthetical example about term 'po' aliases ['pues'] is slightly distracting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested glossary-save operation with no output schema, the description covers purpose, merge/replace behavior, alias handling, doNotTranslate, and size limits. It is not fully complete because note is undocumented and replace-mode semantics are not fully spelled out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, and it does for term, aliases, doNotTranslate, and mode with examples and limits. The optional note field is not explained in the description, and field length limits are left entirely to 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 gives a specific verb and resource: 'Save brand names, product names, people, slang and dialect spellings' so future transcriptions recognize them. It clearly distinguishes saving glossary entries from retrieving or deleting them through the action and examples, though it never names a sibling tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is clear: save terms 'so future transcriptions get them right.' It gives a strong positive context but does not explicitly say when not to use this tool or name alternatives such as get_glossary or delete_glossary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shortsAuto short clipsAIdempotentInspect
Paid: 6 credits per source minute. Pick 1-5 non-overlapping moments from a transcript, reframe each to 720x1280 (9:16), and burn captions. reframe=face (default) follows the main speaker with a smoothed crop and falls back to center when no face is found; reframe=center forces a center crop. Same price either way. platform (tiktok, instagram_reels, youtube_shorts, ...) keeps captions inside that app's safe zone at the same price; say "shorts para Reels" → platform=instagram_reels. Clip length is minSeconds (5-60, default 15) to maxSeconds (up to 60); out-of-range values return 422 limit_exceeded before any charge. Long transcripts are read in windows of 400 cues (up to 4000). 402 insufficient_balance with checkoutUrl when the balance is short.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | 1-5 clips. Out of range returns limit_exceeded before any charge. | |
| fileId | No | ||
| preset | No | ||
| autoFit | No | Default true: caption size, words per caption (4 on 9:16, 5 on 1:1, 7 on 16:9), and a default safe zone follow the video shape, so text reads the same at 720p and 1080p and stays clear of app UI. Pass false only when the user wants the preset's exact fixed pixel sizes. Same price. | |
| reframe | No | face (default): track the main speaker. center: plain center crop. Same price. | |
| mediaUrl | No | ||
| platform | No | Where the video will be posted: tiktok, instagram_reels, youtube_shorts, facebook_reels, snapchat_spotlight, linkedin, youtube, x (aliases like reels, instagram, shorts, snap, twitter; case-insensitive). Keeps captions out of that app's buttons and text. If the user says "para TikTok" / "for Reels", pass it; if they did not say and it matters, ask. Same price. Unknown values return 422 invalid_platform before any charge. See list_platforms. | |
| faceAvoid | No | true = move captions off faces (samples faces at 2 fps, same price; result.faceAvoid.faceLayout). Shortcut for styleOverrides.faceAvoid. | |
| subtitles | No | ||
| maxCredits | No | ||
| maxSeconds | No | Longest clip, minSeconds-60 seconds. | |
| minSeconds | No | Shortest clip, 5-60 seconds. Default 15. | |
| highlightColor | No | #RRGGBB for highlightWords. Default #FACC15. | |
| highlightWords | No | Shortcut: words or phrases to color in every caption (accent/case-insensitive), e.g. ["AwesomeVideo", "gratis"]. Maps to styleOverrides.wordHighlights rule {id:"custom", words, color}. Same price. | |
| styleOverrides | No | Per-call style changes deep-merged onto the preset (same fields as list_presets style; null removes a field), validated with the renderer schema and bundled fonts. Example {"fontSize":72,"maxWordsPerCaption":2,"wordEntrance":"bounce"}. Same price. No need to save_custom_preset. Every field with examples: get_style_reference. | |
| transcriptionJobId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: pricing (6 credits per source minute), reframe fallback behavior (face → center), platform safe zones, clip length constraints with error codes (422 limit_exceeded), and balance errors with checkoutUrl (402 insufficient_balance). These details are critical for an agent to predict costs and handle failures.
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 and each sentence generally earns its place by conveying pricing, behavior, or constraints. It is slightly front-loaded with pricing rather than the core action, but overall it remains efficient 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 the tool's complexity (16 parameters, multiple options, no output schema), the description covers most essential aspects: core action, pricing, error conditions, reframe behavior, and platform handling. It omits guidance on when to use versus alternatives, but that is addressed in usage guidelines; overall it is fairly complete 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?
Schema description coverage is 63%, so some parameters are already documented. The description adds meaning for reframe (face fallback), platform (example mapping 'shorts para Reels'), and min/max seconds (error behavior). However, it does not compensate for undocumented parameters like fileId, preset, mediaUrl, subtitles, and transcriptionJobId, leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Pick 1-5 non-overlapping moments from a transcript, reframe each to 720x1280 (9:16), and burn captions.' This clearly distinguishes the tool from siblings like burn_captions or create_clips by combining moment selection, reframing, and caption burning into a single operation.
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 no explicit guidance on when to use this tool versus alternatives like create_clips or burn_captions. It implies usage through phrases like 'Pick 1-5 non-overlapping moments from a transcript,' but does not name or exclude any sibling tool or state conditions for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
style_previewPreview caption styles on the video before ordering (free)ARead-onlyIdempotentInspect
FREE, never charges, no transcription. Use BEFORE caption_video whenever the person wants to see or choose how captions will look ('qué estilos hay', 'muéstrame cómo queda', 'which captions look best'). Takes the SAME look fields as caption_video (sourceUrl/fileId, preset or presets, language, translateTo, brandPresetId, styleOverrides, faceAvoid, highlightWords, highlightColor, platform, autoFit) and renders each preset with the burn's engine at the burn's output size, safe zone and words-per-caption, on the real frame at atSeconds (one second or up to 3 -> one sheet row each; default a frame with a face, else the middle). Captions are text (sample phrase, max 80 chars; default a short phrase in translateTo/language) with the active word highlighted; if text is longer than one caption the frame shows the chunk on screen at that second, like the burn (truncated:true; fullText:true shows every line but no longer matches a burn). Already have a transcript? Pass transcriptionJobId or subtitles to see the real caption at that second. Returns sheetUrl (labeled contact sheet), per-preset frames[] urls and captionVideoArgs: pass that object unchanged to caption_video (or POST /v1/captions) to get what you saw. Limits: 30 sheets/hour, 200/day per key (429 rate_limited + retryAfterSeconds); identical repeats come from cache and do not count.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Preview only: sample phrase. | |
| fileId | No | ||
| preset | No | One preset (same as caption_video). | |
| autoFit | No | ||
| presets | No | Up to 12 presets to compare; default 6 that fit the video shape. | |
| fullText | No | Preview only: show all words in one caption (does not match a burn). | |
| language | No | ||
| mediaUrl | No | Alias of sourceUrl. | |
| platform | No | ||
| atSeconds | No | Preview only: second(s) of the video to show; up to 3 = one sheet. | |
| faceAvoid | No | ||
| sourceUrl | No | Same as caption_video. | |
| subtitles | No | Preview only: SRT/VTT/JSON captions to show instead of a sample phrase. | |
| audioVisual | No | Audio-only input (mp3/m4a/wav...): render the web editor's audio export (visualizer + captions) on the server, same price as the burn. On a video input it returns 422 audio_visual_needs_audio_input (not charged). Omit it on audio to get the default bars. | |
| translateTo | No | Same as caption_video; the default sample phrase uses this language. | |
| brandPresetId | No | ||
| highlightColor | No | ||
| highlightWords | No | ||
| styleOverrides | No | Same as caption_video, applied to every preset. | |
| transcriptionJobId | No | Preview only: show real captions from this transcription (no new transcription). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly/idempotent/non-destructive; the description adds cost behavior (FREE, never charges, no transcription), rate limits with the exact error code and retryAfterSeconds, cache semantics for repeats, and the audioVisual 422-not-charged case. It also discloses fidelity details: rendering uses the burn's engine, output size, safe zone and words-per-caption, and fullText deliberately does not match a burn.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the two things that matter (FREE, use before caption_video), and nearly every sentence carries information. However it is one dense paragraph that interleaves routing, rendering internals, return shape and rate limits, which makes it harder to scan than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet returns are named (sheetUrl, per-preset frames[], captionVideoArgs) and the passthrough contract is spelled out. Combined with limits, defaults and error codes, an agent has everything needed to call it correctly on the first attempt.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 20 params and only 60% schema coverage, the description carries real weight: it explains atSeconds as one second or up to 3 (one sheet row each) with the default frame heuristic (a face, else the middle), the 80-char sample phrase and its language default, truncated vs fullText, and that the look fields mirror caption_video. It also documents the return contract (captionVideoArgs) needed to chain into the burn.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (renders each caption preset into a labeled contact sheet) and immediately draws the boundary against caption_video, which is the nearest sibling. An agent can tell from the first sentence that this is a non-charging preview, not the actual burn.
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?
Explicit routing: 'Use BEFORE caption_video whenever the person wants to see or choose how captions will look', reinforced with example user phrasings including Spanish. It also names the escalation path ('pass that object unchanged to caption_video') and the alternate input path when a transcript already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_custom_presetSubmit preset to communityAInspect
Free. Propose one of your custom presets for the public AwesomeVideo community gallery. It becomes pending and a human moderator reviews it; it appears in list_presets for everyone only after approval (never automatic). Max 5 submissions per day. Check status with get_custom_preset (community.status).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| tags | No | ||
| author | No | Public credit, e.g. the agent or person name. Default 'AI agent'. | |
| description | No | ||
| previewText | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: free/no credits, pending state, human moderation with no automatic approval, and a hard rate limit of 5 submissions per day. The annotations only flag readOnly=false and non-idempotent, so this lifecycle and quota detail is genuinely additive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the cost ('Free.') and then the action, moderation outcome, rate limit, and status-check route. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent write with openWorldHint, the description covers cost, moderation, quota, and result verification, which is what an agent most needs before calling. The remaining gap is the undocumented submission fields (id, tags, previewText).
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?
Five parameters with only 20% schema description coverage, and the description says nothing about id, tags, description, or previewText limits. Only 'author' is documented, and that is in the schema, not the description, so the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (propose/submit) plus the exact resource (one of your custom presets) and destination (public AwesomeVideo community gallery). The name and title could be confused with save_custom_preset or update_custom_preset, but the description makes the distinct publish-to-community action unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: the submission goes to a human moderator and only shows in list_presets after approval, with a pointer to get_custom_preset (community.status) for follow-up. It never explicitly says to create the preset first with save_custom_preset, so the precondition is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribeTranscribeAIdempotentInspect
Transcribe speech with Workers AI Whisper (@cf/openai/whisper-large-v3-turbo). Audio is extracted and downsampled to 16 kHz mono before the model runs; video frames are not decoded. Pass a media URL or an uploaded file id. Language defaults to auto. format is srt, vtt, or json with word timestamps. This is prepaid. A key with too little balance gets a 402 insufficient_balance payload (requiredCents, balanceCents, checkoutUrl, howToBuy) and no job starts. Cache hits are scoped to the API key and include language, format, and duration hint. A different key cannot read another key's result.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | No | Id from create_upload, upload_base64, or POST /v1/uploads. | |
| format | No | Default json, including word timestamps. | |
| glossary | No | Names and terms. Used as the Whisper prompt and to fix close spellings. Included in the transcription price. | |
| language | No | BCP-47 language, or omit for auto. | |
| mediaUrl | No | HTTPS URL of the audio or video file. | |
| maxCredits | No | Refuse the job when the debit would exceed this many cents. | |
| webhookUrl | No | Public https URL. POSTed an HMAC-signed JSON body when the job finishes. Three tries. | |
| notifyEmail | No | Optional completion email. Free. Needs the email binding. | |
| durationSeconds | No | Optional duration hint used before probe. | |
| useSavedGlossary | No | Default true: also apply the saved glossary (save_glossary) with its alias fixes, e.g. 'awesome video' -> 'AwesomeVideo'. Free. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses that audio is extracted and downsampled to 16 kHz mono while video frames are not decoded, that this is a prepaid operation, the exact 402 insufficient_balance payload fields and that no job starts, and that cache hits are keyed by API key plus language/format/duration hint with cross-key isolation. This is exactly the operational context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the model and processing behavior, then billing, then failure payload, then caching, with no filler sentences. Every clause (downsampling, 402 fields, cache key scoping) carries decision-relevant 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?
Covers inputs, processing, pricing, failure mode, and caching for a 10-parameter tool with no output schema. The notable gap is execution model: the presence of webhookUrl and a get_job sibling implies asynchronous job submission, but the description never says whether the call returns a job id to poll or a result synchronously.
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 baseline is 3; the description still adds value by reinforcing the mediaUrl-vs-fileId choice, the auto language default, and format output content, and by tying language, format, and the duration hint to cache scoping. It does not explain glossary vs useSavedGlossary or maxCredits semantics, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource plus the exact model ('Transcribe speech with Workers AI Whisper @cf/openai/whisper-large-v3-turbo') and the accepted input forms (media URL or uploaded file id). It is distinguishable from caption_video/burn_captions, but it never explicitly names those siblings to route the agent, so it stops short of a 5.
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?
Offers input guidance ('Pass a media URL or an uploaded file id') and default behaviors ('Language defaults to auto'), which implies when the tool applies. However there is no explicit when-to-use / when-not-to-use statement and no comparison to caption_video, burn_captions, or dub, which produce overlapping subtitle output.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translateTranslate subtitlesAIdempotentInspect
Paid: 2 credits per minute. Translate captions (transcriptionJobId or subtitles) with Workers AI m2m100 and keep cue timing; returns SRT, VTT, and JSON. Word-level highlight is not kept. burn:true also burns the translation (adds 4 credits per minute) and needs media plus a preset.
| Name | Required | Description | Default |
|---|---|---|---|
| burn | No | ||
| fileId | No | ||
| preset | No | ||
| mediaUrl | No | ||
| faceAvoid | No | true = move captions off faces (samples faces at 2 fps, same price; result.faceAvoid.faceLayout). Shortcut for styleOverrides.faceAvoid. | |
| subtitles | No | ||
| maxCredits | No | ||
| highlightColor | No | #RRGGBB for highlightWords. Default #FACC15. | |
| highlightWords | No | Shortcut: words or phrases to color in every caption (accent/case-insensitive), e.g. ["AwesomeVideo", "gratis"]. Maps to styleOverrides.wordHighlights rule {id:"custom", words, color}. Same price. | |
| sourceLanguage | No | ||
| styleOverrides | No | Per-call style changes deep-merged onto the preset (same fields as list_presets style; null removes a field), validated with the renderer schema and bundled fonts. Example {"fontSize":72,"maxWordsPerCaption":2,"wordEntrance":"bounce"}. Same price. No need to save_custom_preset. Every field with examples: get_style_reference. | |
| targetLanguage | Yes | ISO 639-1 code such as es, fr, de, pt, it, ja, zh. Unsupported codes return invalid_language. | |
| transcriptionJobId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Strong on cost and side effects: 2 credits/min, +4 credits/min for burn, cue timing preserved, word-level highlight dropped, and burn requires media+preset — all beyond what the annotations declare. However the annotations' title is "Transcribe" while the tool and description are about translation, which creates a mild signal conflict the description never resolves, and failure/partial-failure behavior is not described.
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?
Cost is front-loaded, then inputs, then outputs, then the burn variant — a sensible order with no filler. The burn clause is compressed to near-telegraphic style ('needs media plus a preset'), which is efficient but slightly terse for a param with extra requirements.
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 13-param paid mutation with no output schema, it covers price, inputs, preserved/removed output traits, and return formats (SRT, VTT, JSON). Remaining gaps are secondary params and behavior on invalid input or partial failure, which are not blocking for a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 38% across 13 params, so the description must compensate, and it only meaningfully explains transcriptionJobId/subtitles, burn, and indirectly mediaUrl/preset. Parameters like sourceLanguage, maxCredits, fileId, faceAvoid, highlightWords, and styleOverrides are left entirely to 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?
States a specific verb+resource (translate captions) plus the exact input modes (transcriptionJobId or subtitles) and the engine (Workers AI m2m100). An agent can distinguish this from transcribe, dub, and burn_captions without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete routing conditions: pick transcriptionJobId or subtitles as the source, and burn:true requires media plus a preset. It does not explicitly say when to prefer this over the sibling burn_captions or dub, so the alternative-selection guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trimRemove silence and fillers (alias of remove_silences)AIdempotentInspect
Same as remove_silences. Paid: 3 credits per kept minute, plus 4 per kept minute with burnCaptions (same as burn_captions). Removes silences and filler words from a talking video and returns the cut MP4, retimed SRT/VTT/JSON captions, and stats (sourceSeconds, keptSeconds, removedSeconds, cuts, fillersRemoved). Needs a transcript: pass transcriptionJobId (from transcribe or caption_video) or subtitles. Silences: gaps between words over silenceGapSeconds (default 0.5 s) are cut, keeping paddingSeconds (default 0.08 s) on each side; ffmpeg silencedetect (silenceNoiseDb, default -35) also cuts long pauses inside word timings (detectSilences:false to skip). Fillers (default fillerMode 'clear'): uh, um, er, ah, eh, ehm, em, hmm, mm, and Spanish 'este' only when said on its own. fillerMode 'aggressive' also cuts like, you know, I mean, basically, kind of, sort of, o sea, bueno, pues, digamos, tipo, como que, a ver, only when they stand alone (comma or pause). fillers adds words or phrases; keepFillers keeps some; removeFillers:false keeps all. Every cut gets a short audio fade so joins do not click. burnCaptions:true burns the retimed captions in the same job with preset/brandPresetId/platform/autoFit (same renderer as burn_captions). Billed on the kept duration.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | No | ||
| preset | No | With burnCaptions: preset id or name (or custom:cp_...). Default Clarity. | |
| autoFit | No | ||
| fillers | No | Extra fillers to always cut, words or phrases. | |
| mediaUrl | No | ||
| platform | No | With burnCaptions: tiktok, reels, shorts, ... for safe zones. | |
| faceAvoid | No | true = move captions off faces (samples faces at 2 fps, same price; result.faceAvoid.faceLayout). Shortcut for styleOverrides.faceAvoid. | |
| quoteOnly | No | Free: return the price for durationSeconds without starting a job or charging (upper bound: every second kept). | |
| subtitles | No | ||
| fillerMode | No | ||
| maxCredits | No | ||
| keepFillers | No | Fillers to keep, e.g. ['like']. | |
| burnCaptions | No | Burn the retimed captions in the same job. | |
| brandPresetId | No | ||
| removeFillers | No | ||
| detectSilences | No | Default true: ffmpeg silencedetect also cuts long pauses. | |
| highlightColor | No | #RRGGBB for highlightWords. Default #FACC15. | |
| highlightWords | No | Shortcut: words or phrases to color in every caption (accent/case-insensitive), e.g. ["AwesomeVideo", "gratis"]. Maps to styleOverrides.wordHighlights rule {id:"custom", words, color}. Same price. | |
| paddingSeconds | No | Kept on each side of a cut. Default 0.08. | |
| silenceNoiseDb | No | Silence threshold in dB. Default -35. | |
| styleOverrides | No | Per-call style changes deep-merged onto the preset (same fields as list_presets style; null removes a field), validated with the renderer schema and bundled fonts. Example {"fontSize":72,"maxWordsPerCaption":2,"wordEntrance":"bounce"}. Same price. No need to save_custom_preset. Every field with examples: get_style_reference. | |
| durationSeconds | No | Source length for quoteOnly. | |
| silenceGapSeconds | No | Cut pauses longer than this. Default 0.5. | |
| transcriptionJobId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: pricing (3 credits per kept minute, +4 with burnCaptions), that billing is on kept duration, exactly what gets cut and with what defaults, how cuts are joined (audio fade so joins do not click), and the full output shape. The annotations only cover safety/idempotency, so this added context is doing real work.
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?
Dense but nearly every clause carries operational information; nothing is filler. The ordering is slightly off — the actual purpose sentence arrives third, after the alias and the pricing paragraph — so a scanning agent meets cost before function.
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 24-parameter, no-output-schema mutation with an open-world job submission, the description covers the missing pieces an agent needs: the transcript prerequisite, the exact stats returned, cost model, and the optionality of the caption burn. No output schema is a gap the description closes inline.
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?
At 63% schema coverage the description compensates well, defining the semantics that the schema does not: fillerMode 'clear' vs 'aggressive' word lists, fillers/keepFillers/removeFillers interaction, detectSilences being an ffmpeg silencedetect pass inside word timings, and the burnCaptions style cluster. Several of the 24 parameters (maxCredits, highlightWords, faceAvoid, styleOverrides, quoteOnly) are left to the schema, and some defaults it repeats verbatim from schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (removes silences and filler words from a talking video) and immediately anchors it as an alias of remove_silences, then names the return artifacts. The burn_captions renderer cross-reference disambiguates the caption-burn path from the sibling burn_captions 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?
Explicitly states the prerequisite (needs a transcript via transcriptionJobId from transcribe or caption_video, or subtitles), and names when the caption-burn branch routes through the same renderer as burn_captions. It does not, however, say when to prefer trim over remove_silences, or when to use quoteOnly/preview instead of starting the job.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_custom_presetUpdate custom presetBRead-onlyIdempotentInspect
Free. Rename, re-describe, or restyle a saved custom preset. style replaces the whole document; overrides deep-merge onto the current style (or onto basePreset when given). Validated like save_custom_preset. An already submitted community copy is a snapshot and does not change.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | No | ||
| style | No | ||
| overrides | No | ||
| basePreset | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, yet the description describes mutating operations ("Rename, re-describe, or restyle", "style replaces the whole document"). That is a direct conflict between the stated behavior and the structured safety hints, and the annotation title "Prepare client burn" does not even match this tool. The rich detail about style replacement, override merging, and community-copy snapshots is otherwise valuable, but the contradiction dominates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the cost signal "Free." and the operation scope, then the style-vs-overrides merge rule. Nothing is padded, though deferring validation semantics to "Validated like save_custom_preset" forces a cross-tool lookup.
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 six parameters, nested objects, no output schema, and effectively unreliable annotations, the description still supplies the core behavioral model an agent needs (replace vs deep-merge, basePreset fallback, immutable community snapshots). It stops short of describing error cases for an unknown id or the response shape, but those are secondary for a preset mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the whole burden and does so for the hardest parameters: style ("replaces the whole document"), overrides ("deep-merge onto the current style (or onto basePreset when given)"), basePreset, plus name/description via rename/re-describe. Only id is left unexplained, and the validation rules are deferred to save_custom_preset rather than spelled out.
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?
"Rename, re-describe, or restyle a saved custom preset" gives a specific set of verbs plus the resource, so the agent immediately knows this mutates an existing preset rather than creating one. It distinguishes itself implicitly from save_custom_preset by referencing it as the validation counterpart, but never names the create/delete/submit siblings outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by "a saved custom preset" (i.e., the preset must already exist) and by "Validated like save_custom_preset" for the rule set, but the description never states when to choose this over save_custom_preset, submit_custom_preset, or delete_custom_preset. There are no explicit preconditions or exclusions, so the agent must infer the branch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_base64Upload small file (base64)AInspect
Free. Upload a short clip of up to 10 MB inline as base64 and get a fileId. For anything larger, or when you can run curl, use create_upload. Over the limit returns 422 limit_exceeded with charged:false. Up to 30 per hour.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | File bytes as base64 (a data: URL prefix is accepted). | |
| filename | Yes | ||
| contentType | Yes | video/* or audio/*. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing cost ('Free'), the 10 MB size ceiling, the exact failure mode (422 limit_exceeded with charged:false), and a rate limit of 30/hour. Annotations only carry the generic safety hints, so these operational details are genuinely additive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, zero waste, with the size limit and outcome front-loaded before the alternative routing. Every sentence carries distinct information: cost, capability, routing, error, rate limit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter upload tool with no output schema and only generic annotations, the description covers limits, alternatives, error behavior and throttling — everything an agent needs to invoke it correctly or route away.
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 67% and the schema documents data and contentType, but the description supplies the critical missing constraint: the 10 MB payload ceiling on data, which the schema does not state. Only the filename parameter's semantics (maxLength 200, no guidance) remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Upload a short clip ... inline as base64') plus the outcome ('get a fileId'), and explicitly contrasts itself with create_upload. An agent can distinguish it from the multipart sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives both when-to-use (short clip <=10 MB, inline) and when-not (anything larger, or when curl is available → create_upload). The alternative tool is named explicitly, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_preset_styleValidate preset styleARead-onlyIdempotentInspect
Free, no key needed (except for custom:cp_... bases). Check a caption style document (or basePreset + overrides) against the renderer schema without saving. Returns valid and the normalized style, or errors [{path, message}].
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | ||
| overrides | No | ||
| basePreset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior, yet the description adds real value beyond them: cost ('Free'), an auth exception for custom:cp_... bases, and the return contract (valid plus normalized style, or errors with path/message) despite there being no output schema. It does not cover failure modes such as invalid input or unknown base presets.
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 dense sentences with no filler: the free/auth caveat, the validation input modes, and the return shape. Front-loaded with the practical facts an agent needs before calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies the return shape and error structure, which is exactly what's needed. Remaining gaps are minor: behavior with zero arguments, whether style and basePreset may be combined, and what 'normalized style' entails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load, and it does explain the role of all three parameters and their relationship: a full style document OR a basePreset plus overrides. It stops short of stating precedence between style and overrides, or the exact basePreset string format beyond the custom:cp_ hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: check a caption style document (or basePreset + overrides) against the renderer schema. The phrase 'without saving' implicitly separates it from sibling mutations such as save_custom_preset and update_custom_preset, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'without saving' framing implies a pre-save validation use case, and the auth caveat tells the agent when a key is needed for custom:cp_... bases. However, it never explicitly says 'call this before save_custom_preset' or what to do if validation fails, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
burn_captions1 field changed- added
Input schema / properties / audioVisualAdded value: +{ + "additionalProperties": {}, + "description": "Audio-only input (mp3/m4a/wav...): render the web editor's audio export (visualizer + captions) on the server, same price as the burn. On a video input it returns 422 audio_visual_needs_audio_input (not charged). Omit it on audio to get the default bars.", + "properties": { + "aspect": { + "description": "Frame shape; default from platform, else 9:16.", + "enum": [ + "9:16", + "16:9", + "1:1", + "4:5" + ], + "type": "string" + }, + "background": { + "description": "Frame background color #RRGGBB (gradient/blur via config).", + "type": "string" + }, + "config": { + "additionalProperties": {}, + "description": "Variant config fields (colors, gradient, blur, bar count, position...). Same names and defaults as list_audio_visuals.", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "enabled": { + "description": "false: background + captions, no visualizer.", + "type": "boolean" + }, + "height": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "overlays": { + "description": "Up to 8 image (imageUrl, PNG/JPEG/WebP <=5 MB) or text items {kind, x, y, width, height, start, end, ...} in frame pixels.", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "maxItems": 8, + "type": "array" + }, + "presetId": { + "description": "bars only: minimal | neon | bold | spotify.", + "type": "string" + }, + "variant": { + "description": "Visualizer (default bars). list_audio_visuals shows each one's defaults.", + "enum": [ + "bars", + "ribbon", + "rings", + "spectrogram", + "skyline", + "silkline", + "ivory", + "halo", + "needle", + "mono" + ], + "type": "string" + }, + "width": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "type": "object" +}
- Changed
caption_video1 field changed- added
Input schema / properties / audioVisualAdded value: +{ + "additionalProperties": {}, + "description": "Audio-only input (mp3/m4a/wav...): render the web editor's audio export (visualizer + captions) on the server, same price as the burn. On a video input it returns 422 audio_visual_needs_audio_input (not charged). Omit it on audio to get the default bars.", + "properties": { + "aspect": { + "description": "Frame shape; default from platform, else 9:16.", + "enum": [ + "9:16", + "16:9", + "1:1", + "4:5" + ], + "type": "string" + }, + "background": { + "description": "Frame background color #RRGGBB (gradient/blur via config).", + "type": "string" + }, + "config": { + "additionalProperties": {}, + "description": "Variant config fields (colors, gradient, blur, bar count, position...). Same names and defaults as list_audio_visuals.", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "enabled": { + "description": "false: background + captions, no visualizer.", + "type": "boolean" + }, + "height": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "overlays": { + "description": "Up to 8 image (imageUrl, PNG/JPEG/WebP <=5 MB) or text items {kind, x, y, width, height, start, end, ...} in frame pixels.", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "maxItems": 8, + "type": "array" + }, + "presetId": { + "description": "bars only: minimal | neon | bold | spotify.", + "type": "string" + }, + "variant": { + "description": "Visualizer (default bars). list_audio_visuals shows each one's defaults.", + "enum": [ + "bars", + "ribbon", + "rings", + "spectrogram", + "skyline", + "silkline", + "ivory", + "halo", + "needle", + "mono" + ], + "type": "string" + }, + "width": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "type": "object" +}
- Added
list_audio_visuals - Changed
style_preview1 field changed- added
Input schema / properties / audioVisualAdded value: +{ + "additionalProperties": {}, + "description": "Audio-only input (mp3/m4a/wav...): render the web editor's audio export (visualizer + captions) on the server, same price as the burn. On a video input it returns 422 audio_visual_needs_audio_input (not charged). Omit it on audio to get the default bars.", + "properties": { + "aspect": { + "description": "Frame shape; default from platform, else 9:16.", + "enum": [ + "9:16", + "16:9", + "1:1", + "4:5" + ], + "type": "string" + }, + "background": { + "description": "Frame background color #RRGGBB (gradient/blur via config).", + "type": "string" + }, + "config": { + "additionalProperties": {}, + "description": "Variant config fields (colors, gradient, blur, bar count, position...). Same names and defaults as list_audio_visuals.", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "enabled": { + "description": "false: background + captions, no visualizer.", + "type": "boolean" + }, + "height": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "overlays": { + "description": "Up to 8 image (imageUrl, PNG/JPEG/WebP <=5 MB) or text items {kind, x, y, width, height, start, end, ...} in frame pixels.", + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "maxItems": 8, + "type": "array" + }, + "presetId": { + "description": "bars only: minimal | neon | bold | spotify.", + "type": "string" + }, + "variant": { + "description": "Visualizer (default bars). list_audio_visuals shows each one's defaults.", + "enum": [ + "bars", + "ribbon", + "rings", + "spectrogram", + "skyline", + "silkline", + "ivory", + "halo", + "needle", + "mono" + ], + "type": "string" + }, + "width": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "type": "object" +}
51 tool updates
- First observed
abort_upload - First observed
batch - First observed
burn_captions - First observed
buy_credits - First observed
caption_video - First observed
complete_upload - First observed
create_checkout - First observed
create_clips - First observed
create_key - First observed
create_multipart_upload - First observed
create_upload - First observed
delete_brand_preset - First observed
delete_custom_preset - First observed
delete_glossary - First observed
dub - First observed
edit_transcript - First observed
generate_metadata - First observed
get_balance - First observed
get_custom_preset - First observed
get_glossary - First observed
get_job - First observed
get_review - First observed
get_style_reference - First observed
get_upload_status - First observed
get_usage - First observed
import_url - First observed
list_brand_presets - First observed
list_custom_presets - First observed
list_jobs - First observed
list_platforms - First observed
list_presets - First observed
list_voices - First observed
plan - First observed
prepare_client_burn - First observed
preview - First observed
quote - First observed
remove_silences - First observed
request_review - First observed
resume_job - First observed
save_brand_preset - First observed
save_custom_preset - First observed
save_glossary - First observed
shorts - First observed
style_preview - First observed
submit_custom_preset - First observed
transcribe - First observed
translate - First observed
trim - First observed
update_custom_preset - First observed
upload_base64 - First observed
validate_preset_style
Related MCP Connectors
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
Autonomous AI video editor over MCP: viral clips, captions, reframe, chroma key, MP4 export
Video pipeline for AI agents: analyze with AI, transcode to MP4/HLS/DASH, edit, protect and deliver.
YouTube transcripts for AI agents: captions with timestamps, languages, TXT, SRT and VTT export.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAutomated short-form video creation from text prompts, combining text-to-speech, captions, background videos, and music, exposed as an MCP server for AI agents.57 npmMIT

AITuber MCP Serverofficial
AlicenseAqualityBmaintenanceCreate AI-powered videos from any MCP-compatible client. Generate videos with AI narration, visuals, and synced captions for short-form and long-form content.253 npm6MIT- AlicenseNot gradedqualityCmaintenanceMCP server for agent-driven video generation from SRT subtitles to Remotion videos, supporting TTS, async tasks, and web console.1MIT
- AlicenseNot gradedqualityDmaintenanceAgent-first video-data API + MCP across 6 platforms (YouTube/Shorts, TikTok, Reddit, Instagram, Pinterest): metadata, insights, Whisper transcript, and parametric frames. Pay-per-call via x402 (USDC) or Stripe.6 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.