@sellable/mcp 0.1.85 → 0.1.87

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.85",
3
+ "version": "0.1.87",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -363,9 +363,9 @@ Validated draft directory:
363
363
  `RevOps`, `outbound systems`, or `pipeline architecture` unless they are
364
364
  translated into what the user can understand.
365
365
 
366
- After rendering that brief, ask for brief approval when there is a real
367
- strategic choice or the user has not already made the direction obvious. The
368
- user-facing choice should be approve/revise language, not "looks good".
366
+ After rendering that brief, ask for brief approval before lead sourcing in
367
+ hosted net-new runs. The user-facing choice should be approve/revise language,
368
+ not "looks good".
369
369
  Approval options should refer to what the user just read, e.g. `Approve this
370
370
  brief`, `Revise target`, `Revise offer/proof`, and `Other / custom`.
371
371
  When the user chose `Find people for me` and the host supports subagents,
@@ -389,13 +389,13 @@ brief`, `Revise target`, `Revise offer/proof`, and `Other / custom`.
389
389
  the visible approved brief; if the sidecar is still running, wait quietly or
390
390
  finish the write synchronously at that boundary.
391
391
 
392
- - After the brief is approved or auto-confirmed, show the next progress line:
392
+ - After the brief is approved, show the next progress line:
393
393
  `Cool. Now I'm going to find people who are both a good fit and active enough
394
394
  to be worth a LinkedIn test. I'll compare source paths by expected volume,
395
395
  sampled ICP fit, activity/warmth signal, cleanup risk, and tradeoffs. This
396
396
  usually takes ~3-5 min, and I'll show you the source decision + sample before
397
397
  anything goes live.`
398
- - After the lead sample/source decision is ready and approved or auto-confirmed,
398
+ - After the lead sample/source decision is ready and approved,
399
399
  show the next progress line:
400
400
  `Lead source is set. I'll import the first 10-row review batch into the
401
401
  campaign table, then use that same batch to tighten the fit filter and draft the
@@ -554,8 +554,14 @@ workstreams`, `in parallel`, or `background` unless parallel branches were
554
554
 
555
555
  <conditional_gates>
556
556
 
557
- There are two human gates:
557
+ There are four customer-visible gates in the net-new hosted flow:
558
558
 
559
+ - `brief-review` asks whether to approve the rendered campaign brief before
560
+ lead sourcing starts. Do not skip this by inferring approval from setup
561
+ answers.
562
+ - `lead-review` / source decision asks whether to approve the selected source
563
+ path and sample before moving into filter/message work. Do not skip this by
564
+ compressing the source decision into message review.
559
565
  - `message-review` is the mandatory pre-import message quality gate. It asks
560
566
  only whether to proceed with the selected message (`approve-message`) or run
561
567
  one more messaging revision (`revise-messaging`). `approve-message` authorizes
@@ -731,12 +737,12 @@ Required behavior:
731
737
  smaller, higher-reply-upside first batch versus Sales Nav/Prospeo for broader
732
738
  scale. Recommend the source you believe should win, often Sales Nav when scale
733
739
  matters, but keep the smaller Signals lane available as a real option.
734
- - user-facing source logic must use numbers, not vibes. Never write a percentage
735
- such as `73% match` without the numerator, denominator, and sample basis, e.g.
736
- `8 of 11 sampled engagers fit the ICP (73%)`. If the sample is small, say it is
737
- directional. If an estimate depends on assumptions, show the math: `5 selected
738
- posts x ~40-80 reachable engagers/post x 25-40% expected fit = ~50-160 likely
739
- usable leads`.
740
+ - user-facing source logic must use numbers, not vibes. Never write percentages
741
+ in the source review. Use the numerator, denominator, and sample basis instead,
742
+ e.g. `8 of 11 sampled engagers fit the ICP`. If the sample is small, say it is
743
+ directional. If an estimate depends on assumptions, show the math without
744
+ percentage notation: `5 selected posts x ~40-80 reachable engagers/post x
745
+ roughly 1 in 4 to 2 in 5 expected fit = ~50-160 likely usable leads`.
740
746
  - source progress updates should expose the confidence-building numbers as soon
741
747
  as they exist: keyword lanes searched, timeframe used, post results by lane,
742
748
  finalist posts reviewed, engagers fetched, sampled engagers, sampled fits,
@@ -841,7 +847,7 @@ table with one row per selected or finalist post:
841
847
  - raw results found
842
848
  - finalist posts or preview rows reviewed
843
849
  - sampled people
844
- - sampled fits, shown as `n/N (%)`
850
+ - sampled fits, shown as `n/N` only; do not include a percentage
845
851
  - estimated usable people
846
852
  - confidence note (`sample-backed`, `directional`, or `needs more sample`)
847
853
 
@@ -631,7 +631,7 @@
631
631
  "raw results found",
632
632
  "finalist posts or preview rows reviewed",
633
633
  "sampled people",
634
- "sampled fits as n/N (%)",
634
+ "sampled fits as n/N only; no percentage",
635
635
  "estimated usable people",
636
636
  "estimated good-fit range after cleanup",
637
637
  "confidence note"
@@ -662,7 +662,7 @@
662
662
  "artifactLinkTiming": "before_next_step_or_revision_question",
663
663
  "doNotCompressToSummaryOnly": false,
664
664
  "doNotRenderArtifactLinksOnly": true,
665
- "chatRenderRule": "Show a slim rendered-Markdown decision summary only, never a fenced code block. The first sentence must make the decision explicit: 'I recommend {primary source} using {exact filter/source recipe}. The runner-up is {source} because {reason}.' Use indexed sections and short bullets: recommendation, Primary source and filters, Runner-up sources, why it won, Quick numbers with one provider/source angle per bullet, raw volume, sampled fit rate as n/N, estimated good-fit range after cleanup, activity/warmth basis, confidence note, 3-5 representative sample leads, and one tradeoff. Do not forecast connection acceptance rates, reply rates, meetings, pipeline, revenue, or ROI unless the user supplied verified benchmark data for this exact workspace/sender. If Signals was searched or considered, include two compact inline Markdown tables before the recommendation is treated as final: Signal keyword lanes with keyword lane, timeframe, posts found, and finalist posts reviewed; and LinkedIn posts sampled with post URL/title, author/topic, age, engagers, sampled engagers, good fits as n/N, estimated usable prospects per post, and use/discard decision. Default to selecting a few promising Signals posts for the first sample instead of trying to prove full Signals scale up front; if the sample is good but volume is low, say how many more posts to add/scrape next. Do not skip or discard Signals based only on raw post count or vibes; show the post-level math first, or explicitly say no engagers could be fetched and lower confidence. Keep discarded paths, full sample rows, and lead-sample.json details in lead-review.md. Do not show plain filesystem paths unless links cannot be created."
665
+ "chatRenderRule": "Show a slim rendered-Markdown decision summary only, never a fenced code block. The first sentence must make the decision explicit: 'I recommend {primary source} using {exact filter/source recipe}. The runner-up is {source} because {reason}.' Use indexed sections and short bullets: recommendation, Primary source and filters, Runner-up sources, why it won, Quick numbers with one provider/source angle per bullet, raw volume, sampled fit count as n/N only (no percentages), estimated good-fit range after cleanup, activity/warmth basis, confidence note, 3-5 representative sample leads, and one tradeoff. Do not forecast connection acceptance rates, reply rates, meetings, pipeline, revenue, or ROI unless the user supplied verified benchmark data for this exact workspace/sender. If Signals was searched or considered, include two compact inline Markdown tables before the recommendation is treated as final: Signal keyword lanes with keyword lane, timeframe, posts found, and finalist posts reviewed; and LinkedIn posts sampled with post URL/title, author/topic, age, engagers, sampled engagers, good fits as n/N only, estimated usable prospects per post, and use/discard decision. Default to selecting a few promising Signals posts for the first sample instead of trying to prove full Signals scale up front; if the sample is good but volume is low, say how many more posts to add/scrape next. Do not skip or discard Signals based only on raw post count or vibes; show the post-level math first, or explicitly say no engagers could be fetched and lower confidence. Keep discarded paths, full sample rows, and lead-sample.json details in lead-review.md. Do not show plain filesystem paths unless links cannot be created."
666
666
  },
667
667
  {
668
668
  "action": "render_post_lead_parallel_progress",