@clipform/mcp-server 2.15.7 → 2.15.9

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.
@@ -6,7 +6,7 @@ import {
6
6
  getWorkflowText,
7
7
  objectType,
8
8
  registerPrompts
9
- } from "./chunk-EAGVCUZK.js";
9
+ } from "./chunk-SKNKSZOA.js";
10
10
  import {
11
11
  GUIDE_TYPES,
12
12
  QUIZ_VARIANTS,
@@ -15,7 +15,7 @@ import {
15
15
  getGuideUri,
16
16
  guideFallbackText,
17
17
  registerResources
18
- } from "./chunk-CMGILVM3.js";
18
+ } from "./chunk-ORZYVIW3.js";
19
19
  import {
20
20
  ACTIVE_NODE_TYPES,
21
21
  CONTACT_FIELDS,
@@ -29,7 +29,8 @@ import {
29
29
  MCP_TOOL_TOOLSETS,
30
30
  NODE_TYPES,
31
31
  NON_COUNTABLE_TYPES,
32
- SLIDESHOW_TRANSITIONS,
32
+ SLIDESHOW_COMPOSITION_TRANSITIONS,
33
+ VIDEO_LOOK_NAMES,
33
34
  bfsOrder,
34
35
  callApi,
35
36
  capsFromToolsets,
@@ -39,7 +40,7 @@ import {
39
40
  resolveFormType,
40
41
  structuredResult,
41
42
  textResult
42
- } from "./chunk-DP5QUTMG.js";
43
+ } from "./chunk-VLI2LYIB.js";
43
44
  import {
44
45
  getMcpAuth,
45
46
  runWithMcpTool
@@ -19588,7 +19589,7 @@ function registerRenderCompositionTool(server) {
19588
19589
  title: "Render Composition",
19589
19590
  description: `Render a specialised video composition to MP4 or PNG - custom animated visuals that clipform_generate_video can't provide, such as geography animations or designed motion graphics. Available composition names and their required input props schemas come from clipform_list_compositions.
19590
19591
 
19591
- For narrated Ken Burns slideshows from images, use clipform_generate_video instead. Output formats: mp4 (H.264, best for social media) or png (single frame). Returns a public URL when complete.
19592
+ Output formats: mp4 (H.264, best for social media) or png (single frame). Returns a public URL when complete.
19592
19593
 
19593
19594
  For multi-render builds (e.g. one clip per quiz question), pass everything in ONE call via items (max 10): all renders fire in parallel and you get one job ID each - then collect the URLs in a single clipform_check_render call with job_ids. Single render: pass compositionId/inputProps at the top level (wait: true blocks and returns the URL; wait: false returns a job ID).
19594
19595
 
@@ -19821,7 +19822,7 @@ function registerListCompositionsTool(server) {
19821
19822
  "clipform_list_compositions",
19822
19823
  {
19823
19824
  title: "List Compositions",
19824
- description: `Browse available video compositions and their expected props schemas. Call this before using clipform_render_composition to discover visual styles and their input props. For narrated slideshows from images, use clipform_generate_video instead.`,
19825
+ description: `Browse available video compositions and their expected props schemas. Call this before using clipform_render_composition to discover visual styles and their input props. For an image or photo montage, reach for a video template (clipform_list_video_templates + clipform_render_video_template) or clipform_generate_video instead of a composition.`,
19825
19826
  inputSchema: {},
19826
19827
  outputSchema: {
19827
19828
  compositions: external_exports.array(
@@ -20136,7 +20137,7 @@ ${RENDER_ATTACH_RULE}`,
20136
20137
  external_exports.object({
20137
20138
  type: external_exports.enum(["image", "video"]).describe("'image' for still images with Ken Burns effects, 'video' for video clips"),
20138
20139
  url: external_exports.string().url().describe("Media URL"),
20139
- effect: external_exports.string().optional().describe(`Ken Burns effect (image only): ${[...KEN_BURNS_EFFECTS, "random"].join(", ")}`),
20140
+ effect: external_exports.enum([...KEN_BURNS_EFFECTS, "random"]).optional().describe("Advanced override: a specific Ken Burns effect (image only), overriding the preset look's own effect choice"),
20140
20141
  aspect_ratio: external_exports.number().positive().optional().describe("Image width/height ratio (image only). Enables auto blur-pad for landscape images."),
20141
20142
  fit: external_exports.enum(KEN_BURNS_FIT_MODES).optional().describe("Framing mode (image only). auto = cover for portrait, blur-pad for landscape."),
20142
20143
  start_from: external_exports.number().min(0).optional().describe("Start time in seconds (video only). Trims the clip."),
@@ -20147,23 +20148,24 @@ ${RENDER_ATTACH_RULE}`,
20147
20148
  background_audio_url: external_exports.string().url().optional().describe("Ambience/music bed under the narration (crowd noise, room tone). Loops to fill the video. Find tracks with clipform_search_music."),
20148
20149
  background_audio_volume: external_exports.number().min(0).max(1).optional().describe("Background bed volume 0-1 (default 0.15 - sits under speech)"),
20149
20150
  duration_seconds: external_exports.number().positive().optional().describe("Video duration in seconds (required if no audio_url)"),
20151
+ preset: external_exports.enum(VIDEO_LOOK_NAMES).optional().default("clean").describe(`Named look driving transition + motion + colour treatment together (default: 'clean'). One of: ${VIDEO_LOOK_NAMES.join(", ")}. The advanced fields below (transition, style_preset, texture, duotone, background_color, per-item effect) override individual pieces of the chosen look when set.`),
20150
20152
  random_effects: external_exports.boolean().optional().default(true).describe("Shuffle Ken Burns effects across image items (default: true)"),
20151
20153
  transition: external_exports.object({
20152
- type: external_exports.string().optional().default("fade").describe(`Transition: ${SLIDESHOW_TRANSITIONS.join(", ")}`),
20153
- duration: external_exports.number().optional().default(1).describe("Transition duration in seconds (default: 1)")
20154
- }).optional(),
20155
- style_preset: STYLE_PRESET_ENUM.optional(),
20154
+ type: external_exports.enum(SLIDESHOW_COMPOSITION_TRANSITIONS).optional().describe(`Advanced override: ${SLIDESHOW_COMPOSITION_TRANSITIONS.join(", ")} - overrides the preset look's own transition`),
20155
+ duration: external_exports.number().optional().describe("Advanced override: transition duration in seconds")
20156
+ }).optional().describe("Advanced: overrides the preset look's transition"),
20157
+ style_preset: STYLE_PRESET_ENUM.optional().describe(`Advanced override: a raw Ken Burns motion preset, overriding the preset look's own motion.`),
20156
20158
  texture: external_exports.object({
20157
20159
  type: external_exports.enum(["checker", "halftone", "scanlines"]).describe("checker = square dither mesh, halftone = dot grid, scanlines = horizontal lines"),
20158
20160
  sizePx: external_exports.number().positive().optional().describe("Pattern cell size in px (default 4)"),
20159
20161
  opacity: external_exports.number().min(0).max(1).optional().describe("Pattern darkness 0-1 (default 0.35)")
20160
- }).optional().describe("Print-style pattern overlay on image items - makes stock imagery read as designed (screen-print dither look)"),
20162
+ }).optional().describe("Advanced override: print-style pattern overlay on image items, overriding the preset look's own texture - makes stock imagery read as designed (screen-print dither look)"),
20161
20163
  duotone: external_exports.object({
20162
20164
  shadow: external_exports.string().describe("Darker tone (maps to image shadows), e.g. '#1a1633'"),
20163
20165
  highlight: external_exports.string().describe("Lighter tone (maps to image highlights), e.g. '#f5c542'"),
20164
20166
  contrast: external_exports.number().positive().optional().describe("Contrast boost before mapping (default 1.1)")
20165
- }).optional().describe("Two-tone editorial recolour on image items - desaturates then maps to a shadow->highlight palette. Pair with a halftone texture for a screen-print poster look."),
20166
- background_color: external_exports.string().optional().describe("Background color (default '#000')"),
20167
+ }).optional().describe("Advanced override: two-tone editorial recolour on image items, overriding the preset look's own duotone - desaturates then maps to a shadow->highlight palette. Pair with a halftone texture for a screen-print poster look."),
20168
+ background_color: external_exports.string().optional().describe("Advanced override: background color, overriding the preset look's own background (default '#000')"),
20167
20169
  wait: external_exports.boolean().optional().default(true).describe("true (default) blocks until the video is ready and returns its URL. false returns a job ID immediately - fire all renders first, then poll clipform_check_render. Use false whenever rendering more than one video."),
20168
20170
  node_id: external_exports.string().optional().describe("Form node to attach this render to automatically once it completes - skips the manual clipform_upload_media_asset + clipform_attach_node_media steps and republishes the form if it's currently live. Requires form_id."),
20169
20171
  form_id: external_exports.string().uuid().optional().describe("The form UUID (required when node_id is set)."),
@@ -20185,7 +20187,7 @@ ${RENDER_ATTACH_RULE}`,
20185
20187
  // node_id too (destructive/openWorld apply "even in only select modes").
20186
20188
  annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true }
20187
20189
  },
20188
- async ({ items, audio_url, background_audio_url, background_audio_volume, duration_seconds, random_effects, transition, style_preset, texture, duotone, background_color, wait, node_id, form_id, captions }) => {
20190
+ async ({ items, audio_url, background_audio_url, background_audio_volume, duration_seconds, preset, random_effects, transition, style_preset, texture, duotone, background_color, wait, node_id, form_id, captions }) => {
20189
20191
  if (node_id && !form_id) {
20190
20192
  return errorResult("form_id is required when node_id is set.");
20191
20193
  }
@@ -20204,8 +20206,14 @@ ${RENDER_ATTACH_RULE}`,
20204
20206
  background_audio_url,
20205
20207
  background_audio_volume,
20206
20208
  duration_seconds,
20209
+ // preset expands to its base transition/style/background on the
20210
+ // API side (expandVideoLook); transition/default_style/background_color
20211
+ // below are only sent when the caller actually set the advanced
20212
+ // override, so the API can tell "explicit" apart from "unset" and
20213
+ // apply the look's own base value instead (#4038).
20214
+ preset,
20207
20215
  random_effects: random_effects ?? true,
20208
- transition: transition ?? { type: "fade", duration: 1 },
20216
+ transition,
20209
20217
  default_style,
20210
20218
  background_color,
20211
20219
  workspace_id
@@ -20765,4 +20773,4 @@ export {
20765
20773
  buildInstructions,
20766
20774
  createServer
20767
20775
  };
20768
- //# sourceMappingURL=chunk-G32PAZBX.js.map
20776
+ //# sourceMappingURL=chunk-4YDGMSPG.js.map