@clipform/mcp-server 4.7.1 → 4.8.1

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
  recoveryHint,
7
7
  structuredResult,
8
8
  textResult
9
- } from "./chunk-XC3YMWCN.js";
9
+ } from "./chunk-6DSCZEF7.js";
10
10
  import "./chunk-ENVV65JX.js";
11
11
  import "./chunk-PBQ5BQWD.js";
12
12
  import "./chunk-PZ5AY32C.js";
@@ -146,7 +146,7 @@ var FEATURES = {
146
146
  // stored allow_skip, and the MCP hides/drops allow_skip via the config_schema `feature` marker.
147
147
  optional_questions: {
148
148
  name: "Optional questions",
149
- description: "Builders can mark a draw or camera question optional so respondents can skip it",
149
+ description: "Builders can mark a draw, camera or booking question optional so respondents can skip it",
150
150
  enabled: false,
151
151
  status: "planned",
152
152
  category: "builder"
@@ -231,7 +231,7 @@ var FEATURES = {
231
231
  },
232
232
  node_booking: {
233
233
  name: "Booking",
234
- description: "Calendly or Google Meet scheduling embedded in the form",
234
+ description: "Calendly or Google Meet scheduling inside the form",
235
235
  enabled: false,
236
236
  status: "planned",
237
237
  category: "node-types"
@@ -605,6 +605,13 @@ var FEATURES = {
605
605
  status: "planned",
606
606
  category: "integrations"
607
607
  },
608
+ integration_google_calendar: {
609
+ name: "Google Meet",
610
+ description: "Google Calendar scheduling with Google Meet links for the Booking node",
611
+ enabled: false,
612
+ status: "planned",
613
+ category: "integrations"
614
+ },
608
615
  integration_calcom: {
609
616
  name: "Cal.com",
610
617
  description: "Open-source scheduling platform for booking meetings",
@@ -881,6 +888,46 @@ var DRAW_GAME_DEFAULT_TIERS = [
881
888
  var DEFAULT_MAX_RECORDING_SECONDS = 120;
882
889
  var MAX_RECORDING_SECONDS_MIN = 10;
883
890
  var MAX_RECORDING_SECONDS_MAX = 300;
891
+ var BOOKING_PROVIDERS = ["calendly", "google_meet"];
892
+ var BOOKING_RESULT_SCHEMA = {
893
+ type: "object",
894
+ required: ["provider", "status"],
895
+ properties: {
896
+ provider: { type: "string", enum: BOOKING_PROVIDERS },
897
+ status: { type: "string", enum: ["booked", "skipped"] },
898
+ start_time: { type: "string", format: "date-time" },
899
+ end_time: { type: "string", format: "date-time" },
900
+ timezone: { type: "string" },
901
+ join_url: { type: "string" },
902
+ reschedule_url: { type: "string" },
903
+ cancel_url: { type: "string" },
904
+ invitee: {
905
+ type: "object",
906
+ properties: {
907
+ name: { type: "string" },
908
+ email: { type: "string" }
909
+ }
910
+ },
911
+ provider_ids: {
912
+ type: "object",
913
+ properties: {
914
+ event_uri: { type: "string" },
915
+ invitee_uri: { type: "string" },
916
+ event_id: { type: "string" },
917
+ calendar_id: { type: "string" }
918
+ }
919
+ }
920
+ },
921
+ description: "Booking result"
922
+ };
923
+ var BOOKING_OUTPUT_SCHEMA = {
924
+ ...BOOKING_RESULT_SCHEMA,
925
+ required: ["node_type", ...BOOKING_RESULT_SCHEMA.required],
926
+ properties: {
927
+ node_type: { type: "string", const: "booking" },
928
+ ...BOOKING_RESULT_SCHEMA.properties
929
+ }
930
+ };
884
931
  var NODE_TYPES = {
885
932
  start: {
886
933
  label: "Start",
@@ -1231,70 +1278,57 @@ var NODE_TYPES = {
1231
1278
  // Object granularity, not a dotted path (#4618): every property under
1232
1279
  // these provider objects (scheduling_url, event_type_uri, calendar_id) is
1233
1280
  // the source workspace's own calendar, so save_form strips the whole
1234
- // object on cross-workspace copy. google_meet is included even though it
1235
- // is absent from the publish gate below (pre-existing drift, not widened
1236
- // here) because calendar_id is owner-scoped regardless.
1237
- owner_scoped_config_keys: ["calendly", "calcom", "google_meet"],
1238
- // The viewer iframes calendly / calcom scheduling_url (Booking.tsx): an outbound embed.
1281
+ // object on cross-workspace copy. workspace_integration_id is the top-level
1282
+ // connected-account pointer (Payment's convention). `calcom` is a dead key
1283
+ // (Cal.com support was removed, #5311) kept on purpose: save_form is SQL and
1284
+ // owner-scoped-config-keys.test.js binds the union of flat keys to the latest
1285
+ // save_form migration's strip array, so dropping it would force a migration.
1286
+ owner_scoped_config_keys: ["workspace_integration_id", "calendly", "calcom", "google_meet"],
1287
+ // The viewer iframes calendly scheduling_url (Booking.tsx): an outbound embed.
1239
1288
  // Unclaimed anonymous-MCP forms may not go live with this node (#4847).
1240
1289
  blocked_for_anon_mcp: true,
1241
1290
  default_config: null,
1242
1291
  config_schema: {
1243
1292
  type: "object",
1244
- oneOf: [
1245
- {
1246
- required: ["calendly"],
1293
+ properties: {
1294
+ provider: { type: "string", enum: BOOKING_PROVIDERS, label: "Provider", description: "Scheduling provider (one per node)" },
1295
+ workspace_integration_id: { type: "string", description: "Connected workspace integration (calendar account) this booking uses" },
1296
+ allow_skip: { type: "boolean", feature: "optional_questions", default: false, label: "Optional", description: "Let respondents continue without booking" },
1297
+ calendly: {
1298
+ type: "object",
1247
1299
  properties: {
1248
- calendly: {
1249
- type: "object",
1250
- properties: {
1251
- event_name: { type: "string", label: "Event name", description: "Display name for the event" },
1252
- event_type_uri: { type: "string", label: "Event type URI", format: "uri", description: "Your Calendly event type URI", placeholder: "https://calendly.com/your-link" }
1253
- }
1254
- }
1300
+ event_type_uri: { type: "string", label: "Event type URI", description: "Your Calendly event type URI" },
1301
+ event_name: { type: "string", label: "Event name", description: "Display name for the event" },
1302
+ scheduling_url: { type: "string", label: "Scheduling URL", description: "Calendly scheduling link embedded in the form" },
1303
+ duration: { type: "number", label: "Duration (minutes)", description: "Event duration in minutes" }
1255
1304
  }
1256
1305
  },
1257
- {
1258
- required: ["google_meet"],
1306
+ google_meet: {
1307
+ type: "object",
1308
+ feature: "integration_google_calendar",
1259
1309
  properties: {
1260
- google_meet: {
1310
+ calendar_id: { type: "string", label: "Calendar", description: "Google Calendar to use for bookings" },
1311
+ calendar_name: { type: "string", label: "Calendar name", description: "Display name for the selected calendar" },
1312
+ duration: { type: "number", label: "Duration (minutes)", default: 30, description: "Meeting duration in minutes" },
1313
+ event_title: { type: "string", label: "Event title", default: "Meeting", description: "Default title for scheduled meetings" },
1314
+ availability: {
1261
1315
  type: "object",
1262
1316
  properties: {
1263
- duration: { type: "number", label: "Duration (minutes)", default: 30, description: "Meeting duration in minutes" },
1264
- calendar_id: { type: "string", label: "Calendar", description: "Google Calendar to use for bookings" },
1265
- event_title: { type: "string", label: "Event title", default: "Meeting", description: "Default title for scheduled meetings" },
1266
- calendar_name: { type: "string", label: "Calendar name", description: "Display name for the selected calendar" }
1317
+ timezone: { type: "string", description: "IANA timezone for the weekly hours" },
1318
+ // Keyed mon..sun; each value is an array of { start, end } 'HH:MM' strings.
1319
+ weekly_hours: { type: "object", description: "Bookable hours per weekday (mon..sun), each an array of { start, end } HH:MM ranges" },
1320
+ buffer_minutes: { type: "number", description: "Gap between bookings in minutes" },
1321
+ min_notice_minutes: { type: "number", description: "Minimum notice before a slot can be booked, in minutes" },
1322
+ days_ahead: { type: "number", description: "How many days ahead respondents can book" }
1267
1323
  }
1268
1324
  }
1269
1325
  }
1270
1326
  }
1271
- ],
1327
+ },
1272
1328
  description: "Booking provider configuration (one provider per node)"
1273
1329
  },
1274
- response_schema: {
1275
- type: "object",
1276
- oneOf: [
1277
- {
1278
- required: ["calendly"],
1279
- properties: {
1280
- calendly: {
1281
- type: "object",
1282
- required: ["event_uri", "scheduled_time"],
1283
- properties: {
1284
- event_uri: { type: "string", format: "uri" },
1285
- event_type: { type: "string" },
1286
- invitee_uri: { type: "string", format: "uri" },
1287
- reschedule_url: { type: "string", format: "uri" },
1288
- scheduled_time: { type: "string", format: "date-time" },
1289
- cancellation_url: { type: "string", format: "uri" }
1290
- }
1291
- }
1292
- }
1293
- }
1294
- ],
1295
- description: "Booking response with provider-specific data"
1296
- },
1297
- output_schema: null
1330
+ response_schema: BOOKING_RESULT_SCHEMA,
1331
+ output_schema: BOOKING_OUTPUT_SCHEMA
1298
1332
  },
1299
1333
  details: {
1300
1334
  label: "Details",
@@ -3634,4 +3668,4 @@ export {
3634
3668
  textResult,
3635
3669
  structuredResult
3636
3670
  };
3637
- //# sourceMappingURL=chunk-XC3YMWCN.js.map
3671
+ //# sourceMappingURL=chunk-6DSCZEF7.js.map