@sellable/mcp 0.1.79 → 0.1.80

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.79",
3
+ "version": "0.1.80",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -548,6 +548,12 @@ Message` rendered as the recipient would see it, in addition to the approved
548
548
  settings review in the pre-mint approval packet. Those come after mint. The
549
549
  pre-mint packet approves only the brief, lead source, lead filter/rubric, and
550
550
  first message direction.
551
+ - Do not include post-accept DMs, connection-accepted follow-ups, day-2 / day-7
552
+ follow-ups, second touches, reply branches, or any other sequence-shaped copy
553
+ in `message-review.md` or the pre-mint approval packet. If
554
+ `message-validation.md` contains those, mark the message review as
555
+ `revise-messaging` and route back to message generation even if the artifact
556
+ says `Status: confirmed`.
551
557
  - Persist `customer-roleplay.md` when a customer/operator roleplay critique is
552
558
  run. This critique can recommend a decision, but it can never authorize mint.
553
559
  - Persist `commit-gate-decision.md` with exactly one of the six gate choices.
@@ -1018,7 +1024,7 @@ mcp__sellable__get_subskill_prompt({ subskillName: "generate-messages", offset,
1018
1024
 
1019
1025
  Continue chunked-read until `hasMore=false`. Treat all chunks as one prompt load. Follow it verbatim once loaded. The same directive is locked in `flow.v2.json::messageGeneration.toolRules`.
1020
1026
 
1021
- Do NOT proceed to Step 4 (message review gate) without loading and following the full generate-messages workflow. `message-validation.md` must prove the full workflow ran (all required sections present + raw sendable Selected Winner) before `message-review.md` can recommend `approve-message`. If the message review or approval packet is ready but the generate-messages prompt was not retrieved in this run, route back to message-generation instead of asking the commit gate.
1027
+ Do NOT proceed to Step 4 (message review gate) without loading and following the full generate-messages workflow. `message-validation.md` must prove the full workflow ran (all required sections present + raw sendable Selected Winner + explicit single-send-unit PASS) before `message-review.md` can recommend `approve-message`. If the message review or approval packet is ready but the generate-messages prompt was not retrieved in this run, route back to message-generation instead of asking the commit gate. If `message-validation.md` contains post-accept DM, follow-up, second-touch, cadence, branch, or other sequence-shaped copy, do not summarize it as ready; route back to message-generation and require a single first outbound send.
1022
1028
 
1023
1029
  ## Tail (MANDATORY TOOL ORDER + Steps 13-16 + Threshold Trips + Hard Rules)
1024
1030
 
@@ -81,9 +81,13 @@ populated:
81
81
  `Required Keep Rules`, `Required Exclude Rules`, `Pass Rate`,
82
82
  `Recommendation`, and `Implementation Details` sections
83
83
  - `message-validation.md` has `Status: confirmed`, `Mode: DRY MODE (no DB mutation)`,
84
- a `Selected Winner`, and a non-empty `Token Adherence Table`
84
+ a `Selected Winner`, a non-empty `Token Adherence Table`, and an explicit
85
+ single-send-unit PASS with no post-accept DM, follow-up, cadence, branch, or
86
+ sequence-shaped copy in the first-message artifact
85
87
 
86
- An empty anchor blocks `approve`. The user can still pick a revision choice.
88
+ An empty anchor blocks `approve`. Sequence-shaped message output also blocks
89
+ `approve` even when the copy quality is otherwise strong. The user can still
90
+ pick a revision choice.
87
91
 
88
92
  ## Approval Packet
89
93
 
@@ -154,6 +158,14 @@ review in the pre-mint approval packet. Those are configured and reviewed after
154
158
  the campaign is created in the autonomous tail. The pre-mint packet approves
155
159
  only the brief, lead source, lead filter/rubric, and first message direction.
156
160
 
161
+ Do not include or summarize post-accept DMs, connection-accepted follow-ups,
162
+ day-2 / day-7 follow-ups, second touches, reply branches, or any other
163
+ sequence-shaped copy in `message-review.md` or `approval-packet.md`. If
164
+ `message-validation.md` contains those, mark the message review as
165
+ `Recommendation: revise-messaging` and route back to message generation. Do not
166
+ approve by selecting only the first part of the sequence; the validation
167
+ artifact itself must be corrected so the approved template is unambiguous.
168
+
157
169
  The packet must include a dedicated `## Message Review` section immediately
158
170
  before `## Approved Message Template`. This is the customer-facing messaging
159
171
  gate. It should not be a raw validation dump; it should answer:
@@ -169,6 +181,9 @@ draft if useful, mark `Recommendation: revise-messaging`, and route the user to
169
181
  the `revise-messaging` commit-gate option instead of implying the campaign is
170
182
  ready.
171
183
 
184
+ If the validation contains post-accept DM or follow-up copy, treat it exactly
185
+ like `revise-message` even if the artifact says `Status: confirmed`.
186
+
172
187
  If `message-validation.md` has an extractable `Selected Winner`, the packet's
173
188
  `## Approved Message Template` must use that winner exactly, except for
174
189
  supported prospect-row `{{tokens}}`. Do not write a fresh approval-template
@@ -561,6 +561,11 @@ The winner entry must:
561
561
  `[insert ...]`, or `[generated ...]`. If the only scalable option needs a
562
562
  deferred per-row instruction, route to `revise-message` and fix the
563
563
  token plan instead.
564
+ - contain exactly one outbound send unit. Do not include post-accept DMs,
565
+ follow-ups, second touches, cadence branches, sequence notes, or later-message
566
+ copy in the Selected Winner or nearby rendered examples. If a later message
567
+ idea is useful, keep it out of the generated first-message artifact and put it
568
+ in an internal finding for post-mint sequence work.
564
569
  - never use generic signal tokens like `{{recentSignal}}`,
565
570
  `{{recent_signal}}`, or `{{recent_signal_quote}}`. If row personalization
566
571
  is needed in the raw selected winner, render the concrete sentence from
@@ -1046,6 +1051,41 @@ This applies to:
1046
1051
 
1047
1052
  Truth is not enough. The line must do a job for the prospect.
1048
1053
 
1054
+ ### Single-send-unit gate (HARD INVARIANT)
1055
+
1056
+ Dry-mode create-campaign-v2 message generation approves the **first outbound
1057
+ send only**. The Selected Winner must be exactly one send unit for one channel:
1058
+ one INVITE, one INMAIL_OPEN / INMAIL_CLOSED body plus optional subject, or one
1059
+ DM body when the campaign explicitly starts with DM.
1060
+
1061
+ Do not generate, approve, or include sequence-shaped copy in
1062
+ `message-validation.md`, `message-review.md`, selected copy, rendered examples,
1063
+ token notes, findings, or recommendation text.
1064
+
1065
+ Blocked sequence-shaped outputs include:
1066
+
1067
+ - post-accept DMs
1068
+ - connection-accepted follow-ups
1069
+ - day-2 / day-7 follow-ups
1070
+ - second touches
1071
+ - "reply/acceptance" branches
1072
+ - cadence notes
1073
+ - fallback send paths as copy
1074
+ - any "INVITE + DM", "InMail + follow-up", or multi-step message plan
1075
+
1076
+ If a proof, PS, Loom, setup link, or meta-demo line cannot fit in the first send
1077
+ unit, either compress it into that first send unit or omit it. Do not move it to
1078
+ a later message. Preserve the idea as an internal `Findings` note only if it is
1079
+ useful after campaign mint.
1080
+
1081
+ Before returning `Status: confirmed`, run this explicit check:
1082
+
1083
+ `Single send unit: PASS | BLOCKED — reason`
1084
+
1085
+ If BLOCKED, set `Recommendation: revise-message` and rewrite the Selected
1086
+ Winner until it contains only the first outbound send. A message can be strong
1087
+ and still be invalid if it requires a post-accept DM or other sequence copy.
1088
+
1049
1089
  Use the 4-block shape below as the default packaging only when it helps
1050
1090
  the reply reason land. If a different shape is more natural, shorter, or
1051
1091
  more compelling for this offer, use it and explain why in `Packaging
@@ -2216,6 +2256,8 @@ hiring for`
2216
2256
  - No semicolons or `X here` sender fragments: PASS | BLOCKED — reason
2217
2257
  - CTA is useful and low-friction: PASS | BLOCKED — reason
2218
2258
  - Every line has a prospect-side "so what?": PASS | BLOCKED — reason
2259
+ - Single send unit only, with no post-accept DM/follow-up/sequence copy:
2260
+ PASS | BLOCKED — reason
2219
2261
  - Winner clearly beats rejected drafts: PASS | BLOCKED — reason
2220
2262
  - Decision: confirmed | revise-message | revise-filter
2221
2263
 
@@ -2247,6 +2289,8 @@ Automatic failures in dry mode:
2247
2289
  - no compelling proof element despite the brief supporting one
2248
2290
  - a CTA that depends on missing proof
2249
2291
  - copy that fails the Thomas revision filters
2292
+ - any post-accept DM, follow-up, second touch, cadence branch, or sequence copy
2293
+ in the first-message validation artifact
2250
2294
  - any mutation tool usage
2251
2295
 
2252
2296
  ## Workflow