Skip to main content
Glama

ClipUGC CLI

Official command-line interface for ClipUGC — create AI influencers, generate photorealistic looks of the same person, turn them into silent-reaction clips, and merge your app's screen recording into a ready-to-post UGC ad. All from the terminal; nothing renders locally.

npm install -g clipugc
clipugc auth login

Requires Node.js >= 20. Create an API key in the ClipUGC dashboard (API keys section). API keys are available on paid plans (Professional and Business).

Use it with Claude Code

The fastest way in: this repo ships three Claude Code skills, so you describe what you want instead of learning flags. clipugc drives the CLI conversationally, ugc-director turns an app idea into a complete ad plan, and persona-account runs an ongoing AI creator account.

/plugin marketplace add clipugc/ClipUGC-CLI
/plugin install clipugc@ClipUGC-CLI

Installed as a plugin, the skills are namespaced under it:

/clipugc:ugc-director make a TikTok ad for my habit tracker app
/clipugc:persona-account create an AI influencer for a fitness account
/clipugc:clipugc how many credits do I have left

(Cloning the repo instead? Claude Code reads .claude/skills/ directly and the skills are unprefixed — /ugc-director, /persona-account, /clipugc.)

See docs/skills.md for what each skill knows.

Prefer flags? Everything below works standalone — the skills just drive the same CLI.

Related MCP server: Prizmad

Use from Claude Code / Cursor

Listed on the MCP Registry and Smithery.

The CLI is also an MCP server. clipugc mcp speaks the Model Context Protocol over stdio, so any MCP client can create characters, looks, clips and merged ads as tools, without shelling out to the commands above.

Log in once so the server has a key (it reads the same ~/.config/clipugc/config.json the CLI uses):

npm install -g clipugc
clipugc auth login

Claude Code

claude mcp add clipugc -- npx -y clipugc@latest mcp

@latest matters: without it npx reuses any clipugc already installed on your machine, and a global install older than 1.2.0 has no mcp command, so Claude Code reports "Connection closed". If you still see that, update the old install with npm i -g clipugc@latest, or run npx -y clipugc@latest mcp once in a terminal so the download finishes (Ctrl+C after "11 tools ready"). Do not add it from inside a checkout of this repo: there npx resolves clipugc to the local project instead of the npm package.

Cursor (Settings > MCP, or .cursor/mcp.json in your project)

{
  "mcpServers": {
    "clipugc": {
      "command": "npx",
      "args": ["-y", "clipugc@latest", "mcp"]
    }
  }
}

If you would rather not run clipugc auth login on that machine, add an env block with CLIPUGC_API_KEY set to a key from the dashboard.

Claude Desktop

Claude Desktop installs the server as an extension, so there is no config file to edit and no Node install needed beyond the app itself:

  1. Download clipugc.mcpb from the latest GitHub release.

  2. Double-click the file, or open Claude Desktop, go to Settings > Extensions, and choose Install Extension (Advanced settings on some versions).

  3. Paste your ClipUGC API key when asked. Create one in the dashboard under API Keys.

The extension runs the same clipugc mcp server as above. To build the bundle yourself, run npm run build:mcpb (see "Local development").

Prompts: make_ugc_video, new_ai_influencer, hook_ideas (ready-made starts for the common jobs). Resources: clipugc://pipeline (the order of calls) and clipugc://pricing (documented credit costs; get_credits has the live table).

Tools: list_characters, create_character, generate_image, list_images, create_clip, create_motion_clip, merge_ad, get_video, download_video, get_credits, list_hooks. Arguments follow the CLI flags (--per-page becomes per_page). Generation tools return the job id right away, like the CLI without --wait; poll with get_video (clips and ads) or list_images (looks) until the status is completed. Every tool reports its credit cost in its description, and get_credits returns the live prices.

What it produces

One character, cast once. Every picture below is the same person — only the setting, outfit and lighting change, because each look is generated from her base image rather than from the description again:

Six looks of the same AI influencer — golden-hour bedroom, bathroom mirror, parked car, night bathroom, balcony at night, in bed

clipugc characters create --wait \
  --description "Very pretty Danish woman aged 22, light blonde fine hair to her shoulders with a middle parting, pale blue upturned eyes, heart-shaped face, porcelain cool-toned skin. Genuinely attractive Instagram-creator look, but reads as a real girl — natural skin texture with visible pores, not airbrushed." \
  --scene "close selfie in a softly lit bedroom at golden hour, warm low sun through the window behind her giving a rim light on her hair, full glam makeup with smoky bronze eyeshadow and glossy nude lips, phone-camera quality with mild grain, slightly off-centre framing"

# every look after that: same face, new setting — never re-describe the person
clipugc images generate --character <id> --wait \
  --scene "bathroom mirror selfie in the evening, phone visible in her hand, warm vanity lights either side of the mirror, polished makeup with glowing skin and glossy lips, phone-camera quality with grain, slightly off-centre framing"

Then any look becomes a silent reaction clip. Mouth closed throughout — lip-sync from a still image is the giveaway that a video is AI, so the format is a held expression plus a text hook, not talking:

clipugc videos create --image <lookId> --duration 5 --wait \
  --prompt "She glances down at the phone, back up to the lens, and one corner of her mouth pulls into a smirk she is clearly trying to suppress. Her lips stay closed and together for the entire clip. She does not speak, does not mouth any words, and her mouth never opens. Natural handheld movement, she shifts slightly, hair moves. Ordinary phone-camera footage, visible grain."

Note the shape of that prompt: an arc in beats (glance down → back up → smirk forms), an explicit no-talking clause, and ambient motion. Ask for a state instead of a progression — "she smirks" — and the face morphs. The full library of ~30 reactions across nine emotion families lives in the ugc-director skill.

Merging that clip with your screen recording and a hook is free, so the last step costs nothing and you can test as many hooks as you like.

How it works

Step

Cost

1

Cast an AI character — described in plain words; the server builds a structured appearance "DNA" and the first look

2 credits

2

Generate looks — the same face in new settings, outfits and lighting

2 credits each

3

Animate a look — a short silent reaction clip (mouth closed; lip-sync is what makes AI video look fake)

7 (5s) / 13 (10s)

4

Merge into an ad — your screen recording + a hook text overlay + optional music

free

Every look after the first is generated from the character's base image, so the face stays the same person across an entire campaign or grid. That consistency is the point of the product.

Full pricing: image 2 · clip 7 (5s) / 13 (10s) · motion control 3 per second of driver video (capped at 30s) · scene-staged clip 9 (5s) / 15 (10s) · merge free. Charges are duration-aware and refunds return the exact amount charged. Check live values with clipugc credits.

Quickstart (plain CLI)

# 1. Cast her. Be specific — this is what decides whether she looks like a real
#    creator or like generic AI. (See the casting guide for the formula.)
clipugc characters create --wait \
  --description "Very pretty Danish woman aged 22, light blonde fine hair to her shoulders with a middle parting, pale blue upturned eyes, heart-shaped face, porcelain cool-toned skin. Genuinely attractive Instagram-creator look, but reads as a real girl — natural skin texture with visible pores, not airbrushed." \
  --scene "close selfie in a softly lit bedroom at golden hour, warm rim light on her hair, full glam makeup with winged liner and glossy lips, natural skin texture, amateur front-camera phone quality, headroom above her head for text"

# 2. Animate the look into a 5s silent reaction.
clipugc videos create --image <lookId> --duration 5 --wait \
  --prompt "Handheld selfie framing, slight drift. Her expression gradually shifts from neutral to amazed — eyebrows rise, eyes widen, lips part slightly in a silent gasp — then she breaks into a delighted grin and holds it, looking straight into the camera. Hair moves subtly. No talking."

# 3. Merge your app recording under a hook. Free, so test as many hooks as you like.
clipugc videos merge <videoId> --app-video ./screenrec.mp4 --hook "nobody talks about this app" --wait

# 4. Download the finished ad — by AD id, not the clip id.
clipugc ads download <adId> -o ugc-ad.mp4

Add --json to any command for machine-readable output, and --wait to any generation command to poll with a spinner until it completes.

Example prompts

The prompt is the product. Below is one of each kind; the full libraries are in docs/casting.md (9 nationalities) and the ugc-director skill (~30 reactions across 9 emotion families).

Casting — concrete features → an explicit attractiveness claim → directed makeup and lighting → a realism anchor. All four parts, or she comes out looking like AI:

clipugc characters create --wait \
  --description "Very pretty Danish woman aged 22, light blonde fine hair to her shoulders with a middle parting and natural movement, pale blue upturned eyes, heart-shaped face, porcelain cool-toned skin, soft pink lips, gentle jawline. Calm, faintly teasing expression. Genuinely attractive Instagram-creator look, but reads as a real girl — natural skin texture with visible pores, not airbrushed." \
  --scene "close selfie in a softly lit bedroom at golden hour, warm low sun through the window behind her giving a rim light on her hair, full glam makeup with winged liner, long lashes and glossy lips, natural skin texture, amateur front-camera phone quality, headroom above her head for text"
clipugc characters create --wait \
  --description "Very pretty Russian woman aged 22 from Moscow, ash-blonde straight hair below her shoulders with a middle parting, cool grey-blue almond eyes set wide apart, high broad cheekbones, straight narrow nose, fair cool-toned skin, medium lips with a defined cupid's bow, fine straight brows. Reserved, slightly aloof expression that warms when she smiles. Strikingly attractive Instagram-creator look, yet unmistakably a real person — natural skin texture with visible pores, not airbrushed." \
  --scene "close selfie in a softly lit bedroom at golden hour, warm low sun behind her giving a rim light on her hair, soft glam makeup with winged liner and a nude glossy lip, natural skin texture, amateur front-camera phone quality, headroom above her head for text"
clipugc characters create --wait \
  --description "Very pretty Ukrainian woman aged 21 from Kyiv, honey-brown hair with a soft natural wave past her shoulders, warm green eyes with a gentle upturn, soft oval face with a rounded chin, light golden-toned skin, full lips, softly arched brows, a small mole above her lip. Warm, open, easy-smiling energy. Genuinely attractive Instagram-creator look that reads as a real girl — natural skin texture with visible pores, not airbrushed." \
  --scene "front-camera phone selfie by a large window in a bright apartment, soft diffused daylight on her face, plants blurred behind, everyday makeup with fluffy brows and a glossy lip, natural skin texture, amateur phone quality, headroom above the head for text"

Looks — never re-describe the person; the base image carries the face. Change only the setting, outfit and light:

clipugc images generate --character <id> --wait \
  --scene "mirror selfie in a bathroom in the evening, phone visible in her hand, warm vanity lights either side of the mirror, polished makeup with glowing skin and blush, natural skin texture, amateur phone quality, headroom above the head for text"

clipugc images generate --character <id> --wait \
  --scene "sitting in the driver's seat of a parked car in daylight, seatbelt on, daylight through the windscreen, natural skin texture, amateur phone quality, headroom above the head for text"

Reactions — an arc in beats, a held ending, ambient motion, and an explicit no-talking clause every time:

Handheld selfie framing with tiny natural wobble. She looks directly into the camera, one eyebrow raises slightly, a knowing smirk slowly spreads across her face, and she nods slowly twice, lips closed, holding eye contact the entire time. Hair moves subtly. No talking, mouth stays closed.
Handheld selfie framing, slight drift. Her expression gradually shifts from neutral to amazed — eyebrows rise, eyes widen, lips part slightly in a silent gasp — then she breaks into a delighted grin and holds it, looking straight into the camera. Hair moves subtly. No talking.
Nearly static selfie framing with subtle handheld drift. She rests her cheek against her palm, elbow anchored, eyes softening as a slow warm closed-mouth smile spreads, gaze drifting slightly off camera then returning to the lens, holding it. Hair moves subtly. No talking.
Handheld selfie framing, slight wobble. She exhales through her nose, shakes her head slowly with a rueful closed-mouth smile, briefly glances up at the ceiling, then back into the camera with an amused resigned look, holding it. Hair follows the motion naturally. No talking.

Hooks — the text burned over the clip. Re-merging is free, so ship 2-3 variants of every ad and let the platform pick:

nobody talks about this app
why did nobody tell me
I stopped paying for 4 apps
POV: you finally organised your week

Documentation

Guide

What's in it

Casting prompts

The four-part formula behind a good-looking influencer, plus ready-made castings — Scandinavian, Californian, Mediterranean, Korean, Russian, Ukrainian, Polish, Moldovan, Czech

Promoting your app

The end-to-end ad walkthrough, hook A/B testing, and who to cast for which app category

Command reference

Every command and flag, with credit costs

Configuration

Config file, environment variables, exit codes

Claude Code skills

Drive all of this in natural language instead of by flag

Local development

npm ci
npm run build     # compile TypeScript to dist/
npm test          # run the vitest suite
npm run dev       # run from source (tsx src/index.ts)
npm run build:mcpb  # build the Claude Desktop extension: dist-mcpb/clipugc.mcpb
                    # also writes dist-mcpb/clipugc-smithery.mcpb for `smithery mcp publish`

manifest.json and icon.png at the repo root describe the Claude Desktop extension. The build script stages dist/, package.json and a production-only node_modules/ in dist-mcpb/stage/, validates the manifest and packs the bundle. Its version, name and tool list must match package.json and the MCP server; the tests check that.

Privacy Policy

This CLI and the Claude Desktop extension do not collect anything themselves. There is no analytics, no telemetry and no crash reporting in the code.

What leaves your machine: your prompts and tool arguments, the files you choose to upload (photos, app screen recordings, driver videos) and your API key. They are sent only to clipugc.com over HTTPS, and only to run the request you made. The API key is stored in ~/.config/clipugc/config.json (CLI) or in Claude Desktop's extension settings, and is never sent anywhere else.

How the ClipUGC service stores and handles that data, including retention and the AI providers it uses to render videos, is described in the ClipUGC privacy policy: https://clipugc.com/privacy-policy.

Questions or deletion requests: clipugc@gmail.com.

License

MIT

Available Tools

11 tools
create_characterCreate an AI characterA

Create a new AI character from a plain-text description. Same as clipugc characters create. The server extracts the appearance DNA and generates the first look automatically (2 credits; confirm with get_credits). Be specific: nationality, age, hair, eyes, face shape, skin, style, and a realism anchor such as "natural skin texture, not airbrushed". Characters are public by default; set private=true to opt out. make_video=true also stages the first clip (extra clip cost). Returns the character with first_look_id. Looks generate in the background. Poll list_images with the same character id every 5 to 10 seconds until each new look has status "completed" (or "failed"), then pass the look id to create_clip. Advanced: pass name (2-120 chars) plus optional age, gender, dna_json instead of description for a structured create.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageNo[advanced] Age 18-99 (same as --age).
nameNo[advanced] Full name, 2-120 chars, for the structured path without a description (same as --name).
sceneNoOptional scene/pose for the first look, up to 600 chars (same as --scene).
genderNo[advanced] Gender, e.g. male, female, other (same as --gender).
privateNoKeep the character private (same as --private). Default: public.
dna_jsonNo[advanced] Appearance DNA fields as an inline JSON object string or a JSON file path (same as --dna-json).
make_videoNoAlso stage the character's first video clip (same as --make-video).
descriptionNoPlain-words description of the person, 10-1000 chars (same as --description). Preferred path.
inspirationNoOptional local file paths of up to 6 inspiration images (same as --inspiration).
motion_promptNoMotion prompt for that first clip; requires make_video (same as --motion-prompt).

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes far beyond the sparse annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false). Discloses the 2-credit cost, public-by-default privacy with private=true opt-out, background/non-blocking generation with a required polling cadence, the extra cost of make_video, and the return shape (character with first_look_id). No annotation contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Relatively long, but every sentence carries operational weight: cost, privacy, polling cadence, terminal statuses, and downstream routing. The core purpose is front-loaded in the first two sentences, prompting guidance sits in the middle, and advanced-path details are deferred to the end.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with no output schema and two usage paths, this covers the essentials: return value, async behavior, polling cadence, terminal statuses, cost, privacy, and the downstream dependency on create_clip. Minor gaps: no failure-mode handling (insufficient credits, what to do on 'failed'), and no statement on whether description and dna_json can be combined.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds value by grouping the 10 parameters into two coherent paths (plain-text description preferred vs structured name+age/gender/dna_json) and by giving content guidance for the description field (nationality, age, hair, eyes, face shape, skin, style, realism anchor). It does not clarify edge interactions such as what happens if both description and dna_json are supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Create a new AI character from a plain-text description'), names the input format, and describes the automatic first-look generation, distinguishing it from siblings like generate_image and create_clip. The pipeline context (look id feeds create_clip) makes the tool's role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit workflow routing: confirm credits with get_credits, poll list_images every 5-10 seconds, pass the completed look id to create_clip. It also delineates the simple description path from the advanced structured path. However, it never states when not to use this tool (e.g., if only a standalone image is needed, generate_image would be the alternative), so it stops short of a full when/when-not contrast.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_clipCreate a video clip from a lookA

Animate a character look (or your own photo) into a short video clip. Same as clipugc videos create. Costs 7 credits for 5 seconds or 13 for 10 seconds; adding scene makes it a scene-staged clip (9 at 5s, 15 at 10s). Confirm with get_credits first. Prefer a silent reaction prompt (mouth closed, no talking, an arc in beats, ambient motion): lip-sync from a still image is what makes AI video look fake. Provide exactly one of image or photo. Returns the clip id and status. Generation runs in the background. Poll get_video with {"id": , "kind": "clip"} every 5 to 10 seconds until status is "completed" or "failed", then call download_video.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageNoId of a generated character look (same as --image).
photoNoLocal path to your own photo, png/jpg/jpeg/webp; uploaded first (same as --photo).
sceneNoExtra scene description, max 600 chars; makes it a scene-staged clip (same as --scene).
promptNoWhat the character does, max 1500 chars (same as --prompt).
durationNo5 or 10 seconds, default 5 (same as --duration).
keep_soundNoKeep the original sound (same as --keep-sound).

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavioral traits: it costs credits, generation runs in the background, it returns a clip id and status, and it requires polling. It also explains the practical downside of lip-sync from still images, which helps set expectations. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: purpose, cost, prompt guidance, input constraint, return value, and follow-up polling. The most important operational facts are front-loaded, and no filler or redundancy is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still explains the return value ('Returns the clip id and status') and the full post-call workflow through get_video and download_video. It covers prerequisites, cost, input requirements, and background behavior, making it sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is already strong. The description adds meaningfully beyond the schema: exact credit costs, the constraint to provide exactly one of image/photo, the scene-staged distinction, and prompt guidance for natural-looking video. This significantly improves parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Animate a character look (or your own photo) into a short video clip.' This is a specific verb and resource, and the title reinforces it. However, it does not explicitly distinguish this from the sibling create_motion_clip, leaving some potential ambiguity about which video-creation tool to choose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong practical context: check get_credits first, provide exactly one of image or photo, prefer silent reaction prompts for realistic results, poll get_video, then call download_video. It does not explicitly state when not to use this tool versus alternatives like create_motion_clip, so it stops short of a full when/when-not set of exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_motion_clipCreate a motion-control clipA

Animate a character look (or your own photo) by copying the motion of a driver video. Same as clipugc videos motion. Costs 3 credits per second of driver video, rounded up, capped at 30 seconds (confirm with get_credits). The driver must be mp4/mov, at most 50 MB and 30 seconds; it is uploaded first. Provide exactly one of image or photo. Returns the clip id and status. Generation runs in the background. Poll get_video with {"id": , "kind": "clip"} every 5 to 10 seconds until status is "completed" or "failed", then call download_video.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageNoId of a generated character look (same as --image).
photoNoLocal path to your own photo, png/jpg/jpeg/webp; uploaded first (same as --photo).
driverYesLocal path of the driver video, mp4/mov, max 50 MB and 30s (same as --driver).
promptNoWhat the character does, max 1500 chars (same as --prompt).
keep_soundNoKeep the driver video's original sound (same as --keep-sound).

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond annotations by disclosing that the operation costs 3 credits per driver second capped at 30 seconds, that the driver is uploaded first, that generation runs in the background, and that the agent should poll every 5–10 seconds until status is 'completed' or 'failed'. It also specifies the next step. This is rich behavioral context with no contradiction against the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: action summary, cost, driver constraints, the exactly-one rule, return values, and the polling/download follow-up. It is front-loaded with the purpose and contains no repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and the complexity of a background generation task, the description fully covers what is returned (clip id and status), how to poll with the correct parameters, and what action to take on completion or failure. It also addresses prerequisites such as credit confirmation and file limits, so an agent can invoke and monitor the tool correctly without prior knowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by clarifying the mutual exclusivity of image/photo, the upload-first requirement, and the credit cost basis. These details help an agent reason about parameter combinations, pushing it above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Animate a character look (or your own photo) by copying the motion of a driver video.' It clearly identifies the operation as motion transfer, and the reference to `clipugc videos motion` ties it to a known command, distinguishing it from the sibling create_clip. This is not a tautology and leaves no ambiguity about what the tool accomplishes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong contextual guidance: driver format/size/duration limits, the requirement to upload first, the 'exactly one of image or photo' rule, the need to confirm credits via get_credits, and a detailed post-call polling workflow with get_video and download_video. It does not explicitly state when not to use this tool versus alternatives like create_clip, so it misses the top tier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_videoDownload a clip or adA
Idempotent

Download a completed clip (kind "clip", default; same as clipugc videos download <id>) or a completed merged ad (kind "ad"; same as clipugc ads download <adId>) to a local mp4 file. Pass an absolute output path; missing parent directories are created. Costs no credits. Fails if the video has not completed yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClip or ad id, as returned by other tools (numbers are fine as strings).
kindNo"clip" (default) for a character video id, "ad" for a merged_video_id.
outputNoDestination file path (same as --output). Default: clipugc-video-<id>.mp4 or clipugc-ad-<id>.mp4 in the server's working directory.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even though annotations are present, the description adds meaningful behavioral context: it costs no credits, creates missing parent directories, downloads to a local mp4 file, and fails on incomplete videos. These details go beyond the structured annotations and help the agent predict side effects and failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action and resource, followed by essential behavioral notes. Every sentence contributes useful information: kind semantics, CLI equivalence, path handling, cost, and failure condition. No filler or redundancy is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter download tool with no output schema, the description is complete. It covers what the tool does, the valid inputs, default behavior, side effects, cost, and failure conditions. An agent has everything needed to invoke it correctly and anticipate the outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all parameters at 100% coverage, so the baseline is 3. The description adds value by explaining that 'ad' refers to a merged_video_id, that output can be an absolute path with auto-created directories, and that defaults are clipugc-video-<id>.mp4 or clipugc-ad-<id>.mp4. This enhances the schema's parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Download') on a specific resource ('a completed clip' or 'a completed merged ad') to a local mp4 file. It also distinguishes the two supported kinds ('clip' and 'ad'), making the tool's purpose unambiguous and differentiating it from siblings like get_video or create_clip.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when the tool is appropriate: use it after a clip or ad has completed, and it explicitly warns that it fails if the video is not yet complete. It does not name alternative tools explicitly, but the conditionality and the local-file outcome provide sufficient usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_imageGenerate character looksA

Generate one or more new looks (reference images) of an existing character. Same as clipugc images generate. Every look is generated from the character's base image, so the face stays the same person: only describe the new setting, outfit and light in scene, never the person again. Costs 2 credits per shot (confirm with get_credits). Returns the created image ids. Looks generate in the background. Poll list_images with the same character id every 5 to 10 seconds until each new look has status "completed" (or "failed"), then pass the look id to create_clip.

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneNoScene prompt, max 600 chars (same as --scene).
shotsNoComma-separated shot types: frontal, three_quarter, profile, back (same as --shots). Default "frontal".
templateNoTemplate (same as --template). Omit to let the server pick: scene_recreation when scene is set, else model_digitals.
characterYesCharacter id, as returned by other tools (numbers are fine as strings).
resolutionNoResolution (same as --resolution). Default 2K.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses cost, asynchronous background generation, expected polling cadence, success/failure statuses, and that results are image IDs. These are exactly the behaviors not visible in the annotations or schema, and nothing contradicts the annotation hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five dense sentences with a clear order: purpose, alias, generation constraint, cost, output, and polling workflow. Every sentence contributes information not otherwise available in structured fields, and the key purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description explains return values (image IDs) and the full lifecycle: trigger, poll for terminal status, and continue into create_clip. It is complete enough for an agent to invoke correctly and integrate with siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful semantics for scene (describe only setting, outfit, light; never the person again) and shots (cost is per shot). It does not over-repeat parameter names and leaves schema definitions to carry enums and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: generate new looks/reference images of an existing character. It also differentiates from character creation by emphasizing the character already exists, and the downstream reference to create_clip further positions it in the workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly establishes when to use the tool (produce new looks for an existing character), how to budget (2 credits per shot, confirm with get_credits), and how to follow up (poll list_images, then pass IDs to create_clip). It lacks an explicit when-not-to-use statement naming sibling alternatives, so it doesn't quite reach the top bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_creditsGet credit balance and costsA
Read-only

Return the authenticated user's credit balance and the live per-action credit costs (image, clip, clip_10s, scene_staged, motion_per_second, merge). Same as clipugc credits. Call it before any generation tool so you can tell the user the cost and stop early when the balance is too low. Costs no credits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, and the description adds important context beyond that: the call itself 'Costs no credits,' the data is for the 'authenticated user,' and the costs are 'live.' This helps the agent set user expectations without overexplaining.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler: the first states the core return value, the second explains when to call it, and the third notes it is free. The most important behavioral facts are front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, read-only annotations, and no output schema, the description supplies all essential context: what is returned, the cost categories, the recommended call timing, the stop-early policy, and the fact that the call itself is free. Nothing critical is missing for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is nothing for the description to clarify about arguments. The baseline of 4 applies because no parameter semantics are needed, and the description still explains what the returned information represents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and resource: 'Return the authenticated user's credit balance and the live per-action credit costs.' It lists the specific cost categories, making the tool's scope unambiguous and distinct from all sibling generation and retrieval tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to call this tool: 'Call it before any generation tool so you can tell the user the cost and stop early when the balance is too low.' It also gives a deterministic rule for cost-aware behavior and notes the CLI equivalent, leaving no ambiguity about its role.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_videoGet clip or ad statusA
Read-only

Get the current status of a clip (kind "clip", default; same as clipugc videos status <id>) or of a merged ad (kind "ad"; same as clipugc ads show <adId>). This is the poll tool for create_clip, create_motion_clip and merge_ad. Status is pending, processing, completed or failed. A clip record also carries merge_status and merged_video_id once merged. Costs no credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClip or ad id, as returned by other tools (numbers are fine as strings).
kindNo"clip" (default) for a character video id, "ad" for a merged_video_id.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the operation as read-only, and the description adds meaningful context on top: the possible statuses, that clip records additionally expose merge_status and merged_video_id once merged, and that it costs no credits. It does not contradict the read-only/open-world annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences carry all the essential information: behavior, kind variants, polling role, statuses, merge fields, and cost. The main action is front-loaded and no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter read-only poll tool with no output schema, the description fully covers what an agent needs: how to get the id/kind, what statuses to expect, the merge-specific fields, and cost. The absence of error/not-found behavior is a minor gap that does not compromise correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds a little context by mapping id/kind to CLI commands and to the outputs of the creation tools, but most parameter meaning (clip vs ad, default kind, id format) already lives in the schema. It does not materially reduce the agent's need to read the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Get the current status of a clip ... or of a merged ad', which immediately tells an agent what the tool does. It also names its role as 'the poll tool for create_clip, create_motion_clip and merge_ad', clearly distinguishing it from sibling creation/list/download tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states exactly when to use it: after create_clip, create_motion_clip, or merge_ad, to poll status. It also covers both kind variants with defaults and CLI equivalents, but does not explicitly list exclusions such as 'use download_video when you need the actual media file', so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_charactersList AI charactersA
Read-only

List ClipUGC AI characters (AI influencers). Same as clipugc characters list. scope "mine" (default) lists the authenticated user's own characters, "discover" the public feed, "feed" own characters first then public ones. Returns items with id, display_name, age, gender, is_public, status, plus pagination. Costs no credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (same as --page).
scopeNoWhich list: mine (default), discover, or feed.
searchNoSearch by name (same as --search).
per_pageNoResults per page, max 50 (same as --per-page).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation, and the description adds useful behavioral details: it costs no credits, supports three different listing modes, and returns items with specified fields plus pagination. This goes beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler. The primary purpose is front-loaded, followed by scope semantics, return shape, and cost. Each sentence contributes information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with no required parameters, the description covers the available scopes, the default behavior, return fields, pagination, and credit cost. Since there is no output schema, the enumerated return fields are especially valuable and sufficient for an agent to interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents all four parameters, so the baseline is 3. The description adds meaningful semantics beyond the schema by explaining what each scope value returns, which is the most important parameter behavior. Other parameters like page and per_page remain adequately covered by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb and resource: 'List ClipUGC AI characters (AI influencers).' It also explains the scope variants and notes the CLI equivalence, making the tool's purpose unambiguous and distinct from sibling tools like list_images.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for each scope value ('mine' lists own characters, 'discover' lists the public feed, 'feed' prioritizes own characters). It does not explicitly name alternative tools or state when not to use this tool, but the scope guidance makes usage conditions clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_hooksSuggest hook textsA
Read-only

Get AI-suggested hook texts (the short attention-grabbing line burned over a UGC ad). Same as clipugc hooks suggest. Pass context describing the app for tailored hooks. Pick one (max 150 chars) and pass it as hook to merge_ad. Costs no credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoDescribe the app, e.g. "my app is a habit tracker" (same as --context).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavioral context beyond annotations: 'Costs no credits' (economic behavior affecting agent decisions), the 150-char output limit, and the fact that multiple suggestions are returned ('Pick one'). This goes beyond what the schema or annotations state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences with zero filler. The definition is front-loaded, the usage guidance and downstream chaining follow logically, and the credit-cost note is a single useful clause at the end. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool (1 optional param, no required fields, no output schema), the description covers the essentials: what it does, how to tailor it, output constraint, downstream consumer, and cost. The main gap is the exact response format (e.g., an array of candidate strings), though 'Pick one' implies multiple suggestions and the 150-char limit constrains the format sufficiently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already explains the context parameter well. The description adds value by stating the parameter's functional purpose — passing context produces 'tailored hooks' — which explains why the agent should bother supplying it. This is a meaningful addition over the schema's neutral 'Describe the app' phrasing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), resource ('AI-suggested hook texts'), and defines what a hook is ('the short attention-grabbing line burned over a UGC ad'). It also disambiguates the potentially misleading 'list_' name by clarifying this is a suggestion/generation tool, not a retrieval of stored hooks, and even maps it to the CLI equivalent 'clipugc hooks suggest'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for when to use the tool (when a hook text is needed for a UGC ad), how to tailor results (pass app context), and what to do with the output (pass it as hook to merge_ad). It lacks explicit when-not-to-use or alternative tool exclusions, but the chaining instruction makes its role in the workflow unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_imagesList character looksA
Read-only

List the looks (reference images) of a character with id, status (pending, processing, completed, failed), scene_prompt and image url when ready. Same as clipugc images list --character <id>. Also the poll call for generate_image and create_character. Costs no credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
characterYesCharacter id, as returned by other tools (numbers are fine as strings).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint and openWorldHint; the description adds meaningful behavioral detail: statuses to expect, image URL availability upon completion, CLI equivalence, and zero credit cost. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and efficient, with every sentence adding useful information: what is returned, CLI equivalence, polling role, and cost. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only tool, the description fully covers purpose, usage context, output details, and cost. The readOnlyHint annotation confirms safety, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single parameter 'character' is already documented as the character id. The description does not add significant new meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool lists character looks/reference images with specific fields (id, status, scene_prompt, image URL) and identifies its role as the poll call for generate_image and create_character. This distinguishes it from siblings like list_characters and generate_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly positions the tool as the polling mechanism for generate_image and create_character and notes it costs no credits. It does not state when not to use it, but the intended usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

merge_adMerge a clip into a UGC adA

Merge a completed clip with an app screen recording and a hook text overlay (plus optional background music) into the final UGC ad. Same as clipugc videos merge <clipId>. The clip must have status "completed" (check with get_video). Merging is free at the time of writing; the live cost is the "merge" entry of get_credits. Files are uploaded first. Returns merged_video_id: the AD id, which is a different id space from the clip id. The merge renders in the background. Poll get_video with {"id": , "kind": "ad"} every 5 to 10 seconds until status is "completed" or "failed", then call download_video with kind "ad".

ParametersJSON Schema
NameRequiredDescriptionDefault
hookYesHook text overlaid on the video, max 150 chars (same as --hook).
musicNoLocal path of background music, mp3/wav/m4a (same as --music).
videoYesClip (character video) id, as returned by other tools (numbers are fine as strings).
app_videoYesLocal path of the app screen recording, mp4/mov (same as --app-video).

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes far beyond the annotations: it discloses that files are uploaded first, the merge renders in the background, the returned id is in a different id space, and the caller must poll get_video with a specific kind parameter. It also explains the status polling loop and cost lookup. No contradiction with the annotations is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence earns its place and the most important information is front-loaded: the operation, inputs, and output. The description is dense but readable, and the polling instructions are specific without being padded. It is a model of efficient tool documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully explains the return value (merged_video_id), the id-space distinction, the required polling behavior, and the follow-up download call. It also covers preconditions, cost, and asynchronous rendering. Nothing essential for a caller to use the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes all four parameters at 100% coverage, so the baseline is 3. The description adds important extra meaning: it clarifies that 'video' is a clip id whose return id is an AD id in a different namespace, and that local file parameters imply an upload step. This exceeds the schema's basic descriptions without being exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation: merging a completed clip, app screen recording, hook text, and optional music into a final UGC ad. It names the exact inputs and output, and the CLI equivalence ('clipugc videos merge') removes ambiguity. This also differentiates it from sibling creation tools like create_clip or create_motion_clip.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when the tool is appropriate: the clip must have status 'completed', costs can be checked via get_credits, and the result is an ad id rather than a clip id. It does not explicitly state when not to use it or name alternative tools, but the prerequisites and workflow give strong practical guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 11 tool updatesv1.0.0
    • First observedcreate_character
    • First observedcreate_clip
    • First observedcreate_motion_clip
    • First observeddownload_video
    • First observedgenerate_image
    • First observedget_credits
    • First observedget_video
    • First observedlist_characters
    • First observedlist_hooks
    • First observedlist_images
    • First observedmerge_ad

TDQS

A4.6/5.0
Disambiguation5/5

Each tool targets a distinct resource or stage in the UGC pipeline: credits, characters, images, clips, motion clips, ads, hooks, status, and download. The only similar pair, create_clip and create_motion_clip, is clearly differentiated by the animation method (prompt-driven vs. driver video).

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: get_, list_, create_, generate_, merge_, download_. The naming makes the action and resource immediately obvious, with no mixed conventions or vague verbs.

Tool Count5/5

11 tools is well within the ideal range and each tool maps to a necessary step in the UGC creation workflow. There are no redundant tools, and the count feels appropriate for the platform's scope.

Completeness4/5

The core workflow is fully covered: credits check, character creation, image generation, clip/motion creation, merging, status polling, and downloading. Minor gaps exist around character update/delete and video deletion, but these are not essential to the primary content generation pipeline.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/clipugc/ClipUGC-CLI'

If you have feedback or need assistance with the MCP directory API, please join our Discord server