@sellable/mcp 0.1.388 → 0.1.390

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.388",
3
+ "version": "0.1.390",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -418,7 +418,7 @@ Tokenized shape:
418
418
 
419
419
  Hey there
420
420
 
421
- Saw you pop up on my post about {{post_topic_line}}
421
+ Thanks for the support on my post about {{post_topic_line}}
422
422
 
423
423
  Curious, is this something you're dealing with right now?
424
424
  ```
@@ -429,6 +429,10 @@ Transfer rules:
429
429
  selected sender-authored post or use a safer source-specific phrase.
430
430
  - Do not use "showing some love"; it reads too casual for executive/VP/director
431
431
  contacts.
432
+ - Keep the thank-you line. The point of this motion is acknowledging real
433
+ sender-owned support before asking a light relevance question. Do not flatten
434
+ it back to "saw you pop up" unless the sender specifically asks for that
435
+ wording.
432
436
  - Do not copy this shape into shared lanes, third-party thread sources, or cold
433
437
  fallback campaigns.
434
438
  - Keep the question closed and problem-oriented; do not pitch, ask for a
@@ -775,7 +775,7 @@ Parent-thread handwritten copy or setting `currentStep` is not proof.
775
775
 
776
776
  Hey there
777
777
 
778
- Saw you pop up on my post about {{post_topic_line}}
778
+ Thanks for the support on my post about {{post_topic_line}}
779
779
  ```
780
780
 
781
781
  - **Shared Signal Discovery** first-message style: short, casual, references
@@ -797,9 +797,18 @@ Parent-thread handwritten copy or setting `currentStep` is not proof.
797
797
  generic greeting. It should open with a light role/company/problem
798
798
  observation, avoid awkward phrases like "looks like a team where", avoid
799
799
  founder-only first person unless every attached sender can credibly say it,
800
- and ask one clear problem question. This is a single-message
801
- cold path unless the approved create-campaign message workflow proves a
802
- better delivery format.
800
+ and ask one clear problem question. It must not pass just because the
801
+ receipt says `generate-messages` loaded; the reviewed samples must sound
802
+ like final cold output from the create-campaign/generate-messages workflow.
803
+ Use no self-intro such as "We're building", no opt-out shrug such as "If
804
+ this isn't relevant, ignore me", and no product-stack dump that repeats
805
+ Sellable/Codex/Claude-Code feature summary
806
+ across prospects. This is a single-message cold path unless the approved
807
+ create-campaign message workflow proves a better delivery format.
808
+ Short form: Shared Cold Fallback must not pass just because the receipt says `generate-messages` loaded.
809
+ Short form: Shared Cold Fallback uses no self-intro such as "We're building".
810
+ Short form: Shared Cold Fallback uses no opt-out shrug such as "If this isn't relevant, ignore me".
811
+ Short form: Shared Cold Fallback uses no product-stack dump.
803
812
  - Every customer-visible lane must run Message Drafting from the current
804
813
  campaign/table basis after source rows exist. The worker must load the full
805
814
  packaged `generate-messages` prompt, every required asset, and
@@ -854,10 +863,14 @@ Parent-thread handwritten copy or setting `currentStep` is not proof.
854
863
  `validationResult:"passed"`, a passed quality review, and at least 3
855
864
  reviewed sample messages. For Shared Cold Fallback, reject samples that
856
865
  open with a standalone name followed by "Hey there" or a similarly generic
857
- greeting. For all shared lanes, reject generic product-summary samples,
858
- repeated near-identical samples, and any preserved Post Engagers opener;
859
- revise or rerun the packaged create-campaign/generate-messages path before
860
- reporting completion.
866
+ greeting. For Shared Cold Fallback, also reject samples with a self-intro
867
+ such as "We're building", an opt-out shrug such as "If this isn't
868
+ relevant, ignore me", or a product-stack dump that repeats the same
869
+ Sellable/Codex/Claude-Code feature summary across prospects. For all
870
+ shared lanes, reject generic product-summary samples, repeated
871
+ near-identical samples, and any preserved Post Engagers opener; revise or
872
+ rerun the packaged create-campaign/generate-messages path before reporting
873
+ completion.
861
874
  - The first review batch exists and at least 3 review rows have generated
862
875
  messages from the approved brief. If fewer than 3 usable rows exist, report
863
876
  the actual count and why.
@@ -931,7 +944,8 @@ Parent-thread handwritten copy or setting `currentStep` is not proof.
931
944
  **Also confirm the delivery format and keep config in sync.** Ask the user whether DM lanes should send multiline (paragraph-per-message) or as a single message. Record the answer as the brief's `Delivery format:` line, and when multiline is chosen, set `actionConfig.sendEachParagraphAsMessage: true` on that campaign's `send_dm` column via `update_column` (config edits run no cells and nothing sends from unlaunched campaigns). Never set the paragraph-split flag on InMail columns — the option does not apply to InMail.
932
945
  6. **Interactive polish mode only: prove the template on one real row.** For ONE campaign that has at least one lead row (add one via `add_on_demand_leads` if every lane is empty and the user provides/approves a test lead), generate a message for exactly one row (`queue_campaign_cells` with `columnRole: "generateMessage"`, `rowSelector: { type: "reviewBatch", limit: 1 }` or the single row's ID), wait for it, then show the user the generated message next to the template — AND show how it would split if paragraph-per-message sending is enabled (list each paragraph as `msg 1:`, `msg 2:`, …) so the user confirms each one reads like a real typed message. Check alignment: tone, structure, no internal vocabulary, correct token substitution, no letter punctuation. Do NOT approve the row or generate for more rows — one sample only.
933
946
  7. **Automation mode template/config audit**: inspect existing send-lane briefs for a `Delivery format:` line and chat-native warm template. If a send lane is missing the line and the prompt allows cleanup, update only the campaign brief metadata with the safest default for that lane (`Delivery format: single message (LinkedIn DM; line breaks remain inside one generated message; no follow-up until reply)`). If cleanup is not allowed, flag it. Do not generate a sample row in automation mode unless the invocation explicitly asks for sample proof. In structure-only automation, do not generate a sample row unless the invocation explicitly asks for sample proof. In customer-visible completion, follow the Customer-Visible Completion Contract instead.
934
- 8. **Report the reconcile plan and result** every slot tagged `reused`, `created`, `repaired`, `flagged`, or `blocked`, plus template/sample details only when that mode ran:
947
+ 8. **Final customer-facing completion must include sample messaging**: after customer-visible verify and the idempotency rerun pass, add a `Sample Messaging Review` section to the final answer. For every completed lane, show at least one full generated first message for every completed lane with campaign name, campaign id, row id, and verdict. Prefer the approved route-proof row when it is quality-valid; otherwise use the best reviewed generated row from the verified receipt. Do not summarize the sample into a copy theme. Show the actual message text so the user can inspect tone and specificity. If any sample is not quite right, tell the user they can ask the AI to update the campaign brief/message template and rerun Generate Message before launch. Never suggest launching, scheduling, or sending as the next step from this command.
948
+ 9. **Report the reconcile plan and result** — every slot tagged `reused`, `created`, `repaired`, `flagged`, or `blocked`, plus template/sample details only when that mode ran:
935
949
 
936
950
  ```
937
951
  Evergreen Reconcile — {date}
@@ -940,6 +954,17 @@ Evergreen Reconcile — {date}
940
954
  • Sellable.dev - Shared Signal Discovery: repaired (send review ready; 50 rows, 3 generated, 1 approved gate row, sequence attached, paused)
941
955
  • Sellable.dev - Shared Cold Fallback: created (send review ready; 50 rows, 3 generated, 1 approved gate row, sequence attached, paused)
942
956
  All campaigns remain unlaunched. Next: enrich/approve more rows when you want more items ready to schedule.
957
+
958
+ Sample Messaging Review
959
+ • Christian Reyes - Post Engagers (`cmp_...`, row `row_...`, verdict: passed)
960
+ ```
961
+ {{full generated first message}}
962
+ ```
963
+ • Sellable.dev - Shared Cold Fallback (`cmp_...`, row `row_...`, verdict: passed)
964
+ ```
965
+ {{full generated first message}}
966
+ ```
967
+ If any sample is not quite right, ask the AI to update the campaign brief/message template and rerun Generate Message before launch.
943
968
  ```
944
969
  </objective>
945
970
 
@@ -227,9 +227,31 @@ when those shared lanes were sourced from engagement-like signals. Shared lanes
227
227
  must choose a signal-led, event-led, job-post-led, or proof-led motion from the
228
228
  current brief and row evidence instead of inheriting a preset first-message
229
229
  template.
230
+ Post-engager first messages should thank the prospect for the support on the
231
+ sender-owned post before asking the light relevance question. Prefer the gold
232
+ shape `Thanks for the support on my post about {{post_topic_line}}` over
233
+ surveillance-flavored wording like `saw you pop up`, unless the sender explicitly
234
+ asks for that older wording.
230
235
  Short form: use the CXConnect Post-Engager Warm Reply-Rate Pattern only when the source is sender-owned Post Engagers.
231
236
  Short form: Never use that warm post-engager pattern for Shared Signal Discovery or Shared Cold Fallback.
232
237
 
238
+ ### Shared Cold Fallback quality bar
239
+
240
+ Shared Cold Fallback is a true cold lane. It must not pass just because a receipt
241
+ says `generate-messages` loaded or because generated cells exist. The samples
242
+ must read like final create-campaign/generate-messages output.
243
+
244
+ - Start from a concrete row-supported role/company/problem observation.
245
+ - Ask one clear buyer problem question.
246
+ - Keep the product line minimal and buyer-readable; do not turn the note into a
247
+ product-stack dump.
248
+ - Use no self-intro such as "We're building" or "We're working on a way" in the
249
+ reviewed samples.
250
+ - Use no opt-out shrug such as "If this isn't relevant, ignore me."
251
+ - Do not repeat the same Sellable/Codex/Claude-Code product summary across
252
+ samples. If two samples would still read the same after replacing names and
253
+ companies, revise or rerun.
254
+
233
255
  ### Rich Personalization Contract
234
256
 
235
257
  The `create-campaign` asset `references/ai-native-tokens.md` is the canonical