@sellable/install 0.1.331 → 0.1.333-phase981.202607110535
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/HERMES-SLACK-PROFILE-SCOPING.md +2 -19
- package/README.md +5 -0
- package/bin/sellable-install.mjs +81 -13
- package/lib/runtime-verify.mjs +31 -2
- package/package.json +1 -1
- package/skill-templates/find-leads.md +57 -0
|
@@ -15,9 +15,6 @@ customer's profile-local Sellable MCP config. Customer profiles must not store
|
|
|
15
15
|
or read Sellable Admin MCP credentials, admin Slack app tokens, or sibling
|
|
16
16
|
profile config.
|
|
17
17
|
|
|
18
|
-
The shared dispatcher remains a fallback/research path only. Use it only when
|
|
19
|
-
Sellable Admin explicitly owns one shared listener and route registry.
|
|
20
|
-
|
|
21
18
|
The 2026-07-06 Hostinger POC proved the native Hermes listener for the
|
|
22
19
|
`sellable-admin` profile with the existing `Sellable Reply Bot` app in
|
|
23
20
|
`#team-chat`: a human mention produced a new Hermes session and a threaded bot
|
|
@@ -34,8 +31,7 @@ hermes --profile acme send --to slack:C0BFERDV3N0 --subject '[Hermes acme smoke]
|
|
|
34
31
|
|
|
35
32
|
That succeeded and is useful as an internal smoke test. It does not change the
|
|
36
33
|
inbound listener rule: each active customer profile needs its own native Slack
|
|
37
|
-
app token pair
|
|
38
|
-
fallback.
|
|
34
|
+
app token pair.
|
|
39
35
|
|
|
40
36
|
## Which Slack Values Are Enough
|
|
41
37
|
|
|
@@ -128,27 +124,14 @@ closed before making Sellable API calls instead of falling back to shared or
|
|
|
128
124
|
admin config state. Only the `sellable-admin` profile should provision,
|
|
129
125
|
inspect, or repair other profiles.
|
|
130
126
|
|
|
131
|
-
For the shared dispatcher model, do not copy the shared `SLACK_BOT_TOKEN` or
|
|
132
|
-
`SLACK_APP_TOKEN` into customer profile `.env` files. The dispatcher owns those
|
|
133
|
-
tokens and route metadata decides the customer profile.
|
|
134
|
-
|
|
135
|
-
## Shared Dispatcher Ownership
|
|
136
|
-
|
|
137
|
-
The shared Slack dispatcher and its route registry are fallback Sellable Admin
|
|
138
|
-
surfaces. This customer-facing installer must not create shared route bundles or
|
|
139
|
-
write shared listener tokens. Sellable Admin owns Slack app creation and profile
|
|
140
|
-
provisioning, then calls this installer for profile-local Sellable runtime
|
|
141
|
-
bootstrap inside the already-provisioned Hermes profile.
|
|
142
|
-
|
|
143
127
|
## Verification
|
|
144
128
|
|
|
145
|
-
Run the installer and
|
|
129
|
+
Run the installer and native profile UAT before publishing installer changes:
|
|
146
130
|
|
|
147
131
|
```bash
|
|
148
132
|
npm run test:unit -- tests/install-package/agent-preferences.test.ts
|
|
149
133
|
scripts/run-phase92-hermes-profile-bootstrap-uat.sh --mode local-temp
|
|
150
134
|
scripts/run-phase92-hermes-profile-bootstrap-uat.sh --mode linux-shaped
|
|
151
|
-
scripts/run-phase031-hermes-slack-dispatcher-uat.sh --mode local-fixture
|
|
152
135
|
```
|
|
153
136
|
|
|
154
137
|
Expected proof:
|
package/README.md
CHANGED
|
@@ -212,6 +212,7 @@ source-scout agents.
|
|
|
212
212
|
Use the same public entrypoints across supported hosts:
|
|
213
213
|
|
|
214
214
|
- Claude Code: `/sellable:create-campaign`
|
|
215
|
+
- Claude Code: `/sellable:find-leads`
|
|
215
216
|
- Claude Code: `/sellable:create-ab-test`
|
|
216
217
|
- Claude Code: `/sellable:create-evergreen-campaigns`
|
|
217
218
|
- Claude Code: `/sellable:foundation`
|
|
@@ -220,6 +221,7 @@ Use the same public entrypoints across supported hosts:
|
|
|
220
221
|
- Claude Code: `/sellable:refresh-sender-engagement`
|
|
221
222
|
- Claude Code: `/sellable:refill-sends`
|
|
222
223
|
- Codex: `$sellable:create-campaign`
|
|
224
|
+
- Codex: `$sellable:find-leads`
|
|
223
225
|
- Codex: `$sellable:create-ab-test`
|
|
224
226
|
- Codex: `$sellable:create-evergreen-campaigns`
|
|
225
227
|
- Codex: `$sellable:foundation`
|
|
@@ -228,6 +230,7 @@ Use the same public entrypoints across supported hosts:
|
|
|
228
230
|
- Codex: `$sellable:refresh-sender-engagement`
|
|
229
231
|
- Codex: `$sellable:refill-sends`
|
|
230
232
|
- Hermes: `/sellable-create-campaign`
|
|
233
|
+
- Hermes: `/sellable-find-leads`
|
|
231
234
|
- Hermes: `/sellable-create-ab-test`
|
|
232
235
|
- Hermes: `/sellable-create-evergreen-campaigns`
|
|
233
236
|
- Hermes: `/sellable-foundation`
|
|
@@ -237,6 +240,7 @@ Use the same public entrypoints across supported hosts:
|
|
|
237
240
|
- Hermes: `/sellable-refill-sends`
|
|
238
241
|
- Codex Desktop plugin: `sellable@sellable`
|
|
239
242
|
- Codex visible skill: `Sellable Create Campaign`
|
|
243
|
+
- Codex visible skill: `Sellable Find Leads`
|
|
240
244
|
- Codex visible skill: `Sellable Create A/B Test`
|
|
241
245
|
- Codex visible skill: `Sellable Create Evergreen Campaigns`
|
|
242
246
|
- Codex visible skill: `Sellable Foundation`
|
|
@@ -245,6 +249,7 @@ Use the same public entrypoints across supported hosts:
|
|
|
245
249
|
- Codex visible skill: `Sellable Refresh Sender Engagement`
|
|
246
250
|
- Codex visible skill: `Sellable Refill Sends`
|
|
247
251
|
- Internal MCP workflow prompt: `create-campaign-v2`
|
|
252
|
+
- Internal MCP workflow prompt: `find-leads-v2`
|
|
248
253
|
- Internal MCP workflow prompt: `refill-sends-workflow`
|
|
249
254
|
- Internal/backward-compatible memory prompt: `interview`
|
|
250
255
|
|
package/bin/sellable-install.mjs
CHANGED
|
@@ -48,7 +48,7 @@ function getInstallVersion() {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
const CODEX_PLUGIN_VERSION = "0.1.
|
|
51
|
+
const CODEX_PLUGIN_VERSION = "0.1.63-phase981.202607110535";
|
|
52
52
|
const CODEX_PLUGIN_COMPAT_VERSIONS = [
|
|
53
53
|
"0.1.8",
|
|
54
54
|
"0.1.9",
|
|
@@ -213,6 +213,7 @@ Options:
|
|
|
213
213
|
Auth:
|
|
214
214
|
Install is auth-free by default. Sign in happens on the first run of
|
|
215
215
|
/sellable:create-campaign, /sellable:create-evergreen-campaigns,
|
|
216
|
+
/sellable:find-leads,
|
|
216
217
|
/sellable:foundation, /sellable:content, /sellable:create-post,
|
|
217
218
|
/sellable:refresh-sender-engagement, or /sellable:refill-sends in Claude Code,
|
|
218
219
|
Codex, or Hermes,
|
|
@@ -240,11 +241,9 @@ Hermes profile bootstrap:
|
|
|
240
241
|
workspace id is supplied, so a customer profile fails closed if the workspace
|
|
241
242
|
lock is later removed or not yet provisioned.
|
|
242
243
|
|
|
243
|
-
Hermes
|
|
244
|
-
|
|
245
|
-
Admin
|
|
246
|
-
profile-local Sellable runtime after Sellable Admin provisions the profile
|
|
247
|
-
and dispatcher route.
|
|
244
|
+
Hermes customer Slack runtime:
|
|
245
|
+
Each customer profile uses its own dedicated native Slack app and gateway.
|
|
246
|
+
Sellable Admin owns the single resumable customer bootstrap interface.
|
|
248
247
|
`;
|
|
249
248
|
}
|
|
250
249
|
|
|
@@ -1124,6 +1123,35 @@ const CREATE_CAMPAIGN_ALLOWED_TOOLS = [
|
|
|
1124
1123
|
"mcp__sellable__start_campaign",
|
|
1125
1124
|
];
|
|
1126
1125
|
|
|
1126
|
+
const FIND_LEADS_ALLOWED_TOOLS = [
|
|
1127
|
+
"mcp__sellable__get_auth_status",
|
|
1128
|
+
"mcp__sellable__start_cli_login",
|
|
1129
|
+
"mcp__sellable__wait_for_cli_login",
|
|
1130
|
+
"mcp__sellable__get_active_workspace",
|
|
1131
|
+
"mcp__sellable__list_workspaces",
|
|
1132
|
+
"mcp__sellable__set_active_workspace",
|
|
1133
|
+
"mcp__sellable__get_subskill_prompt",
|
|
1134
|
+
"mcp__sellable__get_subskill_asset",
|
|
1135
|
+
"mcp__sellable__search_subskill_prompts",
|
|
1136
|
+
"mcp__sellable__get_provider_prompt",
|
|
1137
|
+
"mcp__sellable__bootstrap_find_leads",
|
|
1138
|
+
"mcp__sellable__get_find_leads_run",
|
|
1139
|
+
"mcp__sellable__update_find_leads_run",
|
|
1140
|
+
"mcp__sellable__wait_for_find_leads_run",
|
|
1141
|
+
"mcp__sellable__cancel_find_leads",
|
|
1142
|
+
"mcp__sellable__reissue_find_leads_watch_link",
|
|
1143
|
+
"mcp__sellable__preflight_find_leads_provider",
|
|
1144
|
+
"mcp__sellable__lookup_sales_nav_filter",
|
|
1145
|
+
"mcp__sellable__search_sales_nav",
|
|
1146
|
+
"mcp__sellable__search_prospeo",
|
|
1147
|
+
"mcp__sellable__search_signals",
|
|
1148
|
+
"mcp__sellable__select_promising_posts",
|
|
1149
|
+
"mcp__sellable__import_leads",
|
|
1150
|
+
"mcp__sellable__wait_for_lead_list_ready",
|
|
1151
|
+
"mcp__sellable__get_rows_minimal",
|
|
1152
|
+
"mcp__sellable__export_table_csv",
|
|
1153
|
+
];
|
|
1154
|
+
|
|
1127
1155
|
const CREATE_EVERGREEN_CAMPAIGNS_ALLOWED_TOOLS = [
|
|
1128
1156
|
...CREATE_CAMPAIGN_ALLOWED_TOOLS,
|
|
1129
1157
|
"mcp__sellable__setup_evergreen_campaigns",
|
|
@@ -1939,6 +1967,17 @@ then retry \`get_subskill_prompt\`.
|
|
|
1939
1967
|
`, host, "create-campaign");
|
|
1940
1968
|
}
|
|
1941
1969
|
|
|
1970
|
+
function findLeadsSkillMd(host = "shared") {
|
|
1971
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
1972
|
+
const templatePath = join(here, "..", "skill-templates", "find-leads.md");
|
|
1973
|
+
if (!existsSync(templatePath)) {
|
|
1974
|
+
throw new Error(
|
|
1975
|
+
"Find Leads skill template is missing or stale. Reinstall @sellable/install and retry."
|
|
1976
|
+
);
|
|
1977
|
+
}
|
|
1978
|
+
return stampInstalledHost(readFileSync(templatePath, "utf8"), host, "find-leads");
|
|
1979
|
+
}
|
|
1980
|
+
|
|
1942
1981
|
function createAbTestSkillMd(host = "shared") {
|
|
1943
1982
|
try {
|
|
1944
1983
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
@@ -2713,6 +2752,12 @@ will change or after they approve the settings update.
|
|
|
2713
2752
|
|
|
2714
2753
|
function codexPluginSkills(opts = {}) {
|
|
2715
2754
|
return [
|
|
2755
|
+
{
|
|
2756
|
+
dir: "sellable-find-leads",
|
|
2757
|
+
displayName: "Sellable Find Leads",
|
|
2758
|
+
description: "Find prospects and build a live exportable lead list",
|
|
2759
|
+
skillMd: findLeadsSkillMd("codex"),
|
|
2760
|
+
},
|
|
2716
2761
|
{
|
|
2717
2762
|
dir: "sellable-create-campaign",
|
|
2718
2763
|
displayName: "Sellable Create Campaign",
|
|
@@ -2953,6 +2998,14 @@ then retry \`get_subskill_prompt\`.
|
|
|
2953
2998
|
|
|
2954
2999
|
function hermesSkillDefinitions(opts = {}) {
|
|
2955
3000
|
return [
|
|
3001
|
+
{
|
|
3002
|
+
commandName: "find-leads",
|
|
3003
|
+
dir: hermesCommandName("find-leads"),
|
|
3004
|
+
skillMd: normalizeHermesSkillMarkdown(
|
|
3005
|
+
findLeadsSkillMd("hermes"),
|
|
3006
|
+
"find-leads"
|
|
3007
|
+
),
|
|
3008
|
+
},
|
|
2956
3009
|
{
|
|
2957
3010
|
commandName: "create-campaign",
|
|
2958
3011
|
dir: hermesCommandName("create-campaign"),
|
|
@@ -3203,6 +3256,15 @@ ${stripFrontmatter(command.skillMd)}
|
|
|
3203
3256
|
|
|
3204
3257
|
function claudeCommands(opts = {}) {
|
|
3205
3258
|
return [
|
|
3259
|
+
{
|
|
3260
|
+
name: "find-leads",
|
|
3261
|
+
title: "Find Leads",
|
|
3262
|
+
filename: join("sellable", "find-leads.md"),
|
|
3263
|
+
description: "Find prospects and build a live exportable Sellable lead list.",
|
|
3264
|
+
argumentHint: "[target audience, provider, or lead-list goal]",
|
|
3265
|
+
skillMd: findLeadsSkillMd("claude"),
|
|
3266
|
+
allowedTools: ["AskUserQuestion", ...FIND_LEADS_ALLOWED_TOOLS],
|
|
3267
|
+
},
|
|
3206
3268
|
{
|
|
3207
3269
|
name: "create-campaign",
|
|
3208
3270
|
title: "Create Campaign",
|
|
@@ -5437,7 +5499,8 @@ function printNextSteps(installedHosts, authReused, opts = {}) {
|
|
|
5437
5499
|
console.log("");
|
|
5438
5500
|
|
|
5439
5501
|
if (hasClaude) {
|
|
5440
|
-
|
|
5502
|
+
printAgentBox("Using Claude Code?", "claude", [
|
|
5503
|
+
{ label: "Find Leads", command: "/sellable:find-leads" },
|
|
5441
5504
|
{ label: "Campaign", command: "/sellable:create-campaign" },
|
|
5442
5505
|
{ label: "Evergreen", command: "/sellable:create-evergreen-campaigns" },
|
|
5443
5506
|
{ label: "Foundation", command: "/sellable:foundation" },
|
|
@@ -5450,7 +5513,8 @@ function printNextSteps(installedHosts, authReused, opts = {}) {
|
|
|
5450
5513
|
console.log("");
|
|
5451
5514
|
}
|
|
5452
5515
|
if (hasCodex) {
|
|
5453
|
-
|
|
5516
|
+
printAgentBox("Using Codex?", "codex", [
|
|
5517
|
+
{ label: "Find Leads", command: "$sellable:find-leads" },
|
|
5454
5518
|
{ label: "Campaign", command: "$sellable:create-campaign" },
|
|
5455
5519
|
{ label: "Evergreen", command: "$sellable:create-evergreen-campaigns" },
|
|
5456
5520
|
{ label: "Foundation", command: "$sellable:foundation" },
|
|
@@ -5462,7 +5526,8 @@ function printNextSteps(installedHosts, authReused, opts = {}) {
|
|
|
5462
5526
|
console.log("");
|
|
5463
5527
|
}
|
|
5464
5528
|
if (hasHermes) {
|
|
5465
|
-
|
|
5529
|
+
printAgentBox("Using Hermes?", "hermes", [
|
|
5530
|
+
{ label: "Find Leads", command: "/sellable-find-leads" },
|
|
5466
5531
|
{ label: "Campaign", command: "/sellable-create-campaign" },
|
|
5467
5532
|
{ label: "A/B Test", command: "/sellable-create-ab-test" },
|
|
5468
5533
|
{ label: "Evergreen", command: "/sellable-create-evergreen-campaigns" },
|
|
@@ -5832,22 +5897,25 @@ async function main() {
|
|
|
5832
5897
|
if (workspaceId) {
|
|
5833
5898
|
console.log(` activeWorkspaceId: ${workspaceId}`);
|
|
5834
5899
|
}
|
|
5835
|
-
|
|
5836
|
-
|
|
5900
|
+
console.log(` Continue in your agent:`);
|
|
5901
|
+
console.log(` Claude Code: /sellable:find-leads`);
|
|
5902
|
+
console.log(` Claude Code: /sellable:create-campaign`);
|
|
5837
5903
|
console.log(` Claude Code: /sellable:create-evergreen-campaigns`);
|
|
5838
5904
|
console.log(` Claude Code: /sellable:foundation`);
|
|
5839
5905
|
console.log(` Claude Code: /sellable:content`);
|
|
5840
5906
|
console.log(` Claude Code: /sellable:create-post`);
|
|
5841
5907
|
console.log(` Claude Code: /sellable:refresh-sender-engagement`);
|
|
5842
5908
|
console.log(` Claude Code: /sellable:refill-sends`);
|
|
5843
|
-
|
|
5909
|
+
console.log(` Codex: $sellable:find-leads`);
|
|
5910
|
+
console.log(` Codex: $sellable:create-campaign`);
|
|
5844
5911
|
console.log(` Codex: $sellable:create-evergreen-campaigns`);
|
|
5845
5912
|
console.log(` Codex: $sellable:foundation`);
|
|
5846
5913
|
console.log(` Codex: $sellable:content`);
|
|
5847
5914
|
console.log(` Codex: $sellable:create-post`);
|
|
5848
5915
|
console.log(` Codex: $sellable:refresh-sender-engagement`);
|
|
5849
5916
|
console.log(` Codex: $sellable:refill-sends`);
|
|
5850
|
-
|
|
5917
|
+
console.log(` Hermes: /sellable-find-leads`);
|
|
5918
|
+
console.log(` Hermes: /sellable-create-campaign`);
|
|
5851
5919
|
console.log(` Hermes: /sellable-create-evergreen-campaigns`);
|
|
5852
5920
|
console.log(` Hermes: /sellable-foundation`);
|
|
5853
5921
|
console.log(` Hermes: /sellable-content`);
|
package/lib/runtime-verify.mjs
CHANGED
|
@@ -11,13 +11,25 @@ export const REQUIRED_SELLABLE_MCP_TOOLS = [
|
|
|
11
11
|
"start_cli_login",
|
|
12
12
|
"wait_for_cli_login",
|
|
13
13
|
"bootstrap_create_campaign",
|
|
14
|
+
"bootstrap_find_leads",
|
|
15
|
+
"get_find_leads_run",
|
|
16
|
+
"update_find_leads_run",
|
|
17
|
+
"wait_for_find_leads_run",
|
|
18
|
+
"cancel_find_leads",
|
|
19
|
+
"reissue_find_leads_watch_link",
|
|
20
|
+
"preflight_find_leads_provider",
|
|
14
21
|
"get_subskill_prompt",
|
|
15
22
|
"get_subskill_asset",
|
|
16
23
|
"search_subskill_prompts",
|
|
17
24
|
"create_campaign",
|
|
18
25
|
"import_leads",
|
|
26
|
+
"search_sales_nav",
|
|
27
|
+
"search_prospeo",
|
|
28
|
+
"search_signals",
|
|
29
|
+
"select_promising_posts",
|
|
19
30
|
"confirm_lead_list",
|
|
20
31
|
"wait_for_lead_list_ready",
|
|
32
|
+
"export_table_csv",
|
|
21
33
|
"wait_for_campaign_table_ready",
|
|
22
34
|
"update_campaign",
|
|
23
35
|
"update_campaign_brief",
|
|
@@ -76,6 +88,14 @@ export const CREATE_CAMPAIGN_SMOKE_CALLS = [
|
|
|
76
88
|
limit: 1200,
|
|
77
89
|
},
|
|
78
90
|
},
|
|
91
|
+
{
|
|
92
|
+
name: "get_subskill_prompt",
|
|
93
|
+
arguments: {
|
|
94
|
+
subskillName: "find-leads-v2",
|
|
95
|
+
offset: 0,
|
|
96
|
+
limit: 1200,
|
|
97
|
+
},
|
|
98
|
+
},
|
|
79
99
|
{
|
|
80
100
|
name: "get_subskill_prompt",
|
|
81
101
|
arguments: {
|
|
@@ -117,6 +137,15 @@ export const CREATE_CAMPAIGN_SMOKE_CALLS = [
|
|
|
117
137
|
limit: 1200,
|
|
118
138
|
},
|
|
119
139
|
},
|
|
140
|
+
{
|
|
141
|
+
name: "get_subskill_asset",
|
|
142
|
+
arguments: {
|
|
143
|
+
subskillName: "find-leads-v2",
|
|
144
|
+
assetPath: "core/flow.v1.json",
|
|
145
|
+
offset: 0,
|
|
146
|
+
limit: 1200,
|
|
147
|
+
},
|
|
148
|
+
},
|
|
120
149
|
];
|
|
121
150
|
|
|
122
151
|
function collectStderrLines(stream) {
|
|
@@ -343,7 +372,7 @@ async function verifyCreateCampaignSmoke({
|
|
|
343
372
|
ok: false,
|
|
344
373
|
missingTools,
|
|
345
374
|
calls,
|
|
346
|
-
error: `Missing
|
|
375
|
+
error: `Missing or stale Sellable MCP tool(s): ${missingTools.join(", ")}. Reinstall @sellable/install and @sellable/mcp, restart or reload the host, then retry Find Leads.`,
|
|
347
376
|
startedAt,
|
|
348
377
|
completedAt: new Date().toISOString(),
|
|
349
378
|
};
|
|
@@ -662,7 +691,7 @@ async function verifySellableMcpRuntimeOnce({
|
|
|
662
691
|
),
|
|
663
692
|
calls: [],
|
|
664
693
|
error:
|
|
665
|
-
"
|
|
694
|
+
"Sellable MCP is missing required tools. Reinstall @sellable/install and @sellable/mcp, restart or reload the host, then retry Find Leads.",
|
|
666
695
|
startedAt: new Date().toISOString(),
|
|
667
696
|
completedAt: new Date().toISOString(),
|
|
668
697
|
};
|
package/package.json
CHANGED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: find-leads
|
|
3
|
+
description: Find or source prospects, build and watch a live Sellable lead list, and export the finished list without creating a campaign.
|
|
4
|
+
visibility: public
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- mcp__sellable__get_auth_status
|
|
7
|
+
- mcp__sellable__start_cli_login
|
|
8
|
+
- mcp__sellable__wait_for_cli_login
|
|
9
|
+
- mcp__sellable__get_active_workspace
|
|
10
|
+
- mcp__sellable__list_workspaces
|
|
11
|
+
- mcp__sellable__set_active_workspace
|
|
12
|
+
- mcp__sellable__get_subskill_prompt
|
|
13
|
+
- mcp__sellable__get_subskill_asset
|
|
14
|
+
- mcp__sellable__search_subskill_prompts
|
|
15
|
+
- mcp__sellable__get_provider_prompt
|
|
16
|
+
- mcp__sellable__bootstrap_find_leads
|
|
17
|
+
- mcp__sellable__get_find_leads_run
|
|
18
|
+
- mcp__sellable__update_find_leads_run
|
|
19
|
+
- mcp__sellable__wait_for_find_leads_run
|
|
20
|
+
- mcp__sellable__cancel_find_leads
|
|
21
|
+
- mcp__sellable__reissue_find_leads_watch_link
|
|
22
|
+
- mcp__sellable__preflight_find_leads_provider
|
|
23
|
+
- mcp__sellable__lookup_sales_nav_filter
|
|
24
|
+
- mcp__sellable__search_sales_nav
|
|
25
|
+
- mcp__sellable__search_prospeo
|
|
26
|
+
- mcp__sellable__search_signals
|
|
27
|
+
- mcp__sellable__select_promising_posts
|
|
28
|
+
- mcp__sellable__import_leads
|
|
29
|
+
- mcp__sellable__wait_for_lead_list_ready
|
|
30
|
+
- mcp__sellable__get_rows_minimal
|
|
31
|
+
- mcp__sellable__export_table_csv
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
# Sellable Find Leads
|
|
35
|
+
|
|
36
|
+
Use this public command when the user asks to find or source prospects, build a lead list,
|
|
37
|
+
watch the list fill in real time, review leads, or export the list.
|
|
38
|
+
It works without an existing campaign.
|
|
39
|
+
|
|
40
|
+
## Load the canonical workflow
|
|
41
|
+
|
|
42
|
+
1. Call `mcp__sellable__get_auth_status({})` and complete login/workspace setup
|
|
43
|
+
if required.
|
|
44
|
+
2. Load `mcp__sellable__get_subskill_prompt({ subskillName: "find-leads-v2" })`.
|
|
45
|
+
Continue chunks until `hasMore` is false.
|
|
46
|
+
3. Load `mcp__sellable__get_subskill_asset({ subskillName: "find-leads-v2",
|
|
47
|
+
assetPath: "core/flow.v1.json" })`.
|
|
48
|
+
4. Execute that prompt and flow as the operational source of truth.
|
|
49
|
+
|
|
50
|
+
Do not emulate the workflow from memory or local files. If prompt or asset
|
|
51
|
+
loading fails, use `search_subskill_prompts({ query: "find-leads-v2",
|
|
52
|
+
includePublic: true, includeInternal: true })`, retry once, then give the
|
|
53
|
+
workflow's reinstall/reload guidance.
|
|
54
|
+
|
|
55
|
+
Keep approval questions in the current chat. A source-plan approval allows only
|
|
56
|
+
the bounded provider search. A later import approval is required before rows
|
|
57
|
+
are materialized. Export uses the source list directly.
|