@clipwright/mcp-server 0.22.0 → 0.23.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.
Files changed (3) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/SKILL.md +19 -7
  3. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -16,6 +16,50 @@ 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.23.0] - 2026-10-02
20
+
21
+ Russian speech moves to `eleven_v4`: the server names it by default, and the client texts say which voices speak it.
22
+ Clients older than 0.22.0 fail on the new model name.
23
+
24
+ ### Changed
25
+
26
+ - **Breaking:** *Server-side:* Russian speech uses `eleven_v4` when you name no `tts_model`. That covers the presets
27
+ `owner_ru_clone` and `daria_ru_female`, the catalog voices named `ru_*`, and a raw `voice_id` whose script is mostly
28
+ Cyrillic. Every other voice stays on `eleven_v3`, and an explicit `tts_model` always wins. Clients older than 0.22.0
29
+ read the model as one of three fixed values and fail on a response that names `eleven_v4`: `list_voices` fails
30
+ whenever the listing holds a Russian voice, as the unfiltered one always does, and `quote` fails for those Russian
31
+ voices. Upgrade to 0.22.0 or later. The contract version is `2026-10-02`. (clipwright#452)
32
+ - **Breaking:** `resolveTtsModel` in `@clipwright/core` requires `script`, the whole spoken text of the run: a raw
33
+ `voice_id` takes its model from it. (clipwright#452)
34
+ - *Server-side:* a script, or the line of one actor segment, that holds nothing but `<break time="…" />` tags is
35
+ refused before any charge on `eleven_v4`. The model gets the text with those tags cut, and nothing would be left
36
+ to say. (clipwright#452)
37
+ - *Server-side:* the warnings for a model that misreads stress marks name both models that read them, `eleven_v4`
38
+ and `eleven_v3`, instead of advising `eleven_v3` alone. (clipwright#452)
39
+ - *Server-side:* the quote and the reserve for a Russian script on `eleven_v4` assume 2.18 words per second, the
40
+ measured pace, instead of 2.3. `duration_estimate_sec` and `credits_estimate` come out about 5% higher: 153 Russian
41
+ words are quoted at 70 seconds and 2,100 credits instead of 67 seconds and 2,010. The charge still follows the
42
+ measured duration. A Russian script on an explicit `eleven_v3` and every other language are quoted as before.
43
+ (clipwright#452)
44
+ - *Server-side:* the long-form qualification ceiling (`segments` or `inserts`) moves from 300 to 327 seconds of
45
+ estimated output, for every run. A Russian script on an `eleven_v4` voice passes up to 713 words, against the 691
46
+ that passed while Russian voices spoke `eleven_v3`. A Russian script on an explicit `eleven_v3` passes up to 753
47
+ words and an English one up to 851. A longer script is refused before any charge. (clipwright#452)
48
+ - The `tts_model` and `script` descriptions say which voices speak `eleven_v4` by default, name both models that read
49
+ stress marks, and say that break tags are not counted toward the `eleven_v4` script limit. (clipwright#452)
50
+
51
+ ### Fixed
52
+
53
+ - `SKILL.md` and the CLI README no longer say that every preset and catalog voice speaks `eleven_v3`, and no longer
54
+ advise keeping Russian scripts on `eleven_v3`. They name the voices that speak `eleven_v4` when you name no model:
55
+ the presets `owner_ru_clone` and `daria_ru_female`, the catalog voices named `ru_*`, and a raw `voice_id` with a
56
+ mostly Cyrillic script. They name both models that read stress marks, `eleven_v4` and `eleven_v3`, and say that
57
+ `eleven_v4` gives no pause for a `<break time="…" />` tag and gets the text with the tag cut. `SKILL.md` lists the
58
+ 5,000-character script limit of `eleven_v4`. The behavior is the one the entries above describe; only these texts
59
+ were out of date. (clipwright#452)
60
+ - The `--tts-model` help of `clipwright make` says that an omitted flag means the voice's default model. It said
61
+ "the preset's model", which was wrong for a catalog voice and for `--voice-id`. (clipwright#452)
62
+
19
63
  ## [0.22.0] - 2026-10-01
20
64
 
21
65
  A new speech model: `tts_model` accepts `eleven_v4`, and the clients no longer fail on a model they do not know.
package/SKILL.md CHANGED
@@ -319,11 +319,15 @@ is, the contract MINUS the rejected fields: they simply are not there, and listi
319
319
  them here would mean offering what the server punishes you for (section 3).
320
320
 
321
321
  `script` (required while `segments` is rejected; length is limited by the resolved
322
- TTS model, as reported by `tools/list`: `eleven_v3` allows 5000 characters,
322
+ TTS model, as reported by `tools/list`: `eleven_v3` and `eleven_v4` allow 5000 characters,
323
323
  `eleven_flash_v2_5` and `eleven_turbo_v2_5` allow 10000. Spaces, audio tags and stress
324
324
  marks count; emoji may count as two characters. There is no word-count limit or fixed
325
- duration implied by it), `tts_model` (every preset and catalog voice speaks `eleven_v3`, the most
326
- expressive model; `eleven_flash_v2_5` and `eleven_turbo_v2_5` cost less and suit
325
+ duration implied by it), `tts_model` (omit it and the voice decides: the Russian presets
326
+ `owner_ru_clone` and `daria_ru_female` and the catalog voices named `ru_*` speak
327
+ `eleven_v4`, every other preset and catalog voice speaks `eleven_v3`; a raw `voice_id`
328
+ speaks `eleven_v4` when at least 60% of the script's Cyrillic and Latin letters are
329
+ Cyrillic, and `eleven_v3` otherwise; an explicit `tts_model` always wins;
330
+ `eleven_flash_v2_5` and `eleven_turbo_v2_5` cost less and suit
327
331
  languages other than Russian), optionally `person` OR
328
332
  `image` (a public `https` URL) with `actor_gender` (`female`/`male`, only next to
329
333
  `image`), plus `name`, `captions` (defaults to `false` —
@@ -334,13 +338,20 @@ differ), `resolution` (`720p`/`1080p`/`4k`), `voice`/`voice_id`.
334
338
 
335
339
  **Russian stress marks.** Tell a user who writes in Russian that they can fix stress:
336
340
  write the stressed vowel as a capital inside a lowercase word — `потОм`, `зАмок` — and
337
- Clipwright sends `eleven_v3` the stress mark U+0301 (`пото́м`). A capital that starts a
341
+ Clipwright sends `eleven_v4` and `eleven_v3` the stress mark U+0301 (`пото́м`). A capital that starts a
338
342
  word stays a capital, a word with a second capital or an inner capital consonant
339
343
  (`ВУЗы`, all caps) stays as written, and a U+0301 typed directly is kept. A single
340
- inner capital vowel always reads as stress, so `ЯндексЕда` needs a space. Keep Russian scripts on `eleven_v3`: the 2.5 models misread the mark, so a script
344
+ inner capital vowel always reads as stress, so `ЯндексЕда` needs a space. Keep Russian
345
+ scripts on `eleven_v4` or `eleven_v3`: the 2.5 models misread the mark, so a script
341
346
  carrying it draws a warning there, and so does any Cyrillic script. Retrying never
342
347
  fixes stress; only the text does.
343
348
 
349
+ **Break tags on `eleven_v4`.** The model gives no pause for `<break time="1.5s" />`.
350
+ Clipwright cuts every tag of that form (`time` in `s` or `ms`) from the text it sends to
351
+ `eleven_v4`, leaves it out of the character count, and names the cut in `warnings[]` of
352
+ the quote and the run. A script that holds nothing but break tags is refused before any
353
+ charge. The other models get the tag as written.
354
+
344
355
  The exact list is always available from the tool schema itself: `tools/list` is
345
356
  generated from the same shape, and fields that are not honoured carry
346
357
  `NOT HONORED YET` right in their own `description`.
@@ -429,8 +440,9 @@ Two mutually exclusive optional fields in the `make_ugc` input:
429
440
  When the user sends a photo and asks for no particular voice, pass the gender of
430
441
  the person in it as `actor_gender`. Ask the user only when you cannot tell.
431
442
 
432
- For a Russian script, keep `eleven_v3` and mark stress with a capital vowel
433
- (see **Russian stress marks** above).
443
+ For a Russian script, leave `tts_model` out or name `eleven_v4` or `eleven_v3` — both
444
+ read stress marks — and mark stress with a capital vowel (see **Russian stress marks**
445
+ above). A Russian voice speaks `eleven_v4` on its own.
434
446
 
435
447
  ### `get_run` — status polling
436
448
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clipwright/mcp-server",
3
- "version": "0.22.0",
3
+ "version": "0.23.0",
4
4
  "description": "MCP server for Clipwright: generate UGC videos from your coding agent",
5
5
  "mcpName": "io.clipwright/mcp",
6
6
  "keywords": [
@@ -34,8 +34,8 @@
34
34
  "dependencies": {
35
35
  "@modelcontextprotocol/sdk": "^1.29.0",
36
36
  "zod": "^4.4.3",
37
- "@clipwright/core": "0.22.0",
38
- "@clipwright/sdk": "0.22.0"
37
+ "@clipwright/core": "0.23.0",
38
+ "@clipwright/sdk": "0.23.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/node": "^26.1.1"