@clipform/mcp-server 1.15.0 → 1.16.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.
@@ -20918,6 +20918,7 @@ var NODE_TYPES = {
20918
20918
  supports_media: false,
20919
20919
  is_system: true,
20920
20920
  is_active: true,
20921
+ show_in_results: false,
20921
20922
  default_config: null,
20922
20923
  config_schema: null,
20923
20924
  response_schema: null,
@@ -20942,6 +20943,7 @@ var NODE_TYPES = {
20942
20943
  supports_media: true,
20943
20944
  is_system: false,
20944
20945
  is_active: true,
20946
+ show_in_results: true,
20945
20947
  default_config: {
20946
20948
  selection_mode: "single",
20947
20949
  choice: { enable_branching: true, record_scores: false },
@@ -21041,6 +21043,7 @@ var NODE_TYPES = {
21041
21043
  supports_media: true,
21042
21044
  is_system: false,
21043
21045
  is_active: true,
21046
+ show_in_results: true,
21044
21047
  default_config: {
21045
21048
  formats: [
21046
21049
  { order: 0, format: "text" },
@@ -21083,7 +21086,17 @@ var NODE_TYPES = {
21083
21086
  type: "object",
21084
21087
  properties: {
21085
21088
  type: { enum: ["audio", "video"], type: "string" },
21086
- storage_path: { type: "string" }
21089
+ storage_path: { type: "string" },
21090
+ facing_mode: { enum: ["user", "environment"], type: "string" },
21091
+ preview_crop: {
21092
+ type: "object",
21093
+ properties: {
21094
+ stream_width: { type: "number" },
21095
+ stream_height: { type: "number" },
21096
+ preview_width: { type: "number" },
21097
+ preview_height: { type: "number" }
21098
+ }
21099
+ }
21087
21100
  },
21088
21101
  description: "Media response (when response_type is audio or video)"
21089
21102
  },
@@ -21113,7 +21126,17 @@ var NODE_TYPES = {
21113
21126
  type: "object",
21114
21127
  properties: {
21115
21128
  type: { enum: ["audio", "video"], type: "string" },
21116
- storage_path: { type: "string" }
21129
+ storage_path: { type: "string" },
21130
+ facing_mode: { enum: ["user", "environment"], type: "string" },
21131
+ preview_crop: {
21132
+ type: "object",
21133
+ properties: {
21134
+ stream_width: { type: "number" },
21135
+ stream_height: { type: "number" },
21136
+ preview_width: { type: "number" },
21137
+ preview_height: { type: "number" }
21138
+ }
21139
+ }
21117
21140
  }
21118
21141
  },
21119
21142
  transcription: {
@@ -21142,6 +21165,7 @@ var NODE_TYPES = {
21142
21165
  supports_media: true,
21143
21166
  is_system: false,
21144
21167
  is_active: false,
21168
+ show_in_results: true,
21145
21169
  default_config: null,
21146
21170
  config_schema: {
21147
21171
  type: "object",
@@ -21176,6 +21200,7 @@ var NODE_TYPES = {
21176
21200
  supports_media: false,
21177
21201
  is_system: false,
21178
21202
  is_active: false,
21203
+ show_in_results: true,
21179
21204
  default_config: null,
21180
21205
  config_schema: {
21181
21206
  type: "object",
@@ -21250,6 +21275,7 @@ var NODE_TYPES = {
21250
21275
  supports_media: false,
21251
21276
  is_system: false,
21252
21277
  is_active: true,
21278
+ show_in_results: false,
21253
21279
  default_config: {
21254
21280
  contact: {
21255
21281
  fields: [
@@ -21259,7 +21285,7 @@ var NODE_TYPES = {
21259
21285
  prompt: ""
21260
21286
  },
21261
21287
  consent_items: [
21262
- { id: "default-consent", label: "I agree to the privacy policy and terms of service", order: 0, required: true }
21288
+ { id: "default-consent", name: "Privacy policy", label: "I agree to the privacy policy and terms of service", order: 0, type: "consent" }
21263
21289
  ]
21264
21290
  },
21265
21291
  config_schema: {
@@ -21288,9 +21314,10 @@ var NODE_TYPES = {
21288
21314
  type: "object",
21289
21315
  properties: {
21290
21316
  id: { type: "string" },
21317
+ name: { type: "string" },
21291
21318
  label: { type: "string" },
21292
21319
  order: { type: "number" },
21293
- required: { type: "boolean" }
21320
+ type: { type: "string", enum: ["consent", "opt_in"] }
21294
21321
  }
21295
21322
  }
21296
21323
  }
@@ -21318,11 +21345,13 @@ var NODE_TYPES = {
21318
21345
  type: "array",
21319
21346
  items: {
21320
21347
  type: "object",
21321
- required: ["id", "label", "accepted"],
21348
+ required: ["id", "name", "label", "accepted", "type"],
21322
21349
  properties: {
21323
21350
  id: { type: "string" },
21351
+ name: { type: "string" },
21324
21352
  label: { type: "string" },
21325
- accepted: { type: "boolean" }
21353
+ accepted: { type: "boolean" },
21354
+ type: { type: "string", enum: ["consent", "opt_in"] }
21326
21355
  }
21327
21356
  },
21328
21357
  description: "Consent checkbox entries"
@@ -21364,6 +21393,7 @@ var NODE_TYPES = {
21364
21393
  supports_media: false,
21365
21394
  is_system: false,
21366
21395
  is_active: false,
21396
+ show_in_results: true,
21367
21397
  default_config: null,
21368
21398
  config_schema: {
21369
21399
  type: "object",
@@ -21427,6 +21457,7 @@ var NODE_TYPES = {
21427
21457
  supports_media: false,
21428
21458
  is_system: false,
21429
21459
  is_active: false,
21460
+ show_in_results: true,
21430
21461
  default_config: { amount: null, currency: "usd", provider: "stripe" },
21431
21462
  config_schema: {
21432
21463
  type: "object",
@@ -21511,6 +21542,7 @@ var NODE_TYPES = {
21511
21542
  supports_media: true,
21512
21543
  is_system: false,
21513
21544
  is_active: false,
21545
+ show_in_results: true,
21514
21546
  default_config: {
21515
21547
  choice: { enable_branching: true },
21516
21548
  options: [
@@ -21573,6 +21605,7 @@ var NODE_TYPES = {
21573
21605
  supports_media: true,
21574
21606
  is_system: false,
21575
21607
  is_active: true,
21608
+ show_in_results: false,
21576
21609
  default_config: { options: [{ content: "Continue" }] },
21577
21610
  config_schema: {
21578
21611
  type: "object",
@@ -21611,6 +21644,7 @@ var NODE_TYPES = {
21611
21644
  supports_media: false,
21612
21645
  is_system: false,
21613
21646
  is_active: true,
21647
+ show_in_results: false,
21614
21648
  default_config: { url: "", auto_redirect: true },
21615
21649
  config_schema: {
21616
21650
  type: "object",
@@ -21641,6 +21675,7 @@ var NODE_TYPES = {
21641
21675
  supports_media: false,
21642
21676
  is_system: false,
21643
21677
  is_active: false,
21678
+ show_in_results: false,
21644
21679
  default_config: { links: [{ id: "default", url: "", title: "", description: "", order: 0 }], auto_redirect: false },
21645
21680
  config_schema: {
21646
21681
  type: "object",
@@ -21686,6 +21721,7 @@ var NODE_TYPES = {
21686
21721
  supports_media: false,
21687
21722
  is_system: false,
21688
21723
  is_active: false,
21724
+ show_in_results: true,
21689
21725
  default_config: null,
21690
21726
  config_schema: {
21691
21727
  type: "object",
@@ -21744,6 +21780,7 @@ var NODE_TYPES = {
21744
21780
  supports_media: false,
21745
21781
  is_system: false,
21746
21782
  is_active: false,
21783
+ show_in_results: false,
21747
21784
  default_config: { provider: "shopify", cta_mode: "checkout", source_mode: "manual" },
21748
21785
  config_schema: {
21749
21786
  type: "object",
@@ -21812,6 +21849,7 @@ var NODE_TYPES = {
21812
21849
  supports_media: false,
21813
21850
  is_system: false,
21814
21851
  is_active: true,
21852
+ show_in_results: false,
21815
21853
  default_config: null,
21816
21854
  config_schema: {
21817
21855
  type: "object",
@@ -21885,6 +21923,7 @@ var NODE_TYPE_METADATA = Object.fromEntries(
21885
21923
  var TERMINAL_TYPES = Object.entries(NODE_TYPES).filter(([, v]) => v.is_terminal).map(([k]) => k);
21886
21924
  var NON_COUNTABLE_TYPES = Object.entries(NODE_TYPES).filter(([, v]) => v.is_system || v.is_terminal).map(([k]) => k);
21887
21925
  var NON_COUNTABLE_FILTER = `(${NON_COUNTABLE_TYPES.map((t) => `"${t}"`).join(",")})`;
21926
+ var RESULTS_EXCLUDED_TYPES = Object.entries(NODE_TYPES).filter(([, v]) => !v.show_in_results).map(([k]) => k);
21888
21927
 
21889
21928
  // ../config/integration-catalog.js
21890
21929
  var INTEGRATION_CATALOG = {
@@ -22344,6 +22383,8 @@ ${NODE_TYPES_DESCRIPTION}
22344
22383
 
22345
22384
  All type definitions and config schemas are derived from @vid-master/config (answer-types). Refer to the config descriptions above for the correct keys and shapes.
22346
22385
 
22386
+ Fields marked AI-PROTECTED must only be set when the user explicitly requests them. Do not invent values for font, branding, or embed settings.
22387
+
22347
22388
  Example: A form that asks a question, collects contact info, then finishes:
22348
22389
  {
22349
22390
  title: "Quick Survey",
@@ -22360,8 +22401,8 @@ Example: A form that asks a question, collects contact info, then finishes:
22360
22401
  disable_back_navigation: external_exports.boolean().optional().describe("Prevent going back. Set true for quizzes."),
22361
22402
  primary_color: external_exports.string().regex(/^#[0-9A-Fa-f]{6}$/).optional().describe("Primary/brand color as 6-digit hex (e.g. '#FF5500'). Used for buttons and accents."),
22362
22403
  background_color: external_exports.string().regex(/^#[0-9A-Fa-f]{6}$/).optional().describe("Background color as 6-digit hex (e.g. '#1A1A2E')."),
22363
- font_family: external_exports.string().optional().describe("Font family name (e.g. 'Inter', 'Roboto', 'Playfair Display')."),
22364
- embed_autoplay: external_exports.boolean().optional().describe("Auto-play video when embedded (default: false). When off, embeds show a thumbnail + play button."),
22404
+ font_family: external_exports.string().optional().describe("AI-PROTECTED: Only set when the user explicitly requests a specific font."),
22405
+ embed_autoplay: external_exports.boolean().optional().describe("AI-PROTECTED: Only set when the user explicitly requests autoplay. Default: false."),
22365
22406
  tags: external_exports.array(external_exports.string()).optional().describe("Tags for indexing (e.g. ['quiz', 'trivia', 'arsenal']). Include format, genre, and topics.")
22366
22407
  },
22367
22408
  annotations: {
@@ -22431,7 +22472,7 @@ Example: A form that asks a question, collects contact info, then finishes:
22431
22472
  }
22432
22473
  await callApi(`/forms/${formId}`, {
22433
22474
  method: "PATCH",
22434
- body: { is_published: true }
22475
+ body: { is_live: true }
22435
22476
  });
22436
22477
  if (tags && tags.length > 0) {
22437
22478
  await callApi(`/forms/${formId}/tags`, {
@@ -22522,7 +22563,7 @@ function registerListFormsTool(server) {
22522
22563
  const lines = [`Found ${data.forms.length} form(s):
22523
22564
  `];
22524
22565
  for (const f of data.forms) {
22525
- const status = f.is_published ? "published" : "draft";
22566
+ const status = f.is_live ? "live" : "draft";
22526
22567
  const tagStr = f.tags.length > 0 ? ` [${f.tags.map((t) => t.name).join(", ")}]` : "";
22527
22568
  lines.push(`- **${f.title || "(untitled)"}** [${status}]${tagStr}`);
22528
22569
  lines.push(` ID: ${f.id}`);
@@ -22546,7 +22587,7 @@ function formatFormState(data) {
22546
22587
  const lines = [
22547
22588
  `Form: ${data.title}`,
22548
22589
  `Form ID: ${data.form_id}`,
22549
- `Published: ${data.is_published}`,
22590
+ `Live: ${data.is_live}`,
22550
22591
  ``,
22551
22592
  `Nodes (in order):`
22552
22593
  ];
@@ -22605,22 +22646,22 @@ function registerUpdateFormTool(server) {
22605
22646
  "clipform_update_form",
22606
22647
  {
22607
22648
  title: "Update Clipform",
22608
- description: `Update a form's title, publish status, settings, or tags. Use clipform_get_form first to see current values.`,
22649
+ description: `Update a form's title, publish status, settings, or tags. Use clipform_get_form first to see current values. Fields marked AI-PROTECTED must only be set when the user explicitly requests them.`,
22609
22650
  inputSchema: {
22610
22651
  form_id: external_exports.string().uuid().describe("The form UUID (returned by clipform_create_form, not the short share_id from the URL)"),
22611
22652
  title: external_exports.string().optional().describe("New form title"),
22612
- is_published: external_exports.boolean().optional().describe("Set to true to publish, false to unpublish"),
22653
+ is_live: external_exports.boolean().optional().describe("AI-PROTECTED: Only change live state when the user explicitly asks. Do not auto-publish."),
22613
22654
  show_step_counter: external_exports.boolean().optional().describe("Show step counter (e.g. '1/5'). Recommended for quizzes."),
22614
22655
  disable_back_navigation: external_exports.boolean().optional().describe("Prevent respondents from going back. Recommended for quizzes."),
22615
22656
  total_steps: external_exports.number().nullable().optional().describe("Override the total step count shown in the step counter. Set null to auto-calculate."),
22616
22657
  primary_color: external_exports.string().regex(/^#[0-9A-Fa-f]{6}$/).optional().describe("Primary/brand color as 6-digit hex (e.g. '#FF5500'). Used for buttons and accents."),
22617
22658
  background_color: external_exports.string().regex(/^#[0-9A-Fa-f]{6}$/).optional().describe("Background color as 6-digit hex (e.g. '#1A1A2E')."),
22618
- font_family: external_exports.string().optional().describe("Font family name (e.g. 'Inter', 'Roboto', 'Playfair Display')."),
22619
- embed_autoplay: external_exports.boolean().optional().describe("Auto-play video when embedded (default: false). When off, embeds show a thumbnail + play button."),
22659
+ font_family: external_exports.string().optional().describe("AI-PROTECTED: Only set when the user explicitly requests a specific font."),
22660
+ embed_autoplay: external_exports.boolean().optional().describe("AI-PROTECTED: Only set when the user explicitly requests autoplay. Default: false."),
22620
22661
  description: external_exports.string().nullable().optional().describe("SEO description (meta description, og:description). Set null to clear."),
22621
- author: external_exports.string().nullable().optional().describe("Author/brand name shown to respondents. Set null to clear."),
22622
- brand_name: external_exports.string().nullable().optional().describe("Brand name shown alongside the logo in the viewer. Set null to clear."),
22623
- logo_url: external_exports.string().nullable().optional().describe("URL to a logo image shown in the viewer header. Set null to clear."),
22662
+ author: external_exports.string().nullable().optional().describe("AI-PROTECTED: Only set when the user explicitly provides an author name. Set null to clear."),
22663
+ brand_name: external_exports.string().nullable().optional().describe("AI-PROTECTED: Only set when the user explicitly provides a brand name. Set null to clear."),
22664
+ logo_url: external_exports.string().nullable().optional().describe("AI-PROTECTED: Only set when the user explicitly provides a logo URL. Set null to clear."),
22624
22665
  tags: external_exports.array(external_exports.string()).optional().describe("Replace all tags on this form. Pass the full desired set (e.g. ['quiz', 'trivia', 'slug:elephants']). Omit to leave tags unchanged.")
22625
22666
  },
22626
22667
  annotations: {
@@ -22630,10 +22671,10 @@ function registerUpdateFormTool(server) {
22630
22671
  openWorldHint: true
22631
22672
  }
22632
22673
  },
22633
- async ({ form_id, title, is_published, show_step_counter, disable_back_navigation, total_steps, primary_color, background_color, font_family, embed_autoplay, description, author, brand_name, logo_url, tags }) => {
22674
+ async ({ form_id, title, is_live, show_step_counter, disable_back_navigation, total_steps, primary_color, background_color, font_family, embed_autoplay, description, author, brand_name, logo_url, tags }) => {
22634
22675
  const body = {};
22635
22676
  if (title !== void 0) body.title = title;
22636
- if (is_published !== void 0) body.is_published = is_published;
22677
+ if (is_live !== void 0) body.is_live = is_live;
22637
22678
  if (show_step_counter !== void 0) body.show_step_counter = show_step_counter;
22638
22679
  if (disable_back_navigation !== void 0) body.disable_back_navigation = disable_back_navigation;
22639
22680
  if (total_steps !== void 0) body.total_steps = total_steps;
@@ -22665,8 +22706,8 @@ function registerUpdateFormTool(server) {
22665
22706
  }
22666
22707
  const updates = [];
22667
22708
  if (title !== void 0) updates.push(`Title \u2192 "${title}"`);
22668
- if (is_published !== void 0)
22669
- updates.push(`Published \u2192 ${is_published}`);
22709
+ if (is_live !== void 0)
22710
+ updates.push(`Live \u2192 ${is_live}`);
22670
22711
  if (show_step_counter !== void 0)
22671
22712
  updates.push(`Step counter \u2192 ${show_step_counter}`);
22672
22713
  if (disable_back_navigation !== void 0)
@@ -25040,4 +25081,4 @@ export {
25040
25081
  setApiKey,
25041
25082
  createServer
25042
25083
  };
25043
- //# sourceMappingURL=chunk-2SPXROLZ.js.map
25084
+ //# sourceMappingURL=chunk-D64XBDOX.js.map