@clipwright/mcp-server 0.33.0 → 0.35.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
@@ -18,6 +18,257 @@ listed under.
18
18
 
19
19
  ## [Unreleased]
20
20
 
21
+ ## [0.35.0] - 2026-10-30
22
+
23
+ ### Changed
24
+
25
+ - The texts an agent reads describe the `parts-v1` tariff (#933). The `call` field says the call adds production
26
+ seconds and that a live-avatar still has its own price; the templates description and the remake plan's tariff
27
+ note drop the retired per-second rate. The MCP server's SKILL.md and the CLI README point to `list_prices` and the
28
+ quotes instead of fixed faceless prices, and the `quote_ugc` example shows `price_lines` for 12 s.
29
+ - *Dashboard:* /pricing lists only the presenter a request can get, and prints single images and clips as price
30
+ ranges per resolution without model names (#800). Two comparison pages are rewritten from the other products'
31
+ sites as read on 2026-10-30.
32
+
33
+ - *Server-side:* `make_ugc` is priced by its parts, one tariff `parts-v1` for short and long videos (#800): 12 credits
34
+ for every second a presenter take fills on HeyGen (22 on OmniHuman), plus 1 for every second of the finished video,
35
+ plus 400 for each live-avatar still of a call, at least 50 for a delivered video. A plain 35 s video costs 455
36
+ instead of 1 050. The quote itemizes it in `price_lines` and names `minimum_credits`; the terms are frozen at
37
+ admission, so a run admitted before keeps its own.
38
+ - *Server-side:* `analyze_reference` costs 70 credits (#927): held at the start and charged once the analysis
39
+ succeeds; a failed analysis costs nothing, and starting it again on the same asset answers the same analysis for
40
+ free. The analysis carries `credits_reserved`, `credits_charged` and `balance_after_credits`.
41
+ - *Server-side:* single generations are priced at ×2.5 of their cheapest route instead of ×2: an image from 6 credits,
42
+ a clip from 6 credits a second. `seedance-2.0-mini` is rendered by one route only.
43
+ - *Server-side:* `make_faceless` is priced by its parts, tariff `faceless-parts-v1` (#800): 7 credits for each picture
44
+ we generate, the opening clip's still included, 49 for the opening clip and 1 for every second of the delivered
45
+ video, at least 50. Your own pictures are not charged. The quote is the most a selection is charged: 212 at 30 s,
46
+ 356 at 90 s, instead of 350 and 420. `faceless_billing` names `images` and `imageCredits`; a run admitted before
47
+ keeps its tariff.
48
+ - *Server-side:* edits and personal actors are repriced at ×2.5 of their cost (#800): a revision's new picture 7, clip
49
+ 49, clip with a new picture 56, render 13, and a shot candidate the same unit prices; an actor's portrait 4 and each
50
+ other format 8 at `medium`, 12 and 18 at `high`. Runs admitted before keep their snapshot.
51
+
52
+ ### Added
53
+
54
+ - *Server-side:* `POST /v1/reference-analyses/quote`, the `quote_analysis` tool and `ClipwrightClient.quoteAnalysis()`
55
+ price an analysis before it starts (#927).
56
+ - *Server-side:* every settled run carries `balance_after_credits`, the account's balance read in the transaction
57
+ that settled it (#927).
58
+
59
+ - *Server-side:* `GET /v1/public/prices` lists the price of every action in credits, without a key: one entry per tool
60
+ and variant, its price as lines of credits per unit plus a minimum, or a formula; free tools are listed at 0. No price
61
+ changed (#927).
62
+ - The `list_prices` tool and `ClipwrightClient.listPrices()` read that list, and the description of every paid tool
63
+ ends with its price line, built from the same list.
64
+ - `@clipwright/core` exports `PRICE_LIST`, `priceLine` and `pricesResponse`, with the constants the list reads:
65
+ `CREDITS_PER_SECOND`, `ACTOR_UNIT_CREDITS`, `EDIT_UNIT_PRICES`, `EDIT_RENDER_PRICE`, `EDIT_ZERO_UNIT_PRICE` and the
66
+ numbers of the faceless tariff.
67
+
68
+ - *Server-side:* `GET /openapi.json` serves an OpenAPI 3.1 description of the REST API without a key: every public
69
+ route with its request and response schemas, the error envelope and `warnings[]`. The API's own tests check
70
+ their real responses against it.
71
+ - `@clipwright/core/openapi` exports `buildOpenApiDocument()` and the route marking `OPENAPI_ROUTES`;
72
+ `@clipwright/core` exports `ENDPOINT_NOTES`, `healthResponse` and `publicSkillsResponse`.
73
+ - `make_ugc` takes `voice_pace` (0.7–1.2): `eleven_flash_v2_5` and `eleven_turbo_v2_5` get it as their speed,
74
+ `gemini-3.8-flash-tts` as a "speaking rapidly" or "speaking slowly" style with a warning. `eleven_v4` has no speed
75
+ setting: it gets no speed, and a `voice_pace` other than 1 is named in `warnings[]` (#890).
76
+ - `list_voices` gives each English voice on `eleven_v4` its measured pace, `words_per_second`. On that model the voice
77
+ sets the pace, so pick the voice nearest a reference presenter's pace (#890).
78
+ - *Server-side:* all ElevenLabs speech goes to `eleven_v4`, now the model of every preset, catalog voice and raw
79
+ `voice_id`. `tts_model: "eleven_v3"` is still accepted: the run speaks `eleven_v4` and `warnings[]` says so.
80
+ `eleven_v4` gives no pause for a `<break>` tag, so the tag is cut with a warning on the default path too.
81
+ - `make_ugc` takes `pause_trim`, targets in seconds per gap class: after synthesis a pause longer than its target is cut
82
+ down to it inside silence only, with a crossfade, and word timings move with the audio. A joint that would click is
83
+ kept and named in `warnings[]`.
84
+ - *Server-side:* a reference analysis measures the presenter's voice from the words it already transcribes: pace,
85
+ pauses in three layers, hinge pauses, pitch and loudness range, in the profile's new `voice` section.
86
+ `plan_reference_remake` sets `voice_pace` from it on a model with a speed. On `eleven_v4` it sets none and, when
87
+ the voice is more than 5% off the presenter, names the measured voices nearer the presenter's pace (#890).
88
+ - `@clipwright/core` exports `referenceVoice`, the schema of that section, and `narrationPaceFromVoice`.
89
+
90
+ - *Dashboard:* a public `/captions` page plays every caption style on the same presenter and the same words, each
91
+ with the description `tools/list` gives it; the `caption_style` description links to the page.
92
+ - `SKILL.md` names every caption style and tells the agent to ask whether the user wants captions, to offer three
93
+ or four fitting styles with the gallery link, and to take the style closest to a reference video's captions.
94
+ - *Server-side:* `hormozi` now matches the canonical look: Montserrat Black uppercase, white with a thick black outline,
95
+ one yellow (`#FFD93D`) keyword per cue, up to three words. The previous look (condensed Oswald, orange keyword, no
96
+ outline) is the new style `accent`. `hormozi` stays the default; there are 24 styles.
97
+ - *Server-side:* `make_ugc` takes `edit_sounds: true` on a run with `inserts` or `layout_windows`: a low sound plays on
98
+ every cut, to or from an insert, at a full-frame template's cut in or out and at a layout window's in and out, with
99
+ its peak on the cut. `template_sounds.edit` picks it from `swell_hit` (default), `whoosh_deep`, `whoosh_low`,
100
+ `boom_low`, `sub_drop`, `riser_boom` and `riser_hit`. A cut that already plays a template's whoosh or flash gets no
101
+ second sound. Without the field a run plays no edit sounds, as before; `edit_sounds` with nothing to cut, with
102
+ `template_sounds: false`, or `template_sounds.edit` without `edit_sounds`, is refused 400 by its path before any
103
+ hold. The price does not change.
104
+ - *Server-side:* new template sounds: a `pop` (`plop`) when a `tag` or a `callout` pops in, a `hangup` (`phone`) just
105
+ before an answered `phone_call` leaves, and `money` (`cash_register`, `coins`) when a `stat` with a currency sign in
106
+ its prefix or suffix counts up. `answer` adds `pickup`, `whoosh` adds `slide_quick` and `flash` adds `swish`.
107
+ `list_template_sounds` lists them. A run frozen before them keeps its sounds.
108
+ - *Server-side:* `make_ugc` takes `framing`, presenter sizes on their words: `close` (1.18 times larger about the face)
109
+ or `medium`, each a hard cut that settles over 8 frames, or with `transition: "flash"` a warm light leak over the cut.
110
+ It needs long-form qualification, works without captions, refuses overlap with inserts, layout windows and other framing,
111
+ and names in `warnings[]` a framing wholly under full-frame templates. With `edit_sounds`, each framing cut plays the
112
+ edit sound. `plan_reference_remake` turns a `punch_in` camera into a close framing and a flash into a speaking beat
113
+ into a flashed one.
114
+ - `create_actor` takes `from_actor_id` with `framing: "wide"`, `holding` (one or two objects, each with words, an
115
+ optional image asset of the object and a hand) or `setting`: it derives a new personal actor from a library actor or
116
+ your own, with the same face checked against the source. A face that does not match costs nothing. The price is the
117
+ usual per-image units. *Server-side:* the fields are open only where `CLIPWRIGHT_ACTOR_VIEWS` is on; elsewhere they
118
+ are refused 400 `rejected_field`. A wide derived actor's 9:16 is listed with `framing: "wide"`, and `make_ugc`
119
+ renders it as a wide view. `@clipwright/core` exports `storedActorSource`, `storedHoldingItem`,
120
+ `createActorDispositions`, `createActorRejectedFields` and `isActorViewsEnabled`.
121
+
122
+ ### Changed
123
+
124
+ - *Server-side:* the template sound library is re-recorded from CC0 sounds the owner chose by ear: 25 of the 31 files
125
+ play a new recording under the same name; the rings, `glitch`, `switch_heavy` and `paper_swipe` stay as they were.
126
+ Every source is named in `THIRD_PARTY_NOTICES`.
127
+
128
+ ## [0.34.0] - 2026-10-24
129
+
130
+ ### Added
131
+
132
+ - `@clipwright/core` exports `PUBLIC_MCP_URL`, the hosted MCP server address `https://mcp.clipwright.io/mcp`.
133
+ - *Dashboard:* a public `/mcp` page answers "Yes, Clipwright has an MCP server": the hosted address with the
134
+ `claude mcp add` command (sign in, no key), the local package with a key, and the tool list. `llms.txt` names the
135
+ hosted MCP address, the `/mcp` page and the CLI. The home page and `/pricing` carry schema.org data with the price
136
+ of the cheapest credit pack, and the sitemap dates the comparison pages by the day their facts were checked.
137
+
138
+ - *Server-side:* video assets. An MP4 in h264 or hevc up to 120 seconds and 100 MB comes from an own `generate_video`
139
+ run, a public url (`{ url, kind: "video" }`), a presigned PUT (`{ put: { media_type, bytes, sha256 } }`, also for
140
+ pictures) or `POST /v1/assets/bytes` up to 32 MB. A url or a PUT answers `202` with `state: "processing"` or
141
+ `"awaiting_upload"`; the worker task `ingest-asset-media` measures frames, fps, codec and `pix_fmt` from the bytes
142
+ and publishes the asset, and `GET /v1/assets/{id}` says `ready` or `failed` with the reason. Clips are kept for
143
+ assembly and are no generation reference.
144
+ - MCP: `create_asset` takes `put` and a url clip; on stdio a local MP4 `path` is uploaded through a PUT.
145
+ - `generate_video` and `quote_video` take an optional `camera`: `static`, `push_in`, `pull_back` or `pan`. It
146
+ becomes the first line of the prompt the model gets and does not change the price.
147
+ - `GET /v1/generations/models` lists `duration_values` for a model that takes only some lengths inside its
148
+ `duration_s` range; the schema and the quote refuse the others. The resolution `360p` is part of the contract.
149
+ - New clip models: `kling-3.0` at 720p in 9:16 and 16:9, 3 to 15 seconds, and `gemini-omni-flash-1.1` at 720p in both
150
+ formats and 360p 16:9, for 4, 6, 8 or 10 seconds. `seedance-2.5` adds 480p 9:16 and 720p 16:9.
151
+ - *Server-side:* a clip refused for a real face in its input picture, or turned away as rate-limited before it was
152
+ accepted, is made by a second provider at the same quote where that row was measured there. A clip is always
153
+ delivered without an audio track.
154
+ - *Dashboard:* the Assets page. It lists the account's pictures and clips in a grid of small, medium or large tiles,
155
+ with filters by role and kind, a name search and the usage of the 2,000 assets and 20 GB. A selected asset opens on
156
+ the right: rename it, change its role, copy its `asset_id`, open the file or delete it. Pictures up to 10 MB and MP4
157
+ clips up to 32 MB upload from the page; a clip shows as processing until it is checked.
158
+ - *Server-side:* each asset gets a preview of at most 512 pixels on the long side, made by the worker after the asset
159
+ is saved and caught up hourly. The Assets page shows the preview, never the original, in its grid. The API does not
160
+ return the preview yet.
161
+ - *Server-side:* more clip formats. `seedance-2.0` adds 480p in 9:16 and 16:9 at 18 credits a second and 720p 16:9;
162
+ `seedance-2.0-fast` adds 480p in both formats and 720p 16:9; `seedance-2.0-mini` and `seedance-2.5` add 480p 16:9.
163
+ The 480p clip of `seedance-2.0`, `-mini` and `-fast` is 496×864 or 864×496, and `warnings[]` says so.
164
+ - A `make_ugc` image insert can name `asset_id` instead of `media_url`, exactly one of the two. The quote and the run
165
+ accept only a ready PNG or JPEG asset of the same account, with a `media_type` that matches it. A foreign, deleted
166
+ or unfinished asset answers `400 reference_not_usable` before any credits are reserved. The worker reads the
167
+ file admission recorded and checks its sha256, so a later delete does not change a started run.
168
+ - `get_run` in the MCP server returns `created_actor` on a succeeded `create_actor` run, so an agent sees the
169
+ `actor_id` to pass to `make_ugc`.
170
+ - `make_ugc` takes `overlays`: pictures anchored to words like inserts, drawn over the presenter in a corner or as a
171
+ band across the top or bottom, entering with `cut`, `fade`, `slide` or `tilt_in`. At most two show at once, and two
172
+ on screen together need positions that share no corner. Captions move to the middle or the bottom of the frame when
173
+ an overlay meets them, never up over the face, and hide when neither place is free. An overlay steps aside while a full-frame insert is on screen, and one wholly under inserts is refused.
174
+ - `make_ugc` takes `layout_windows`: `split` puts the presenter in the top half and the picture in the bottom half with
175
+ captions on the seam (9:16 only); `card` shows the picture in a centred card, and `blur_presenter` blurs the
176
+ presenter behind it. Windows may not overlap one another or an insert.
177
+ - Inserts take `transition`: `cut`, `wipe`, `flash` or `zoom`. It plays inside the insert's own frames and never moves
178
+ its start or end. A `caption_emphasis` item takes `punch_in: true` to zoom into the presenter while the quote is
179
+ spoken.
180
+ - *Server-side:* overlays and layout windows follow the insert rules: `script`, long-form qualification, 1080p and
181
+ `broll_policy=anyone`, exactly one of `media_url` and `asset_id`, and ids unique across inserts, overlays and
182
+ windows. A script with overlays or windows alone runs as long form. They change
183
+ neither the presenter's slots nor the price: a blurred or covered presenter is billed face time. A run whose
184
+ composition is off, skipped or failed names undrawn overlays, windows, transitions and punch-in in `warnings[]`.
185
+ - `make_ugc` inserts, overlays and layout windows take `media_type: "video"`, by `media_url` or by the `asset_id` of an
186
+ MP4 asset. The clip plays muted from its first frame and is cut by time where its words end, so a variable frame
187
+ rate does not shift it. A clip shorter than its words holds its last frame, and `warnings[]` names the insert or
188
+ layer: in the quote for an `asset_id` the slow speech edge may outlast, otherwise on the run. H.264 and HEVC in 8 bits
189
+ without HDR are accepted.
190
+ - *Server-side:* a 10-bit video asset answers `400 reference_not_usable` before any credits are reserved. A
191
+ `media_url` clip, and the colour transfer of an asset clip, are measured by the worker before the first paid call:
192
+ another codec, 10 bits or more, or a PQ or HLG transfer fails the run uncharged with `media_source_rejected` naming
193
+ the insert or layer. A video `segments` item is still refused. Customer video costs nothing: the same script with a
194
+ picture or a clip quotes and bills the same face seconds.
195
+ - *Server-side:* graphic templates on `make_ugc`. `templates[]` takes up to 12 items
196
+ `{ id, kind, anchor, cover_words?, placement?, transition?, data }` of three kinds: `tag` (a gradient pill, also
197
+ over an insert), `lower_third` (a name and role bar) and `end_card` (a site pill with an optional call to action);
198
+ captions are hidden under the last two and under a tag without `position`, which sits in the caption spot. Each kind
199
+ takes `size` small, medium (the default) or large, and long text shrinks to fit. Templates are accepted on any
200
+ `script` run without `segments` and never change its tariff or price: a plain run is billed 30 credits a second of
201
+ finished video, and a run with inserts, overlays or layout windows is billed long-form-v1 (#840). Text over its
202
+ limit (a wide CJK character counts 2), emoji, letters the run's fonts cannot draw, overlapping footprints and the
203
+ other refusals answer 400 with a path before any hold. `@clipwright/core` exports the catalog (`TEMPLATE_KINDS`)
204
+ and `@clipwright/mcp-server` offers a slim template item with the catalog in its description.
205
+ - *Server-side:* full-frame templates and template pictures. `title_card` (a hook card: a title in up to two lines on
206
+ a white card, an optional logo picture shown whole and a gradient chip) and `quote` (up to four lines, an author and
207
+ an optional round photo) fill the frame; `stat` counts a number up from zero, on a full frame or over the presenter.
208
+ A full-frame template hides captions, overlays and over-presenter templates while it shows, takes a `wipe`, `flash`
209
+ or `zoom` drawn over the live presenter, and on a long-form run the presenter under it is still billed as face time.
210
+ `logo` and `photo` take `{ asset_id }`: pinned at admission under the template id and slot, a video or another
211
+ account's asset is refused 400 `reference_not_usable` before any hold, and a photo cut to its circle is named in
212
+ `warnings[]`. On a plain run a template picture needs explicit `broll_policy=anyone`, like a layer (#840).
213
+ - *Server-side:* templates on a plain script run (#840). A `script` run without inserts, overlays or layout windows
214
+ takes `templates`, `template_theme` and `template_sounds` at 30 credits a second, with no minimum and no face
215
+ seconds. The templates are drawn over its one take; if they cannot be drawn, the video is delivered at the same
216
+ price and `warnings[]` says `templates was not drawn: <reason>`.
217
+ - Quotes carry `tariff`: `ugc-per-second-v1` on a plain run, or long form's `pricingVersion` (`long-form-v1`). The
218
+ field is an optional string, so older clients and stored quotes still parse; templates never change it.
219
+ - *Server-side:* the `callout` template and template looks. `callout` draws an arrow or a ring onto a point given
220
+ as `target { x, y }` in percent of the frame, pulses twice and rests, with an optional label pill below the point,
221
+ or above it when there is no room or the face is below; the point may sit anywhere, the face rule covers the label.
222
+ A run-level `template_theme { preset?, accent? }` picks `clean_light` (the default when absent) or `bold_dark`, and
223
+ `accent` takes a `#RRGGBB` colour for the pills and accent text. A customer accent under 3:1 against the colours it
224
+ meets is refused 400 at `template_theme.accent` before any hold, never shifted. The look freezes into the timeline,
225
+ so a resumed run draws what it was admitted with, and footprints come from the frozen kind version.
226
+ - *Server-side:* three interactive templates with inner quotes. `checklist` draws 2–4 rows of switches or check boxes
227
+ that a cursor clicks in turn; `phone_call` rings an incoming call on a neutral phone at the side and answers it; and
228
+ `compare` sweeps an after picture in over a before picture on a diagonal, full frame. An inner quote
229
+ (`clicks[].quote`, `answer_at`, `reveal_at`) names words inside the template's own: the click, answer or reveal lands
230
+ on their first word, and a click without one is spread evenly. A quote missing from the script, outside the item's
231
+ words, out of the script's order, or on words an insert or full-frame template covers is refused 400 by its path
232
+ before any hold. `compare` takes two pictures, pinned apart as `before` and `after`. Templates still change no price.
233
+ - *Server-side:* three more templates and three more looks. `notification` drops a phone notification (an icon, the
234
+ app, a title and a body line) into the band above the face, holds it at least 1.2 s and takes it away before its
235
+ span ends; `progress` completes 2–5 steps in turn, each on its `advance_at` quote (exactly one per step) or spread
236
+ evenly; `rating` fills five stars in turn up to a score in halves. `advance_at` is refused like the other inner
237
+ quotes, and a list of the wrong length too. `template_theme.preset` adds `neon`, `paper` and `mono`, and a customer
238
+ accent is checked against each look's own colours.
239
+ - *Server-side:* templates play sounds, well under the voice, from a library of 31 bundled with the composition: a
240
+ checklist click and its switch landing, a phone ringing until it is answered and the answer, a notification dropping
241
+ in, each progress step and rating star, a compare reveal, and a full-frame wipe, zoom or flash. A run plays the
242
+ defaults; `template_sounds: { beat: name }` swaps a beat's sound and `template_sounds: false` plays none. An unknown
243
+ beat or name, or `template_sounds` without templates, is refused 400 by its path before any hold. `GET
244
+ /v1/template-sounds` and the MCP tool `list_template_sounds` list each beat, its default and its names, free. A run
245
+ frozen before this plays none. Sounds change no price. `@clipwright/sdk` adds `listTemplateSounds()`.
246
+
247
+ ### Changed
248
+
249
+ - *Server-side:* in `mono` the callout's ring and arrow have a white outline, so they read over a dark suit.
250
+ - *Server-side:* a template beat spoken before its template has entered (a checklist click before its rows and cursor are
251
+ in, or an answer, step or reveal during the enter) moves to the first frame after the enter, the beats after it keep
252
+ 6 frames apart, and `warnings[]` names each move. Runs already rendered keep their frames.
253
+ - *Server-side:* captions and the light template look are blue, with no purple: the two-tier and pill captions and the
254
+ `punch` keyword use the reference's periwinkle-to-sky blue, `clean_light` follows it, `bold_dark` sits on a neutral
255
+ near-black ground, `checklist` switches are green when on and red when off in every look, and the `phone_call` screen
256
+ is the device's own teal-to-blue.
257
+ - *Server-side:* a template no longer moves captions. While it meets their band it hides them, as the checklist and
258
+ the phone do; a small one elsewhere, such as a notification at the top, leaves them on screen.
259
+ - *Server-side:* `generate_image` and `generate_video` cost less. A `seedream-5.0-flash` image costs 5 credits instead
260
+ of 12 and a `flare` image 6 instead of 18; a second of `seedance-2.0-mini` at 720p costs 10 instead of 50,
261
+ `seedance-2.0` at 1080p 91 instead of 250, `kling-3.0` 17 instead of 50 and `gemini-omni-flash-1.1` 19 instead of 55.
262
+ A run already admitted keeps its quoted price.
263
+ - *Server-side:* a second of `seedance-2.5` at 480p costs 25 credits instead of 34.
264
+ - *Server-side:* every delivered video is encoded once, at a quality setting chosen by eye on text frames, so a
265
+ 35-second 1080×1920 video is about 11 MB instead of 27 MB. The resolution is unchanged (#845).
266
+
267
+ ### Fixed
268
+
269
+ - *Server-side:* a dropped connection while the worker checks on an ordered `make_ugc` clip no longer fails the run
270
+ and charges for it. The worker checks again until its wait deadline, and a run that stays cut off ends with no charge.
271
+
21
272
  ## [0.33.0] - 2026-10-20
22
273
 
23
274
  ### Added
package/README.md CHANGED
@@ -127,11 +127,39 @@ These variables configure the local server.
127
127
  | `CLIPWRIGHT_CLIENT_ID` | recommended | Identifies this **installation** and enters the idempotency key, so two installations never collapse into one run. Left unset, the server keeps one in `~/.clipwright/client-id`, which suits a single laptop. Set it yourself where a home directory is shared, cloned or read-only — containers, CI, copied images — as `SKILL.md` §2 explains. |
128
128
  | `CLIPWRIGHT_API_URL` | no | Defaults to the hosted API. |
129
129
 
130
+ ## Recipes
131
+
132
+ Each recipe is a prompt we gave an agent with this server connected, the call the
133
+ agent sent, and what the video cost. The videos play at
134
+ [clipwright.io/mcp](https://clipwright.io/mcp#examples).
135
+
136
+ ### 1. A creator reel with on-screen graphics
137
+
138
+ One presenter on camera, with graphics over her that react to what she says: the format of talking-head reels that sell a product. One prompt, no editor.
139
+
140
+ The prompt, given verbatim, with our actor id, screenshot link and site named
141
+ alongside it:
142
+
143
+ > Make a 30-second vertical reel for my AI receptionist with my presenter actor and the voice Hope. Script: "Every missed call is a lost deal. Your receptionist sleeps, takes breaks, and sometimes gets annoyed. This one doesn't. It answers calls all day, works around the clock, and never gets annoyed. Here's a real one: a customer calls at two in the morning to book a cleaning, and it handles everything, the time, the price, the confirmation text. Small businesses miss a third of their calls. Not anymore. Set it up in ten minutes and stop losing deals while you sleep."
144
+ >
145
+ > While she lists what it does, show a checklist with three switches ("answers calls" and "works 24/7" off, "gets annoyed" on) and have a cursor flip each one as she says it. When she gets to the 2 a.m. customer, show an incoming call from +1 (305) 555-0147 on the right and answer it on "handles". Put my dashboard screenshot in the top right corner while she says "Small businesses miss a third of their calls." End on a card with my site and "create your assistant". Caption only the key lines, in the highlighter style, and zoom in a little on "Not anymore." Quote it before you render.
146
+
147
+ What the agent sent: one `make_ugc` quote with `templates` (checklist, phone_call,
148
+ end_card), one `overlays` picture, `caption_mode: "highlights"`,
149
+ `caption_style: "highlighter"` and a `punch_in` on one emphasis line. Click,
150
+ switch and ring sounds come with the templates by default. We checked the prompt
151
+ with a fresh agent on this server on 2026-10-24; the video was rendered from the
152
+ same call.
153
+
154
+ The quote named the price before anything was spent; list_prices names every
155
+ rate. [Watch it](https://clipwright.io/mcp#examples).
156
+
130
157
  ## Tools
131
158
 
132
159
  - `list_workflows` — read workflow methods and current availability. Free.
133
160
  - `get_workflow` — read one method's required inputs, script rules, evidence and limitations. Free.
134
161
  - `prepare_workflow_plan` — create with a complete document, or save with both `plan_id` and `base_version`. Free; starts no run.
162
+ - `plan_reference_remake` — the server compiles a reference ad's profile and your exact script into a new plan; its warnings name what the plan does not reproduce. Free; starts no run and generates nothing.
135
163
  - `get_workflow_plan` — read the current owned plan, revision and readiness. Free.
136
164
  - `approve_workflow_plan` — explicitly approve a chosen revision and content digest. Free; starts no run.
137
165
  - `quote_workflow_plan` — quote the approved revision without spending credits.
@@ -142,10 +170,15 @@ These variables configure the local server.
142
170
  sample where the voice has one. The seventeen narration voices of
143
171
  `make_faceless` are listed with `skill: "make_faceless"`. Free, spends no
144
172
  credits.
173
+ - `list_template_sounds` — the sounds `make_ugc` templates play, by beat: where
174
+ each beat plays, its default and every name `template_sounds` takes. Free.
145
175
  - `list_actors` — ready-made faces with stable ids and verified formats. Free.
146
176
  - `quote_ugc` — estimated duration and price, plus a warning when `make_ugc`
147
177
  with the same input would be refused for money or access. Free.
148
178
  - `get_account` — balance, debt and holds of the account. Free.
179
+ - `list_prices` — what every tool costs in credits: a number per unit, or a
180
+ formula where the price depends on the input; free tools are listed at 0.
181
+ Free.
149
182
  - `make_ugc` — **renders a clip; this is the call that costs money.** Returns a
150
183
  `run_id` immediately instead of blocking, because a render takes minutes.
151
184
  - `get_run` — status of a run. Free; poll it every few seconds.
@@ -184,15 +217,26 @@ These variables configure the local server.
184
217
  remote: PUT the file with curl, then use the `upload_id`. Free.
185
218
  - `get_upload` — one upload with a fresh url, its size and `usable_until`;
186
219
  after `create_upload` it confirms the PUT. Free.
187
- - `create_asset` — save a picture as an account asset, kept until you delete
188
- it: from a `run_id`, an `upload_id`, a public `url` or `base64`, and a local
189
- `path` on stdio. Your own material needs `rights_confirmed: true` once. Free;
190
- 2000 assets and 20 GB per account, 100 new ones per day.
220
+ - `create_asset` — save a picture or an MP4 clip as an account asset, kept
221
+ until you delete it: from a `run_id`, an `upload_id`, a public `url` (a clip
222
+ with `kind: "video"`), `base64`, a presigned `put`, and a local `path` on
223
+ stdio. A clip is checked in the background: `get_asset` says when it is
224
+ ready. Your own material needs `rights_confirmed: true` once. Free; 2000
225
+ assets and 20 GB per account, 100 new ones per day.
191
226
  - `list_assets`, `get_asset` — the account's assets with fresh urls and the
192
227
  usage of the caps. Free.
193
228
  - `update_asset` — rename an asset or change its role. Free.
194
229
  - `delete_asset` — delete an asset; a daily cleanup removes its file once 7 days
195
230
  have passed. Free.
231
+ - `quote_analysis` — price of a reference analysis of an asset: 70 credits, or 0
232
+ when the asset's analysis would answer. Free.
233
+ - `analyze_reference` — read a reference ad (an MP4 asset, up to 120 s) into a
234
+ `reference_profile`: beats, graphics in our template vocabulary, captions,
235
+ pacing and what we cannot draw. Returns at once; poll
236
+ `get_reference_analysis`. 70 credits held and charged once it succeeds; a
237
+ failed analysis costs nothing. 10 new analyses per hour.
238
+ - `get_reference_analysis` — the state of an analysis, with the profile and its
239
+ warnings once it succeeded. Free.
196
240
  - `quote_actor` — price of a personal actor before creating one. Free.
197
241
  - `create_actor` — **creates a personal actor from a description; this costs
198
242
  money.** Each requested format is a separate charged image. Returns a `run_id`
package/SKILL.md CHANGED
@@ -185,12 +185,12 @@ Environment variables:
185
185
  | `CLIPWRIGHT_CLIENT_ID` | YES (see section 2) | Unique identifier of this INSTALLATION. |
186
186
 
187
187
  After connecting, restart or reopen the MCP host and confirm that `tools/list`
188
- returns 38 tools: `make_ugc`, `get_run`, `get_run_shots`, `quote_revision`, `revise_run`, `quote_candidate`, `create_candidate`,
188
+ returns 44 tools: `make_ugc`, `get_run`, `get_run_shots`, `quote_revision`, `revise_run`, `quote_candidate`, `create_candidate`,
189
189
  `list_generation_models`, `quote_image`, `generate_image`, `quote_video`, `generate_video`, `quote_ugc`, `list_actors`,
190
- `list_voices`, `upload_image`, `create_upload`, `get_upload`, `create_asset`, `list_assets`, `get_asset`, `update_asset`,
191
- `delete_asset`, `get_account`, `create_actor`, `quote_actor`, `delete_actor`, `get_actor_defaults`,
190
+ `list_voices`, `list_template_sounds`, `upload_image`, `create_upload`, `get_upload`, `create_asset`, `list_assets`, `get_asset`, `update_asset`,
191
+ `delete_asset`, `quote_analysis`, `analyze_reference`, `get_reference_analysis`, `get_account`, `list_prices`, `create_actor`, `quote_actor`, `delete_actor`, `get_actor_defaults`,
192
192
  `set_actor_defaults`, `quote_faceless`, `make_faceless`, `list_workflows`, `get_workflow`, `prepare_workflow_plan`,
193
- `get_workflow_plan`, `approve_workflow_plan`, `quote_workflow_plan`, `run_workflow_plan`.
193
+ `plan_reference_remake`, `get_workflow_plan`, `approve_workflow_plan`, `quote_workflow_plan`, `run_workflow_plan`.
194
194
 
195
195
  Workflow calls are explicit steps: list/read a method, prepare its complete
196
196
  document, read all readiness issues and warnings, approve the chosen revision,
@@ -448,34 +448,32 @@ is, the contract MINUS the rejected fields: they simply are not there, and listi
448
448
  them here would mean offering what the server punishes you for (section 3).
449
449
 
450
450
  `script` (required while `segments` is rejected; length is limited by the resolved
451
- TTS model, as reported by `tools/list`: `eleven_v3`, `eleven_v4` and `gemini-3.8-flash-tts`
451
+ TTS model, as reported by `tools/list`: `eleven_v4` and `gemini-3.8-flash-tts`
452
452
  allow 5000 characters, `eleven_flash_v2_5` and `eleven_turbo_v2_5` allow 10000. Spaces, audio tags and stress
453
453
  marks count; emoji may count as two characters. There is no word-count limit or fixed
454
- duration implied by it), `tts_model` (omit it and the voice decides: the Russian presets
455
- `owner_ru_clone` and `daria_ru_female` and the catalog voices named `ru_*` speak
456
- `eleven_v4`, a voice of kind `model_voice` speaks its own model `gemini-3.8-flash-tts`,
457
- every other preset and catalog voice speaks `eleven_v3`; a raw `voice_id`
458
- speaks `eleven_v4` when at least 60% of the script's Cyrillic and Latin letters are
459
- Cyrillic, and `eleven_v3` otherwise; an explicit `tts_model` always wins;
454
+ duration implied by it), `tts_model` (omit it and the voice decides: a voice of kind
455
+ `model_voice` speaks its own model `gemini-3.8-flash-tts`, every preset, catalog voice and
456
+ raw `voice_id` speaks `eleven_v4`; an explicit `tts_model` wins, except `eleven_v3`,
457
+ which is no longer spoken: a run naming it speaks `eleven_v4` and says so in `warnings[]`;
460
458
  `eleven_flash_v2_5` and `eleven_turbo_v2_5` cost less and suit
461
459
  languages other than Russian), optionally `person` OR
462
460
  `image` (a public `https` URL) with `actor_gender` (`female`/`male`, only next to
463
461
  `image`), plus `name`, `captions` (defaults to `false` —
464
- **captions are opt-in, ASK THE USER FIRST**), `caption_style`
465
- (`hormozi`/`tiktok`/`minimal`), `look` (`natural`/`commercial`/`raw_iphone`),
462
+ **captions are opt-in, ASK THE USER FIRST**), `caption_style` and
463
+ `caption_emphasis` (see *Captions* under `make_ugc`), `look` (`natural`/`commercial`/`raw_iphone`),
466
464
  `aspect_ratio` (`9:16`/`1:1`, with NO default — silence and an explicit choice
467
465
  differ), `resolution` (`720p`/`1080p`/`4k`), `voice`/`voice_id`.
468
466
 
469
467
  **Russian stress marks.** Tell a user who writes in Russian that they can fix stress:
470
468
  write the stressed vowel as a capital inside a lowercase word — `потОм`, `зАмок` — and
471
- Clipwright sends `eleven_v4`, `eleven_v3` and `gemini-3.8-flash-tts` the stress mark U+0301
469
+ Clipwright sends `eleven_v4` and `gemini-3.8-flash-tts` the stress mark U+0301
472
470
  (`пото́м`). A capital that starts a
473
471
  word stays a capital, a word with a second capital or an inner capital consonant
474
472
  (`ВУЗы`, all caps) stays as written, and a U+0301 typed directly is kept. A single
475
473
  inner capital vowel always reads as stress, so `ЯндексЕда` needs a space. Keep Russian
476
- scripts on one of those three models: the 2.5 models misread the mark, so a script
474
+ scripts on one of those two models: the 2.5 models misread the mark, so a script
477
475
  carrying it draws a warning there, and so does any Cyrillic script. With a preset, a
478
- catalog voice or `voice_id` the choice is `eleven_v4` or `eleven_v3`, because
476
+ catalog voice or `voice_id` the choice is `eleven_v4`, because
479
477
  `gemini-3.8-flash-tts` speaks only its own voices. Retrying never
480
478
  fixes stress; only the text does.
481
479
 
@@ -490,19 +488,30 @@ The exact list is always available from the tool schema itself: `tools/list` is
490
488
  generated from the same shape, and fields that are not honoured carry
491
489
  `NOT HONORED YET` right in their own `description`.
492
490
 
493
- Spends no credits. The response is the raw `quote` in full:
491
+ Spends no credits. The response is the raw `quote`; its price fields for a
492
+ 12-second script read:
494
493
 
495
494
  ```json
496
495
  {
497
496
  "skill": "make_ugc",
498
- "credits_estimate": 360,
497
+ "credits_estimate": 156,
499
498
  "duration_estimate_sec": 12,
499
+ "tariff": "parts-v1",
500
+ "price_lines": [
501
+ { "label": "presenter, HeyGen Avatar IV", "unit": "face_second", "quantity": 12, "unit_credits": 12, "credits": 144 },
502
+ { "label": "production (voice and render)", "unit": "second", "quantity": 12, "unit_credits": 1, "credits": 12 }
503
+ ],
504
+ "minimum_credits": 50,
500
505
  "warnings": []
501
506
  }
502
507
  ```
503
508
 
509
+ Show the user `credits_estimate` and the lines; prices change, so never repeat
510
+ them from this page.
511
+
504
512
  `warnings[]` IS present here (passed through unfiltered) — read it: parameters
505
- that will not be honoured (for example, `captions` ignored in this build) are
513
+ that will not be honoured (for example, a `caption_emphasis` quote spoken entirely
514
+ under a full-frame insert, where no captions are drawn) are
506
515
  declared there rather than dropped silently.
507
516
 
508
517
  **Always call `quote_ugc` first and show the user the price before `make_ugc`**
@@ -535,6 +544,32 @@ After that you MUST poll `get_run` with that `run_id` every ~5–10 seconds unti
535
544
  reaches a terminal state. Do not tell the user the video is ready until you have a
536
545
  `video_url`.
537
546
 
547
+ #### Captions (`captions`, `caption_style`, `caption_emphasis`)
548
+
549
+ `make_ugc` burns word-timed captions into the video when `captions: true`. They
550
+ are off by default and do not change the price. Whether a video has them is the
551
+ user's call:
552
+
553
+ 1. **Ask whether they want captions** before the quote. Never turn them on
554
+ unprompted.
555
+ 2. **If yes, pick a style with them.** When the user gave a reference video, take
556
+ its look: bold uppercase cues with one coloured keyword is `hormozi`, one or
557
+ two words popping in colour is `tiktok`, a sentence on a dark box is `youtube`
558
+ or `lecture`. Otherwise offer three or four styles that fit the video, one line
559
+ each, and link the gallery, which shows every style on the same clip:
560
+ https://clipwright.io/captions. Without a choice the server draws `hormozi`.
561
+ 3. **Mark key words with `caption_emphasis`**: quotes from `script` drawn larger or
562
+ in the style's accent colour. `caption_mode: "highlights"` captions only the
563
+ lines around those quotes.
564
+
565
+ The styles: `hormozi` (the default), `accent`, `tiktok`, `youtube`, `instagram`,
566
+ `minimalist`, `neon`, `genz`, `campfire`, `midnight`, `plottwist`, `headline`,
567
+ `promo`, `lecture`, `highlighter`, `studio`, `broadcast`, `arcade`, `clutch`,
568
+ `bubblegum`, `crayon`, `lyrics`, `bassdrop`, `punch`; `minimal` is an older name
569
+ for `minimalist`. Each style's description is in `caption_style` of `tools/list`:
570
+ quote that, not your memory of it. Captions are refused with `segments` and with
571
+ `gemini-3.8-flash-tts`, which returns no word timings.
572
+
538
573
  #### Choosing a voice (`voice` / `voice_id`)
539
574
 
540
575
  Two mutually exclusive optional fields in the `make_ugc` input:
@@ -585,8 +620,8 @@ Two mutually exclusive optional fields in the `make_ugc` input:
585
620
  When the user sends a photo and asks for no particular voice, pass the gender of
586
621
  the person in it as `actor_gender`. Ask the user only when you cannot tell.
587
622
 
588
- For a Russian script, leave `tts_model` out or name `eleven_v4` or `eleven_v3` — both
589
- read stress marks — and mark stress with a capital vowel (see **Russian stress marks**
623
+ For a Russian script, leave `tts_model` out or name `eleven_v4` — it reads stress
624
+ marks — and mark stress with a capital vowel (see **Russian stress marks**
590
625
  above). A Russian voice speaks `eleven_v4` on its own. A `model_voice` voice reads
591
626
  stress marks too, on its own model `gemini-3.8-flash-tts`.
592
627
 
@@ -641,8 +676,8 @@ different sentences. Pass it to the user as written when they ask how to label t
641
676
  `SUCCEEDED`, `FAILED`) carries the run's `warnings` — parameters that were not
642
677
  honoured are always declared, never dropped silently. `make_ugc` shares the
643
678
  formatter, so its first response carries them too. Read it on the terminal
644
- response without fail: for instance, missing captions in the prototype are
645
- announced exactly there.
679
+ response without fail: for instance, captions laid out evenly because the speech
680
+ model returned no word timings are announced exactly there.
646
681
 
647
682
  **An unknown terminal status on the server** (say a hypothetical `"canceled"` that
648
683
  is not in `TERMINAL_STATES`) is a deliberate degradation: `isTerminal` returns
@@ -841,6 +876,15 @@ would be refused for money or access, so a render rarely needs this call first.
841
876
  Call it when the user asks how many credits are left, or to show the numbers
842
877
  behind such a warning.
843
878
 
879
+ ### `list_prices` — free, no input
880
+
881
+ Returns the body of `GET /v1/public/prices`: one entry per tool and variant with
882
+ its price as `lines` of `credits` per `unit`, added up, and `minimum_credits`
883
+ when there is one; where the price depends on the input, `lines` is empty and
884
+ `formula` states the rule. Free tools are listed at 0. Each paid tool's description ends with
885
+ the same price line. For the exact number of one call, use the quote tool the
886
+ entry names in `quote_tool`.
887
+
844
888
  ### `quote_faceless` — free, and `make_faceless` — paid, creates a run
845
889
 
846
890
  A faceless video is narration over an opening animated clip and image scenes,
@@ -856,7 +900,7 @@ Give the narration one of two ways, and name which with `input_mode`:
856
900
  `duration_seconds` by up to a quarter, never beyond 90 seconds; a video more
857
901
  than 5 seconds longer says so in `warnings[]`. A script is accepted when its
858
902
  estimated length is 21 seconds to `duration_seconds` plus 5, at most 90. The charge follows the delivered duration and never
859
- exceeds the quote; the minimum is 200 base credits plus 150 for the opener.
903
+ exceeds the quote; `list_prices` gives the rates and the minimum.
860
904
  - `input_mode: "brief"` with `brief` — a short description; the narration is
861
905
  written from it.
862
906
 
@@ -1104,8 +1148,8 @@ run as often as you like without making a new paid call.
1104
1148
  exists.
1105
1149
  2. Generate a unique `CLIPWRIGHT_CLIENT_ID` (section 2) and put it, together with
1106
1150
  `CLIPWRIGHT_API_KEY`, into the MCP host config (section 1.3).
1107
- 3. Restart the host and confirm `tools/list` returns 4 tools (`make_ugc`,
1108
- `quote_ugc`, `get_run`, `list_voices`).
1151
+ 3. Restart the host and confirm `tools/list` returns every tool named in
1152
+ section 1.3.
1109
1153
  4. `quote_ugc` with a script → show the price AND read `source`,
1110
1154
  `resolved_aspect_ratio`, `warnings[]` (section 3).
1111
1155
  5. `make_ugc` → get a `run_id` immediately.
package/dist/format.js CHANGED
@@ -64,8 +64,11 @@ export function formatGetRun(run, receipt) {
64
64
  } : { url_check: VIDEO_URL_CHECK }),
65
65
  ...(run.final_output?.ai_disclosure === undefined ? {} : { ai_disclosure: run.final_output.ai_disclosure }),
66
66
  ...(run.final_output?.long_form_billing === undefined ? {} : { long_form_billing: run.final_output.long_form_billing }),
67
+ ...(run.final_output?.parts_billing === undefined ? {} : { parts_billing: run.final_output.parts_billing }),
67
68
  ...(run.final_output?.speech_timing_gaps === undefined ? {} : { speech_timing_gaps: run.final_output.speech_timing_gaps }),
68
69
  ...(run.generation === undefined ? {} : { generation: run.generation }),
70
+ // A succeeded create_actor names the actor_id an agent passes to make_ugc (#778).
71
+ ...(run.created_actor === undefined ? {} : { created_actor: run.created_actor }),
69
72
  warnings: run.warnings,
70
73
  }),
71
74
  },
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { z } from "zod";
2
3
  import type { ClipwrightClient } from "@clipwright/sdk";
4
+ import { createAssetRequest } from "@clipwright/core";
3
5
  export interface CreateServerOptions {
4
6
  /** `local` reads the caller's files (stdio); `refuse` is a remote server, where a path names a file on another machine. */
5
7
  fileAccess: "local" | "refuse";
@@ -8,6 +10,12 @@ export interface CreateServerOptions {
8
10
  export declare const REMOTE_UPLOAD_REFUSAL: string;
9
11
  /** What `create_asset` answers a path on a server that reads no files. */
10
12
  export declare const REMOTE_ASSET_PATH_REFUSAL: string;
13
+ /** A local MP4 as an asset (clipwright#724 F2 S3): declared by size and sha256, PUT to the signed url, then read once. */
14
+ export declare function putLocalClip(client: ClipwrightClient, bytes: Uint8Array<ArrayBuffer>, path: string, meta: {
15
+ role: z.infer<typeof createAssetRequest>["role"];
16
+ name: string;
17
+ analysis_only?: true;
18
+ }, put?: typeof fetch): Promise<unknown>;
11
19
  /** Builds the MCP server with its tools registered but NO transport connected, */
12
20
  /** so tool registration is testable without a stdio process. */
13
21
  export declare function createServer(client: ClipwrightClient, options?: CreateServerOptions): McpServer;
package/dist/server.js CHANGED
@@ -1,10 +1,11 @@
1
+ import { createHash } from "node:crypto";
1
2
  import { readFile } from "node:fs/promises";
2
3
  import { createRequire } from "node:module";
3
4
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
5
  import { z } from "zod";
5
- // `offeredUgcInputShape`, not the full shape: fields the server rejects must not
6
+ // `mcpUgcInputShape`, not the full shape: fields the server rejects must not
6
7
  // be offered to a caller who would get a 400 for using them.
7
- import { offeredUgcInputShape, actorDefaultsInput, BROLL_POLICY_DESCRIPTION, CANDIDATE_CHARGE_TEXT, candidateRequest, CATALOG_LANGUAGES, CREATE_ACTOR_DESCRIPTION, createActorInputShape, DEFAULT_FACELESS_VOICE, FACELESS_VOICE_NAMES, generateImageRequest, generateVideoRequest, 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, REVISION_CHARGE_TEXT, revisionRequest, UPLOAD_IMAGE_DESCRIPTION, UPLOAD_MAX_BYTES, UPLOAD_MEDIA_TYPES, CREATE_UPLOAD_DESCRIPTION, GET_UPLOAD_DESCRIPTION, uploadId, sniffUploadMediaType, ASSET_KINDS, ASSET_LIST_MAX_LIMIT, ASSET_ROLES, assetId, assetSource, CREATE_ASSET_DESCRIPTION, createAssetRequest, DELETE_ASSET_DESCRIPTION, GET_ASSET_DESCRIPTION, LIST_ASSETS_DESCRIPTION, UPDATE_ASSET_DESCRIPTION, } from "@clipwright/core";
8
+ import { mcpUgcInputShape, actorDefaultsInput, BROLL_POLICY_DESCRIPTION, CANDIDATE_CHARGE_TEXT, candidateRequest, CATALOG_LANGUAGES, CREATE_ACTOR_DESCRIPTION, createActorInputShape, DEFAULT_FACELESS_VOICE, FACELESS_VOICE_NAMES, generateImageRequest, generateVideoRequest, 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, REVISION_CHARGE_TEXT, revisionRequest, UPLOAD_IMAGE_DESCRIPTION, UPLOAD_MAX_BYTES, UPLOAD_MEDIA_TYPES, CREATE_UPLOAD_DESCRIPTION, GET_UPLOAD_DESCRIPTION, uploadId, sniffUploadMediaType, ASSET_KINDS, ASSET_LIST_MAX_LIMIT, ASSET_VIDEO_MAX_BYTES, pendingAssetRead, ASSET_ROLES, assetId, assetSource, CREATE_ASSET_DESCRIPTION, createAssetRequest, DELETE_ASSET_DESCRIPTION, GET_ASSET_DESCRIPTION, LIST_ASSETS_DESCRIPTION, UPDATE_ASSET_DESCRIPTION, ANALYZE_REFERENCE_DESCRIPTION, QUOTE_ANALYSIS_DESCRIPTION, analyzeReferenceRequest, GET_REFERENCE_ANALYSIS_DESCRIPTION, referenceAnalysisId, withPriceLine, } from "@clipwright/core";
8
9
  import { formatGetRun, withFailureReport } from "./format.js";
9
10
  import { registerWorkflowTools } from './workflow-tools.js';
10
11
  // Version from the manifest: a literal drifts, and a JSON import breaks `rootDir`.
@@ -15,7 +16,25 @@ export const REMOTE_UPLOAD_REFUSAL = "This Clipwright server is remote and canno
15
16
  "(for example with curl), then use the upload_id.";
16
17
  /** What `create_asset` answers a path on a server that reads no files. */
17
18
  export const REMOTE_ASSET_PATH_REFUSAL = "This Clipwright server is remote and cannot read files on your machine, so create_asset takes no path here. " +
18
- "Pass source {url} or {base64, media_type}, or upload the file with create_upload and pass source {upload_id}.";
19
+ "Pass source {url} (add kind: \"video\" for an MP4) or {base64, media_type}, or pass {put: {media_type, bytes, sha256}} " +
20
+ "and PUT the file to the returned upload.put_url (for example with curl), then call get_asset.";
21
+ /** A local MP4 as an asset (clipwright#724 F2 S3): declared by size and sha256, PUT to the signed url, then read once. */
22
+ export async function putLocalClip(client, bytes, path, meta, put = fetch) {
23
+ if (bytes.byteLength > ASSET_VIDEO_MAX_BYTES)
24
+ throw new Error(`${path} is ${bytes.byteLength} bytes; a clip may be ${ASSET_VIDEO_MAX_BYTES}`);
25
+ const sha256 = createHash("sha256").update(bytes).digest("hex");
26
+ const created = await client.createAsset({ source: { put: { media_type: "video/mp4", bytes: bytes.byteLength, sha256 } },
27
+ role: meta.role, name: meta.name, ...(meta.analysis_only ? { analysis_only: true } : { rights_confirmed: true }) });
28
+ const pending = pendingAssetRead.safeParse(created);
29
+ const upload = pending.success ? pending.data.upload : undefined;
30
+ if (upload === undefined)
31
+ return created;
32
+ // fetch sends the content-length of the body itself, which is the declared size.
33
+ const answer = await put(upload.put_url, { method: "PUT", body: bytes, headers: { "content-type": upload.put_headers["content-type"] ?? "video/mp4" } });
34
+ if (!answer.ok)
35
+ throw new Error(`the storage refused the PUT of ${path} with HTTP ${answer.status}; create the asset again`);
36
+ return client.getAsset(created.asset_id);
37
+ }
19
38
  function uploadNextAction(upload) {
20
39
  return "Pass `url` as `image` to quote_ugc, then make_ugc, or the upload_id as {upload_id, rights_confirmed: true} in " +
21
40
  "references, first_frame or last_frame of quote_image, generate_image, quote_video and generate_video. Set " +
@@ -32,15 +51,15 @@ export function createServer(client, options = { fileAccess: "local" }) {
32
51
  server.registerTool("make_ugc", {
33
52
  title: "Make a talking-actor video",
34
53
  annotations: { readOnlyHint: false, destructiveHint: false },
35
- description: `${MAKE_UGC_DESCRIPTION} ${MAKE_UGC_AGENT_PROTOCOL}`,
54
+ description: withPriceLine("make_ugc", `${MAKE_UGC_DESCRIPTION} ${MAKE_UGC_AGENT_PROTOCOL}`),
36
55
  // Flat schema: offered render input plus agent retry. The description must agree
37
56
  // with it, since an LLM reads the description before the schema.
38
- inputSchema: { ...offeredUgcInputShape, ...agentRetryShape },
57
+ inputSchema: { ...mcpUgcInputShape, ...agentRetryShape },
39
58
  }, async (args) => withFailureReport(async () => {
40
59
  // `attempt` goes in SDK opts: inside `input` the schema would strip it,
41
60
  // and a retry would return the same run.
42
61
  const { attempt, ...input } = args;
43
- // Return right after start (state≈"queued"), without waiting.
62
+ // Return right after start (state≈"queued"), without waiting. Template data is checked strictly by the server (#778 S3, D3).
44
63
  const run = await client.startUgc(input, { attempt });
45
64
  // Same formatter as `get_run`, so warnings reach the agent at once.
46
65
  return formatGetRun(run);
@@ -100,7 +119,7 @@ export function createServer(client, options = { fileAccess: "local" }) {
100
119
  server.registerTool("revise_run", {
101
120
  title: "Revise a run",
102
121
  annotations: { readOnlyHint: false, destructiveHint: false },
103
- description: "Start a revision of a run made by make_faceless (paid): a NEW run that renders the video again with the " +
122
+ description: withPriceLine("revise_run", "Start a revision of a run made by make_faceless (paid): a NEW run that renders the video again with the " +
104
123
  "shots you change, by changes (a shot and what to generate for it) or by document (the whole edited " +
105
124
  "document); pass exactly one. Call quote_revision first and show the user the price. An identical request " +
106
125
  "returns the same run it started before, so a call repeated after a lost answer starts nothing new; to " +
@@ -108,7 +127,7 @@ export function createServer(client, options = { fileAccess: "local" }) {
108
127
  "original has a limit on revisions running at once and on revisions failed or unfinished, and paid edits " +
109
128
  "of it close some days after it finished; a refusal names which. While paid edits are closed it answers " +
110
129
  "editing_disabled and charges nothing. The result is a new run: poll it with get_run; once it succeeded " +
111
- "it is editable under its own run_id.",
130
+ "it is editable under its own run_id."),
112
131
  inputSchema: { ...revisionShape, ...agentRetryShape },
113
132
  }, async ({ run_id, attempt, ...request }) => withFailureReport(async () => formatGetRun(await client.startRevision(run_id, revisionOf(request), { attempt }))));
114
133
  // The candidate pair; the list stays on REST, the SDK and the CLI, since an agent polls its own candidate with get_run.
@@ -136,14 +155,14 @@ export function createServer(client, options = { fileAccess: "local" }) {
136
155
  server.registerTool("create_candidate", {
137
156
  title: "Make a shot candidate",
138
157
  annotations: { readOnlyHint: false, destructiveHint: false },
139
- description: "Make a shot candidate of a run made by make_faceless (paid): a NEW run of skill edit_shot that generates one " +
158
+ description: withPriceLine("create_candidate", "Make a shot candidate of a run made by make_faceless (paid): a NEW run of skill edit_shot that generates one " +
140
159
  "picture or clip for one shot, to keep or discard in a later revision. Call quote_candidate first and show the " +
141
160
  `user the price. ${CANDIDATE_CHARGE_TEXT} An identical request returns the same run it started before, so a ` +
142
161
  "call repeated after a lost answer starts nothing new; to make another candidate with the same request on " +
143
162
  "purpose, pass take 2. An original has a limit on candidates running at once and on candidates failed or " +
144
163
  "unfinished, apart from its revisions; a refusal names which. While shot candidates are closed it answers " +
145
164
  "editing_disabled and charges nothing. The result is a new run: poll it with get_run; once it succeeded, its " +
146
- "candidate.preview_url shows what was made.",
165
+ "candidate.preview_url shows what was made."),
147
166
  inputSchema: candidateShape,
148
167
  }, async ({ run_id, ...request }) => withFailureReport(async () => formatGetRun(await client.createCandidate(run_id, candidateOf(request)))));
149
168
  // Single generations (clipwright#724): the tools are listed while the feature is closed and relay the API's refusal.
@@ -180,9 +199,9 @@ export function createServer(client, options = { fileAccess: "local" }) {
180
199
  server.registerTool("generate_image", {
181
200
  title: "Generate an image",
182
201
  annotations: { readOnlyHint: false, destructiveHint: false },
183
- description: "Generate one image from a prompt (paid): a NEW run of skill generate_image, charged the quoted credits per image " +
202
+ description: withPriceLine("generate_image", "Generate one image from a prompt (paid): a NEW run of skill generate_image, charged the quoted credits per image " +
184
203
  "once it is delivered. Call quote_image first and show the user the price. Poll the run with get_run; once it " +
185
- "succeeded, generation.url is the image and its run_id can be a reference of a later generation. " + generationTerms,
204
+ "succeeded, generation.url is the image and its run_id can be a reference of a later generation. " + generationTerms),
186
205
  inputSchema: imageRunTool,
187
206
  }, async ({ attempt, ...request }) => withFailureReport(async () => formatGetRun(await client.generateImage(request, { attempt }))));
188
207
  server.registerTool("quote_video", {
@@ -198,10 +217,10 @@ export function createServer(client, options = { fileAccess: "local" }) {
198
217
  server.registerTool("generate_video", {
199
218
  title: "Generate a clip",
200
219
  annotations: { readOnlyHint: false, destructiveHint: false },
201
- description: "Generate one silent clip (paid): a NEW run of skill generate_video, charged unit_credits per second of duration_s " +
220
+ description: withPriceLine("generate_video", "Generate one silent clip (paid): a NEW run of skill generate_video, charged unit_credits per second of duration_s " +
202
221
  "once it is delivered. Modes: text; first_frame (first_frame, optional last_frame, of the requested aspect ratio " +
203
222
  "within 2%); reference (1 to 4 references). Call quote_video first and show the user the price. Poll the run with " +
204
- "get_run; once it succeeded, generation.url is the clip. " + generationTerms,
223
+ "get_run; once it succeeded, generation.url is the clip. " + generationTerms),
205
224
  inputSchema: videoRunTool,
206
225
  }, async ({ attempt, ...request }) => withFailureReport(async () => formatGetRun(await client.generateVideo(generateVideoRequest.parse(request), { attempt }))));
207
226
  server.registerTool("quote_ugc", {
@@ -211,7 +230,7 @@ export function createServer(client, options = { fileAccess: "local" }) {
211
230
  "Always call this first and show the user the price before make_ugc.",
212
231
  // Same core shape as make_ugc, so the quote prices exactly what make_ugc
213
232
  // would render.
214
- inputSchema: offeredUgcInputShape,
233
+ inputSchema: mcpUgcInputShape,
215
234
  }, async (args) => withFailureReport(async () => {
216
235
  const quote = await client.quoteUgc(args);
217
236
  return { content: [{ type: "text", text: JSON.stringify(quote) }] };
@@ -274,27 +293,35 @@ export function createServer(client, options = { fileAccess: "local" }) {
274
293
  description: CREATE_ASSET_DESCRIPTION,
275
294
  inputSchema: {
276
295
  source: z.union([...assetSource.options, z.strictObject({ path: z.string().min(1)
277
- .describe("Absolute or cwd-relative path to a PNG or JPEG file; only on a server running on your machine") })]),
296
+ .describe("Absolute or cwd-relative path to a PNG, JPEG or MP4 file; only on a server running on your machine") })]),
278
297
  role: createAssetRequest.shape.role,
279
298
  name: createAssetRequest.shape.name,
280
299
  rights_confirmed: createAssetRequest.shape.rights_confirmed,
300
+ analysis_only: createAssetRequest.shape.analysis_only,
281
301
  },
282
- }, async ({ source, role, name, rights_confirmed }) => withFailureReport(async () => {
302
+ }, async ({ source, role, name, rights_confirmed, analysis_only }) => withFailureReport(async () => {
283
303
  if (!("path" in source)) {
284
- return assetText(client.createAsset({ source, role, name, ...(rights_confirmed === undefined ? {} : { rights_confirmed }) }));
304
+ return assetText(client.createAsset({ source, role, name, ...(rights_confirmed === undefined ? {} : { rights_confirmed }),
305
+ ...(analysis_only === undefined ? {} : { analysis_only }) }));
285
306
  }
286
307
  if (options.fileAccess !== "local")
287
308
  throw new Error(REMOTE_ASSET_PATH_REFUSAL);
288
- if (rights_confirmed !== true)
289
- throw new Error("A local file is your own material: pass rights_confirmed: true");
309
+ if (rights_confirmed === analysis_only) {
310
+ throw new Error("A local file is your own material: pass rights_confirmed: true, or analysis_only: true to keep it for analyze_reference alone");
311
+ }
290
312
  const bytes = new Uint8Array(await readFile(source.path));
313
+ const claim = analysis_only ? { analysis_only } : { rights_confirmed: true };
314
+ // A clip goes by PUT (up to 100 MB), then one read hands it to processing; a picture goes as the body.
315
+ if (Buffer.from(bytes.subarray(4, 8)).toString("latin1") === "ftyp") {
316
+ return assetText(putLocalClip(client, bytes, source.path, { role, name, ...(analysis_only ? { analysis_only } : {}) }));
317
+ }
291
318
  const mediaType = sniffUploadMediaType(bytes);
292
319
  if (mediaType === null || bytes.byteLength > UPLOAD_MAX_BYTES) {
293
320
  throw new Error(mediaType === null
294
321
  ? `${source.path} is not a PNG or JPEG file (checked by signature, not by extension)`
295
322
  : `${source.path} is ${bytes.byteLength} bytes; the ceiling is ${UPLOAD_MAX_BYTES}`);
296
323
  }
297
- return assetText(client.createAssetFromBytes(bytes, mediaType, { role, name, rights_confirmed: true }));
324
+ return assetText(client.createAssetFromBytes(bytes, mediaType, { role, name, ...claim }));
298
325
  }));
299
326
  server.registerTool("list_assets", {
300
327
  title: "List assets",
@@ -328,6 +355,31 @@ export function createServer(client, options = { fileAccess: "local" }) {
328
355
  await client.deleteAsset(asset_id);
329
356
  return { content: [{ type: "text", text: JSON.stringify({ deleted: asset_id }) }] };
330
357
  }));
358
+ // Reference analysis (reference-to-video S1c): paid since #927; the profile is read with get_reference_analysis once it is ready.
359
+ server.registerTool("quote_analysis", {
360
+ title: "Quote a reference analysis",
361
+ annotations: { readOnlyHint: true, destructiveHint: false },
362
+ description: QUOTE_ANALYSIS_DESCRIPTION,
363
+ inputSchema: analyzeReferenceRequest.shape,
364
+ }, async (request) => withFailureReport(async () => ({
365
+ content: [{ type: "text", text: JSON.stringify(await client.quoteAnalysis(request)) }],
366
+ })));
367
+ server.registerTool("analyze_reference", {
368
+ title: "Analyse a reference ad",
369
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true },
370
+ description: withPriceLine("analyze_reference", ANALYZE_REFERENCE_DESCRIPTION),
371
+ inputSchema: analyzeReferenceRequest.shape,
372
+ }, async (request) => withFailureReport(async () => ({
373
+ content: [{ type: "text", text: JSON.stringify(await client.analyzeReference(request)) }],
374
+ })));
375
+ server.registerTool("get_reference_analysis", {
376
+ title: "Get a reference analysis",
377
+ annotations: { readOnlyHint: true, destructiveHint: false },
378
+ description: GET_REFERENCE_ANALYSIS_DESCRIPTION,
379
+ inputSchema: { analysis_id: referenceAnalysisId },
380
+ }, async ({ analysis_id }) => withFailureReport(async () => ({
381
+ content: [{ type: "text", text: JSON.stringify(await client.getReferenceAnalysis(analysis_id)) }],
382
+ })));
331
383
  server.registerTool("list_voices", {
332
384
  title: "List voices",
333
385
  annotations: { readOnlyHint: true, destructiveHint: false },
@@ -351,13 +403,25 @@ export function createServer(client, options = { fileAccess: "local" }) {
351
403
  "spoken by that voice with that model; play it to the user before a paid render instead of judging a " +
352
404
  "voice by its description. A model_voice sample is in English, or in the language you filter by. " +
353
405
  "It expires at `preview_expires_at`: call this tool again for a fresh link, " +
354
- "never store it. A voice without `preview_url` has no sample yet. Free. " + SCRIPT_LENGTH_DESCRIPTION,
406
+ "never store it. A voice without `preview_url` has no sample yet. `words_per_second` is an English voice's measured pace; " +
407
+ "eleven_v4 has no speed setting, so to match a reference presenter pick the voice nearest its pace. Free. " + SCRIPT_LENGTH_DESCRIPTION,
355
408
  inputSchema: voicesQueryShape,
356
409
  }, async (filters) => withFailureReport(async () => {
357
410
  // Relays /v1/voices: no vendor call and no vendor key on this surface.
358
411
  const voices = await client.listVoices(filters);
359
412
  return { content: [{ type: "text", text: JSON.stringify({ voices }) }] };
360
413
  }));
414
+ server.registerTool("list_template_sounds", {
415
+ title: "List template sounds",
416
+ annotations: { readOnlyHint: true, destructiveHint: false },
417
+ description: "List the sounds make_ugc templates play, by beat: where each beat plays, its default and every name it takes. " +
418
+ "A run plays the defaults; template_sounds { beat: name } swaps a beat's sound, and template_sounds=false plays none. " +
419
+ "The edit beat plays on every cut only with make_ugc edit_sounds=true. " +
420
+ "Sounds never change the price. Free.",
421
+ inputSchema: {},
422
+ }, async () => withFailureReport(async () => ({
423
+ content: [{ type: "text", text: JSON.stringify(await client.listTemplateSounds()) }],
424
+ })));
361
425
  server.registerTool("list_actors", {
362
426
  title: "List actors",
363
427
  annotations: { readOnlyHint: true, destructiveHint: false },
@@ -387,7 +451,7 @@ export function createServer(client, options = { fileAccess: "local" }) {
387
451
  server.registerTool("create_actor", {
388
452
  title: "Create a personal actor",
389
453
  annotations: { readOnlyHint: false, destructiveHint: false },
390
- description: CREATE_ACTOR_DESCRIPTION,
454
+ description: withPriceLine("create_actor", CREATE_ACTOR_DESCRIPTION),
391
455
  inputSchema: { ...createActorInputShape, ...agentRetryShape },
392
456
  }, async (args) => withFailureReport(async () => {
393
457
  // `attempt` goes in SDK opts: inside `input` the schema would strip it,
@@ -409,7 +473,7 @@ export function createServer(client, options = { fileAccess: "local" }) {
409
473
  server.registerTool("make_faceless", {
410
474
  title: "Make a faceless video",
411
475
  annotations: { readOnlyHint: false, destructiveHint: false },
412
- description: `${MAKE_FACELESS_DESCRIPTION} ${MAKE_FACELESS_AGENT_PROTOCOL}`,
476
+ description: withPriceLine("make_faceless", `${MAKE_FACELESS_DESCRIPTION} ${MAKE_FACELESS_AGENT_PROTOCOL}`),
413
477
  inputSchema: offeredFacelessInput.extend(agentRetryShape),
414
478
  }, async (args) => withFailureReport(async () => {
415
479
  const { attempt, ...input } = args;
@@ -449,6 +513,17 @@ export function createServer(client, options = { fileAccess: "local" }) {
449
513
  }, async () => withFailureReport(async () => ({
450
514
  content: [{ type: "text", text: JSON.stringify(await client.getAccount()) }],
451
515
  })));
516
+ server.registerTool("list_prices", {
517
+ title: "List prices",
518
+ annotations: { readOnlyHint: true, destructiveHint: false },
519
+ description: "List what every Clipwright tool costs in credits. Free, spends nothing. Each entry names the tool, its REST route " +
520
+ "and its price: lines of credits per unit (call, second of video, second the presenter is in the video, image, clip, second of " +
521
+ "clip), added up, with minimum_credits when there is one; or, where the price depends on the input, a formula. " +
522
+ "Free tools cost 0. For the exact number of a paid call, use the quote tool the entry names.",
523
+ inputSchema: {},
524
+ }, async () => withFailureReport(async () => ({
525
+ content: [{ type: "text", text: JSON.stringify(await client.listPrices()) }],
526
+ })));
452
527
  return server;
453
528
  }
454
529
  //# sourceMappingURL=server.js.map
@@ -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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"}
@@ -1,8 +1,10 @@
1
+ import { priceLine } from '@clipwright/core';
1
2
  import { workflowToolInputs, WORKFLOW_TOOL_DESCRIPTIONS } from '@clipwright/core/workflows';
2
3
  import { formatGetRun, withFailureReport } from './format.js';
3
4
  const json = (value) => ({ content: [{ type: 'text', text: JSON.stringify(value) }] });
4
5
  const config = (name, title, readOnlyHint) => ({
5
- title, description: WORKFLOW_TOOL_DESCRIPTIONS[name], inputSchema: workflowToolInputs[name],
6
+ title, description: [WORKFLOW_TOOL_DESCRIPTIONS[name], priceLine(name)].filter((part) => part !== null).join(' '),
7
+ inputSchema: workflowToolInputs[name],
6
8
  annotations: { readOnlyHint, destructiveHint: false },
7
9
  });
8
10
  export function registerWorkflowTools(server, client) {
@@ -11,6 +13,7 @@ export function registerWorkflowTools(server, client) {
11
13
  server.registerTool('prepare_workflow_plan', config('prepare_workflow_plan', 'Create or save a workflow plan', false), async ({ document, plan_id, base_version }) => withFailureReport(async () => json(plan_id === undefined
12
14
  ? await client.createWorkflowPlan({ document })
13
15
  : await client.saveWorkflowPlan(plan_id, { document, base_version: base_version }))));
16
+ server.registerTool('plan_reference_remake', config('plan_reference_remake', 'Compile a reference remake plan', false), async (request) => withFailureReport(async () => json(await client.planReferenceRemake(request))));
14
17
  server.registerTool('get_workflow_plan', config('get_workflow_plan', 'Read a workflow plan', true), async ({ plan_id }) => withFailureReport(async () => json(await client.getWorkflowPlan(plan_id))));
15
18
  server.registerTool('approve_workflow_plan', config('approve_workflow_plan', 'Approve a workflow revision', false), async ({ plan_id, ...approval }) => withFailureReport(async () => json(await client.approveWorkflowPlan(plan_id, approval))));
16
19
  server.registerTool('quote_workflow_plan', config('quote_workflow_plan', 'Quote a workflow run', true), async ({ plan_id }) => withFailureReport(async () => json(await client.quoteWorkflowPlan(plan_id))));
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-tools.js","sourceRoot":"","sources":["../src/workflow-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-tools.js","sourceRoot":"","sources":["../src/workflow-tools.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.33.0",
3
+ "version": "0.35.0",
4
4
  "description": "MCP server for Clipwright: generate UGC videos from your coding agent",
5
5
  "mcpName": "io.clipwright/mcp",
6
6
  "repository": {
@@ -52,9 +52,9 @@
52
52
  },
53
53
  "dependencies": {
54
54
  "@modelcontextprotocol/sdk": "^1.31.0",
55
- "zod": "^4.4.3",
56
- "@clipwright/core": "0.33.0",
57
- "@clipwright/sdk": "0.33.0"
55
+ "zod": "^4.6.7",
56
+ "@clipwright/core": "0.35.0",
57
+ "@clipwright/sdk": "0.35.0"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@types/node": "^26.1.1"