@clipwright/mcp-server 0.14.0 → 0.16.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
@@ -10,6 +10,95 @@ on the client side. Entries marked *Server-side* changed the API itself: every
10
10
  client version sees them from the day the API was deployed, not from the package
11
11
  release they are listed under.
12
12
 
13
+ Entries marked *Dashboard:* changed the web app (the dashboard or a public page of the site)
14
+ and no package. This file is also the public changelog at /changelog, so they are listed here:
15
+ a customer reading it should not miss what appeared in the product. Like *Server-side* entries,
16
+ they are live from the day the web app was deployed, not from the package release they are
17
+ listed under.
18
+
19
+ ## [0.16.0] - 2026-09-16
20
+
21
+ ### Added
22
+
23
+ - *Server-side:* a new skill, `create_actor`, builds a personal actor for the
24
+ account from a description of a fictional adult: a 9:16 portrait with exactly
25
+ one face, plus the other requested formats edited from it. `POST
26
+ /v1/skills/create_actor/quote` and `/run` take the description, `gender`,
27
+ `approximate_age`, `name`, `quality` and `aspect_ratios`; the run reports
28
+ `created_actor` when it succeeds, and the returned `actor_id` goes to
29
+ `make_ugc` in the same field a catalog actor does. `GET /v1/actors` lists the
30
+ account's own actors after the catalog, and `DELETE /v1/actors/{id}` takes one
31
+ out of the choice. The skill appears in `GET /v1/public/skills` only while
32
+ generation is switched on; until then quote and run answer 503
33
+ `actor_generation_disabled` and no run is created. (clipwright#120)
34
+ - *Server-side:* runs have a new state, `generating`, which only `create_actor`
35
+ enters. The set of terminal states is unchanged: `succeeded` and `failed`, and
36
+ nothing else. (clipwright#120)
37
+ - Personal actors reached the clients. The SDK gained `quoteActor`,
38
+ `createActor` and `deleteActor`; the CLI gained `quote-actor`, `create-actor`
39
+ and `delete-actor`; the MCP server gained `quote_actor`, `create_actor` and
40
+ `delete_actor`, so `tools/list` now returns ten tools instead of seven. The
41
+ idempotency key of an actor run is built from the actor's own schema: two
42
+ different descriptions are two different keys, and a repeated call with the
43
+ same description returns the run already paid for. (clipwright#120)
44
+ - *Dashboard:* `/actors` shows the account's personal actors next to the
45
+ catalog and deletes one on confirmation. A deleted actor stops being offered
46
+ at once; its images are removed by a daily cleanup. (clipwright#120)
47
+
48
+ ### Changed
49
+
50
+ - *Server-side:* a request with `person` and generation switched on gets a
51
+ warning that points at `create_actor` instead of only saying the field is not
52
+ honored. (clipwright#120)
53
+ - *Server-side:* `create_actor` is charged per published image, not per second:
54
+ the portrait and each extra format cost what the quote showed, a partial
55
+ result charges only what was published and names the rest in `warnings`, and a
56
+ failed run costs nothing at all. Refused descriptions and unusable portraits
57
+ are free. (clipwright#120)
58
+
59
+ ## [0.15.0] - 2026-09-14
60
+
61
+ ### Changed
62
+
63
+ - *Server-side:* in `GET /v1/voices`, a catalog voice carries `preview_url` and
64
+ `preview_expires_at` once its sample is recorded: a short clip of that voice on
65
+ `eleven_v3`, in the voice's own language. The link is signed by us and
66
+ expires like a preset's. A voice without a recorded sample for its current
67
+ model and sample text still has neither field, and the list never links to
68
+ the vendor. The sample texts outside English and Russian are machine
69
+ translations that no native speaker has checked. (clipwright#164)
70
+ - *Server-side:* without `voice` or `voice_id`, the voice follows the actor's
71
+ gender: a woman from `actor_id` speaks `sarah`, a man speaks `george`. The
72
+ default actor still speaks `george`, and an explicit voice always wins.
73
+ (clipwright#183)
74
+ - *Server-side:* a request with `image` and no voice gets a warning that the
75
+ male `george` voice is used, naming `voice` and `actor_gender` as the fix.
76
+ `GET /v1/runs/{id}` derives it from the stored input, so runs started before
77
+ this change show it too. A request with `actor_gender` next to `voice` or
78
+ `voice_id` gets a warning that the hint changed nothing. (clipwright#183)
79
+ - *Server-side:* the contract version moved to `2026-09-14`. (clipwright#183)
80
+ - *Dashboard:* `/actors` says that an actor without a chosen voice speaks the
81
+ default voice of their gender. (clipwright#183)
82
+
83
+ ### Added
84
+
85
+ - `actor_gender` (`female` or `male`) in the `make_ugc` input: next to `image`
86
+ it picks the default voice of that gender. It is refused with `actor_id` and
87
+ without `image`, and the remote fetch killswitch turns it off together with
88
+ `image`. The REST API accepts it from the day the API is deployed; the MCP
89
+ tool schema, the SDK types and the CLI flag `--actor-gender` arrive with this
90
+ release. (clipwright#183)
91
+
92
+ - *Dashboard:* `/actors` shows the actor library as a gallery: every published portrait with
93
+ its `actor_id` to copy, next to gender, approximate age, description and version. A person
94
+ can pick a face without calling `GET /v1/actors` first. (clipwright#148)
95
+ - *Dashboard:* `/videos` lists the finished videos of the account. Each one is a still frame
96
+ taken from the delivered file, with the length of the clip and the day it finished, and a
97
+ tile with a frame plays the video. Runs that are still going or that failed stay on the
98
+ Balance page. (clipwright#138)
99
+ - *Dashboard:* `/changelog` renders this file as a public page, so the release notes are
100
+ readable without installing a package. (clipwright#102)
101
+
13
102
  ## [0.14.0] - 2026-09-13
14
103
 
15
104
  ### Changed
package/README.md CHANGED
@@ -27,7 +27,8 @@ Any MCP host works — the server speaks JSON-RPC over stdio.
27
27
  ## Tools
28
28
 
29
29
  - `list_voices` — voices for `voice`: the presets and the catalog, with
30
- filters by language, gender, age, use case and model. Free, spends no credits.
30
+ filters by language, gender, age, use case and model, and a short audio
31
+ sample per voice. Free, spends no credits.
31
32
  - `list_actors` — ready-made faces with stable ids and verified formats. Free.
32
33
  - `quote_ugc` — estimated duration and price, plus a warning when `make_ugc`
33
34
  with the same input would be refused for money or access. Free.
@@ -37,6 +38,13 @@ Any MCP host works — the server speaks JSON-RPC over stdio.
37
38
  - `get_run` — status of a run. Free; poll it every few seconds.
38
39
  - `upload_image` — a local PNG/JPEG → signed https url to pass as `image`. Free;
39
40
  20 per day, the url lives 24 hours. Set `aspect_ratio` explicitly afterwards.
41
+ - `quote_actor` — price of a personal actor before creating one. Free.
42
+ - `create_actor` — **creates a personal actor from a description; this costs
43
+ money.** Each requested format is a separate charged image. Returns a `run_id`
44
+ immediately; poll `get_run` until `succeeded`, then pass `created_actor.actor_id`
45
+ to `make_ugc` as `actor_id`.
46
+ - `delete_actor` — removes a personal actor of this account. Videos already made
47
+ with it stay as they are. Free.
40
48
 
41
49
  Call `quote_ugc` before `make_ugc`: the quote is where the contract tells you
42
50
  what it will and will not honor. Anything the API cannot deliver comes back in
package/SKILL.md CHANGED
@@ -164,7 +164,8 @@ Environment variables:
164
164
  | `CLIPWRIGHT_CLIENT_ID` | YES (see section 2) | Unique identifier of this INSTALLATION. |
165
165
 
166
166
  After connecting, restart or reopen the MCP host and confirm that `tools/list`
167
- returns seven tools: `make_ugc`, `get_run`, `quote_ugc`, `list_actors`, `list_voices`, `upload_image`, `get_account`.
167
+ returns ten tools: `make_ugc`, `get_run`, `quote_ugc`, `list_actors`, `list_voices`, `upload_image`, `get_account`,
168
+ `create_actor`, `quote_actor`, `delete_actor`.
168
169
 
169
170
  ## 2. `CLIPWRIGHT_CLIENT_ID` — required, and WHY
170
171
 
@@ -296,7 +297,7 @@ schema, and the server answers 400 `rejected_field` before a run is even created
296
297
  | `webhook_url` | poll `get_run` — webhooks are not delivered at all |
297
298
  | `segments`, `broll_url` | a single `script`; segmented clips are not available yet |
298
299
  | `disclosure_overlay` | nothing: the AI disclosure is already in the run response and in the file |
299
- | `image` with the killswitch off | omit it — the render runs on the default actor |
300
+ | `image` and `actor_gender` with the killswitch off | omit both — the render runs on the default actor |
300
301
 
301
302
  **The aspect ratio can be refused.** Requesting `aspect_ratio: "1:1"` without an
302
303
  `image` or `actor_id` returns a refusal: the default actor is vertical (432×768), and a square
@@ -320,10 +321,11 @@ them here would mean offering what the server punishes you for (section 3).
320
321
  TTS model, as reported by `tools/list`: `eleven_v3` allows 5000 characters,
321
322
  `eleven_flash_v2_5` and `eleven_turbo_v2_5` allow 10000. Spaces, audio tags and stress
322
323
  marks count; emoji may count as two characters. There is no word-count limit or fixed
323
- duration implied by it), `tts_model` (every preset speaks `eleven_v3`, the most
324
+ duration implied by it), `tts_model` (every preset and catalog voice speaks `eleven_v3`, the most
324
325
  expressive model; `eleven_flash_v2_5` and `eleven_turbo_v2_5` cost less and suit
325
326
  languages other than Russian), optionally `person` OR
326
- `image` (a public `https` URL), plus `name`, `captions` (defaults to `false` —
327
+ `image` (a public `https` URL) with `actor_gender` (`female`/`male`, only next to
328
+ `image`), plus `name`, `captions` (defaults to `false` —
327
329
  **captions are opt-in, ASK THE USER FIRST**), `caption_style`
328
330
  (`hormozi`/`tiktok`/`minimal`), `look` (`natural`/`commercial`/`raw_iphone`),
329
331
  `aspect_ratio` (`9:16`/`1:1`, with NO default — silence and an explicit choice
@@ -394,18 +396,40 @@ Two mutually exclusive optional fields in the `make_ugc` input:
394
396
  - `voice` — the `name` of a voice from the free `list_voices` tool: one of the
395
397
  presets (`owner_ru_clone`, `sarah`, `george`, `eric`, `daria_ru_female`) or a
396
398
  catalog voice. **The recommended path.** Validated at the boundary: an unknown
397
- or retired name returns 400 immediately and no paid call is made.
399
+ or retired name returns 400 immediately and no paid call is made. The two
400
+ refusals differ: a retired voice's message names the date it left the catalog.
398
401
  - `voice_id` — a **raw ElevenLabs id** (20 characters), an escape hatch for voices
399
402
  OUTSIDE the catalog, cloned ones included. It is checked for free against the
400
403
  account at the start of the run (not during `quote`): a non-existent id fails the
401
404
  run BEFORE any paid call.
402
- - **The default voice matches the default actor.** Selecting another actor does
403
- not automatically change the voice. Read both catalogs when the user requests
404
- a new face and voice; preserve any explicit voice choice.
405
+ - **The default voice follows the actor's gender.** Without `voice` or `voice_id`,
406
+ a woman speaks `sarah` and a man speaks `george`. The gender comes from the
407
+ `actor_id` catalog entry, or from `actor_gender` next to `image`. The default
408
+ actor speaks `george`. An explicit voice always wins.
409
+ - **With `image`, pass `actor_gender` or a `voice`.** Clipwright does not detect
410
+ gender from the photo. Without either, the voice is `george` and `warnings[]`
411
+ says so. `actor_gender` next to `actor_id`, or without `image`, returns 400
412
+ before any charge.
405
413
  - **Read `actor` in the quote before rendering.** It describes the selected
406
- actor (`null` means the client sent `image`). Compare its gender with the voice
407
- metadata when choosing a pair. The API honors the two selections independently;
408
- a difference in gender labels does not silently replace either choice.
414
+ actor (`null` means the client sent `image`). An explicit voice is used as
415
+ requested whatever the actor's gender; `actor_gender` next to it changes nothing,
416
+ and a warning says so.
417
+
418
+ **How to pick a voice when the user asks for one:**
419
+
420
+ 1. Call `list_voices` with the filters the user gave: `language`, `gender`,
421
+ `age`, `use_case`. Language is a filter only: any voice speaks any supported
422
+ language, so a Spanish script can use an English voice.
423
+ 2. Play the `preview_url` of two or three candidates to the user. A catalog
424
+ voice's sample is in its native language.
425
+ 3. Pass the chosen `name` as `voice` to `quote_ugc` and then `make_ugc`.
426
+ 4. Next time, reuse that same `name`. A name always means the same voice.
427
+
428
+ When the user sends a photo and asks for no particular voice, pass the gender of
429
+ the person in it as `actor_gender`. Ask the user only when you cannot tell.
430
+
431
+ For a Russian script, keep `eleven_v3` and mark stress with a capital vowel
432
+ (see **Russian stress marks** above).
409
433
 
410
434
  ### `get_run` — status polling
411
435
 
@@ -496,8 +520,9 @@ refused with the allowed values, and an unknown filter name with
496
520
  Each entry carries `name`, `kind` (`preset` or `catalog`), `language`,
497
521
  `description`, `model` (its default speech model) and `supported_models`. A
498
522
  catalog voice also carries `verified_models` and whichever of `locale`,
499
- `accent`, `gender`, `age` and `use_case` the catalog has. The top-level `models`
500
- lists each speech model with its `char_limit` and languages.
523
+ `accent`, `gender`, `age` and `use_case` the catalog has. The tool returns
524
+ `{ "voices": [...] }` only. REST `GET /v1/voices` also returns `models`, and the
525
+ script limit of each model is in `tools/list`.
501
526
 
502
527
  There is still a network call: the tool hits OUR `/v1/voices` and needs a working
503
528
  `CLIPWRIGHT_API_KEY`, like the other three. Nobody calls the vendor — the list
@@ -508,9 +533,10 @@ Call it before `make_ugc` when the user asks for "a different voice": a voice
508
533
  name is preferable to a raw `voice_id`, because a name survives a change of
509
534
  vendor and an identifier does not.
510
535
 
511
- **Let the user HEAR the voice before paying for it.** A preset carries
512
- `preview_url`: a short sample spoken by that voice with that voice's own model,
513
- so it matches what the render will sound like. Catalog voices have no sample yet. Descriptions convey neither
536
+ **Let the user HEAR the voice before paying for it.** Every voice with a recorded
537
+ sample carries `preview_url`: a short clip spoken by that voice with its own
538
+ model, so it matches what the render will sound like. A catalog voice speaks its
539
+ sample in its native language. Descriptions convey neither
514
540
  diction nor accent nor pace; the owner caught a voice-face mismatch by ear, on a
515
541
  finished clip. Offer the sample whenever the user asks for a different voice.
516
542
 
package/dist/server.js CHANGED
@@ -8,7 +8,7 @@ import { z } from "zod";
8
8
  // `rejected` не должны предлагаться вызывателю, которого мы за их использование
9
9
  // накажем четырёхсотым (блокер B4). Множество выводится из реестра диспозиций,
10
10
  // поэтому смена решения по полю переносит его между поверхностями одной строкой.
11
- import { offeredUgcInputShape, CATALOG_LANGUAGES, SCRIPT_LENGTH_DESCRIPTION, voicesQueryShape, agentRetryShape, runId, MAKE_UGC_DESCRIPTION, MAKE_UGC_AGENT_PROTOCOL, UPLOAD_IMAGE_DESCRIPTION, UPLOAD_MAX_BYTES, sniffUploadMediaType, } from "@clipwright/core";
11
+ import { offeredUgcInputShape, CATALOG_LANGUAGES, CREATE_ACTOR_DESCRIPTION, createActorInputShape, SCRIPT_LENGTH_DESCRIPTION, voicesQueryShape, agentRetryShape, runId, MAKE_UGC_DESCRIPTION, MAKE_UGC_AGENT_PROTOCOL, UPLOAD_IMAGE_DESCRIPTION, UPLOAD_MAX_BYTES, sniffUploadMediaType, } from "@clipwright/core";
12
12
  import { formatGetRun, withFailureReport } from "./format.js";
13
13
  // Версия — из манифеста: литерал расходился с ним молча, а импорт JSON не проходит `rootDir`.
14
14
  const packageVersion = () => createRequire(import.meta.url)("../package.json").version;
@@ -100,8 +100,10 @@ export function createServer(client) {
100
100
  "speaks any supported language), `gender`, `age`, `use_case` and `model`; an unknown filter value is " +
101
101
  "refused with the allowed values. Pick a voice by `name` (e.g. voice=\"george\"); a name always means " +
102
102
  "the same voice. `voice_id` is an escape hatch for a raw vendor voice id that is not listed, such as a " +
103
- "cloned voice. The current avatar already has a matched default voice; do NOT change it unless the " +
104
- "user explicitly asks for a different one. A voice with `preview_url` has a short-lived audio sample " +
103
+ "cloned voice. Without voice or voice_id the default voice follows the actor's gender: sarah for a " +
104
+ "woman, george for a man, taken from actor_id or from actor_gender next to image. With image and no " +
105
+ "actor_gender the voice is george and a warning says so: pass the gender of the person in the photo as " +
106
+ "actor_gender (ask the user only when you cannot tell), or pick a voice here. Keep any voice the user chose. A voice with `preview_url` has a short-lived audio sample " +
105
107
  "spoken by that voice with that model; play it to the user before a paid render instead of judging a " +
106
108
  "voice by its description. It expires at `preview_expires_at`: call this tool again for a fresh link, " +
107
109
  "never store it. A voice without `preview_url` has no sample yet. Free. " + SCRIPT_LENGTH_DESCRIPTION,
@@ -112,11 +114,36 @@ export function createServer(client) {
112
114
  return { content: [{ type: "text", text: JSON.stringify({ voices }) }] };
113
115
  }));
114
116
  server.registerTool("list_actors", {
115
- description: "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 or person.",
117
+ description: "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.",
116
118
  inputSchema: {},
117
119
  }, async () => withFailureReport(async () => ({
118
120
  content: [{ type: "text", text: JSON.stringify({ actors: await client.listActors() }) }],
119
121
  })));
122
+ // Личный актёр аккаунта (clipwright#120). Схема — та же, что проверяет сервер,
123
+ // поэтому предлагаемое и принимаемое разойтись не могут.
124
+ server.registerTool("create_actor", { description: CREATE_ACTOR_DESCRIPTION, inputSchema: { ...createActorInputShape, ...agentRetryShape } }, async (args) => withFailureReport(async () => {
125
+ // `attempt` живёт в opts SDK: внутри `input` схема срезала бы его молча,
126
+ // и повтор агента возвращал бы первый ран вместо нового.
127
+ const { attempt, ...input } = args;
128
+ const run = await client.createActor(input, { attempt });
129
+ return formatGetRun(run);
130
+ }));
131
+ server.registerTool("quote_actor", {
132
+ description: "Estimate the credit cost of create_actor WITHOUT spending credits. Call this first and show the " +
133
+ "price before create_actor: each requested format is a separate charged image.",
134
+ inputSchema: createActorInputShape,
135
+ }, async (args) => withFailureReport(async () => ({
136
+ content: [{ type: "text", text: JSON.stringify(await client.quoteActor(args)) }],
137
+ })));
138
+ server.registerTool("delete_actor", {
139
+ description: "Delete a personal actor of this account by actor_id. Videos already made with it stay as they are, " +
140
+ "and new runs can no longer use it. An actor used by a run that has not finished is refused until that " +
141
+ "run ends. Catalog actors belong to Clipwright and are not deletable.",
142
+ inputSchema: { actor_id: z.string().min(1).describe("Personal actor id from list_actors.") },
143
+ }, async ({ actor_id }) => withFailureReport(async () => {
144
+ await client.deleteActor(actor_id);
145
+ return { content: [{ type: "text", text: JSON.stringify({ deleted: actor_id }) }] };
146
+ }));
120
147
  // Остаток счёта без траты попытки: иначе его узнают только отказом 402 (clipwright#135).
121
148
  server.registerTool("get_account", {
122
149
  description: "Read this account's credits. Free, spends nothing. debt_credits above zero means make_ugc " +
@@ -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,6 +1,6 @@
1
1
  {
2
2
  "name": "@clipwright/mcp-server",
3
- "version": "0.14.0",
3
+ "version": "0.16.0",
4
4
  "description": "MCP server for Clipwright: generate UGC videos from your coding agent",
5
5
  "keywords": [
6
6
  "mcp",
@@ -29,8 +29,8 @@
29
29
  "dependencies": {
30
30
  "@modelcontextprotocol/sdk": "^1.29.0",
31
31
  "zod": "^4.4.3",
32
- "@clipwright/core": "0.14.0",
33
- "@clipwright/sdk": "0.14.0"
32
+ "@clipwright/sdk": "0.16.0",
33
+ "@clipwright/core": "0.16.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/node": "^26.1.1"