@sellable/mcp 0.1.543 → 0.1.544

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.
package/dist/server.js CHANGED
@@ -338,7 +338,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
338
338
  }
339
339
  break;
340
340
  case "duplicate_campaign":
341
- result = await duplicateCampaign(args?.campaignId);
341
+ result = await duplicateCampaign(args?.campaignId, args?.name);
342
342
  if (result?.campaignOfferId) {
343
343
  markCampaignContextDirty(result.campaignOfferId, "duplicate_campaign");
344
344
  }
@@ -136,6 +136,7 @@ export interface CreateCampaignInput {
136
136
  }
137
137
  export interface UpdateCampaignInput {
138
138
  flowVersion?: "v1" | "v2";
139
+ name?: string;
139
140
  offerPositioning?: unknown;
140
141
  campaignBrief?: unknown;
141
142
  leadSourceType?: string | null;
@@ -161,12 +162,55 @@ export declare const campaignToolDefinitions: ({
161
162
  type: string;
162
163
  description: string;
163
164
  };
165
+ name?: undefined;
166
+ limit?: undefined;
167
+ tableId?: undefined;
168
+ leadLimit?: undefined;
169
+ page?: undefined;
170
+ filters?: undefined;
171
+ clientProspectId?: undefined;
172
+ senderLinkedinUrl?: undefined;
173
+ offerPositioning?: undefined;
174
+ campaignBrief?: undefined;
175
+ messageGenerationMode?: undefined;
176
+ currentStep?: undefined;
177
+ watchNarration?: undefined;
178
+ leadSourceType?: undefined;
179
+ leadSourceProvider?: undefined;
180
+ selectedLeadListId?: undefined;
181
+ senderIds?: undefined;
182
+ currentStepTransition?: undefined;
183
+ clearCurrentStepIfMatches?: undefined;
184
+ interactionMode?: undefined;
185
+ enableICPFilters?: undefined;
186
+ useMessagingTemplate?: undefined;
187
+ rubric?: undefined;
188
+ flowVersion?: undefined;
189
+ workspaceId?: undefined;
190
+ };
191
+ required: string[];
192
+ additionalProperties: boolean;
193
+ };
194
+ } | {
195
+ name: string;
196
+ description: string;
197
+ inputSchema: {
198
+ type: string;
199
+ properties: {
200
+ campaignId: {
201
+ type: string;
202
+ description: string;
203
+ };
204
+ name: {
205
+ type: string;
206
+ maxLength: number;
207
+ description: string;
208
+ };
164
209
  limit?: undefined;
165
210
  tableId?: undefined;
166
211
  leadLimit?: undefined;
167
212
  page?: undefined;
168
213
  filters?: undefined;
169
- name?: undefined;
170
214
  clientProspectId?: undefined;
171
215
  senderLinkedinUrl?: undefined;
172
216
  offerPositioning?: undefined;
@@ -201,11 +245,11 @@ export declare const campaignToolDefinitions: ({
201
245
  description: string;
202
246
  };
203
247
  campaignId?: undefined;
248
+ name?: undefined;
204
249
  tableId?: undefined;
205
250
  leadLimit?: undefined;
206
251
  page?: undefined;
207
252
  filters?: undefined;
208
- name?: undefined;
209
253
  clientProspectId?: undefined;
210
254
  senderLinkedinUrl?: undefined;
211
255
  offerPositioning?: undefined;
@@ -239,12 +283,12 @@ export declare const campaignToolDefinitions: ({
239
283
  type: string;
240
284
  description: string;
241
285
  };
286
+ name?: undefined;
242
287
  limit?: undefined;
243
288
  tableId?: undefined;
244
289
  leadLimit?: undefined;
245
290
  page?: undefined;
246
291
  filters?: undefined;
247
- name?: undefined;
248
292
  clientProspectId?: undefined;
249
293
  senderLinkedinUrl?: undefined;
250
294
  offerPositioning?: undefined;
@@ -325,8 +369,8 @@ export declare const campaignToolDefinitions: ({
325
369
  additionalProperties: boolean;
326
370
  };
327
371
  };
328
- limit?: undefined;
329
372
  name?: undefined;
373
+ limit?: undefined;
330
374
  clientProspectId?: undefined;
331
375
  senderLinkedinUrl?: undefined;
332
376
  offerPositioning?: undefined;
@@ -363,6 +407,7 @@ export declare const campaignToolDefinitions: ({
363
407
  name: {
364
408
  type: string;
365
409
  description: string;
410
+ maxLength?: undefined;
366
411
  };
367
412
  clientProspectId: {
368
413
  type: string;
@@ -555,6 +600,11 @@ export declare const campaignToolDefinitions: ({
555
600
  type: string;
556
601
  description: string;
557
602
  };
603
+ name: {
604
+ type: string;
605
+ maxLength: number;
606
+ description: string;
607
+ };
558
608
  offerPositioning: {
559
609
  type: string;
560
610
  description: string;
@@ -742,7 +792,6 @@ export declare const campaignToolDefinitions: ({
742
792
  leadLimit?: undefined;
743
793
  page?: undefined;
744
794
  filters?: undefined;
745
- name?: undefined;
746
795
  clientProspectId?: undefined;
747
796
  senderLinkedinUrl?: undefined;
748
797
  messageGenerationMode?: undefined;
@@ -765,12 +814,12 @@ export declare const campaignToolDefinitions: ({
765
814
  type: string;
766
815
  description: string;
767
816
  };
817
+ name?: undefined;
768
818
  limit?: undefined;
769
819
  tableId?: undefined;
770
820
  leadLimit?: undefined;
771
821
  page?: undefined;
772
822
  filters?: undefined;
773
- name?: undefined;
774
823
  clientProspectId?: undefined;
775
824
  senderLinkedinUrl?: undefined;
776
825
  offerPositioning?: undefined;
@@ -807,12 +856,12 @@ export declare const campaignToolDefinitions: ({
807
856
  type: string;
808
857
  description: string;
809
858
  };
859
+ name?: undefined;
810
860
  limit?: undefined;
811
861
  tableId?: undefined;
812
862
  leadLimit?: undefined;
813
863
  page?: undefined;
814
864
  filters?: undefined;
815
- name?: undefined;
816
865
  clientProspectId?: undefined;
817
866
  senderLinkedinUrl?: undefined;
818
867
  offerPositioning?: undefined;
@@ -883,7 +932,7 @@ export declare function archiveCampaign(campaignId: string): Promise<{
883
932
  cellsReset?: number;
884
933
  workflowTableId?: string;
885
934
  }>;
886
- export declare function duplicateCampaign(campaignId: string): Promise<{
935
+ export declare function duplicateCampaign(campaignId: string, name?: string): Promise<{
887
936
  campaignOfferId: string;
888
937
  campaignName: string;
889
938
  workflowTableId: string | null;
@@ -206,7 +206,7 @@ export const campaignToolDefinitions = [
206
206
  },
207
207
  {
208
208
  name: "duplicate_campaign",
209
- description: "Duplicate a campaign by calling Sellable's existing duplicate endpoint. Returns campaignOfferId, campaignName, and workflowTableId for the new copy.",
209
+ description: "Duplicate a campaign by calling Sellable's existing duplicate endpoint. Optionally pass name to set the new CampaignOffer and workflow table name. Returns campaignOfferId, campaignName, and workflowTableId for the new copy.",
210
210
  inputSchema: {
211
211
  type: "object",
212
212
  properties: {
@@ -214,6 +214,11 @@ export const campaignToolDefinitions = [
214
214
  type: "string",
215
215
  description: "Source campaign ID to duplicate.",
216
216
  },
217
+ name: {
218
+ type: "string",
219
+ maxLength: 200,
220
+ description: "Optional exact name for the duplicated campaign and workflow table.",
221
+ },
217
222
  },
218
223
  required: ["campaignId"],
219
224
  additionalProperties: false,
@@ -395,6 +400,11 @@ export const campaignToolDefinitions = [
395
400
  type: "string",
396
401
  description: "Campaign ID to update",
397
402
  },
403
+ name: {
404
+ type: "string",
405
+ maxLength: 200,
406
+ description: "Optional campaign name.",
407
+ },
398
408
  offerPositioning: {
399
409
  type: "object",
400
410
  description: "Updated offer positioning JSON",
@@ -1042,9 +1052,24 @@ export async function archiveCampaign(campaignId) {
1042
1052
  const api = getApi();
1043
1053
  return api.post(`/api/v3/campaigns/${campaignId}/archive`);
1044
1054
  }
1045
- export async function duplicateCampaign(campaignId) {
1055
+ export async function duplicateCampaign(campaignId, name) {
1046
1056
  const api = getApi();
1047
- return api.post(`/api/v3/campaigns/${campaignId}/duplicate`);
1057
+ const normalizedName = name?.trim();
1058
+ const duplicated = normalizedName
1059
+ ? await api.post(`/api/v3/campaigns/${campaignId}/duplicate`, {
1060
+ name: normalizedName,
1061
+ })
1062
+ : await api.post(`/api/v3/campaigns/${campaignId}/duplicate`);
1063
+ if (normalizedName) {
1064
+ const renamed = await api.put(`/api/v2/campaign-offers/${duplicated.campaignOfferId}`, {
1065
+ name: normalizedName,
1066
+ });
1067
+ return {
1068
+ ...duplicated,
1069
+ campaignName: renamed.name ?? normalizedName,
1070
+ };
1071
+ }
1072
+ return duplicated;
1048
1073
  }
1049
1074
  export async function updateCampaignBrief(campaignId, campaignBrief) {
1050
1075
  const api = getApi();
@@ -1094,12 +1094,55 @@ export declare const allTools: ({
1094
1094
  type: string;
1095
1095
  description: string;
1096
1096
  };
1097
+ name?: undefined;
1098
+ limit?: undefined;
1099
+ tableId?: undefined;
1100
+ leadLimit?: undefined;
1101
+ page?: undefined;
1102
+ filters?: undefined;
1103
+ clientProspectId?: undefined;
1104
+ senderLinkedinUrl?: undefined;
1105
+ offerPositioning?: undefined;
1106
+ campaignBrief?: undefined;
1107
+ messageGenerationMode?: undefined;
1108
+ currentStep?: undefined;
1109
+ watchNarration?: undefined;
1110
+ leadSourceType?: undefined;
1111
+ leadSourceProvider?: undefined;
1112
+ selectedLeadListId?: undefined;
1113
+ senderIds?: undefined;
1114
+ currentStepTransition?: undefined;
1115
+ clearCurrentStepIfMatches?: undefined;
1116
+ interactionMode?: undefined;
1117
+ enableICPFilters?: undefined;
1118
+ useMessagingTemplate?: undefined;
1119
+ rubric?: undefined;
1120
+ flowVersion?: undefined;
1121
+ workspaceId?: undefined;
1122
+ };
1123
+ required: string[];
1124
+ additionalProperties: boolean;
1125
+ };
1126
+ } | {
1127
+ name: string;
1128
+ description: string;
1129
+ inputSchema: {
1130
+ type: string;
1131
+ properties: {
1132
+ campaignId: {
1133
+ type: string;
1134
+ description: string;
1135
+ };
1136
+ name: {
1137
+ type: string;
1138
+ maxLength: number;
1139
+ description: string;
1140
+ };
1097
1141
  limit?: undefined;
1098
1142
  tableId?: undefined;
1099
1143
  leadLimit?: undefined;
1100
1144
  page?: undefined;
1101
1145
  filters?: undefined;
1102
- name?: undefined;
1103
1146
  clientProspectId?: undefined;
1104
1147
  senderLinkedinUrl?: undefined;
1105
1148
  offerPositioning?: undefined;
@@ -1134,11 +1177,11 @@ export declare const allTools: ({
1134
1177
  description: string;
1135
1178
  };
1136
1179
  campaignId?: undefined;
1180
+ name?: undefined;
1137
1181
  tableId?: undefined;
1138
1182
  leadLimit?: undefined;
1139
1183
  page?: undefined;
1140
1184
  filters?: undefined;
1141
- name?: undefined;
1142
1185
  clientProspectId?: undefined;
1143
1186
  senderLinkedinUrl?: undefined;
1144
1187
  offerPositioning?: undefined;
@@ -1172,12 +1215,12 @@ export declare const allTools: ({
1172
1215
  type: string;
1173
1216
  description: string;
1174
1217
  };
1218
+ name?: undefined;
1175
1219
  limit?: undefined;
1176
1220
  tableId?: undefined;
1177
1221
  leadLimit?: undefined;
1178
1222
  page?: undefined;
1179
1223
  filters?: undefined;
1180
- name?: undefined;
1181
1224
  clientProspectId?: undefined;
1182
1225
  senderLinkedinUrl?: undefined;
1183
1226
  offerPositioning?: undefined;
@@ -1258,8 +1301,8 @@ export declare const allTools: ({
1258
1301
  additionalProperties: boolean;
1259
1302
  };
1260
1303
  };
1261
- limit?: undefined;
1262
1304
  name?: undefined;
1305
+ limit?: undefined;
1263
1306
  clientProspectId?: undefined;
1264
1307
  senderLinkedinUrl?: undefined;
1265
1308
  offerPositioning?: undefined;
@@ -1296,6 +1339,7 @@ export declare const allTools: ({
1296
1339
  name: {
1297
1340
  type: string;
1298
1341
  description: string;
1342
+ maxLength?: undefined;
1299
1343
  };
1300
1344
  clientProspectId: {
1301
1345
  type: string;
@@ -1488,6 +1532,11 @@ export declare const allTools: ({
1488
1532
  type: string;
1489
1533
  description: string;
1490
1534
  };
1535
+ name: {
1536
+ type: string;
1537
+ maxLength: number;
1538
+ description: string;
1539
+ };
1491
1540
  offerPositioning: {
1492
1541
  type: string;
1493
1542
  description: string;
@@ -1675,7 +1724,6 @@ export declare const allTools: ({
1675
1724
  leadLimit?: undefined;
1676
1725
  page?: undefined;
1677
1726
  filters?: undefined;
1678
- name?: undefined;
1679
1727
  clientProspectId?: undefined;
1680
1728
  senderLinkedinUrl?: undefined;
1681
1729
  messageGenerationMode?: undefined;
@@ -1698,12 +1746,12 @@ export declare const allTools: ({
1698
1746
  type: string;
1699
1747
  description: string;
1700
1748
  };
1749
+ name?: undefined;
1701
1750
  limit?: undefined;
1702
1751
  tableId?: undefined;
1703
1752
  leadLimit?: undefined;
1704
1753
  page?: undefined;
1705
1754
  filters?: undefined;
1706
- name?: undefined;
1707
1755
  clientProspectId?: undefined;
1708
1756
  senderLinkedinUrl?: undefined;
1709
1757
  offerPositioning?: undefined;
@@ -1740,12 +1788,12 @@ export declare const allTools: ({
1740
1788
  type: string;
1741
1789
  description: string;
1742
1790
  };
1791
+ name?: undefined;
1743
1792
  limit?: undefined;
1744
1793
  tableId?: undefined;
1745
1794
  leadLimit?: undefined;
1746
1795
  page?: undefined;
1747
1796
  filters?: undefined;
1748
- name?: undefined;
1749
1797
  clientProspectId?: undefined;
1750
1798
  senderLinkedinUrl?: undefined;
1751
1799
  offerPositioning?: undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.543",
3
+ "version": "0.1.544",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code, Codex, and Hermes campaign workflows",
6
6
  "main": "dist/index.js",