Clipwright
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CLIPWRIGHT_API_KEY | Yes | Your Clipwright API key from https://app.clipwright.io/api-keys |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| make_ugcA | Start generation of a lip-synced UGC video. Give a script within the selected speech model's text limit; the actor comes from actor_id (a saved actor from list_actors) or image, otherwise the default actor is used. Format and resolution follow the request and the source, defaulting to 1080x1920. Captions are OPT-IN: ask the user first. Fields the renderer does not honor yet carry a NOT HONORED YET note in their own description — read it instead of guessing. Call quote_ugc before generating and show the cost. This does NOT wait for the video: it starts the run and returns a run_id IMMEDIATELY. You MUST then poll get_run with that run_id until the state is 'succeeded' (video_url) or 'failed'. A 'failed' run whose paid vendor job we still hold can go back to 'queued' and reach 'succeeded' later; whenever that happens it is named in warnings[]. Pass attempt=2,3,… to deliberately start a NEW run for the same input (retry after a failure). |
| get_runA | Check the status of a video generation started by make_ugc or make_faceless. Pass the run_id. While the run is still working it returns status IN_PROGRESS with a next_action telling you to poll again; repeat every ~5 seconds until it reaches a terminal state — SUCCEEDED (with video_url) or FAILED. |
| get_run_shotsA | Read the shots of a video made by make_faceless or make_ugc. Pass the run_id. Free and read-only: it changes nothing and starts nothing. With planned=true the answer holds the frame size, the frame rate, the narration words with their timing, and for each shot its id, its span in frames, its kind, the words it covers, its description and preview_url, a signed link to the shot's source picture or clip. That link is a large file and it expires: read the shots again for a fresh one, never store it. A field named in |
| quote_revisionA | Price a revision of a run WITHOUT spending credits: what it would change (summary) and what it costs (billing.total_credits). Pass run_id and exactly one of changes or document, the same as revise_run. Always call this first and show the user the price before revise_run. A revision that delivers is charged its quoted total; one that fails is charged nothing, even when its paid work was already done. While paid edits are closed it answers editing_disabled and charges nothing. |
| revise_runA | Start a revision of a run made by make_faceless (paid): a NEW run that renders the video again with the shots you change, by changes (a shot and what to generate for it) or by document (the whole edited document); pass exactly one. Call quote_revision first and show the user the price. An identical request returns the same run it started before, so a call repeated after a lost answer starts nothing new; to start a second revision with the same request on purpose, pass attempt 2. A revision that delivers is charged its quoted total; one that fails is charged nothing, even when its paid work was already done. An original has a limit on revisions running at once and on revisions failed or unfinished, and paid edits of it close some days after it finished; a refusal names which. While paid edits are closed it answers editing_disabled and charges nothing. The result is a new run: poll it with get_run; once it succeeded it is editable under its own run_id. |
| quote_ugcA | Estimate the credit cost of a make_ugc call WITHOUT spending credits. Always call this first and show the user the price before make_ugc. |
| upload_imageA | Upload a LOCAL image file (PNG or JPEG, up to 10 MB) and get an https url to pass as |
| list_voicesA | List the voices for the |
| list_actorsA | List saved Clipwright actors with stable IDs, gender, age and verified image formats. Choose actor_id for quote_ugc and make_ugc. Preview URLs expire; actor IDs remain reusable. Do not combine actor_id with image, person or actor_gender. Without voice, the actor speaks the default voice of their gender. |
| get_actor_defaultsA | Read this account actor's saved B-roll default. Saved policy for B-roll: anyone allows people including the actor; no_actor excludes the actor; no_people excludes all people, including hands. Segmented media generation is closed. This setting is stored only and has no effect on actor-only videos. Run override wins over the account actor default; otherwise no_people. |
| set_actor_defaultsA | Save this account actor's B-roll default without spending credits. Saved policy for B-roll: anyone allows people including the actor; no_actor excludes the actor; no_people excludes all people, including hands. Segmented media generation is closed. This setting is stored only and has no effect on actor-only videos. Run override wins over the account actor default; otherwise no_people. |
| create_actorA | Create a personal actor for this account from words describing a fictional adult: a 9:16 portrait with exactly one face, plus the other requested formats edited from it. Returns a run_id immediately; poll get_run until 'succeeded' (created_actor.actor_id, then pass it as actor_id to make_ugc) or 'failed'. Each published image is charged at the price quote shows; refused descriptions and unusable portraits cost nothing. When generation is switched off the call fails with actor_generation_disabled. |
| quote_actorA | Estimate the credit cost of create_actor WITHOUT spending credits. Call this first and show the price before create_actor: each requested format is a separate charged image. |
| make_facelessA | Start a paid finished faceless video from a script or brief. You select 30–90 seconds; the video ends with its narration, runs at least 25 seconds and at most a quarter past the selection, never beyond 90. The video has an opening animated clip and image scenes. Captions are on by default and can be turned off. Call quote_faceless first and show the user the price. This does NOT wait for the video: it starts the run and returns a run_id IMMEDIATELY. Then poll get_run with that run_id until the state is 'succeeded' (video_url) or 'failed'. Pass attempt=2,3,… to deliberately start a NEW run for the same input. |
| quote_facelessA | Estimate the credit cost of make_faceless WITHOUT spending credits. Always call this first and show the user the price before make_faceless. |
| delete_actorA | Delete a personal actor of this account by actor_id. Videos already made with it stay as they are, and new runs can no longer use it. An actor used by a run that has not finished is refused until that run ends. Catalog actors belong to Clipwright and are not deletable. |
| get_accountA | Read this account's credits. Free, spends nothing. debt_credits above zero means make_ugc is refused with debt_outstanding whatever the balance, until the account buys credits; with no debt, balance_credits is what a new run can spend. holds_credits are reserved for runs still in progress and settle when they finish. grants lists unexpired credit grants. quote_ugc already warns when make_ugc would be refused; this tool gives the numbers behind it. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
The quote_X / make_X pairing and the run-centric tools (get_run, get_run_shots, revise_run) give each tool a fairly clear role. The main risk is make_ugc vs make_faceless, which both start video runs, but the descriptions clearly separate lip-synced UGC from faceless videos. Distinctions are otherwise solid.
Nearly every tool follows a consistent verb_noun snake_case pattern (get_account, make_ugc, quote_revision, list_voices, create_actor, delete_actor, set_actor_defaults). The quote_* and make_* families are parallel and predictable, making the surface easy to navigate.
17 tools is slightly heavy but justified by the four quote/make pairs plus run status, actor management, upload and defaults. Each tool maps to a real pipeline step, though get/set_actor_defaults for an explicitly inert stored setting is arguably marginal.
Core generation, quoting, polling, revision and actor create/list/delete are covered well, including the uncommon quote-first pattern. Notable gaps remain: no way to list or cancel runs/history, no actor update, and no media lifecycle management beyond storage-expiry fields, which agents cannot act on.