@sellable/mcp 0.1.20 → 0.1.21

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.20 --host codex --token skt_live_your_token_here --workspace-id your_workspace_id
86
+ npx -y @sellable/install@0.1.21 --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.20 --host codex
93
+ npx -y @sellable/install@0.1.21 --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.20",
3
+ "version": "0.1.21",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -324,7 +324,7 @@ me`, `I’ll paste a different sender profile`, and `Other / custom`.
324
324
  strategic choice or the user has not already made the direction obvious. The
325
325
  user-facing choice should be approve/revise language, not "looks good".
326
326
  Approval options should refer to what the user just read, e.g. `Approve this
327
- brief`, `Revise target`, `Revise offer/proof`, and `Other / custom`.
327
+ brief`, `Revise target`, `Revise offer/proof`, and `Other / custom`.
328
328
  Include `Open artifacts:` links to `brief-v1.md` and `brief.md` before the
329
329
  approval question.
330
330
 
@@ -861,23 +861,26 @@ Orchestration requirements:
861
861
  with `Status: message-review` as the first visible line. Do not put a
862
862
  markdown heading, preface, or summary before that status line. This is a
863
863
  customer checkpoint, not an audit report: show the approved campaign message
864
- template first, then show rendered examples that prove the tokens fill well
865
- and can be omitted cleanly when row data is weak. Keep the detailed
864
+ template first, then show one filled sample prospect version immediately after
865
+ it so the user can judge whether the tokens are being used correctly. Then
866
+ show rendered examples that prove the tokens fill well and can be omitted
867
+ cleanly when row data is weak. Keep the detailed
866
868
  gold-standard/rule audit inside `message-validation.md`, not in the
867
869
  user-facing review. The review must use this exact label shape so the gate can
868
- be parsed: `Subject: ...`, `Message: ...`, `Rendered examples: ...`,
869
- `Good token fill: ...`, `Good omit: ...`, `Token notes: ...`,
870
- `My take: ...`, `Suggested adjustment: ...`,
870
+ be parsed: `Subject: ...`, `Tokenized template: ...`, `Sample prospect fill:
871
+ ...`, `Rendered examples: ...`, `Good token fill: ...`, `Good omit: ...`,
872
+ `Token notes: ...`, `My take: ...`, `Suggested adjustment: ...`,
871
873
  `Question: approve-message or revise-messaging?`, `Recommendation:
872
874
  approve-message|revise-messaging`.
873
875
  - Never ask the message approval question until the full message review is
874
876
  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`.
877
+ avoids a generic pitch` is not enough. The user must see the actual subject,
878
+ the actual tokenized message template, one filled sample prospect version, at
879
+ least one good filled example, one good omit example, token notes, your take,
880
+ and the suggested adjustment before any `approve-message` /
881
+ `revise-messaging` question appears. If you catch yourself wanting to offer
882
+ `show me message` as a choice, stop: render the message review first, then ask
883
+ only `approve-message` or `revise-messaging`.
881
884
  Include `Open artifacts:` links to `message-review.md` and
882
885
  `message-validation.md` before the approval question.
883
886
  - `My take:` and `Suggested adjustment:` are mandatory customer-facing decision
@@ -886,7 +889,7 @@ approve-message|revise-messaging`.
886
889
  non-empty, specific to the current message, and useful for one last manual
887
890
  feedback pass. Never render a message review that jumps straight from token
888
891
  notes to `Question:` or `Recommendation:`.
889
- - `Message:` in `message-review.md` must be a tokenized template with supported
892
+ - `Tokenized template:` in `message-review.md` must be a tokenized template with supported
890
893
  enriched-row tokens such as `{{first_name}}`, `{{company}}`,
891
894
  `{{workflow_context}}`, `{{headline}}`, `{{source_post_topic}}`, or
892
895
  `{{row_proof_note}}`. It must not be a one-row-only raw sample. It must
@@ -894,12 +897,20 @@ approve-message|revise-messaging`.
894
897
  enriched rows can actually fill or safely omit. If you cannot produce a
895
898
  tokenized template from supported enriched-row fields, stop with
896
899
  `Recommendation: revise-messaging`.
900
+ - `Sample prospect fill:` must render the same template for one named sample
901
+ prospect from `lead-sample.json` or the selected row used in
902
+ `message-validation.md`. It must show the complete subject and body the
903
+ prospect would receive, plus a one-line `Token fill basis:` naming which row
904
+ fields filled each token. This is the user-facing proof that the template
905
+ works. Do not ask for approval if the user cannot compare the template to a
906
+ concrete filled message.
897
907
  - `{{profile_signal}}` is never a supported customer-facing token. It is an
898
- internal enrichment label and must not appear in `Subject:`, `Message:`,
899
- rendered examples, `Token notes:`, `message-validation.md` selected copy, or
900
- `approval-packet.md`. If a profile-derived signal matters, translate it into
901
- a buyer-readable derived token with a clear fill rule, such as
902
- `{{workflow_context}}` or `{{row_proof_note}}`; otherwise omit the line.
908
+ internal enrichment label and must not appear in `Subject:`, `Tokenized
909
+ template:`, `Sample prospect fill:`, rendered examples, `Token notes:`,
910
+ `message-validation.md` selected copy, or `approval-packet.md`. If a
911
+ profile-derived signal matters, translate it into a buyer-readable derived
912
+ token with a clear fill rule, such as `{{workflow_context}}` or
913
+ `{{row_proof_note}}`; otherwise omit the line.
903
914
  - `Rendered examples:` must include at least one `Good token fill:` rendered
904
915
  message where the row has a clean signal and one `Good omit:` rendered message
905
916
  where an optional token line is omitted instead of forced. Each example must
@@ -936,12 +947,12 @@ approve-message|revise-messaging`.
936
947
  `thought this was relevant enough`, `seemed close
937
948
  enough`, `{{profile_signal}}`, `profile signal`, `is why I thought this might
938
949
  be relevant`, `Austin's`, a sender/founder name in the subject, a one-row raw
939
- sample under `Message:`, rendered examples without full copy, a
950
+ sample under `Tokenized template:`, rendered examples without full copy, a
940
951
  mail-merge-sounding tokenized opener, missing or empty `My take:`, missing or
941
952
  empty `Suggested adjustment:`, `My take:` that only says `looks good`,
942
953
  `strong`, or `approved`, `Suggested adjustment:` that only says `none`, or no
943
- literal `{{...}}` token in `Message:`, revise the message before showing it.
944
- Do not output
954
+ literal `{{...}}` token in `Tokenized template:`, revise the message before
955
+ showing it. Do not output
945
956
  `Recommendation: approve-message` when any hard-fail preflight item is
946
957
  present.
947
958
  - `My take` must be 1-3 short bullets or sentences, focused on what a founder
@@ -1086,7 +1097,9 @@ Do not:
1086
1097
 
1087
1098
  - `Status: message-review`
1088
1099
  - `Subject:` using the approved tokenized A + B + C subject shape
1089
- - `Message:` followed by the tokenized approved message template
1100
+ - `Tokenized template:` followed by the tokenized approved message template
1101
+ - `Sample prospect fill:` with one concrete sample prospect's complete rendered
1102
+ subject + body and a `Token fill basis:` line
1090
1103
  - `Rendered examples:`
1091
1104
  - `Good token fill:` with a complete concrete rendered subject + body
1092
1105
  - `Good omit:` with a complete concrete rendered subject + body where optional
@@ -1220,11 +1233,13 @@ Anchor validation (block `approve` when empty):
1220
1233
  `Pass Rate`, `Recommendation`, and `Implementation Details`
1221
1234
  - `message-validation.md` has `Status: confirmed`, `Mode: DRY MODE (no DB
1222
1235
  mutation)`, a `Selected Winner`, and a non-empty `Token Adherence Table`
1223
- - `message-review.md` has `Status: message-review`, `Subject:`, `Message:`
1224
- with at least one literal `{{...}}` token, `Rendered examples:`,
1225
- `Good token fill:` with a complete rendered subject + body, `Good omit:` with
1226
- a complete rendered subject + body, `Token notes:`, `My take:`, `Suggested
1227
- adjustment:`, `Question: approve-message or revise-messaging?`, and
1236
+ - `message-review.md` has `Status: message-review`, `Subject:`,
1237
+ `Tokenized template:` with at least one literal `{{...}}` token,
1238
+ `Sample prospect fill:` with a complete rendered subject + body and
1239
+ `Token fill basis:`, `Rendered examples:`, `Good token fill:` with a complete
1240
+ rendered subject + body, `Good omit:` with a complete rendered subject + body,
1241
+ `Token notes:`, `My take:`, `Suggested adjustment:`, `Question:
1242
+ approve-message or revise-messaging?`, and
1228
1243
  `Recommendation: approve-message`
1229
1244
  - `message-review-decision.md` is exactly `approve-message`
1230
1245
 
@@ -65,8 +65,10 @@ or plain paths to the files behind the decision. The artifact links are a backup
65
65
  for inspection, not a replacement for showing the content in chat.
66
66
 
67
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.
68
+ message they cannot see. Show the subject, tokenized template, a filled sample
69
+ prospect version, omit example, token notes, your take, and suggested adjustment
70
+ first. The user should be able to compare "here is the template" against "here
71
+ is what one real prospect would receive" before approving.
70
72
 
71
73
  ## Progress Updates
72
74
 
@@ -603,7 +603,8 @@
603
603
  "requiredInlineMarker": "Status: message-review",
604
604
  "panels": [
605
605
  "subject",
606
- "message",
606
+ "tokenized template",
607
+ "sample prospect fill",
607
608
  "rendered examples",
608
609
  "token notes",
609
610
  "my take",
@@ -620,7 +621,8 @@
620
621
  "artifactLinkTiming": "before_approval_question",
621
622
  "requiredLabels": [
622
623
  "Subject:",
623
- "Message:",
624
+ "Tokenized template:",
625
+ "Sample prospect fill:",
624
626
  "Rendered examples:",
625
627
  "Good token fill:",
626
628
  "Good omit:",
@@ -640,6 +642,7 @@
640
642
  "no generic signal tokens",
641
643
  "no bracketed or deferred row instructions",
642
644
  "tokenized template with rendered examples",
645
+ "tokenized template plus filled sample prospect",
643
646
  "complete rendered subject plus body examples",
644
647
  "message-review hard-fail preflight",
645
648
  "A + B + C subject quality",
@@ -658,7 +661,8 @@
658
661
  "questionPrerequisiteVisibleLabels": [
659
662
  "Status: message-review",
660
663
  "Subject:",
661
- "Message:",
664
+ "Tokenized template:",
665
+ "Sample prospect fill:",
662
666
  "Rendered examples:",
663
667
  "Good token fill:",
664
668
  "Good omit:",