@sellable/mcp 0.1.857 → 0.1.858

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.
@@ -67,8 +67,13 @@ export interface CampaignDetail {
67
67
  approved: number;
68
68
  sent: number;
69
69
  };
70
+ automationSettings: CampaignAutomationSettings;
70
71
  watchUrl: string;
71
72
  }
73
+ export interface CampaignAutomationSettings {
74
+ autoApproveFollowups: boolean | null;
75
+ enableFollowUps: boolean | null;
76
+ }
72
77
  export interface CampaignMessagesPreviewInput {
73
78
  campaignId: string;
74
79
  tableId?: string;
@@ -162,6 +167,8 @@ export interface UpdateCampaignInput {
162
167
  interactionMode?: InteractionMode;
163
168
  enableICPFilters?: boolean | null;
164
169
  useMessagingTemplate?: boolean | null;
170
+ autoApproveFollowups?: boolean;
171
+ enableFollowUps?: boolean;
165
172
  senderIds?: string[];
166
173
  rubric?: unknown[];
167
174
  }
@@ -258,6 +265,8 @@ export declare const campaignToolDefinitions: ({
258
265
  interactionMode?: undefined;
259
266
  enableICPFilters?: undefined;
260
267
  useMessagingTemplate?: undefined;
268
+ autoApproveFollowups?: undefined;
269
+ enableFollowUps?: undefined;
261
270
  rubric?: undefined;
262
271
  flowVersion?: undefined;
263
272
  };
@@ -305,6 +314,8 @@ export declare const campaignToolDefinitions: ({
305
314
  interactionMode?: undefined;
306
315
  enableICPFilters?: undefined;
307
316
  useMessagingTemplate?: undefined;
317
+ autoApproveFollowups?: undefined;
318
+ enableFollowUps?: undefined;
308
319
  rubric?: undefined;
309
320
  flowVersion?: undefined;
310
321
  };
@@ -354,6 +365,8 @@ export declare const campaignToolDefinitions: ({
354
365
  interactionMode?: undefined;
355
366
  enableICPFilters?: undefined;
356
367
  useMessagingTemplate?: undefined;
368
+ autoApproveFollowups?: undefined;
369
+ enableFollowUps?: undefined;
357
370
  rubric?: undefined;
358
371
  flowVersion?: undefined;
359
372
  };
@@ -399,6 +412,8 @@ export declare const campaignToolDefinitions: ({
399
412
  interactionMode?: undefined;
400
413
  enableICPFilters?: undefined;
401
414
  useMessagingTemplate?: undefined;
415
+ autoApproveFollowups?: undefined;
416
+ enableFollowUps?: undefined;
402
417
  rubric?: undefined;
403
418
  flowVersion?: undefined;
404
419
  };
@@ -444,6 +459,8 @@ export declare const campaignToolDefinitions: ({
444
459
  interactionMode?: undefined;
445
460
  enableICPFilters?: undefined;
446
461
  useMessagingTemplate?: undefined;
462
+ autoApproveFollowups?: undefined;
463
+ enableFollowUps?: undefined;
447
464
  rubric?: undefined;
448
465
  flowVersion?: undefined;
449
466
  };
@@ -532,6 +549,8 @@ export declare const campaignToolDefinitions: ({
532
549
  interactionMode?: undefined;
533
550
  enableICPFilters?: undefined;
534
551
  useMessagingTemplate?: undefined;
552
+ autoApproveFollowups?: undefined;
553
+ enableFollowUps?: undefined;
535
554
  rubric?: undefined;
536
555
  flowVersion?: undefined;
537
556
  };
@@ -734,6 +753,8 @@ export declare const campaignToolDefinitions: ({
734
753
  interactionMode?: undefined;
735
754
  enableICPFilters?: undefined;
736
755
  useMessagingTemplate?: undefined;
756
+ autoApproveFollowups?: undefined;
757
+ enableFollowUps?: undefined;
737
758
  rubric?: undefined;
738
759
  flowVersion?: undefined;
739
760
  };
@@ -948,6 +969,14 @@ export declare const campaignToolDefinitions: ({
948
969
  type: string[];
949
970
  description: string;
950
971
  };
972
+ autoApproveFollowups: {
973
+ type: string;
974
+ description: string;
975
+ };
976
+ enableFollowUps: {
977
+ type: string;
978
+ description: string;
979
+ };
951
980
  senderIds: {
952
981
  type: string;
953
982
  items: {
@@ -1021,6 +1050,8 @@ export declare const campaignToolDefinitions: ({
1021
1050
  interactionMode?: undefined;
1022
1051
  enableICPFilters?: undefined;
1023
1052
  useMessagingTemplate?: undefined;
1053
+ autoApproveFollowups?: undefined;
1054
+ enableFollowUps?: undefined;
1024
1055
  rubric?: undefined;
1025
1056
  flowVersion?: undefined;
1026
1057
  };
@@ -1069,6 +1100,8 @@ export declare const campaignToolDefinitions: ({
1069
1100
  interactionMode?: undefined;
1070
1101
  enableICPFilters?: undefined;
1071
1102
  useMessagingTemplate?: undefined;
1103
+ autoApproveFollowups?: undefined;
1104
+ enableFollowUps?: undefined;
1072
1105
  rubric?: undefined;
1073
1106
  flowVersion?: undefined;
1074
1107
  };
@@ -1106,6 +1139,7 @@ export interface UpdateCampaignResult {
1106
1139
  name: string;
1107
1140
  currentStep: string | null;
1108
1141
  updatedAt: string;
1142
+ automationSettings?: CampaignAutomationSettings;
1109
1143
  remediation?: string;
1110
1144
  navigation?: unknown;
1111
1145
  _campaign?: CampaignOfferNavigation;
@@ -327,7 +327,7 @@ export const campaignToolDefinitions = [
327
327
  },
328
328
  {
329
329
  name: "get_campaign",
330
- description: "Get detailed campaign context including brief, positioning, sender info, lead scoring rubrics, and stats. Returns workflowTableId for fetching rows.",
330
+ description: "Get detailed campaign context including brief, positioning, sender info, lead scoring rubrics, stats, and follow-up automation settings. Returns workflowTableId for fetching rows.",
331
331
  inputSchema: {
332
332
  type: "object",
333
333
  properties: {
@@ -479,7 +479,7 @@ export const campaignToolDefinitions = [
479
479
  },
480
480
  {
481
481
  name: "update_campaign",
482
- description: "Update an existing campaign offer with positioning, brief, or workflow state fields. Returns currentStep plus navigation diagnostics.",
482
+ description: "Update an existing campaign offer with positioning, brief, workflow state, or follow-up automation fields. Returns currentStep plus navigation diagnostics and persisted automation readback when automation settings change.",
483
483
  inputSchema: {
484
484
  type: "object",
485
485
  properties: {
@@ -566,6 +566,14 @@ export const campaignToolDefinitions = [
566
566
  type: ["boolean", "null"],
567
567
  description: "Whether to use the messaging template step",
568
568
  },
569
+ autoApproveFollowups: {
570
+ type: "boolean",
571
+ description: "Whether drafted campaign follow-ups are automatically approved/sent. This does not draft, approve, or send an individual prospect message during the settings update.",
572
+ },
573
+ enableFollowUps: {
574
+ type: "boolean",
575
+ description: "Whether the campaign follow-up sweeper may draft follow-ups. Keep true when enabling autoApproveFollowups unless the user explicitly requests drafting suppression.",
576
+ },
569
577
  senderIds: {
570
578
  type: "array",
571
579
  items: { type: "string" },
@@ -651,8 +659,9 @@ export async function getCampaign(campaignId) {
651
659
  const api = getApi();
652
660
  const config = getConfig();
653
661
  // Fetch campaign context and rubrics in parallel
654
- const [result, rubricsResult] = await Promise.all([
662
+ const [result, automationSource, rubricsResult] = await Promise.all([
655
663
  api.get(`/api/v3/mcp/campaigns/${campaignId}?mode=${getCampaignBuilderWatchModeParam()}`),
664
+ api.get(`/api/v2/campaign-offers/${campaignId}`),
656
665
  fetchCampaignRubrics(campaignId).catch(() => null),
657
666
  ]);
658
667
  // Prefer the server-minted watch link. It carries a fresh single-use token
@@ -679,9 +688,17 @@ export async function getCampaign(campaignId) {
679
688
  ...result.campaignOffer,
680
689
  leadScoringRubrics: rubrics,
681
690
  },
691
+ automationSettings: readCampaignAutomationSettings(automationSource),
682
692
  watchUrl,
683
693
  };
684
694
  }
695
+ function readCampaignAutomationSettings(source) {
696
+ const autoApproveFollowups = source.autoApproveFollowups ?? source.autoApproveOutreach;
697
+ return {
698
+ autoApproveFollowups: typeof autoApproveFollowups === "boolean" ? autoApproveFollowups : null,
699
+ enableFollowUps: typeof source.enableFollowUps === "boolean" ? source.enableFollowUps : null,
700
+ };
701
+ }
685
702
  function normalizeCellValue(cell) {
686
703
  if (!cell)
687
704
  return null;
@@ -1091,6 +1108,8 @@ export async function updateCampaign(campaignId, input) {
1091
1108
  const api = getApi();
1092
1109
  const { campaignId: _ignore, workspaceId, interactionMode, flowVersion: _flowVersion, senderIds, currentStep, ...updates } = input;
1093
1110
  const hasSenderIds = Object.prototype.hasOwnProperty.call(input, "senderIds");
1111
+ const hasAutomationSettings = Object.prototype.hasOwnProperty.call(input, "autoApproveFollowups") ||
1112
+ Object.prototype.hasOwnProperty.call(input, "enableFollowUps");
1094
1113
  const requestOptions = workspaceId ? { workspaceId } : undefined;
1095
1114
  if (!hasSenderIds && currentStep !== undefined) {
1096
1115
  updates.currentStep = currentStep;
@@ -1148,11 +1167,15 @@ export async function updateCampaign(campaignId, input) {
1148
1167
  result = await api.put(`/api/v2/campaign-offers/${campaignId}`, updates, requestOptions);
1149
1168
  }
1150
1169
  // Serialize to only essential fields for context efficiency
1170
+ const automationSettings = hasAutomationSettings
1171
+ ? readCampaignAutomationSettings(await api.get(`/api/v2/campaign-offers/${campaignId}`, requestOptions))
1172
+ : undefined;
1151
1173
  return {
1152
1174
  id: result.id,
1153
1175
  name: result.name,
1154
1176
  currentStep: result.currentStep,
1155
1177
  updatedAt: result.updatedAt,
1178
+ ...(automationSettings ? { automationSettings } : {}),
1156
1179
  ...(senderRouteResult?.remediation
1157
1180
  ? { remediation: senderRouteResult.remediation }
1158
1181
  : {}),
@@ -2309,6 +2309,8 @@ export declare const allTools: ({
2309
2309
  interactionMode?: undefined;
2310
2310
  enableICPFilters?: undefined;
2311
2311
  useMessagingTemplate?: undefined;
2312
+ autoApproveFollowups?: undefined;
2313
+ enableFollowUps?: undefined;
2312
2314
  rubric?: undefined;
2313
2315
  flowVersion?: undefined;
2314
2316
  };
@@ -2356,6 +2358,8 @@ export declare const allTools: ({
2356
2358
  interactionMode?: undefined;
2357
2359
  enableICPFilters?: undefined;
2358
2360
  useMessagingTemplate?: undefined;
2361
+ autoApproveFollowups?: undefined;
2362
+ enableFollowUps?: undefined;
2359
2363
  rubric?: undefined;
2360
2364
  flowVersion?: undefined;
2361
2365
  };
@@ -2405,6 +2409,8 @@ export declare const allTools: ({
2405
2409
  interactionMode?: undefined;
2406
2410
  enableICPFilters?: undefined;
2407
2411
  useMessagingTemplate?: undefined;
2412
+ autoApproveFollowups?: undefined;
2413
+ enableFollowUps?: undefined;
2408
2414
  rubric?: undefined;
2409
2415
  flowVersion?: undefined;
2410
2416
  };
@@ -2450,6 +2456,8 @@ export declare const allTools: ({
2450
2456
  interactionMode?: undefined;
2451
2457
  enableICPFilters?: undefined;
2452
2458
  useMessagingTemplate?: undefined;
2459
+ autoApproveFollowups?: undefined;
2460
+ enableFollowUps?: undefined;
2453
2461
  rubric?: undefined;
2454
2462
  flowVersion?: undefined;
2455
2463
  };
@@ -2495,6 +2503,8 @@ export declare const allTools: ({
2495
2503
  interactionMode?: undefined;
2496
2504
  enableICPFilters?: undefined;
2497
2505
  useMessagingTemplate?: undefined;
2506
+ autoApproveFollowups?: undefined;
2507
+ enableFollowUps?: undefined;
2498
2508
  rubric?: undefined;
2499
2509
  flowVersion?: undefined;
2500
2510
  };
@@ -2583,6 +2593,8 @@ export declare const allTools: ({
2583
2593
  interactionMode?: undefined;
2584
2594
  enableICPFilters?: undefined;
2585
2595
  useMessagingTemplate?: undefined;
2596
+ autoApproveFollowups?: undefined;
2597
+ enableFollowUps?: undefined;
2586
2598
  rubric?: undefined;
2587
2599
  flowVersion?: undefined;
2588
2600
  };
@@ -2785,6 +2797,8 @@ export declare const allTools: ({
2785
2797
  interactionMode?: undefined;
2786
2798
  enableICPFilters?: undefined;
2787
2799
  useMessagingTemplate?: undefined;
2800
+ autoApproveFollowups?: undefined;
2801
+ enableFollowUps?: undefined;
2788
2802
  rubric?: undefined;
2789
2803
  flowVersion?: undefined;
2790
2804
  };
@@ -2999,6 +3013,14 @@ export declare const allTools: ({
2999
3013
  type: string[];
3000
3014
  description: string;
3001
3015
  };
3016
+ autoApproveFollowups: {
3017
+ type: string;
3018
+ description: string;
3019
+ };
3020
+ enableFollowUps: {
3021
+ type: string;
3022
+ description: string;
3023
+ };
3002
3024
  senderIds: {
3003
3025
  type: string;
3004
3026
  items: {
@@ -3072,6 +3094,8 @@ export declare const allTools: ({
3072
3094
  interactionMode?: undefined;
3073
3095
  enableICPFilters?: undefined;
3074
3096
  useMessagingTemplate?: undefined;
3097
+ autoApproveFollowups?: undefined;
3098
+ enableFollowUps?: undefined;
3075
3099
  rubric?: undefined;
3076
3100
  flowVersion?: undefined;
3077
3101
  };
@@ -3120,6 +3144,8 @@ export declare const allTools: ({
3120
3144
  interactionMode?: undefined;
3121
3145
  enableICPFilters?: undefined;
3122
3146
  useMessagingTemplate?: undefined;
3147
+ autoApproveFollowups?: undefined;
3148
+ enableFollowUps?: undefined;
3123
3149
  rubric?: undefined;
3124
3150
  flowVersion?: undefined;
3125
3151
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.857",
3
+ "version": "0.1.858",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code, Codex, and Hermes campaign workflows",
6
6
  "main": "dist/index.js",