@clipform/mcp-server 1.44.1 → 1.44.2

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.
@@ -4097,6 +4097,10 @@ function resourceLink(name, uri, title) {
4097
4097
  }
4098
4098
  };
4099
4099
  }
4100
+ var BUILD_ONCE_STEP = "**Build the whole form in ONE clipform_create_form call** - pass nodes, settings, and tags together; do NOT create an empty form and add nodes one by one:";
4101
+ var TAGS_LINE = "- tags: one format (quiz/survey/interview/feedback/lead-gen), one genre (trivia/personality/nps/poll/testimonial), and 2-3 topic words";
4102
+ var ATTACH_MEDIA_STEP = "**Attach media** with clipform_upload_node_media (batch all uploads in one call). Include captions, set show_captions: true and fit_media: true (generated renders must not be cropped).";
4103
+ var REPUBLISH_STEP = "**Republish** with clipform_update_form (is_live: true) - forms are live from creation, but media and edits added since are only visible in the live form after republishing. Never skip this when you attached anything.";
4100
4104
  function quizWorkflow(args, sessionContext, authMode = "authenticated") {
4101
4105
  const topic = args.topic ? ` about "${args.topic}"` : "";
4102
4106
  const count = args.question_count ?? 8;
@@ -4107,7 +4111,7 @@ function quizWorkflow(args, sessionContext, authMode = "authenticated") {
4107
4111
 
4108
4112
  1. **Research** the topic - find surprising facts, common misconceptions, myth-busters
4109
4113
  2. **Write questions** - follow the difficulty curve (easy start, hard middle, satisfying end). Target ${count} questions.
4110
- 3. **Build the whole form in ONE clipform_create_form call** - pass nodes, settings, and tags together; do NOT create an empty form and add nodes one by one:
4114
+ 3. ${BUILD_ONCE_STEP}
4111
4115
  - Settings: show_step_counter: true, disable_back_navigation: true
4112
4116
  - One choice node per question: config { choice: { show_answer_feedback: true }, randomise_options: true }, options with score: 1 on the correct answer and score: 0 on 3-4 plausible wrong ones. The viewer shuffles options at render time, so list them in any order. Scored options enable correct-answer marking automatically.
4113
4117
  - Final end_screen node - EVERY quiz must have:
@@ -4116,13 +4120,13 @@ function quizWorkflow(args, sessionContext, authMode = "authenticated") {
4116
4120
  - cta_type: "restart", cta_text: a short challenge like "Beat your score?" or "Try again?"
4117
4121
  - title and message that fit the quiz's voice - short, punchy, and specific to the topic (not generic "Good job!"). Example: title: "Well played!", message: "Share your score and challenge a friend."
4118
4122
  - NOTE: Personalised messages per score tier (score_ranges) are coming soon. For now, write one great end screen message that works for all scores.
4119
- - tags: one format (quiz/survey/interview/feedback/lead-gen), one genre (trivia/personality/nps/poll/testimonial), and 2-3 topic words
4123
+ ${TAGS_LINE}
4120
4124
  4. **Generate narration** with clipform_generate_tts - batch ALL questions in a single call (pass an array of items). Tease the question - do NOT reveal the answer or read options aloud. Keep each narration 5-15 seconds.
4121
- 5. **Build video** for each question:
4122
- - clipform_search_media (kind: "image") - 3 images per question, batch all queries in one call
4123
- - clipform_generate_video with wait: false per question - fires all renders in parallel - then collect URLs with clipform_check_render
4124
- 6. **Attach media** with clipform_upload_node_media (batch all uploads in one call). Include captions, set show_captions: true and fit_media: true (generated renders must not be cropped).
4125
- 7. **Publish** with clipform_update_form
4125
+ 5. **Build video** for each question - pick per question; mixing treatments across one quiz is fine:
4126
+ - Default - narrated slideshow: clipform_search_media (kind: "image", 3 images per question, batch all queries in one call), then clipform_generate_video with wait: false per question - fires all renders in parallel - then collect URLs with clipform_check_render.
4127
+ - Designed visual - when a composition fits the question or the user asks for one (e.g. a grid reveal): clipform_list_compositions to see what's available, then clipform_render_composition with wait: false per clip. Compositions take narration via sound.narration.
4128
+ 6. ${ATTACH_MEDIA_STEP}
4129
+ 7. ${REPUBLISH_STEP}
4126
4130
  8. **Log** with clipform_log_generation (sources, images, attributions)
4127
4131
 
4128
4132
  > **Text-only override:** If the user explicitly asked for text-only (no video), skip steps 5-6 (video production and media attachment). Still generate narration in step 4.`;
@@ -4143,7 +4147,7 @@ There are NO correct answers. Each option should feel equally valid - the quiz i
4143
4147
 
4144
4148
  1. **Define 3-5 outcome categories** conceptually - these guide your question design even though automated scoring is not yet available.
4145
4149
  2. **Write questions** - each question should feel revealing but fun. Target ${count} questions.
4146
- 3. **Build the whole form in ONE clipform_create_form call** - pass nodes, settings, and tags together; do NOT create an empty form and add nodes one by one:
4150
+ 3. ${BUILD_ONCE_STEP}
4147
4151
  - Settings: show_step_counter: true, disable_back_navigation: true
4148
4152
  - One choice node per question: config { choice: { show_answer_feedback: false } } (no right/wrong!)
4149
4153
  - Do NOT set randomise_options (option order matters for personality quizzes - lead with the most appealing)
@@ -4154,10 +4158,10 @@ There are NO correct answers. Each option should feel equally valid - the quiz i
4154
4158
  - cta_type: "restart", cta_text: "Find out again?" or "Take it again?"
4155
4159
  - Write a title and message that feel personal and shareable. Example: title: "Thanks for playing!", message: "Share this quiz with friends and compare your answers."
4156
4160
  - NOTE: Automated result screens per category (scoring_results) are coming soon. For now, write one engaging end screen.
4157
- - tags: one format (quiz/survey/interview/feedback/lead-gen), one genre (trivia/personality/nps/poll/testimonial), and 2-3 topic words
4161
+ ${TAGS_LINE}
4158
4162
  4. **Generate narration** with clipform_generate_tts - batch ALL questions in a single call. Conversational, reflective tone. "What does this say about you?" not "Do you know the answer?"
4159
4163
  5. **Build video** + **attach media** (same as knowledge quiz workflow)
4160
- 6. **Publish** with clipform_update_form
4164
+ 6. ${REPUBLISH_STEP}
4161
4165
  7. **Log** with clipform_log_generation`;
4162
4166
  }
4163
4167
  function comprehensionQuizWorkflow(args, sessionContext, authMode = "authenticated") {
@@ -4180,7 +4184,7 @@ function comprehensionQuizWorkflow(args, sessionContext, authMode = "authenticat
4180
4184
  - Include 1-2 inference questions: "Based on the video, why does the presenter believe...?"
4181
4185
  - Avoid questions answerable without watching (e.g., common knowledge about the topic)
4182
4186
  4. **Adapt to the audience**${audienceLabel} - simplify language for younger audiences, focus on concrete/visual details rather than abstract arguments
4183
- 5. **Build the whole form in ONE clipform_create_form call** - pass nodes, settings, and tags together; do NOT create an empty form and add nodes one by one:
4187
+ 5. ${BUILD_ONCE_STEP}
4184
4188
  - Settings: show_step_counter: true, disable_back_navigation: true
4185
4189
  - One choice node per question: config { choice: { show_answer_feedback: true }, randomise_options: true }, options with score: 1 on the correct answer and score: 0 on 3-4 plausible wrong ones - make distractors things someone might guess without watching. The viewer shuffles options at render time, so list them in any order. Scored options enable correct-answer marking automatically.
4186
4190
  - Final end_screen node:
@@ -4194,8 +4198,8 @@ function comprehensionQuizWorkflow(args, sessionContext, authMode = "authenticat
4194
4198
  7. **Build video** for each question:
4195
4199
  - clipform_search_media (kind: "image") - 3 images per question, batch all queries in one call
4196
4200
  - clipform_generate_video with wait: false per question - fires all renders in parallel - then collect URLs with clipform_check_render
4197
- 8. **Attach media** with clipform_upload_node_media (batch all uploads in one call). Include captions, set show_captions: true and fit_media: true (generated renders must not be cropped).
4198
- 9. **Publish** with clipform_update_form
4201
+ 8. ${ATTACH_MEDIA_STEP}
4202
+ 9. ${REPUBLISH_STEP}
4199
4203
  10. **Log** with clipform_log_generation - include the YouTube URL, video title, and channel as sources
4200
4204
 
4201
4205
  ## Question Types for Comprehension
@@ -4223,7 +4227,7 @@ function compositionQuizWorkflow(args, sessionContext, authMode = "authenticated
4223
4227
  1. **Discover what's renderable** - call clipform_list_compositions. Availability varies by session; choose mechanics ONLY from what it returns. Match each question to a mechanic via the composition guide's matrix. Mix 2-3 mechanics across the quiz; for questions with no fitting composition, use the base quiz's Ken Burns pipeline instead.
4224
4228
  2. **Write questions** - difficulty curve as in the base guide. Difficulty = subject obscurity (Japan's flag vs Kiribati's), never clue degradation. ${count} questions \u2248 ${count * 2 + 1} nodes (each question is a clue + reveal pair) - check the plan's node limit.
4225
4229
  3. **Render all clips** with clipform_render_composition, wait: false on EVERY call - fire the full batch (clue clip + reveal clip per question), then collect URLs with clipform_check_render. Chain-state compositions: clue clip animate: true, reveal clip animate: false + answer props.
4226
- 4. **Build the whole form in ONE clipform_create_form call** - pass nodes, settings, and tags together; do NOT create an empty form and add nodes one by one:
4230
+ 4. ${BUILD_ONCE_STEP}
4227
4231
  - Settings: show_step_counter: true, disable_back_navigation: true
4228
4232
  - Per question, a PAIR of nodes:
4229
4233
  - Clue node (type: "choice"): question as prompt, config { choice: { show_answer_feedback: true }, randomise_options: true }, options with score: 1 on the correct answer and score: 0 on 2-3 wrong ones. Scored options enable correct-answer marking automatically.
@@ -4232,7 +4236,7 @@ function compositionQuizWorkflow(args, sessionContext, authMode = "authenticated
4232
4236
  - tags: format "quiz", genre "trivia", and 2-3 topic words
4233
4237
  5. **Generate narration** with clipform_generate_tts - batch ALL items in one call. The visual does the teasing: set stakes, never describe what's on screen or read the clue aloud. Reveal narration can celebrate.
4234
4238
  6. **Attach media** with clipform_upload_node_media (batch all uploads in one call) - clue clip on each choice node, reveal clip on each button node. Include captions, set show_captions: true and fit_media: true (generated renders must not be cropped).
4235
- 7. **Publish** with clipform_update_form
4239
+ 7. ${REPUBLISH_STEP}
4236
4240
  8. **Log** with clipform_log_generation - record the composition IDs used per question alongside sources and attributions`;
4237
4241
  }
4238
4242
  function interviewWorkflow(args, sessionContext, authMode = "authenticated") {
@@ -4245,16 +4249,16 @@ function interviewWorkflow(args, sessionContext, authMode = "authenticated") {
4245
4249
  ## Workflow
4246
4250
 
4247
4251
  1. **Identify the ask** - what do you need from respondents? ${purpose}.
4248
- 2. **Build the whole form in ONE clipform_create_form call** - pass nodes, settings, and tags together; do NOT create an empty form and add nodes one by one:
4252
+ 2. ${BUILD_ONCE_STEP}
4249
4253
  - Settings: show_step_counter: true, disable_back_navigation: false
4250
4254
  - Warm-up question first (type: "open") - something easy: "Tell us your name and role"
4251
4255
  - 2-3 core questions (type: "open") - one topic per question.${format === "all" ? " Enable text + audio + video responses." : ` Enable ${format} responses.`}
4252
4256
  - Contact collection (type: "contact") - first name + email minimum${consent ? `
4253
4257
  - Consent node - "I agree that my response may be used in [context]"` : ""}
4254
4258
  - End screen that sets expectations: "Thanks! We'll be in touch."
4255
- - tags: one format (quiz/survey/interview/feedback/lead-gen), one genre (trivia/personality/nps/poll/testimonial), and 2-3 topic words
4259
+ ${TAGS_LINE}
4256
4260
  3. **Optional - Rich Media:** Add TTS narration (clipform_generate_tts, batch all questions in one call) with a warm, inviting tone - "We'd love to hear your story..." Video backgrounds (clipform_search_media \u2192 clipform_generate_video) on the intro question can set a professional tone.
4257
- 4. **Publish** with clipform_update_form
4261
+ 4. ${REPUBLISH_STEP}
4258
4262
  5. **Log** with clipform_log_generation`;
4259
4263
  }
4260
4264
  function surveyWorkflow(args, sessionContext, authMode = "authenticated") {
@@ -4266,16 +4270,16 @@ function surveyWorkflow(args, sessionContext, authMode = "authenticated") {
4266
4270
  ## Workflow
4267
4271
 
4268
4272
  1. **Define the key metric** - what's the one number you care about? (NPS, satisfaction, likelihood to recommend)
4269
- 2. **Build the whole form in ONE clipform_create_form call** - pass nodes, settings, and tags together; do NOT create an empty form and add nodes one by one:
4273
+ 2. ${BUILD_ONCE_STEP}
4270
4274
  - Settings: show_step_counter: true, disable_back_navigation: false
4271
4275
  - Key metric question FIRST (type: "choice" or "rating") - while attention is highest
4272
4276
  - One "why?" follow-up (type: "open") - "What's the main reason for your score?"
4273
4277
  - 2-3 specific questions (type: "choice") - only ask what you'll act on${!anonymous ? `
4274
4278
  - Contact collection (type: "contact") - name + email for follow-up` : ""}
4275
4279
  - End screen: "Thanks for your feedback!"
4276
- - tags: one format (quiz/survey/interview/feedback/lead-gen), one genre (trivia/personality/nps/poll/testimonial), and 2-3 topic words
4280
+ ${TAGS_LINE}
4277
4281
  3. **Optional - Rich Media:** For a more engaging experience, add TTS narration (clipform_generate_tts) for the intro or key questions, video backgrounds (clipform_search_media \u2192 clipform_generate_video), or background music (clipform_search_music).
4278
- 4. **Publish** with clipform_update_form
4282
+ 4. ${REPUBLISH_STEP}
4279
4283
  5. **Log** with clipform_log_generation
4280
4284
 
4281
4285
  ## Key rule: 5 questions max. Every extra question costs completions.`;
@@ -4293,7 +4297,7 @@ function testimonialWorkflow(args, sessionContext, authMode = "authenticated") {
4293
4297
  ## Workflow
4294
4298
 
4295
4299
  1. **Define the story arc** - what transformation or experience do you want to capture?
4296
- 2. **Build the whole form in ONE clipform_create_form call** - pass nodes, settings, and tags together; do NOT create an empty form and add nodes one by one:
4300
+ 2. ${BUILD_ONCE_STEP}
4297
4301
  - Settings: show_step_counter: true, disable_back_navigation: false
4298
4302
  - Warm-up question (type: "open") - "Tell us your name and [role/relationship/context]". Enable video + audio + text responses.
4299
4303
  - 2-3 storytelling prompts (type: "open") - follow the before \u2192 during \u2192 after arc. Enable video responses. Example prompts:
@@ -4305,7 +4309,7 @@ function testimonialWorkflow(args, sessionContext, authMode = "authenticated") {
4305
4309
  - tags: format "testimonial", genre "story", and 2-3 topic words
4306
4310
  3. **Generate narration** with clipform_generate_tts - batch all prompts in a single call. Warm, appreciative tone - "We'd love to hear your story..." Keep each narration 5-8 seconds.
4307
4311
  4. **Optional: build video** for the intro/warm-up question to set the tone.
4308
- 5. **Publish** with clipform_update_form
4312
+ 5. ${REPUBLISH_STEP}
4309
4313
  6. **Log** with clipform_log_generation
4310
4314
 
4311
4315
  > **Text-only override:** If the user explicitly asked for text-only (no video), skip steps 3-4 (narration and video production).`;
@@ -4318,7 +4322,7 @@ function applicationWorkflow(args, sessionContext, authMode = "authenticated") {
4318
4322
  ## Workflow
4319
4323
 
4320
4324
  1. **Define what you're screening for** - what qualifications matter, and what questions reveal fit?
4321
- 2. **Build the whole form in ONE clipform_create_form call** - pass nodes, settings, and tags together; do NOT create an empty form and add nodes one by one:
4325
+ 2. ${BUILD_ONCE_STEP}
4322
4326
  - Settings: show_step_counter: true, disable_back_navigation: false
4323
4327
  - Contact collection first (type: "contact") - name, email, phone - while motivation is high
4324
4328
  - 2-3 structured screening questions (type: "choice") - experience level, availability, relevant qualifications. These help you filter quickly.
@@ -4327,7 +4331,7 @@ function applicationWorkflow(args, sessionContext, authMode = "authenticated") {
4327
4331
  - End screen: "Your application has been submitted. We'll review it and get back to you." icon: "tick", no score, no restart
4328
4332
  - tags: format "application", genre "screening", and 2-3 topic words
4329
4333
  3. **Optional - Rich Media:** Add TTS narration (clipform_generate_tts) - professional and welcoming: "Thanks for your interest - let's get to know you." Video backgrounds (clipform_search_media \u2192 clipform_generate_video) on the intro can make the application feel more personal.
4330
- 4. **Publish** with clipform_update_form
4334
+ 4. ${REPUBLISH_STEP}
4331
4335
  5. **Log** with clipform_log_generation`;
4332
4336
  }
4333
4337
  function bookingWorkflow(args, sessionContext, authMode = "authenticated") {
@@ -4339,14 +4343,14 @@ function bookingWorkflow(args, sessionContext, authMode = "authenticated") {
4339
4343
  ## Workflow
4340
4344
 
4341
4345
  1. **Define the essentials** - what info do you actually need from attendees? Keep the list short.
4342
- 2. **Build the whole form in ONE clipform_create_form call** - pass nodes, settings, and tags together; do NOT create an empty form and add nodes one by one:
4346
+ 2. ${BUILD_ONCE_STEP}
4343
4347
  - Settings: show_step_counter: false (it's so short, a counter adds unnecessary UI), disable_back_navigation: false
4344
4348
  - Contact collection (type: "contact") - name + email minimum. Add phone only if needed.
4345
4349
  - 1-3 event-specific questions (type: "choice") - session preferences, dietary requirements, experience level. Only ask what you'll use.
4346
4350
  - End screen: "You're registered! Here's what to expect." Include event details (date, time, location/link) in the message. icon: "tick", no score, no restart, cta_type: "external_link" with a URL to calendar invite or event page (if available)
4347
4351
  - tags: format "registration", genre "${eventType}", and 2-3 topic words
4348
4352
  3. **Optional: add welcome video** - a short intro from the host. Generate narration with clipform_generate_tts, then build a video with clipform_search_media + clipform_generate_video.
4349
- 4. **Publish** with clipform_update_form
4353
+ 4. ${REPUBLISH_STEP}
4350
4354
  5. **Log** with clipform_log_generation
4351
4355
 
4352
4356
  ## Key rule: 3-5 fields max. Every extra field costs registrations.`;
@@ -4705,4 +4709,4 @@ export {
4705
4709
  getWorkflowText,
4706
4710
  registerPrompts
4707
4711
  };
4708
- //# sourceMappingURL=chunk-T6B4O3O7.js.map
4712
+ //# sourceMappingURL=chunk-VTRO7ZC3.js.map