@sellable/mcp 0.1.19 → 0.1.20

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
@@ -83,14 +83,14 @@ The token is provided when you generate it. Use `list_workspaces` +
83
83
  For customer/package installs, use the public installer:
84
84
 
85
85
  ```bash
86
- npx -y @sellable/install@0.1.19 --host codex --token skt_live_your_token_here --workspace-id your_workspace_id
86
+ npx -y @sellable/install@0.1.20 --host codex --token skt_live_your_token_here --workspace-id your_workspace_id
87
87
  ```
88
88
 
89
89
  If you already have `~/.sellable/config.json`, rerun/verify without rewriting
90
90
  auth:
91
91
 
92
92
  ```bash
93
- npx -y @sellable/install@0.1.19 --host codex
93
+ npx -y @sellable/install@0.1.20 --host codex
94
94
  sellable --verify-only --host codex
95
95
  ```
96
96
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.19",
3
+ "version": "0.1.20",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -120,6 +120,12 @@ Validated draft directory:
120
120
  or safe launch. Do not say "persist", "local draft folder", "artifact",
121
121
  "mkdir", "campaign thesis", or "same approved campaign thesis" in
122
122
  customer-facing progress copy.
123
+ - Every approval gate must include artifact access after the readable inline
124
+ content. Show a short `Open artifacts:` line with clickable markdown links
125
+ using absolute paths when the host supports them, plus the plain path for CLI
126
+ users. Do this for brief approval, lead-source approval/review, message review,
127
+ and final approval packet. Do not use the links as a substitute for rendering
128
+ the content inline; links are for deeper inspection.
123
129
  - Do not treat the active Sellable workspace as the campaign subject. The
124
130
  workspace only tells you where the campaign will be saved. Before buyer, CTA,
125
131
  proof, or source questions, identify two things:
@@ -318,7 +324,9 @@ me`, `I’ll paste a different sender profile`, and `Other / custom`.
318
324
  strategic choice or the user has not already made the direction obvious. The
319
325
  user-facing choice should be approve/revise language, not "looks good".
320
326
  Approval options should refer to what the user just read, e.g. `Approve this
321
- brief`, `Revise target`, `Revise offer/proof`, and `Other / custom`.
327
+ brief`, `Revise target`, `Revise offer/proof`, and `Other / custom`.
328
+ Include `Open artifacts:` links to `brief-v1.md` and `brief.md` before the
329
+ approval question.
322
330
 
323
331
  - After the brief is approved or auto-confirmed, show the next progress line:
324
332
  `Cool. Now I'm going to find people who are both a good fit and likely to
@@ -522,8 +530,8 @@ Required behavior:
522
530
  such as `73% match` without the numerator, denominator, and sample basis, e.g.
523
531
  `8 of 11 sampled engagers fit the ICP (73%)`. If the sample is small, say it is
524
532
  directional. If an estimate depends on assumptions, show the math: `5 selected
525
- posts x ~40-80 reachable engagers/post x 25-40% expected fit = ~50-160 likely
526
- usable leads`.
533
+ posts x ~40-80 reachable engagers/post x 25-40% expected fit = ~50-160 likely
534
+ usable leads`.
527
535
  - source progress updates should expose the confidence-building numbers as soon
528
536
  as they exist: keyword lanes searched, timeframe used, post results by lane,
529
537
  finalist posts reviewed, engagers fetched, sampled engagers, sampled fits,
@@ -578,7 +586,7 @@ Required behavior:
578
586
  posts reviewed, number of selected posts, total engagers fetched, deduped
579
587
  sampled people count, sampled fit count, and the estimated likely usable people
580
588
  range. Explicitly distinguish `posts found`, `engagers sampled`, and `usable
581
- people estimated`.
589
+ people estimated`.
582
590
  - source decision: best path, why it won, pros, cons/tradeoffs, and discarded
583
591
  source paths with the reason each lost
584
592
  - repeated false-positive patterns
@@ -637,6 +645,8 @@ visible response must include `## Source Decision`, `## Evidence Snapshot`,
637
645
  `## Expected LinkedIn Funnel`, `## Pros`, `## Tradeoffs`, and `## Discarded
638
646
  Paths`. For Signals-first campaigns it must also include `## Selected Signal
639
647
  Posts` and `## Sample Leads`.
648
+ Include `Open artifacts:` links to `lead-review.md` and `lead-sample.json`
649
+ before moving to filter/message drafting or asking for any source revision.
640
650
 
641
651
  For supplied profile CSVs and existing lead lists, `lead-review.md` must not
642
652
  describe a generic TAM estimate or pretend the rows came from Sales Nav/Prospeo
@@ -860,6 +870,16 @@ Orchestration requirements:
860
870
  `My take: ...`, `Suggested adjustment: ...`,
861
871
  `Question: approve-message or revise-messaging?`, `Recommendation:
862
872
  approve-message|revise-messaging`.
873
+ - Never ask the message approval question until the full message review is
874
+ visible in the chat. A summary like `Message review is ready` or `the draft
875
+ avoids a generic pitch` is not enough. The user must see the actual subject,
876
+ the actual tokenized message template, at least one good filled example, one
877
+ good omit example, token notes, your take, and the suggested adjustment before
878
+ any `approve-message` / `revise-messaging` question appears. If you catch
879
+ yourself wanting to offer `show me message` as a choice, stop: render the
880
+ message review first, then ask only `approve-message` or `revise-messaging`.
881
+ Include `Open artifacts:` links to `message-review.md` and
882
+ `message-validation.md` before the approval question.
863
883
  - `My take:` and `Suggested adjustment:` are mandatory customer-facing decision
864
884
  fields, not optional summary text. They must appear after `Token notes:` and
865
885
  before the question in every rendered message review. They must each be
@@ -981,6 +1001,9 @@ proof:`, `p.s. useful proof:`, `p.s. proof:`, or `p.s. social proof:`.
981
1001
  summarize the customer checkpoint from `message-review.md` and preserve the
982
1002
  same literal `My take:`, `Suggested adjustment:`, and `Recommendation:`
983
1003
  labels.
1004
+ Include `Open artifacts:` links to `approval-packet.md`,
1005
+ `message-review.md`, `lead-review.md`, and `brief.md` before the commit-gate
1006
+ question.
984
1007
  - if `message-validation.md` contains an extractable `Selected Winner`, use
985
1008
  that exact winner as the `## Approved Message Template` in
986
1009
  `approval-packet.md` and in the campaign brief passed to `create_campaign`.
@@ -59,6 +59,15 @@ Approvals only feel safe when the user can see what they are approving. Before
59
59
  any approve/revise question, show the relevant decision in plain language. For a
60
60
  brief approval, render the brief itself, not just a direction summary.
61
61
 
62
+ Every approval should also give the user a way to inspect the source artifact.
63
+ After the readable inline content, include an `Open artifacts:` line with links
64
+ or plain paths to the files behind the decision. The artifact links are a backup
65
+ for inspection, not a replacement for showing the content in chat.
66
+
67
+ This applies especially to message approvals. Never ask someone to approve a
68
+ message they cannot see. Show the subject, message body/template, filled example,
69
+ omit example, token notes, your take, and suggested adjustment first.
70
+
62
71
  ## Progress Updates
63
72
 
64
73
  Every customer-facing update should answer one of these:
@@ -227,6 +227,8 @@
227
227
  "then I will find good-fit leads"
228
228
  ],
229
229
  "minimumVisibleBriefDetail": "full_readable_brief_before_question",
230
+ "requiredArtifactLinks": ["brief-v1.md", "brief.md"],
231
+ "artifactLinkTiming": "before_approval_question",
230
232
  "avoidQuestionWhenOnlyUsefulAnswerIs": "looks good"
231
233
  },
232
234
  {
@@ -397,6 +399,8 @@
397
399
  "confidence note"
398
400
  ],
399
401
  "forbidPercentOnlyFitRates": true,
402
+ "requiredArtifactLinks": ["lead-review.md", "lead-sample.json"],
403
+ "artifactLinkTiming": "before_next_step_or_revision_question",
400
404
  "doNotCompressToSummaryOnly": true,
401
405
  "doNotRenderArtifactLinksOnly": true
402
406
  },
@@ -607,6 +611,13 @@
607
611
  "question",
608
612
  "recommendation"
609
613
  ],
614
+ "mustRenderInlineBeforeQuestion": true,
615
+ "minimumVisibleMessageDetail": "full_message_review_before_question",
616
+ "requiredArtifactLinks": [
617
+ "message-review.md",
618
+ "message-validation.md"
619
+ ],
620
+ "artifactLinkTiming": "before_approval_question",
610
621
  "requiredLabels": [
611
622
  "Subject:",
612
623
  "Message:",
@@ -644,6 +655,20 @@
644
655
  {
645
656
  "action": "ask_message_review_choice",
646
657
  "choices": ["approve-message", "revise-messaging"],
658
+ "questionPrerequisiteVisibleLabels": [
659
+ "Status: message-review",
660
+ "Subject:",
661
+ "Message:",
662
+ "Rendered examples:",
663
+ "Good token fill:",
664
+ "Good omit:",
665
+ "Token notes:",
666
+ "My take:",
667
+ "Suggested adjustment:",
668
+ "Recommendation:"
669
+ ],
670
+ "forbiddenWhenMissingVisibleMessage": true,
671
+ "doNotOfferShowMessageChoice": true,
647
672
  "stopAfterQuestion": true
648
673
  },
649
674
  {
@@ -726,6 +751,13 @@
726
751
  "messages",
727
752
  "risks and next action"
728
753
  ],
754
+ "requiredArtifactLinks": [
755
+ "approval-packet.md",
756
+ "message-review.md",
757
+ "lead-review.md",
758
+ "brief.md"
759
+ ],
760
+ "artifactLinkTiming": "before_commit_gate_question",
729
761
  "userFacing": true,
730
762
  "doNotUseWords": ["anchor", "validation anchor", "lane"]
731
763
  },
@@ -821,7 +853,14 @@
821
853
  "lead sample",
822
854
  "lead filter",
823
855
  "message validation"
824
- ]
856
+ ],
857
+ "requiredArtifactLinks": [
858
+ "approval-packet.md",
859
+ "message-review.md",
860
+ "lead-review.md",
861
+ "brief.md"
862
+ ],
863
+ "artifactLinkTiming": "same_turn_before_commit_question"
825
864
  },
826
865
  {
827
866
  "action": "ask_commit_choice",