@clipwright/mcp-server 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -16,6 +16,55 @@ a customer reading it should not miss what appeared in the product. Like *Server
16
16
  they are live from the day the web app was deployed, not from the package release they are
17
17
  listed under.
18
18
 
19
+ ## [0.17.0] - 2026-09-16
20
+
21
+ Everything here came out of the second dry run by a tester who had not seen the
22
+ product before.
23
+
24
+ ### Added
25
+
26
+ - The MCP server reports money. `make_ugc` carries `credits_reserved` and
27
+ `get_run` carries `credits_charged`, in every state, so an agent no longer has
28
+ to call `get_account` before and after and subtract. The field names come from
29
+ the run schema, so REST and MCP cannot drift apart. (clipwright#209)
30
+ - *Server-side:* in `GET /v1/voices`, each entry of `models` carries
31
+ `vendor_verifies_voices` — whether the vendor's library listing marks any voice
32
+ as verified for that model. It is `false` for `eleven_v3` (measured: none of
33
+ 303 live catalog voices), so an empty `verified_models` on that model says
34
+ nothing about the voice. (clipwright#208)
35
+ - *Server-side:* a voice whose gender differs from the actor's is named in
36
+ `warnings`, in the quote and in the run. The combination still runs as asked —
37
+ voicing a man with a female voice is sometimes deliberate — but it is no longer
38
+ silent. (clipwright#210)
39
+ - *Server-side:* an `image` smaller than the output on its short side gets a
40
+ warning that the source is upscaled, with both sizes and the size to send
41
+ instead. The default actor is silent: its size is a property of our own image,
42
+ stated once in the docs. (clipwright#211)
43
+
44
+ ### Fixed
45
+
46
+ - *Server-side:* a request body that is not valid JSON answers 400
47
+ `malformed_body`, not 500. A 500 says the failure is ours, so an agent retries
48
+ bytes that will never parse; the new message says both what to fix and that a
49
+ retry fails the same way. (clipwright#212)
50
+ - *Server-side:* a source we cannot use — private or loopback host, http,
51
+ unreachable, redirecting, over 10 MB, or not PNG/JPEG/WebP — is refused with
52
+ 400 `unusable_source` before any charge, in the quote and in the run alike.
53
+ It used to be priced: a loopback url answered 200 and an estimate, while the
54
+ tool description promised a refusal. (clipwright#213)
55
+ - *Server-side:* refusals on `script`, `voice`, `voice_id` and `image` are
56
+ written in the product's words instead of the schema library's, and the
57
+ description of `script` no longer names a field the API rejects.
58
+ (clipwright#212)
59
+ - *Dashboard:* the root of the cabinet host sends a signed-in visitor to their
60
+ dashboard instead of showing the landing page with a "Sign in" button.
61
+ (clipwright#214)
62
+ - *Dashboard:* every tile on `/videos` prints its `run_id` and links to the
63
+ support form with it. The id used to live only in the preview image's alt
64
+ text, so tiles without a preview had none at all. (clipwright#215)
65
+ - *Dashboard:* the REST example on `/quickstart` runs unchanged in any shell: one
66
+ line, no backslash continuations and no shell substitution. (clipwright#211)
67
+
19
68
  ## [0.16.0] - 2026-09-16
20
69
 
21
70
  ### Added
package/dist/format.js CHANGED
@@ -1,4 +1,4 @@
1
- import { FAILED_STATE, isTerminal } from "@clipwright/core";
1
+ import { FAILED_STATE, isTerminal, runMoney, VIDEO_URL_CHECK } from "@clipwright/core";
2
2
  import { ClipwrightApiError } from "@clipwright/sdk";
3
3
  /**
4
4
  * ОТКАЗ API, РАЗВЁРНУТЫЙ ДЛЯ АГЕНТА (US-622).
@@ -72,6 +72,7 @@ export function formatGetRun(run) {
72
72
  status: "FAILED",
73
73
  run_id: run.run_id,
74
74
  state: run.state,
75
+ ...runMoney(run),
75
76
  // Правило проекта №3: расхождения никогда не молчат — warnings
76
77
  // пробрасываются в КАЖДУЮ ветку get_run (US-512).
77
78
  warnings: run.warnings,
@@ -89,7 +90,9 @@ export function formatGetRun(run) {
89
90
  status: "SUCCEEDED",
90
91
  run_id: run.run_id,
91
92
  state: run.state,
93
+ ...runMoney(run),
92
94
  video_url: run.final_output?.video_url ?? null,
95
+ video_url_check: VIDEO_URL_CHECK,
93
96
  duration_seconds: run.final_output?.duration_seconds ?? null,
94
97
  warnings: run.warnings,
95
98
  }),
@@ -107,6 +110,7 @@ export function formatGetRun(run) {
107
110
  status: "IN_PROGRESS",
108
111
  run_id: run.run_id,
109
112
  state: run.state,
113
+ ...runMoney(run),
110
114
  video_url: null,
111
115
  warnings: run.warnings,
112
116
  next_action: "Video is NOT ready. Call get_run with run_id=" +
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAgB,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAYrD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,CAAC,CAAC,KAAK,YAAY,kBAAkB,CAAC;QAAE,MAAM,KAAK,CAAC;IACxD,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAoC;IAEpC,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,mEAAmE;QACnE,0EAA0E;QAC1E,iBAAiB;QACjB,IAAI,GAAG,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,GAAG,CAAC,MAAM;4BAClB,KAAK,EAAE,GAAG,CAAC,KAAK;4BAChB,+DAA+D;4BAC/D,kDAAkD;4BAClD,QAAQ,EAAE,GAAG,CAAC,QAAQ;4BACtB,KAAK,EAAE,GAAG,CAAC,KAAK;yBACjB,CAAC;qBACH;iBACF;aACF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,MAAM,EAAE,WAAW;wBACnB,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE,SAAS,IAAI,IAAI;wBAC9C,gBAAgB,EAAE,GAAG,CAAC,YAAY,EAAE,gBAAgB,IAAI,IAAI;wBAC5D,QAAQ,EAAE,GAAG,CAAC,QAAQ;qBACvB,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC;IACD,+EAA+E;IAC/E,gDAAgD;IAChD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,MAAM,EAAE,aAAa;oBACrB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,WAAW,EACT,+CAA+C;wBAC/C,GAAG,CAAC,MAAM;wBACV,mFAAmF;wBACnF,wDAAwD;iBAC3D,CAAC;aACH;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAgB,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAYrD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,CAAC,CAAC,KAAK,YAAY,kBAAkB,CAAC;QAAE,MAAM,KAAK,CAAC;IACxD,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAoC;IAEpC,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,mEAAmE;QACnE,0EAA0E;QAC1E,iBAAiB;QACjB,IAAI,GAAG,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,GAAG,CAAC,MAAM;4BAClB,KAAK,EAAE,GAAG,CAAC,KAAK;4BAChB,GAAG,QAAQ,CAAC,GAAG,CAAC;4BAChB,+DAA+D;4BAC/D,kDAAkD;4BAClD,QAAQ,EAAE,GAAG,CAAC,QAAQ;4BACtB,KAAK,EAAE,GAAG,CAAC,KAAK;yBACjB,CAAC;qBACH;iBACF;aACF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,MAAM,EAAE,WAAW;wBACnB,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,GAAG,QAAQ,CAAC,GAAG,CAAC;wBAChB,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE,SAAS,IAAI,IAAI;wBAC9C,eAAe,EAAE,eAAe;wBAChC,gBAAgB,EAAE,GAAG,CAAC,YAAY,EAAE,gBAAgB,IAAI,IAAI;wBAC5D,QAAQ,EAAE,GAAG,CAAC,QAAQ;qBACvB,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC;IACD,+EAA+E;IAC/E,gDAAgD;IAChD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,MAAM,EAAE,aAAa;oBACrB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,GAAG,QAAQ,CAAC,GAAG,CAAC;oBAChB,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,WAAW,EACT,+CAA+C;wBAC/C,GAAG,CAAC,MAAM;wBACV,mFAAmF;wBACnF,wDAAwD;iBAC3D,CAAC;aACH;SACF;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clipwright/mcp-server",
3
- "version": "0.16.0",
3
+ "version": "0.17.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/sdk": "0.16.0",
33
- "@clipwright/core": "0.16.0"
32
+ "@clipwright/core": "0.17.0",
33
+ "@clipwright/sdk": "0.17.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/node": "^26.1.1"