@clipform/mcp-server 2.15.8 → 2.15.10

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-AE4G2LMQ.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-5POJOTRI.js";
18
+ } from "./chunk-ORZYVIW3.js";
19
19
  import {
20
20
  ACTIVE_NODE_TYPES,
21
21
  CONTACT_FIELDS,
@@ -40,7 +40,7 @@ import {
40
40
  resolveFormType,
41
41
  structuredResult,
42
42
  textResult
43
- } from "./chunk-4DVA4LDZ.js";
43
+ } from "./chunk-VLI2LYIB.js";
44
44
  import {
45
45
  getMcpAuth,
46
46
  runWithMcpTool
@@ -16998,6 +16998,22 @@ import { readFileSync } from "fs";
16998
16998
  import { dirname, join } from "path";
16999
16999
  import { fileURLToPath } from "url";
17000
17000
 
17001
+ // src/lib/onboarding-copy.ts
17002
+ var ONBOARDING_OFFER_CONTROL_VARIANT = "control";
17003
+ var ONBOARDING_OFFER_COPY = {
17004
+ // #4089 review: this cohort has already completed OAuth to connect - they
17005
+ // have an account. Never claim "no account needed" or otherwise imply an
17006
+ // anonymous/no-sign-up lane here; that framing contradicts what they just
17007
+ // did and reads as broken. Acknowledge the connection instead, then offer
17008
+ // to build. (The anonymous/no-auth entry point is a different surface,
17009
+ // #4088 - not this cohort.)
17010
+ [ONBOARDING_OFFER_CONTROL_VARIANT]: "When this is the start of a new conversation and the user has not yet said what they want to build, welcome them as someone who is now connected to Clipform and offer to build their first form together, then offer these starting points as plain text: lead-gen, feedback, quiz, or something else - ask which one fits, or invite them to describe what they need instead. If the user's first message already states what they want to build, even loosely, skip that offer entirely and go straight into the brief-driven flow below."
17011
+ };
17012
+ function buildOnboardingOffer(variant = ONBOARDING_OFFER_CONTROL_VARIANT) {
17013
+ return ONBOARDING_OFFER_COPY[variant] ?? ONBOARDING_OFFER_COPY[ONBOARDING_OFFER_CONTROL_VARIANT];
17014
+ }
17015
+ var ONBOARDING_OFFER_TOOL_CUE = "If the user hasn't said what to build yet, offer to build their first form and suggest starting points: lead-gen, feedback, quiz, or something else.";
17016
+
17001
17017
  // src/lib/config.ts
17002
17018
  var _endScreen = NODE_TYPES.end_screen.config_schema.properties;
17003
17019
  var END_SCREEN_ICONS = _endScreen.icon.enum;
@@ -17185,6 +17201,8 @@ function registerCreateFormTool(server) {
17185
17201
  title: "Create Clipform",
17186
17202
  description: `Create a new Clipform (interactive video-style form). Returns a viewer URL and form ID. When connected via an authenticated MCP client (e.g. claude.ai), the form lands directly in the user's workspace. Anonymous sessions get a claim URL to transfer ownership later.
17187
17203
 
17204
+ ${ONBOARDING_OFFER_TOOL_CUE}
17205
+
17188
17206
  ${NODE_TYPES_DESCRIPTION}
17189
17207
 
17190
17208
  All type definitions and config schemas are derived from @vid-master/config (node-types). Refer to the config descriptions above for the correct keys and shapes. AI-PROTECTED parameters have restrictions noted in their descriptions.
@@ -19589,7 +19607,7 @@ function registerRenderCompositionTool(server) {
19589
19607
  title: "Render Composition",
19590
19608
  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.
19591
19609
 
19592
- 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.
19610
+ Output formats: mp4 (H.264, best for social media) or png (single frame). Returns a public URL when complete.
19593
19611
 
19594
19612
  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).
19595
19613
 
@@ -19822,7 +19840,7 @@ function registerListCompositionsTool(server) {
19822
19840
  "clipform_list_compositions",
19823
19841
  {
19824
19842
  title: "List Compositions",
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 narrated slideshows from images, use clipform_generate_video instead.`,
19843
+ 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.`,
19826
19844
  inputSchema: {},
19827
19845
  outputSchema: {
19828
19846
  compositions: external_exports.array(
@@ -20681,6 +20699,7 @@ var MCP_SERVER_IDENTITY = Object.freeze({
20681
20699
  });
20682
20700
  function buildInstructions(caps) {
20683
20701
  return [
20702
+ buildOnboardingOffer(),
20684
20703
  "Clipform builds interactive video-style forms. When the brief is clear, build the form directly; when it's vague, ask one or two short questions first.",
20685
20704
  caps.media && "Prefer rich media: video over images over plain text.",
20686
20705
  caps.media ? "Before building, derive a register from the topic and audience (e.g. hype, playful, warm, considered, elegant, sombre); if the user states a mood explicitly, that wins. State the register once, then apply it to every rendering choice - narration tone, motion preset, music, pacing. Never mix registers in one form." : "Before building, derive a register from the topic and audience (e.g. hype, playful, warm, considered, elegant, sombre); if the user states a mood explicitly, that wins. State the register once, then apply it to every question, option, and end-screen line. Never mix registers in one form.",
@@ -20773,4 +20792,4 @@ export {
20773
20792
  buildInstructions,
20774
20793
  createServer
20775
20794
  };
20776
- //# sourceMappingURL=chunk-DFR7RHPM.js.map
20795
+ //# sourceMappingURL=chunk-IP7263ND.js.map