@clipwright/mcp-server 0.25.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -16,6 +16,157 @@ a customer reading it should not miss what appeared in the product. Like *Server
16
16
  they are live from the day the web app was deployed, not from the package release they are
17
17
  listed under.
18
18
 
19
+ ## [0.26.0] - 2026-10-09
20
+
21
+ `make_faceless` takes a narration voice by name: `list_voices` with `skill=make_faceless` lists seventeen voices in
22
+ six languages. The MCP tools `make_faceless` and `quote_faceless` refuse a key they do not declare, and the MCP
23
+ server requires a patched `@modelcontextprotocol/sdk`.
24
+
25
+ ### Changed
26
+
27
+ - *Dashboard:* a guide at `/guides/ai-ugc-ads` says what UGC ads and AI UGC ads are, and what the rules of the
28
+ United States, the European Union and the large platforms ask of them. Every source is listed with its date.
29
+ (clipwright#569)
30
+ - *Server-side:* a faceless video file carries its AI disclosure: the statement is embedded in the MP4 and stored in
31
+ the object metadata beside `ai-generated: true` and `generator: clipwright`. When the tag cannot be embedded, the
32
+ video is still delivered and the run says so, with the cause, in `warnings[]`. Faceless files delivered on or before
33
+ 2026-10-04 may carry the storage flag alone. (clipwright#489)
34
+ - `@clipwright/core` exports `aiDisclosureObjectMetadata(text, embedded?)`, the builder of that object metadata, and
35
+ `AI_DISCLOSURE_EMBEDDED_METADATA_KEY`. `AI_DISCLOSURE_OBJECT_METADATA` stays the metadata of a video with a
36
+ presenter. (clipwright#489)
37
+ - *Dashboard:* The AI Disclosure page describes one marking for both kinds of video and names the date before which
38
+ a faceless file may carry less. (clipwright#489)
39
+ - *Server-side:* a finished faceless video is delivered even when our own check of the picture objects. The run ends
40
+ `succeeded`, is charged by the delivered duration, and says in `warnings[]` what the check could not confirm and at
41
+ which second: the captions, a scene change, text in the caption area with captions off, or that the check did not
42
+ run. Such a run used to wait for an operator, and the customer got no video. A file that is not the video we
43
+ rendered (wrong length, size or sound) is still refused without a charge. (clipwright#498)
44
+ - *Server-side:* the narration of a faceless video is levelled to -16 LUFS, and quiet and loud phrases are brought
45
+ closer together. It used to keep the level of the speech vendor: about 4 LU quieter, with phrases up to 5 dB apart,
46
+ so a later phrase could sound much louder than the opening. Timing is unchanged. (clipwright#333)
47
+ - *Server-side:* pictures in a faceless video change faster and less evenly: about every two and a half seconds on
48
+ average, where they used to hold for three to four, and a short phrase gets a short shot of its own. A video uses
49
+ more generated pictures, so it takes longer to make; the price is unchanged. (clipwright#519)
50
+ - *Server-side:* a faceless shot that covers two phrases shows one scene. It used to ask for both scenes in one
51
+ picture, which could come back as two pictures stacked in one frame. (clipwright#517)
52
+ - *Server-side:* the step that writes the scene descriptions of a faceless video is told to ask for readable words
53
+ and figures only when the script says them. It used to invent some, such as figures on a blackboard that
54
+ contradicted the narration. This makes invented writing rarer, not impossible; the writing in a finished picture
55
+ is compared with the script by the check of generated pictures described further down. (clipwright#516)
56
+ - *Server-side:* a faceless video file is smaller and closer to the rendered picture. A local render of one
57
+ 43-second video with the new settings came to 29 MB at about 5 Mbit/s, where the old settings gave 75 MB at 14.
58
+ Resolution, frame rate, colour and audio are unchanged. (clipwright#518)
59
+ - *Server-side:* a faceless video whose opening clip shows text is delivered, with a `warnings[]` line saying so. It
60
+ used to fail with `opening_clip_rejected: the generated opening clip shows text`, or wait for an operator when the
61
+ frame held a lot of text, so a scene set in a shop or a café often could not be made: the image model draws signs
62
+ and price tags on its own. An opening clip that ends on a fade or is one flat colour still fails without a charge.
63
+ (clipwright#524)
64
+ - *Server-side:* a faceless video may run up to a quarter past `duration_seconds`, never past 90 seconds. It used to
65
+ fail with `voice_outside_selected_duration` when its narration ran more than 5 seconds over, and one script is
66
+ spoken at a different length from run to run, so a script that fitted once could fail the next time. A video more
67
+ than 5 seconds longer than selected says so in `warnings[]`, with both lengths. The price is unchanged: seconds
68
+ past the selection are free. A script is still accepted when its estimated length is 21 seconds to
69
+ `duration_seconds` plus 5, at most 90. (clipwright#529)
70
+ - `@clipwright/core`: `facelessMaxOutputFrames(selected)` returns a quarter past the selection, and the new
71
+ `facelessMaxEstimateFrames(selected)` returns the selection plus 5 seconds, the bound a script estimate must fit.
72
+ (clipwright#529)
73
+ - *Server-side:* a faceless video is ready sooner. After the first picture the others are generated three at a time,
74
+ beside the opening clip, where they used to be made one after another. The price and the result are unchanged.
75
+ (clipwright#520)
76
+ - *Server-side:* at most two faceless videos of one account are made at once; a third waits its turn and is not
77
+ refused. Faceless runs had no such limit. Each line also has a limit across all accounts now, so when many accounts
78
+ render at once a run may wait behind theirs instead of failing at a vendor. Three videos with a presenter per
79
+ account, as before. (clipwright#534)
80
+ - `@clipwright/core` exports `MAX_CONCURRENT_FACELESS_PER_ACCOUNT`. (clipwright#534)
81
+ - *Server-side:* captions of a faceless video break at the script's punctuation. A caption line used to be filled to
82
+ the width of the frame, so it could end one word into the next sentence: "NEXT MORNING A SIGN SOLD", then "OUT BY
83
+ NOON". A line now ends at a sentence mark, crosses a comma only with whole clauses, and a clause too long for one
84
+ line is split into parts of similar width instead of a full line and a leftover word. An abbreviation written with a
85
+ full stop before a capital or a figure ("Dr. Smith", "No. 1") still reads as a sentence end and can leave a one-word
86
+ line. (clipwright#535)
87
+ - *Server-side:* a video with a presenter (`make_ugc` or long-form) comes in a smaller file that is closer to the
88
+ rendered picture. A local render of one 69-second long-form video with the new settings came to 45 MB, where the
89
+ old settings gave 54 MB. Resolution, frame rate, colour and audio are unchanged. (clipwright#526)
90
+ - *Server-side:* a character who appears in several scenes of a faceless video is now described the same way in every
91
+ scene that shows them. The step that writes the scenes fixes one description of every recurring person or animal
92
+ (apparent age, build, hair, clothing), and the picture of each such scene is asked for with it. A secondary character
93
+ used to be a different person in every scene; only the main character, shown in the first picture, stayed the same.
94
+ Faces can still differ a little between scenes. (clipwright#532)
95
+ - `make_faceless` takes `voice`, the narration voice by name: `voice` on `quote_faceless` and `make_faceless`,
96
+ `--voice` on `quote-faceless` and `make-faceless`. `list_voices` with `skill=make_faceless` (`--skill
97
+ make_faceless` on `voices`) lists seventeen narration voices for it, in English, Russian, Spanish, Portuguese,
98
+ French and Italian, each with a language and a gender. Every listed voice now names the one skill that speaks it
99
+ in `skill`. Without `voice` the narration is read as before, by `narrator_en_wise_lady`. An unknown name,
100
+ a `make_ugc` voice and `voice_id` are refused before any charge, and `make_ugc` refuses a faceless voice the same
101
+ way, naming the skill that speaks it. A named voice whose language is written in another alphabet than the
102
+ script adds a line to `warnings[]` of the quote and of the run: the voice may mispronounce the text, and the
103
+ video may come out longer than its length limit and fail. A brief written in the other alphabet, with no letter
104
+ of the voice's, adds that line as a condition, since a brief may ask for the narration's language in words. The faceless voices have
105
+ no audio sample yet. (clipwright#530)
106
+ - **Breaking:** `@clipwright/mcp-server`: `make_faceless` and `quote_faceless` refuse a key they do not declare,
107
+ `voice_id` first of all, before any request is sent. Such a key used to be dropped silently. (clipwright#530)
108
+ - *Server-side:* `GET /v1/voices` without `skill` returns the `make_ugc` voices only, the same list as before, to
109
+ every client version; `skill=make_ugc` returns it too. The faceless voices come only with `skill=make_faceless`,
110
+ as `kind: "faceless_voice"`. (clipwright#530)
111
+ - `@clipwright/core` exports `FACELESS_VOICES`, `FACELESS_VOICE_NAMES`, `DEFAULT_FACELESS_VOICE`,
112
+ `FACELESS_SPEECH_MODEL`, `isFacelessVoiceName`, `buildFacelessVoiceWarnings`, `VOICE_SKILLS`,
113
+ `FACELESS_REJECTED_FIELDS` and `offeredFacelessInput`; `@clipwright/core/voice-admission` exports
114
+ `serverFacelessInput` and `facelessVoiceRefusal`. (clipwright#530)
115
+ - *Server-side:* a generated picture of a faceless video can be checked before the video is assembled: for writing that
116
+ neither the script nor the run's `character_details` contain, and for a frame cut into several pictures. The check
117
+ sits behind a server switch, which was turned on after its first production run had been read; that run, of eighteen
118
+ pictures, took a minute and a half longer than the same video unchecked. A picture
119
+ with either is drawn once more when the run has time and budget for it, and the cleaner of the two is used. What
120
+ remains is named in `warnings[]` with the seconds it is on screen, one line for each thing found; a finding by itself
121
+ does not fail the run. A picture whose check cannot run in its time or within the run's budget is used as it is, and
122
+ one `warnings[]` line says how many pictures went unchecked. The check is a paid step like the others: when its cost
123
+ cannot be established, the run waits for an operator. Scene pictures are also asked for no writing unless the scene
124
+ quotes the script, which removed invented signs and figures from 10 of 10 test pictures. A customer's own image is
125
+ not checked. Writing on a `character_reference` picture is not known to the check: a generated picture that repeats
126
+ it is reported when the writing has a figure or more than two words. (clipwright#516, clipwright#517)
127
+ - *Server-side:* the narration of a faceless video is delivered in two identical channels instead of one. It sounds the
128
+ same, and a loudness meter now reads the -16 LUFS the narration is levelled to; a meter that measured the single
129
+ channel read 3 LU lower. The file grows by about 1 %. (clipwright#526)
130
+
131
+ ### Security
132
+
133
+ - `@clipwright/mcp-server` requires `@modelcontextprotocol/sdk` 1.31.0 or newer. Earlier versions let an OAuth client
134
+ send credentials to an authorization server chosen by the MCP server (GHSA-6qxp-vccf-f47h). The server speaks stdio
135
+ and uses no OAuth; a fresh install of 0.25.0 already resolves to a patched version. (clipwright#510)
136
+
137
+ ### Fixed
138
+
139
+ - *Server-side:* a faceless video whose opening clip has to end in the middle of a phrase keeps the words a
140
+ `scene_images` picture is anchored to on that picture: the narration starts later, by under three seconds, so the
141
+ clip ends before those words. When no such start exists, the video is still delivered, and `warnings[]` names the image and
142
+ the anchored words spoken while the opening clip was on screen. It used to say nothing. (clipwright#521)
143
+ - *Server-side:* a faceless narration that comes out longer than the video may run is spoken once more, a little
144
+ faster. The run used to fail with `voice_outside_selected_duration` after the story and the speech were made, and
145
+ one script is spoken at a different length from run to run, so a script that fitted once could fail the next time.
146
+ A script that would not fit even at the fastest speech still fails, without a charge. (clipwright#529)
147
+ - *Server-side:* a faceless run no longer stops for review when one picture takes the image service about two minutes.
148
+ Such a picture is rare, about two in a hundred, but a video has eighteen or more, and since the pictures are made
149
+ three at a time (clipwright#520) one slow picture was enough to hold the whole run for an operator. A picture now has
150
+ four minutes before the run gives up on it. (clipwright#544)
151
+ - *Server-side:* two faceless videos made at the same time are much less likely to stop for review. To record what a
152
+ picture cost we ask the image service, which answers only a few such questions a minute; with two videos in work it
153
+ refused some, and a picture with no recorded cost held the whole run for an operator. A refused question now waits
154
+ as long as the service asks and is put again. Under load a video can take a few minutes longer; the limit itself
155
+ stays, so several videos at once can still meet it. (clipwright#553)
156
+ - *Server-side:* at most two faceless videos are made at once across all accounts; a third waits in the queue and
157
+ starts when one of them is done. Three at once asked the image service for more cost records than it answers, and
158
+ two of the three stopped for review. The limit per account stays at two, so one account's two videos can hold the
159
+ line while another account's video waits. (clipwright#553)
160
+ - *Server-side:* the voice preset `owner_ru_clone` speaks again. The cloned voice behind it was replaced at the
161
+ vendor, and a run that named the preset was refused before any charge. The preset now maps to the new voice, still
162
+ on `eleven_v4`, and `list_voices` links a sample spoken by it. (clipwright#497)
163
+ - *Server-side:* the delivery check of a faceless video no longer mistakes a yellow or amber picture for a caption
164
+ fault. It refused a correct video whose picture glowed behind the captions: a lamp, a sunset, fire, gold. The check
165
+ now compares neighbouring frames, so only yellow that moves with the spoken word counts. (clipwright#496)
166
+ - *Server-side:* a video file keeps one metadata box. The AI disclosure used to be added as a second box next to the
167
+ encoder's own, so a reader that takes the first box saw the encoder's comment and no disclosure. The disclosure now
168
+ replaces that comment in the one box, and the encoder tag stays. (clipwright#493)
169
+
19
170
  ## [0.25.0] - 2026-10-04
20
171
 
21
172
  The AI disclosure names what each video holds, and the clients show it: `get_run` of the MCP server and
package/README.md CHANGED
@@ -36,9 +36,11 @@ Any MCP host works — the server speaks JSON-RPC over stdio.
36
36
  ## Tools
37
37
 
38
38
  - `list_voices` — voices for `voice`: the presets, the thirty voices of the
39
- speech model `gemini-3.8-flash-tts` and the catalog, with filters by language,
40
- gender, age, use case and model, and a short audio sample where the voice has
41
- one. Free, spends no credits.
39
+ speech model `gemini-3.8-flash-tts` and the catalog for `make_ugc`, with
40
+ filters by language, gender, age, use case and model, and a short audio
41
+ sample where the voice has one. The seventeen narration voices of
42
+ `make_faceless` are listed with `skill: "make_faceless"`. Free, spends no
43
+ credits.
42
44
  - `list_actors` — ready-made faces with stable ids and verified formats. Free.
43
45
  - `quote_ugc` — estimated duration and price, plus a warning when `make_ugc`
44
46
  with the same input would be refused for money or access. Free.
@@ -56,9 +58,10 @@ Any MCP host works — the server speaks JSON-RPC over stdio.
56
58
  - `quote_faceless` — price of a faceless video before making one. Free.
57
59
  - `make_faceless` — **makes a faceless video from your script or from a short
58
60
  brief; this costs money.** You pick 30 to 90 seconds; the video ends with its
59
- narration, from 25 seconds to 5 seconds past your pick (never past 90), and
61
+ narration, from 25 seconds to a quarter past your pick (never past 90), and
60
62
  costs at most the quote. Narration plays over an opening
61
- animated clip and image scenes, with captions on by default. Returns a
63
+ animated clip and image scenes, with captions on by default. `voice` picks
64
+ the narration voice by name. Returns a
62
65
  `run_id` immediately; poll `get_run` until `succeeded`.
63
66
  - `delete_actor` — removes a personal actor of this account. Videos already made
64
67
  with it stay as they are. Free.
@@ -71,7 +74,8 @@ what it will and will not honor. Anything the API cannot deliver comes back in
71
74
  rejected up front instead of being accepted and ignored.
72
75
 
73
76
  Bumping the `attempt` field starts a **new paid render**. It is the way to retry
74
- a failed run on purpose, not a free refresh.
77
+ a failed run on purpose, not a free refresh. For faceless videos `attempt`
78
+ belongs to `make_faceless`: a quote takes none, and `quote_faceless` refuses it.
75
79
 
76
80
  `SKILL.md` ships inside the package with the full operating instructions, and
77
81
  `CHANGELOG.md` next to it says what changed in each release and what was removed.
package/SKILL.md CHANGED
@@ -535,12 +535,19 @@ version and image hash even if the catalog changes later.
535
535
 
536
536
  ### `list_voices` — free, optional filters
537
537
 
538
- Returns the voices for the `voice` field of `make_ugc`: the presets first, then
539
- the thirty voices of `gemini-3.8-flash-tts`, then the catalog voices, by language
540
- and then by rank. Costs nothing and creates no run.
538
+ Returns the voices for the `voice` field of `make_ugc`, or of `make_faceless`
539
+ when called with `skill: "make_faceless"`. Each voice names the one skill that
540
+ speaks it in `skill`, and the other skill refuses it before any charge. The
541
+ `make_ugc` voices are the presets, the thirty voices of `gemini-3.8-flash-tts`
542
+ and the catalog voices, by language and then by rank. The seventeen
543
+ `make_faceless` voices are a list of their own. Costs nothing and creates no
544
+ run.
541
545
 
542
546
  All filters are optional:
543
547
 
548
+ - `skill` — `make_ugc` or `make_faceless`: the skill whose voices to list.
549
+ Without it the list holds the `make_ugc` voices only, so call it with
550
+ `skill: "make_faceless"` before a faceless video.
544
551
  - `language` — the voice's native language. It is a filter, not a limit: any
545
552
  voice speaks any supported language. A `model_voice` voice has no language of
546
553
  its own and matches the languages measured on its model, `en` and `ru`; the
@@ -557,11 +564,13 @@ A voice without a label matches no value of that filter; `language` on a
557
564
  refused with the allowed values, and an unknown filter name with
558
565
  `unknown_field`; neither returns an empty list.
559
566
 
560
- Each entry carries `name`, `kind` (`preset`, `model_voice` or `catalog`),
561
- `language`, `description`, `model` (its default speech model) and
562
- `supported_models`. A `model_voice` entry has no `language`, names one model in
567
+ Each entry carries `name`, `kind` (`preset`, `model_voice`, `faceless_voice` or
568
+ `catalog`), `skill`, `language`, `description`, `model` (its default speech
569
+ model) and `supported_models`. A `model_voice` entry has no `language`, names one model in
563
570
  both `model` and `supported_models` and carries `gender` only where it is known
564
- (`kore` is female, `charon` is male). A
571
+ (`kore` is female, `charon` is male). A `faceless_voice` entry carries its
572
+ `language` and `gender` and the model label `narrator-v1`, which is not a
573
+ `tts_model`: the `model` filter never returns it. A
565
574
  catalog voice also carries `verified_models` and whichever of `locale`,
566
575
  `accent`, `gender`, `age` and `use_case` the catalog has. The tool returns
567
576
  `{ "voices": [...] }` only. REST `GET /v1/voices` also returns `models`, and the
@@ -609,7 +618,7 @@ behind such a warning.
609
618
 
610
619
  A faceless video is narration over an opening animated clip and image scenes,
611
620
  without an on-camera presenter. You select 30 to 90 seconds; the video ends with
612
- its narration, runs at least 25 seconds and at most 5 seconds past the selection,
621
+ its narration, runs at least 25 seconds and at most a quarter past the selection,
613
622
  never beyond 90. Captions are on by default; pass
614
623
  `captions: false` to turn them off.
615
624
 
@@ -617,8 +626,9 @@ Give the narration one of two ways, and name which with `input_mode`:
617
626
 
618
627
  - `input_mode: "script"` with `script` — your exact text is read as written.
619
628
  The video ends with the narration, runs at least 25 seconds and may exceed
620
- `duration_seconds` by up to 5 seconds, never beyond 90 seconds. A script must
621
- fit this output range. The charge follows the delivered duration and never
629
+ `duration_seconds` by up to a quarter, never beyond 90 seconds; a video more
630
+ than 5 seconds longer says so in `warnings[]`. A script is accepted when its
631
+ estimated length is 21 seconds to `duration_seconds` plus 5, at most 90. The charge follows the delivered duration and never
622
632
  exceeds the quote; the minimum is 200 base credits plus 150 for the opener.
623
633
  - `input_mode: "brief"` with `brief` — a short description; the narration is
624
634
  written from it.
@@ -634,14 +644,39 @@ refuses it before any request is sent.
634
644
  consistent) and `scene_images` (your own images, each anchored to a word range
635
645
  or a quote of the narration). An uploaded image must belong to this account.
636
646
 
647
+ `voice` picks the narration voice: a `name` from `list_voices` with
648
+ `skill: "make_faceless"`. There are seventeen, in English, Russian, Spanish,
649
+ Portuguese, French and Italian; each entry has a `language` and a `gender`.
650
+ Without `voice` the narration is read by `narrator_en_wise_lady`, an English
651
+ voice, whatever the language of the text, so pick a voice in the language of
652
+ the narration. A voice reads any language with its own accent; when the
653
+ language of a voice you named is written in another alphabet than the script,
654
+ the quote and the run say so in `warnings[]`: the voice may mispronounce the
655
+ text, and the video may come out longer than its length limit and fail. A
656
+ brief draws that line, worded as a condition, only when it is written in the
657
+ other alphabet and holds no letter of the voice's: the narration is written in the language of the brief
658
+ unless the brief asks for another, so name the narration's language in the
659
+ brief when it differs from the brief's own. An unknown name and a `make_ugc`
660
+ voice such as `george` are refused before any charge. `voice_id` is not
661
+ accepted: `make_faceless` speaks only the voices listed for it. Both faceless
662
+ tools refuse `voice_id` and any other key they do not declare before any
663
+ request is sent. These voices have no `preview_url` yet.
664
+
637
665
  Call `quote_faceless` first and show the user the price: it spends nothing and
638
666
  warns when `make_faceless` would be refused for money or access. `make_faceless`
639
667
  returns a `run_id` at once; poll `get_run` until `succeeded` (with `video_url`)
640
668
  or `failed`. As with `make_ugc`, a repeated call with the same input returns the
641
- same run, and `attempt` 2, 3, … deliberately starts a new paid one. When
642
- faceless generation is switched off on the server, both tools answer
669
+ same run, and `attempt` 2, 3, … deliberately starts a new paid one. `attempt`
670
+ belongs to `make_faceless`: a quote takes none, and `quote_faceless` refuses
671
+ it. When faceless generation is switched off on the server, both tools answer
643
672
  `paid_render_disabled` and nothing is charged.
644
673
 
674
+ A `succeeded` faceless run can carry a remark from our own delivery check in
675
+ `warnings[]`: that the check could not confirm the captions or a scene change at
676
+ a given second, or that it did not run. The video is delivered and charged as
677
+ any other. Read the warning to the user and let them watch the video before
678
+ they publish it.
679
+
645
680
  ## 5. Retrying a failed run is NOT a permanent refusal
646
681
 
647
682
  If `get_run` returned a terminal `FAILED` and you call `make_ugc` AGAIN with the
package/dist/server.js CHANGED
@@ -4,7 +4,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
4
  import { z } from "zod";
5
5
  // `offeredUgcInputShape`, not the full shape: fields the server rejects must not
6
6
  // be offered to a caller who would get a 400 for using them.
7
- import { offeredUgcInputShape, actorDefaultsInput, BROLL_POLICY_DESCRIPTION, CATALOG_LANGUAGES, CREATE_ACTOR_DESCRIPTION, createActorInputShape, MODEL_VOICE_MODEL, MODEL_VOICE_NAMES, SCRIPT_LENGTH_DESCRIPTION, voicesQueryShape, agentRetryShape, runId, MAKE_UGC_DESCRIPTION, MAKE_UGC_AGENT_PROTOCOL, MAKE_FACELESS_DESCRIPTION, MAKE_FACELESS_AGENT_PROTOCOL, makeFacelessInput, offeredFacelessInputShape, UPLOAD_IMAGE_DESCRIPTION, UPLOAD_MAX_BYTES, sniffUploadMediaType, } from "@clipwright/core";
7
+ import { offeredUgcInputShape, actorDefaultsInput, BROLL_POLICY_DESCRIPTION, CATALOG_LANGUAGES, CREATE_ACTOR_DESCRIPTION, createActorInputShape, DEFAULT_FACELESS_VOICE, FACELESS_VOICE_NAMES, MODEL_VOICE_MODEL, MODEL_VOICE_NAMES, SCRIPT_LENGTH_DESCRIPTION, voicesQueryShape, agentRetryShape, runId, MAKE_UGC_DESCRIPTION, MAKE_UGC_AGENT_PROTOCOL, MAKE_FACELESS_DESCRIPTION, MAKE_FACELESS_AGENT_PROTOCOL, makeFacelessInput, offeredFacelessInput, UPLOAD_IMAGE_DESCRIPTION, UPLOAD_MAX_BYTES, sniffUploadMediaType, } from "@clipwright/core";
8
8
  import { formatGetRun, withFailureReport } from "./format.js";
9
9
  // Version from the manifest: a literal drifts, and a JSON import breaks `rootDir`.
10
10
  const packageVersion = () => createRequire(import.meta.url)("../package.json").version;
@@ -87,7 +87,12 @@ export function createServer(client) {
87
87
  server.registerTool("list_voices", {
88
88
  title: "List voices",
89
89
  annotations: { readOnlyHint: true, destructiveHint: false },
90
- description: "List the voices for make_ugc's `voice` field: the presets first, then the " +
90
+ description: "List the voices for the `voice` field of make_ugc, or of make_faceless with skill=make_faceless. " +
91
+ "Without `skill` the list holds the make_ugc voices only. Each voice names the one skill that speaks it " +
92
+ "in `skill`, and the other skill refuses it before any charge. skill=make_faceless lists " +
93
+ `the ${FACELESS_VOICE_NAMES.length} narration voices of make_faceless (kind faceless_voice, each with a ` +
94
+ `language and a gender; without voice it speaks ${DEFAULT_FACELESS_VOICE}; it takes no voice_id). ` +
95
+ "The rest of this text is about the make_ugc voices: the presets first, then the " +
91
96
  `${MODEL_VOICE_NAMES.length} voices of ${MODEL_VOICE_MODEL} (kind model_voice), then catalog voices in ` +
92
97
  `${CATALOG_LANGUAGES.length} languages. Filter by \`language\` (the voice's native language; any voice ` +
93
98
  "speaks any supported language), `gender`, `age`, `use_case` and `model`; an unknown filter value is " +
@@ -156,12 +161,12 @@ export function createServer(client) {
156
161
  }, async (args) => withFailureReport(async () => ({
157
162
  content: [{ type: "text", text: JSON.stringify(await client.quoteActor(args)) }],
158
163
  })));
159
- // Flat shape for tools/list; the union parse refuses a script/brief mismatch before the SDK call.
164
+ // Flat strict object for tools/list; the union parse refuses a script/brief mismatch before the SDK call.
160
165
  server.registerTool("make_faceless", {
161
166
  title: "Make a faceless video",
162
167
  annotations: { readOnlyHint: false, destructiveHint: false },
163
168
  description: `${MAKE_FACELESS_DESCRIPTION} ${MAKE_FACELESS_AGENT_PROTOCOL}`,
164
- inputSchema: { ...offeredFacelessInputShape, ...agentRetryShape },
169
+ inputSchema: offeredFacelessInput.extend(agentRetryShape),
165
170
  }, async (args) => withFailureReport(async () => {
166
171
  const { attempt, ...input } = args;
167
172
  const run = await client.startFaceless(makeFacelessInput.parse(input), { attempt });
@@ -172,7 +177,7 @@ export function createServer(client) {
172
177
  annotations: { readOnlyHint: true, destructiveHint: false },
173
178
  description: "Estimate the credit cost of make_faceless WITHOUT spending credits. " +
174
179
  "Always call this first and show the user the price before make_faceless.",
175
- inputSchema: offeredFacelessInputShape,
180
+ inputSchema: offeredFacelessInput,
176
181
  }, async (args) => withFailureReport(async () => ({
177
182
  content: [{ type: "text", text: JSON.stringify(await client.quoteFaceless(makeFacelessInput.parse(args))) }],
178
183
  })));
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@clipwright/mcp-server",
3
- "version": "0.25.0",
4
- "description": "MCP server for Clipwright: generate UGC videos from your coding agent",
3
+ "version": "0.26.0",
4
+ "description": "MCP server for Clipwright: generate UGC videos from your coding agent. mcprush.com-claim-clipwright-mcp-8787583d9d471dff4c750c02",
5
5
  "mcpName": "io.clipwright/mcp",
6
6
  "keywords": [
7
7
  "mcp",
@@ -32,10 +32,10 @@
32
32
  "clipwright-mcp": "dist/index.js"
33
33
  },
34
34
  "dependencies": {
35
- "@modelcontextprotocol/sdk": "^1.29.0",
35
+ "@modelcontextprotocol/sdk": "^1.31.0",
36
36
  "zod": "^4.4.3",
37
- "@clipwright/core": "0.25.0",
38
- "@clipwright/sdk": "0.25.0"
37
+ "@clipwright/core": "0.26.0",
38
+ "@clipwright/sdk": "0.26.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/node": "^26.1.1"