@sellable/mcp 0.1.255 → 0.1.256

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.
@@ -63,6 +63,10 @@ Hook research files must preserve:
63
63
  - source hook preview measurements, including text basis, char count including
64
64
  newlines, physical/content line counts, longest nonblank line, blank-line
65
65
  visual risk, and mobile/desktop preview budget status
66
+ - rendered preview records for every kept source hook and adapted hook block,
67
+ including literal mobile/desktop preview blocks, rendered line wraps, render
68
+ basis, CSS contract version, text widths, first-screen promise visibility,
69
+ core point visibility, and whether the point lands after the mobile clamp
66
70
  - extracted hook patterns
67
71
  - selected hook basis
68
72
 
@@ -83,6 +87,9 @@ Draft files must preserve:
83
87
  - draft body
84
88
  - validation receipt, including LinkedIn preview pass/warn/fail status and
85
89
  compact fallback when the selected hook carries a warning
90
+ - rendered mobile and desktop preview blocks for the selected hook; drafts
91
+ cannot be ready when this rendered-preview audit is missing or fails mobile
92
+ visibility
86
93
  - status: `draft`, `ready`, `needs_revision`, `published`, or `archived`
87
94
 
88
95
  Multiple drafts for the same idea are expected. Keep the `ideaId` stable and
@@ -78,6 +78,12 @@ Each candidate should include:
78
78
  - reader value implied
79
79
  - source pattern
80
80
  - score
81
+ - `renderedPreview` using `references/linkedin-preview-rendering.md`
82
+ - literal mobile and desktop rendered preview blocks
83
+ - mobile and desktop rendered line wraps
84
+ - first-screen promise: pain, proof, or curiosity visible by the mobile clamp
85
+ - whether the core point is visible in the mobile rendered preview
86
+ - whether the point lands after the mobile clamp
81
87
  - char count including newlines and first-line / first-two-line preview measurements
82
88
  - physical line count, content line count, longest nonblank line, and blank-line risk
83
89
  - `previewBudgetStatus`: `pass`, `warn`, or `fail`
@@ -98,7 +104,7 @@ After the first draft:
98
104
  6. replace generic language with concrete words only when supported
99
105
  7. preserve the user's actual story and point
100
106
  8. remove AI tells
101
- 9. re-check LinkedIn preview fit after edits
107
+ 9. re-render the selected hook on mobile and desktop after edits
102
108
 
103
109
  ## Premise Value Audit
104
110
 
@@ -149,22 +155,65 @@ proof from another creator, save as `needs_revision`.
149
155
 
150
156
  ## LinkedIn Preview Audit
151
157
 
152
- Audit the selected hook and top candidates against conservative LinkedIn
153
- preview budgets. LinkedIn does not publish exact "see more" cutoff rules, and
154
- rendering varies by device, app version, font, media, and line break. This audit
155
- is a mobile-first safety gate, not a claim about an official LinkedIn limit.
156
-
157
- Use:
158
-
159
- - `pass`: hook is <= 110 chars including newlines, every nonblank line is <= 45 chars, and the hook's core point lands before likely truncation.
160
- - `warn`: hook is 111-140 chars including newlines, any nonblank line is 46-55 chars, or blank lines create visual-line risk. Blank lines are allowed, but they count as physical lines.
161
- - `fail`: hook is > 140 chars including newlines, any nonblank line is > 55 chars, or the hook's point depends on text after likely truncation.
158
+ Audit the selected hook and top candidates against
159
+ `references/linkedin-preview-rendering.md`. LinkedIn does not publish exact
160
+ "see more" cutoff rules, and rendering varies by device, app version, font,
161
+ media, and line break. This audit is a mobile-first rendered-preview safety
162
+ gate, not a claim about an official LinkedIn limit.
163
+
164
+ Character budgets are secondary diagnostics. They cannot be the only evidence
165
+ that a hook works. Every selected hook must include literal rendered mobile and
166
+ desktop preview blocks.
167
+
168
+ Default deterministic renderer when no authenticated LinkedIn screenshot is
169
+ available:
170
+
171
+ ```text
172
+ cssContractVersion: linkedin-preview-rendering/v1
173
+ font size: 14px
174
+ line height: 21px
175
+ white space: pre-wrap
176
+ overflow wrap: break-word
177
+ mobile text width: 308px
178
+ desktop text width: 582px
179
+ review clamp: first 3 rendered text lines
180
+ ```
181
+
182
+ Use rendered gates:
183
+
184
+ - `pass`: the mobile rendered preview shows the pain, proof, or curiosity by
185
+ the end of the first 3 rendered lines, and the core point is understandable
186
+ without opening "see more".
187
+ - `warn`: the mobile rendered preview creates useful curiosity but the core
188
+ point is slightly softened by wrapping, blank-line rhythm, or one missing
189
+ context word. A compact fallback is required.
190
+ - `fail`: the hook's real point appears after the first 3 mobile rendered
191
+ lines, the first rendered line is generic setup, blank lines consume the
192
+ preview before the reader sees the point, or desktop fit is the only reason it
193
+ looks good.
162
194
 
163
195
  Desktop preview usually has more room. Still record desktop fit, but never let
164
196
  desktop fit compensate for a mobile `fail`.
165
197
 
166
198
  Record:
167
199
 
200
+ - `renderedPreview`
201
+ - `renderBasis`: `linkedin_css_contract`, `authenticated_linkedin_screenshot`,
202
+ or `manual_user_source`
203
+ - `cssContractVersion`
204
+ - `mobileRenderedPreviewBlock`
205
+ - `desktopRenderedPreviewBlock`
206
+ - `mobileRenderedLines`
207
+ - `desktopRenderedLines`
208
+ - `mobileTextWidthPx`
209
+ - `desktopTextWidthPx`
210
+ - `mobileRenderedLineCount`
211
+ - `desktopRenderedLineCount`
212
+ - `corePainProofOrCuriosityVisibleMobile`
213
+ - `corePainProofOrCuriosityVisibleDesktop`
214
+ - `corePointVisibleMobile`
215
+ - `corePointVisibleDesktop`
216
+ - `pointAfterMobileClamp`
168
217
  - `charCount`
169
218
  - `charCountIncludingNewlines`
170
219
  - `firstLineChars`
@@ -183,10 +232,14 @@ Record:
183
232
  - `rewriteIfTruncated`
184
233
  - `compactFallback` when `previewBudgetStatus` is `warn`
185
234
 
186
- If the hook only works after likely truncation, rewrite it. A draft cannot be
187
- `ready` with `previewBudgetStatus: fail`. A draft may be `ready` with
188
- `previewBudgetStatus: warn` only when the warning is explicit, usually because
189
- the user prefers blank-line rhythm, and the receipt includes a compact fallback.
235
+ If the hook only works after the rendered mobile clamp, rewrite it. A draft
236
+ cannot be `ready` with `previewBudgetStatus: fail`,
237
+ `mobilePreviewFit: fail`, missing `renderedPreview`,
238
+ `corePainProofOrCuriosityVisibleMobile: false`,
239
+ `corePointVisibleMobile: false`, or `pointAfterMobileClamp: true`. A draft may
240
+ be `ready` with `previewBudgetStatus: warn` only when the warning is explicit,
241
+ usually because the user prefers blank-line rhythm, and the receipt includes a
242
+ compact fallback.
190
243
 
191
244
  ## Simplifier / Concrete-Language Audit
192
245
 
@@ -90,7 +90,6 @@ should stay focused on source evidence.
90
90
  - `mcp__sellable__search_prospeo`
91
91
  - `mcp__sellable__search_prospeo_companies`
92
92
  - `mcp__sellable__confirm_prospeo_company_accounts`
93
- - `mcp__sellable__list_dnc_entries`
94
93
  - `mcp__sellable__load_csv_dnc_entries`
95
94
  - `mcp__sellable__load_csv_domains`
96
95
  - `mcp__sellable__load_csv_linkedin_leads`
@@ -106,9 +105,6 @@ should stay focused on source evidence.
106
105
  list after confirming the exact active workspace. Keep the mechanism to
107
106
  Sellable DNC and `DNC Check`, not provider search work or Prospeo domain
108
107
  filters.
109
- - If the user asks to see the current DNC count, list names, or first page
110
- before import, call `list_dnc_entries`. Report the active workspace name and
111
- ID from the tool response before any DNC write.
112
108
  - Do not infer sender identities from meeting attendance alone. Only treat someone as a sender when the source material explicitly identifies them as a sender or supplies their LinkedIn URL.
113
109
  - Do not ask Layer 1 questions already answered by a transcript, ICP doc, or Layer 0 research.
114
110
  - Do not include Apollo in the explorer set for this phase.
@@ -140,8 +136,6 @@ Execution flow:
140
136
  DNC entries.
141
137
  - Campaign creation already includes `DNC Check`, which checks domain/profile
142
138
  before message generation.
143
- - If the user wants the existing DNC count or first page first, call
144
- `list_dnc_entries` before previewing the import.
145
139
  3. If the user has a CSV of LinkedIn profile URLs on disk, call `load_csv_linkedin_leads` first.
146
140
  - Preview, confirm, then review the resulting lead list before `confirm_lead_list`.
147
141
  - Confirmed execution uploads the raw CSV file, starts the server-owned import job, and waits on lead-list readiness before returning.
@@ -0,0 +1,9 @@
1
+ {
2
+ "parallelMode": "wide",
3
+ "agentCount": 6,
4
+ "maxToolCallsPerAgent": 2,
5
+ "senderMaxAgents": 2,
6
+ "senderMaxToolCallsPerAgent": 3,
7
+ "progressMode": true,
8
+ "debugMode": true
9
+ }