@sellable/mcp 0.1.240 → 0.1.242

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/README.md CHANGED
@@ -34,7 +34,8 @@ from:
34
34
  - `mcp/sellable/skills/interview/SKILL.md`
35
35
 
36
36
  The create-post public wrapper captures raw ideas, loads voice internally,
37
- researches hooks, validates proof/AI tells, and saves content artifacts under
37
+ researches hooks plus market beliefs, develops a premise with story/tension and
38
+ reader value, validates proof/AI tells, and saves content artifacts under
38
39
  `~/.sellable/content/linkedin/**` from:
39
40
 
40
41
  - `mcp/sellable/skills/create-post/SKILL.md`
package/dist/server.js CHANGED
@@ -10,7 +10,7 @@ import { getCampaignTableSchema, queueCampaignCells, reviseMessageTemplateAndRer
10
10
  import { queueCells, updateCell } from "./tools/cells.js";
11
11
  import { handleStartCliLogin, handleWaitForCliLogin, } from "./tools/cli-login.js";
12
12
  import { getCampaignContext, hydrateCampaignContextFromCampaign, markCampaignContextDirty, } from "./tools/context.js";
13
- import { capturePostIdeaTool, getPostDraftTool, getPostIdeaTool, listPostDraftsTool, listPostIdeasTool, listPublishedPostsTool, markPostPublishedTool, saveHookResearchTool, savePostDraftTool, } from "./tools/content-posts.js";
13
+ import { capturePostIdeaTool, getPublishedPostTool, getPostDraftTool, getPostIdeaTool, listPostDraftIterationsTool, listPostDraftsTool, listPostIdeasTool, listPublishedPostsTool, markPostPublishedTool, saveHookResearchTool, savePostDraftTool, updatePostDraftTool, updatePublishedPostMetricsTool, } from "./tools/content-posts.js";
14
14
  import { addToCommentCampaign, addToConnectionCampaign, addToInmailCampaign, getEngagedPosts, getOrCreateDirectCampaignTable, pauseDirectCampaign, startDirectCampaign, } from "./tools/direct-campaigns.js";
15
15
  import { bootstrapEngage, bootstrapEngageMulti, } from "./tools/engage-bootstrap.js";
16
16
  import { searchEngagementPosts } from "./tools/engage-discovery.js";
@@ -238,15 +238,27 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
238
238
  case "save_post_draft":
239
239
  result = savePostDraftTool(args);
240
240
  break;
241
+ case "update_post_draft":
242
+ result = updatePostDraftTool(args);
243
+ break;
241
244
  case "list_post_drafts":
242
245
  result = listPostDraftsTool(args);
243
246
  break;
247
+ case "list_post_draft_iterations":
248
+ result = listPostDraftIterationsTool(args);
249
+ break;
244
250
  case "get_post_draft":
245
251
  result = getPostDraftTool(args);
246
252
  break;
247
253
  case "mark_post_published":
248
254
  result = markPostPublishedTool(args);
249
255
  break;
256
+ case "get_published_post":
257
+ result = getPublishedPostTool(args);
258
+ break;
259
+ case "update_published_post_metrics":
260
+ result = updatePublishedPostMetricsTool(args);
261
+ break;
250
262
  case "list_published_posts":
251
263
  result = listPublishedPostsTool(args);
252
264
  break;
@@ -8,12 +8,30 @@ type ArtifactMetadata = {
8
8
  title?: string;
9
9
  ideaId?: string;
10
10
  hookResearchId?: string;
11
+ draftId?: string;
12
+ draftVersion?: string;
13
+ priorDraftId?: string;
14
+ iteration?: DraftIteration;
15
+ publishedPostId?: string;
11
16
  publishUrl?: string;
17
+ activityId?: string;
12
18
  publishedAt?: string;
13
19
  sourceType?: string;
14
20
  sourceUrl?: string;
15
21
  [key: string]: unknown;
16
22
  };
23
+ type DraftIteration = {
24
+ version?: string;
25
+ priorDraftId?: string;
26
+ iterationRole?: string;
27
+ changeIntent?: string;
28
+ whatChanged?: string;
29
+ whatImproved?: string;
30
+ whatGotWorse?: string;
31
+ score?: Record<string, unknown>;
32
+ verdict?: string;
33
+ [key: string]: unknown;
34
+ };
17
35
  export type ContentPostSummary = {
18
36
  id: string;
19
37
  type: ContentKind;
@@ -22,6 +40,14 @@ export type ContentPostSummary = {
22
40
  title?: string;
23
41
  updatedAt: string;
24
42
  preview: string;
43
+ ideaId?: string;
44
+ hookResearchId?: string;
45
+ draftVersion?: string;
46
+ priorDraftId?: string;
47
+ iterationScore?: Record<string, unknown>;
48
+ iterationVerdict?: string;
49
+ publishedPostId?: string;
50
+ publishedAt?: string;
25
51
  };
26
52
  export declare const contentPostToolDefinitions: ({
27
53
  name: string;
@@ -63,9 +89,21 @@ export declare const contentPostToolDefinitions: ({
63
89
  createdAt?: undefined;
64
90
  draftId?: undefined;
65
91
  hookResearchId?: undefined;
92
+ priorDraftId?: undefined;
93
+ iteration?: undefined;
66
94
  body?: undefined;
67
95
  validationReceipt?: undefined;
68
96
  status?: undefined;
97
+ updatedAt?: undefined;
98
+ publishUrl?: undefined;
99
+ activityId?: undefined;
100
+ publishedAt?: undefined;
101
+ finalText?: undefined;
102
+ updateDraftStatus?: undefined;
103
+ publishedPostId?: undefined;
104
+ year?: undefined;
105
+ metrics?: undefined;
106
+ note?: undefined;
69
107
  };
70
108
  required: string[];
71
109
  additionalProperties: boolean;
@@ -150,9 +188,21 @@ export declare const contentPostToolDefinitions: ({
150
188
  capturedAt?: undefined;
151
189
  draftId?: undefined;
152
190
  hookResearchId?: undefined;
191
+ priorDraftId?: undefined;
192
+ iteration?: undefined;
153
193
  body?: undefined;
154
194
  validationReceipt?: undefined;
155
195
  status?: undefined;
196
+ updatedAt?: undefined;
197
+ publishUrl?: undefined;
198
+ activityId?: undefined;
199
+ publishedAt?: undefined;
200
+ finalText?: undefined;
201
+ updateDraftStatus?: undefined;
202
+ publishedPostId?: undefined;
203
+ year?: undefined;
204
+ metrics?: undefined;
205
+ note?: undefined;
156
206
  };
157
207
  required: never[];
158
208
  additionalProperties: boolean;
@@ -173,6 +223,15 @@ export declare const contentPostToolDefinitions: ({
173
223
  hookResearchId: {
174
224
  type: string;
175
225
  };
226
+ priorDraftId: {
227
+ type: string;
228
+ description: string;
229
+ };
230
+ iteration: {
231
+ type: string;
232
+ description: string;
233
+ additionalProperties: boolean;
234
+ };
176
235
  title: {
177
236
  type: string;
178
237
  };
@@ -200,6 +259,189 @@ export declare const contentPostToolDefinitions: ({
200
259
  selectedPatterns?: undefined;
201
260
  previewBudget?: undefined;
202
261
  notes?: undefined;
262
+ updatedAt?: undefined;
263
+ publishUrl?: undefined;
264
+ activityId?: undefined;
265
+ publishedAt?: undefined;
266
+ finalText?: undefined;
267
+ updateDraftStatus?: undefined;
268
+ publishedPostId?: undefined;
269
+ year?: undefined;
270
+ metrics?: undefined;
271
+ note?: undefined;
272
+ };
273
+ required: string[];
274
+ additionalProperties: boolean;
275
+ };
276
+ } | {
277
+ name: string;
278
+ description: string;
279
+ inputSchema: {
280
+ type: string;
281
+ properties: {
282
+ draftId: {
283
+ type: string;
284
+ };
285
+ hookResearchId: {
286
+ type: string;
287
+ };
288
+ priorDraftId: {
289
+ type: string;
290
+ description?: undefined;
291
+ };
292
+ iteration: {
293
+ type: string;
294
+ description: string;
295
+ additionalProperties: boolean;
296
+ };
297
+ title: {
298
+ type: string;
299
+ };
300
+ body: {
301
+ type: string;
302
+ };
303
+ validationReceipt: {
304
+ description: string;
305
+ };
306
+ status: {
307
+ type: string;
308
+ };
309
+ updatedAt: {
310
+ type: string;
311
+ };
312
+ rawSource?: undefined;
313
+ distilledBrief?: undefined;
314
+ ideaId?: undefined;
315
+ sourceType?: undefined;
316
+ sourceUrl?: undefined;
317
+ capturedAt?: undefined;
318
+ researchId?: undefined;
319
+ topic?: undefined;
320
+ keywords?: undefined;
321
+ sourcePosts?: undefined;
322
+ selectedPatterns?: undefined;
323
+ previewBudget?: undefined;
324
+ notes?: undefined;
325
+ createdAt?: undefined;
326
+ publishUrl?: undefined;
327
+ activityId?: undefined;
328
+ publishedAt?: undefined;
329
+ finalText?: undefined;
330
+ updateDraftStatus?: undefined;
331
+ publishedPostId?: undefined;
332
+ year?: undefined;
333
+ metrics?: undefined;
334
+ note?: undefined;
335
+ };
336
+ required: string[];
337
+ additionalProperties: boolean;
338
+ };
339
+ } | {
340
+ name: string;
341
+ description: string;
342
+ inputSchema: {
343
+ type: string;
344
+ properties: {
345
+ draftId: {
346
+ type: string;
347
+ };
348
+ publishUrl: {
349
+ type: string;
350
+ };
351
+ activityId: {
352
+ type: string;
353
+ };
354
+ publishedAt: {
355
+ type: string;
356
+ };
357
+ finalText: {
358
+ type: string;
359
+ };
360
+ title: {
361
+ type: string;
362
+ };
363
+ updateDraftStatus: {
364
+ type: string;
365
+ description: string;
366
+ };
367
+ rawSource?: undefined;
368
+ distilledBrief?: undefined;
369
+ ideaId?: undefined;
370
+ sourceType?: undefined;
371
+ sourceUrl?: undefined;
372
+ capturedAt?: undefined;
373
+ researchId?: undefined;
374
+ topic?: undefined;
375
+ keywords?: undefined;
376
+ sourcePosts?: undefined;
377
+ selectedPatterns?: undefined;
378
+ previewBudget?: undefined;
379
+ notes?: undefined;
380
+ createdAt?: undefined;
381
+ hookResearchId?: undefined;
382
+ priorDraftId?: undefined;
383
+ iteration?: undefined;
384
+ body?: undefined;
385
+ validationReceipt?: undefined;
386
+ status?: undefined;
387
+ updatedAt?: undefined;
388
+ publishedPostId?: undefined;
389
+ year?: undefined;
390
+ metrics?: undefined;
391
+ note?: undefined;
392
+ };
393
+ required: string[];
394
+ additionalProperties: boolean;
395
+ };
396
+ } | {
397
+ name: string;
398
+ description: string;
399
+ inputSchema: {
400
+ type: string;
401
+ properties: {
402
+ publishedPostId: {
403
+ type: string;
404
+ };
405
+ year: {
406
+ type: string;
407
+ };
408
+ capturedAt: {
409
+ type: string;
410
+ };
411
+ metrics: {
412
+ type: string;
413
+ additionalProperties: boolean;
414
+ };
415
+ note: {
416
+ type: string;
417
+ };
418
+ rawSource?: undefined;
419
+ title?: undefined;
420
+ distilledBrief?: undefined;
421
+ ideaId?: undefined;
422
+ sourceType?: undefined;
423
+ sourceUrl?: undefined;
424
+ researchId?: undefined;
425
+ topic?: undefined;
426
+ keywords?: undefined;
427
+ sourcePosts?: undefined;
428
+ selectedPatterns?: undefined;
429
+ previewBudget?: undefined;
430
+ notes?: undefined;
431
+ createdAt?: undefined;
432
+ draftId?: undefined;
433
+ hookResearchId?: undefined;
434
+ priorDraftId?: undefined;
435
+ iteration?: undefined;
436
+ body?: undefined;
437
+ validationReceipt?: undefined;
438
+ status?: undefined;
439
+ updatedAt?: undefined;
440
+ publishUrl?: undefined;
441
+ activityId?: undefined;
442
+ publishedAt?: undefined;
443
+ finalText?: undefined;
444
+ updateDraftStatus?: undefined;
203
445
  };
204
446
  required: string[];
205
447
  additionalProperties: boolean;
@@ -267,6 +509,8 @@ export declare function savePostDraftTool(input: {
267
509
  draftId?: string;
268
510
  ideaId: string;
269
511
  hookResearchId?: string;
512
+ priorDraftId?: string;
513
+ iteration?: DraftIteration;
270
514
  title?: string;
271
515
  body: string;
272
516
  validationReceipt: unknown;
@@ -278,12 +522,58 @@ export declare function savePostDraftTool(input: {
278
522
  status: string;
279
523
  ideaId: string;
280
524
  hookResearchId: string | undefined;
525
+ draftVersion: string | undefined;
526
+ priorDraftId: string | undefined;
527
+ iterationScore: Record<string, unknown> | undefined;
528
+ iterationVerdict: string | undefined;
529
+ updatedAt: string;
530
+ preview: string;
531
+ };
532
+ export declare function updatePostDraftTool(input: {
533
+ draftId: string;
534
+ hookResearchId?: string;
535
+ priorDraftId?: string;
536
+ iteration?: DraftIteration;
537
+ title?: string;
538
+ body?: string;
539
+ validationReceipt?: unknown;
540
+ updatedAt?: string;
541
+ status?: string;
542
+ }): {
543
+ id: string;
544
+ path: string;
545
+ status: string;
546
+ ideaId: string | undefined;
547
+ hookResearchId: string | undefined;
548
+ draftVersion: string | undefined;
549
+ priorDraftId: string | undefined;
550
+ iterationScore: Record<string, unknown> | undefined;
551
+ iterationVerdict: string | undefined;
281
552
  updatedAt: string;
282
553
  preview: string;
283
554
  };
284
555
  export declare function listPostDraftsTool(input?: {
285
556
  limit?: number;
286
557
  }): ContentPostSummary[];
558
+ export declare function listPostDraftIterationsTool(input: {
559
+ ideaId: string;
560
+ }): {
561
+ id: string;
562
+ type: ContentKind;
563
+ status: string;
564
+ title: string | undefined;
565
+ path: string;
566
+ ideaId: string | undefined;
567
+ hookResearchId: string | undefined;
568
+ draftVersion: string | undefined;
569
+ priorDraftId: string | undefined;
570
+ iterationScore: Record<string, unknown> | undefined;
571
+ iterationVerdict: string | undefined;
572
+ publishedPostId: string | undefined;
573
+ publishedAt: string | undefined;
574
+ updatedAt: string;
575
+ preview: string;
576
+ }[];
287
577
  export declare function getPostDraftTool(input: {
288
578
  draftId: string;
289
579
  }): {
@@ -300,6 +590,7 @@ export declare function markPostPublishedTool(input: {
300
590
  publishedAt?: string;
301
591
  finalText?: string;
302
592
  title?: string;
593
+ updateDraftStatus?: boolean;
303
594
  }): {
304
595
  id: string;
305
596
  path: string;
@@ -310,6 +601,30 @@ export declare function markPostPublishedTool(input: {
310
601
  updatedAt: string;
311
602
  preview: string;
312
603
  };
604
+ export declare function getPublishedPostTool(input: {
605
+ publishedPostId: string;
606
+ year?: string;
607
+ }): {
608
+ id: string;
609
+ path: string;
610
+ metadata: ArtifactMetadata;
611
+ markdown: string;
612
+ };
613
+ export declare function updatePublishedPostMetricsTool(input: {
614
+ publishedPostId: string;
615
+ year?: string;
616
+ metrics: Record<string, unknown>;
617
+ capturedAt?: string;
618
+ note?: string;
619
+ }): {
620
+ id: string;
621
+ path: string;
622
+ status: string;
623
+ updatedAt: string;
624
+ metrics: Record<string, unknown>;
625
+ snapshotsCount: number;
626
+ preview: string;
627
+ };
313
628
  export declare function listPublishedPostsTool(input?: {
314
629
  limit?: number;
315
630
  }): ContentPostSummary[];