@sellable/mcp 0.1.62 → 0.1.64

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.62",
3
+ "version": "0.1.64",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -529,8 +529,8 @@ batch, after buyer, offer/ask, and proof/safety are understood. Frame supplied
529
529
  lists as optional, not required. The three visible options are exactly:
530
530
 
531
531
  1. `Find people for me (recommended if you don't already have your own list)`
532
- 2. `I have a CSV of LinkedIn profiles`
533
- 3. `I have a company/domain list to target`
532
+ 2. `I have a CSV of profiles to reach out to`
533
+ 3. `I have a CSV of companies/domains I want to target`
534
534
 
535
535
  Do not expose provider or implementation paths as the user's lead-source
536
536
  choices. Never label the structured options as `engagers`, `titles`,
@@ -762,13 +762,26 @@ user-facing lead review. The visible response must include:
762
762
  - `Quick numbers` as bullet points, with one provider/source angle per bullet.
763
763
  Each bullet must include raw volume, sampled fit rate as `n/N`, estimated
764
764
  good-fit range after cleanup, and expected reply-rate range when available.
765
+ - If Signals was searched or considered, `Signal keyword lanes` as a compact
766
+ table with keyword lane, timeframe, posts found, and finalist posts reviewed.
767
+ - If Signals was searched or considered, `LinkedIn posts sampled` as a compact
768
+ table with one row per selected or finalist post: post URL/title,
769
+ author/topic, age, engagers, sampled engagers, good fits as `n/N`, estimated
770
+ usable prospects per post, and use/discard decision.
765
771
  - `Sample leads` with 3-5 representative `Name — Title, Company` rows
766
772
  - `Tradeoff`
767
773
  - `Open artifact: lead-review.md`
768
774
 
769
- Keep `## Evidence Snapshot`, selected posts, discarded paths, full sample rows,
770
- and `lead-sample.json` details in artifacts. Do not show raw filesystem paths
771
- unless links cannot be created or the user asks.
775
+ Do not skip or discard Signals based only on raw post count or vibes. If
776
+ Signals was considered, show the post-level math in chat first so the user can
777
+ see which LinkedIn posts would be scraped, how many engagers each has, how many
778
+ sampled engagers looked like good fits, and roughly how many usable prospects
779
+ each post can produce. If no engagers could be fetched, say that explicitly and
780
+ lower confidence instead of presenting a precise estimate.
781
+
782
+ Keep discarded paths, full sample rows, and `lead-sample.json` details in
783
+ artifacts. Do not show raw filesystem paths unless links cannot be created or
784
+ the user asks.
772
785
 
773
786
  For supplied profile CSVs and existing lead lists, `lead-review.md` must not
774
787
  describe a generic TAM estimate or pretend the rows came from Sales Nav/Prospeo
@@ -166,8 +166,8 @@
166
166
  "question": "How should we get the people for this campaign?",
167
167
  "options": [
168
168
  "Find people for me (recommended if you don't already have your own list)",
169
- "I have a CSV of LinkedIn profiles",
170
- "I have a company/domain list to target"
169
+ "I have a CSV of profiles to reach out to",
170
+ "I have a CSV of companies/domains I want to target"
171
171
  ],
172
172
  "forbiddenOptionLabels": [
173
173
  "engagers",
@@ -389,6 +389,8 @@
389
389
  "Recommendation",
390
390
  "Why it won",
391
391
  "Quick numbers",
392
+ "Signal keyword lanes",
393
+ "LinkedIn posts sampled",
392
394
  "Sample leads",
393
395
  "Tradeoff"
394
396
  ],
@@ -417,12 +419,24 @@
417
419
  "expected reply-rate range",
418
420
  "confidence note"
419
421
  ],
422
+ "signalsInlineTableRequiredFields": [
423
+ "keyword lane",
424
+ "timeframe",
425
+ "posts found",
426
+ "finalist posts reviewed",
427
+ "post URL or title",
428
+ "engagers or engagement count",
429
+ "sampled engagers",
430
+ "good fits as n/N",
431
+ "estimated usable prospects per post",
432
+ "use or discard decision"
433
+ ],
420
434
  "forbidPercentOnlyFitRates": true,
421
435
  "requiredArtifactLinks": ["lead-review.md"],
422
436
  "artifactLinkTiming": "before_next_step_or_revision_question",
423
437
  "doNotCompressToSummaryOnly": false,
424
438
  "doNotRenderArtifactLinksOnly": true,
425
- "chatRenderRule": "Show a slim rendered-Markdown decision summary only, never a fenced code block. Use indexed sections and short bullets: recommendation, 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, expected reply rate range, 3-5 representative sample leads, and one tradeoff. Keep evidence tables, selected posts, 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."
439
+ "chatRenderRule": "Show a slim rendered-Markdown decision summary only, never a fenced code block. Use indexed sections and short bullets: recommendation, 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, expected reply rate range, 3-5 representative sample leads, and one tradeoff. 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. 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."
426
440
  },
427
441
  {
428
442
  "action": "render_post_lead_parallel_progress",
@@ -97,6 +97,26 @@ Use a compact markdown report with these sections:
97
97
  - Likely Reply Rate: {range}
98
98
  - Estimate Basis: sample-backed | historical | founder-supplied | directional
99
99
 
100
+ ## Signal Keyword Lanes
101
+
102
+ Include this section whenever Signals was searched or considered. This table is
103
+ what lets the user see which keyword lanes produced enough fresh post inventory.
104
+
105
+ | Keyword lane | Timeframe | Posts found | Finalist posts reviewed |
106
+ | ------------ | --------- | ----------- | ----------------------- |
107
+ | ... | ... | ... | ... |
108
+
109
+ ## LinkedIn Posts Sampled
110
+
111
+ Include this section whenever Signals was searched or considered. Do not skip or
112
+ discard Signals based only on raw post count or vibes; show the post-level math
113
+ first. This table is the evidence for how many posts to scrape, including
114
+ estimated usable prospects per post.
115
+
116
+ | Post | Author / topic | Age | Engagers | Sampled engagers | Good fits | Estimated usable prospects per post | Use / discard |
117
+ | ---- | -------------- | --- | -------- | ---------------- | --------- | ----------------------------------- | ------------- |
118
+ | ... | ... | ... | ... | ... | x/y | ... | ... |
119
+
100
120
  ## Pros
101
121
 
102
122
  - ...
@@ -284,6 +284,12 @@ Use first when the value is in conversation opportunity, competitor engagers, co
284
284
  strategy: Signals = warmer, smaller, higher reply upside; Sales Nav/Prospeo =
285
285
  more scalable, usually colder or less signal-rich. Recommend the source you
286
286
  believe is better, but keep the viable alternate as a real option.
287
+ - When Signals was searched or considered, do not recommend skipping or
288
+ discarding it until the user can see the post-level math. Show a compact
289
+ LinkedIn posts table with the keyword lane, selected/finalist post URL or
290
+ title, post age, engager count, sampled engagers, good fits as `n/N`,
291
+ estimated usable prospects per post, and use/discard decision. This table is
292
+ the evidence for how many posts to scrape; raw post count alone is not enough.
287
293
  - If you cannot fetch engagers in the current runtime, say the estimate is inferred and lower confidence.
288
294
  - If Signals is too sparse, too noisy, or clearly below campaign scale after the spot check, fall back to `Sales Nav` rather than forcing a weak conversation-led lane.
289
295