@sellable/mcp 0.1.121 → 0.1.122

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.121",
3
+ "version": "0.1.122",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -433,7 +433,10 @@ brief`, `Revise target`, `Revise offer/proof`, and `Other / custom`.
433
433
  campaign brief. Do not wait for file-write chrome before asking for approval.
434
434
  Before Find Leads, call `update_campaign({ campaignId, campaignBrief,
435
435
  currentStep: "pick-provider", watchNarration: { ... } })` after approval so
436
- the watch link moves out of Plan while the main thread compares source paths.
436
+ the watch link moves out of Plan while the main thread explains the source
437
+ path. This must be a visible Pick Provider checkpoint before the watched
438
+ browser moves into Signal Discovery, Sales Nav, Prospeo, or another provider
439
+ lane.
437
440
 
438
441
  - After the brief is approved, show the next progress line. When the user has
439
442
  not given a specific source direction, use the default sequential source
@@ -444,6 +447,11 @@ that gives the strongest message context if enough ICP-looking people are
444
447
  engaging. If that does not clear a quick viability check, I'll switch to Sales
445
448
  Nav with recent activity, then broader Sales Nav, and use Prospeo only as the
446
449
  fallback. No leads import until you approve the source.`
450
+ The watched campaign should still be on Pick Provider while this source logic
451
+ is being explained. If the default first lane is Signal Discovery, say clearly
452
+ that Codex is about to test Signal Discovery as a viability path, not import
453
+ leads: it will look for relevant posts, sample engagers, estimate ICP fit, and
454
+ only continue if the source math works.
447
455
  - If the user's request already points to a source, do not force the default
448
456
  funnel. Start with the matching lane and say why:
449
457
  - specific posts, creators, topics, comments, or engagement signals ->
@@ -453,8 +461,9 @@ fallback. No leads import until you approve the source.`
453
461
  search, or target accounts -> Prospeo
454
462
  - supplied CSV/profile list -> existing/supplied list preview
455
463
  - explicit compare request -> compare only the requested sources
456
- - In watch mode, do not leave the user sitting on only `pick-provider` while
457
- source viability is checked. Move the campaign to the first source lane that
464
+ - In watch mode, do not skip the Pick Provider checkpoint. First move the
465
+ campaign to `pick-provider` and narrate the source-selection reasoning there.
466
+ After that visible checkpoint, move the campaign to the first source lane that
458
467
  will actually be tested (`signal-discovery`, `sales-nav`, `prospeo`, or the
459
468
  user-directed lane), then run the campaign-attached provider prompt + provider
460
469
  search in the parent thread with `campaignOfferId`, `confirmed: true`, and
@@ -546,7 +546,9 @@
546
546
  "watchNarration.stage": "find-leads"
547
547
  },
548
548
  "when": "before_sequential_source_funnel",
549
- "chatRenderRule": "Move the campaign watch view to Find Leads before the main thread starts source viability work. If the user did not specify a source, explain the default order: start with warm LinkedIn post engagement because it gives stronger message context and expected reply-rate upside when enough ICP-looking engagers exist; if it is not viable, switch to Sales Nav with recent activity, then broader Sales Nav, and use Prospeo only as the fallback. If the user did specify hiring signals, domains/accounts, supplied lists, posts/comments, or titles/personas, explain that the matching source overrides the default funnel. State that no leads import until a source is approved. The watchNarration headline/body must name the lane being tested, why this lane now, the quick viability gate, and the safety boundary. Do not mention MCP or local artifacts."
549
+ "requiresVisibleCheckpointBeforeProviderLane": true,
550
+ "forbidDirectPlanToProviderLane": true,
551
+ "chatRenderRule": "Move the campaign watch view to the Pick Provider step before the main thread starts source viability work. This must be a distinct visible checkpoint: do not jump directly from Plan to Signal Discovery, Sales Nav, Prospeo, or another provider lane in the same visible beat. While the watched browser is on Pick Provider, explain the source-selection logic. If the user did not specify a source, explain the default order: start with warm LinkedIn post engagement because it gives stronger message context and expected reply-rate upside when enough ICP-looking engagers exist; if it is not viable, switch to Sales Nav with recent activity, then broader Sales Nav, and use Prospeo only as the fallback. If starting with Signal Discovery, explicitly say this is a viability test: Codex will look for relevant posts, sample engagers, estimate ICP fit, and only continue if the source math works. If the user did specify hiring signals, domains/accounts, supplied lists, posts/comments, or titles/personas, explain that the matching source overrides the default funnel. State that no leads import until a source is approved. The watchNarration headline/body must name the first lane being considered, why this lane now, the quick viability gate, and the safety boundary. Do not mention MCP or local artifacts."
550
552
  },
551
553
  {
552
554
  "action": "advance_watch_to_initial_source_lane",
@@ -564,8 +566,9 @@
564
566
  "existingList": "saved-lists",
565
567
  "uploadedDomains": "prospeo"
566
568
  },
567
- "when": "before_first_source_attempt",
568
- "rule": "Choose the first visible source lane from explicit source direction when present, otherwise default to Signal Discovery. Send watchNarration with stage find-leads that says why this lane is being tried now, what quick sample or filter gate will pass/fail it, and why that helps this campaign. For Signal Discovery sampling, promote/select the first narrow sample posts with select_promising_posts before fetch_post_engagers so the watched table shows the exact posts being sampled; the guide copy should say Codex is pulling sample engagers from these posts to confirm the ICP is actually engaging and estimate whether enough right-content posts exist for the target lead count. Before final source approval, compute eligible posts, sampled ICP-fit rate, target good-fit lead count, posts needed, selected posts, expected good-fit range, and scale fallback. If the lane fails, update currentStep and watchNarration before moving to Sales Nav recent activity, normal Sales Nav, or Prospeo."
569
+ "when": "after_source_selection_checkpoint_before_first_source_attempt",
570
+ "requiresPriorVisibleStep": "pick-provider",
571
+ "rule": "Choose the first visible source lane from explicit source direction when present, otherwise default to Signal Discovery. Only run this after the Pick Provider source-selection checkpoint has been made visible and explained in chat/watchNarration. Send watchNarration with stage find-leads that says why this lane is being tried now, what quick sample or filter gate will pass/fail it, and why that helps this campaign. For Signal Discovery sampling, make it clear this is a viability path before lead import: promote/select the first narrow sample posts with select_promising_posts before fetch_post_engagers so the watched table shows the exact posts being sampled; the guide copy should say Codex is pulling sample engagers from these posts to confirm the ICP is actually engaging and estimate whether enough right-content posts exist for the target lead count. Before final source approval, compute eligible posts, sampled ICP-fit rate, target good-fit lead count, posts needed, selected posts, expected good-fit range, and scale fallback. If the lane fails, update currentStep and watchNarration before moving to Sales Nav recent activity, normal Sales Nav, or Prospeo."
569
572
  },
570
573
  {
571
574
  "action": "run_first_campaign_attached_source_search",
@@ -79,14 +79,27 @@ Default source funnel:
79
79
  ```json
80
80
  {
81
81
  "stage": "find-leads",
82
- "headline": "Testing warm LinkedIn activity",
83
- "visibleState": "Codex is starting with recent post engagement because it gives the strongest message context if enough ICP-looking people are active there.",
84
- "agentIntent": "If this lane does not clear the quick sample gate, it will switch to Sales Nav with recent activity, then broader Sales Nav, and use Prospeo only as the fallback.",
82
+ "headline": "Choosing the lead source",
83
+ "visibleState": "The browser is on Pick Provider while Codex explains the source path before opening a provider lane.",
84
+ "agentIntent": "Codex will start with Signal Discovery when warm LinkedIn engagement looks plausible, then switch to Sales Nav or Prospeo only if the quick viability math fails.",
85
85
  "nextAction": "Review source",
86
86
  "safety": "No leads import until you approve the source."
87
87
  }
88
88
  ```
89
89
 
90
+ Signal Discovery viability handoff:
91
+
92
+ ```json
93
+ {
94
+ "stage": "find-leads",
95
+ "headline": "Checking Signal Discovery viability",
96
+ "visibleState": "The browser is moving from Pick Provider into Signal Discovery so the exact posts and sample math are visible.",
97
+ "agentIntent": "Codex is testing whether relevant posts have enough ICP-looking engagers before recommending this as the source.",
98
+ "nextAction": "Review source math",
99
+ "safety": "No leads import until you approve the source."
100
+ }
101
+ ```
102
+
90
103
  Source direction override:
91
104
 
92
105
  ```json