@sellable/mcp 0.1.0

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.
Files changed (200) hide show
  1. package/.claude-plugin/plugin.json +12 -0
  2. package/.mcp.json +9 -0
  3. package/README.md +355 -0
  4. package/dist/api.d.ts +21 -0
  5. package/dist/api.js +73 -0
  6. package/dist/auth.d.ts +60 -0
  7. package/dist/auth.js +246 -0
  8. package/dist/engage-memory.d.ts +63 -0
  9. package/dist/engage-memory.js +354 -0
  10. package/dist/index-dev.d.ts +2 -0
  11. package/dist/index-dev.js +17 -0
  12. package/dist/index.d.ts +7 -0
  13. package/dist/index.js +8 -0
  14. package/dist/server.d.ts +1 -0
  15. package/dist/server.js +499 -0
  16. package/dist/skills.d.ts +11 -0
  17. package/dist/skills.js +97 -0
  18. package/dist/tools/auth.d.ts +30 -0
  19. package/dist/tools/auth.js +124 -0
  20. package/dist/tools/blueprint-commit.d.ts +174 -0
  21. package/dist/tools/blueprint-commit.js +286 -0
  22. package/dist/tools/bootstrap.d.ts +64 -0
  23. package/dist/tools/bootstrap.js +246 -0
  24. package/dist/tools/campaigns.d.ts +589 -0
  25. package/dist/tools/campaigns.js +892 -0
  26. package/dist/tools/cells.d.ts +58 -0
  27. package/dist/tools/cells.js +48 -0
  28. package/dist/tools/context.d.ts +88 -0
  29. package/dist/tools/context.js +271 -0
  30. package/dist/tools/csv-domains.d.ts +73 -0
  31. package/dist/tools/csv-domains.js +464 -0
  32. package/dist/tools/csv-linkedin.d.ts +102 -0
  33. package/dist/tools/csv-linkedin.js +712 -0
  34. package/dist/tools/direct-campaigns.d.ts +240 -0
  35. package/dist/tools/direct-campaigns.js +250 -0
  36. package/dist/tools/engage-bootstrap.d.ts +94 -0
  37. package/dist/tools/engage-bootstrap.js +205 -0
  38. package/dist/tools/engage-discovery.d.ts +78 -0
  39. package/dist/tools/engage-discovery.js +150 -0
  40. package/dist/tools/engage-memory.d.ts +181 -0
  41. package/dist/tools/engage-memory.js +143 -0
  42. package/dist/tools/engage-state.d.ts +72 -0
  43. package/dist/tools/engage-state.js +62 -0
  44. package/dist/tools/enrichment.d.ts +167 -0
  45. package/dist/tools/enrichment.js +174 -0
  46. package/dist/tools/flow-preflight.d.ts +68 -0
  47. package/dist/tools/flow-preflight.js +138 -0
  48. package/dist/tools/framework.d.ts +44 -0
  49. package/dist/tools/framework.js +153 -0
  50. package/dist/tools/interaction-mode.d.ts +27 -0
  51. package/dist/tools/interaction-mode.js +102 -0
  52. package/dist/tools/leads.d.ts +2417 -0
  53. package/dist/tools/leads.js +2307 -0
  54. package/dist/tools/linkedin.d.ts +210 -0
  55. package/dist/tools/linkedin.js +229 -0
  56. package/dist/tools/navigation.d.ts +91 -0
  57. package/dist/tools/navigation.js +381 -0
  58. package/dist/tools/one-off.d.ts +229 -0
  59. package/dist/tools/one-off.js +273 -0
  60. package/dist/tools/processing.d.ts +70 -0
  61. package/dist/tools/processing.js +56 -0
  62. package/dist/tools/prompts.d.ts +211 -0
  63. package/dist/tools/prompts.js +210 -0
  64. package/dist/tools/provider-preflight.d.ts +21 -0
  65. package/dist/tools/provider-preflight.js +59 -0
  66. package/dist/tools/readiness.d.ts +261 -0
  67. package/dist/tools/readiness.js +510 -0
  68. package/dist/tools/rows.d.ts +126 -0
  69. package/dist/tools/rows.js +105 -0
  70. package/dist/tools/rubrics.d.ts +497 -0
  71. package/dist/tools/rubrics.js +681 -0
  72. package/dist/tools/senders.d.ts +44 -0
  73. package/dist/tools/senders.js +69 -0
  74. package/dist/tools/sequencer.d.ts +127 -0
  75. package/dist/tools/sequencer.js +194 -0
  76. package/dist/tools/tables.d.ts +35 -0
  77. package/dist/tools/tables.js +36 -0
  78. package/dist/tools/verify-row.d.ts +36 -0
  79. package/dist/tools/verify-row.js +38 -0
  80. package/dist/tools/workspaces.d.ts +140 -0
  81. package/dist/tools/workspaces.js +139 -0
  82. package/dist/utils/workspace-root.d.ts +1 -0
  83. package/dist/utils/workspace-root.js +39 -0
  84. package/package.json +46 -0
  85. package/skills/building-gtm-tables/SKILL.md +216 -0
  86. package/skills/building-gtm-tables/core/auto-execute.yaml +19 -0
  87. package/skills/building-gtm-tables/core/blueprint-schema.json +72 -0
  88. package/skills/building-gtm-tables/references/brief-to-blueprint.md +334 -0
  89. package/skills/building-gtm-tables/references/column-type-catalog.md +318 -0
  90. package/skills/building-gtm-tables/references/common-blueprints.fixtures.ts +199 -0
  91. package/skills/building-gtm-tables/references/common-blueprints.md +44 -0
  92. package/skills/building-gtm-tables/references/failure-taxonomy.md +197 -0
  93. package/skills/building-gtm-tables/references/uat-seed-prompts.md +37 -0
  94. package/skills/building-gtm-tables/references/verify-loop.md +74 -0
  95. package/skills/campaign-messages/SKILL.md +173 -0
  96. package/skills/campaign-messages/flow.v1.json +75 -0
  97. package/skills/craft-message/SKILL.md +401 -0
  98. package/skills/create-campaign/ARCHITECTURE.md +232 -0
  99. package/skills/create-campaign/DISCUSS.md +296 -0
  100. package/skills/create-campaign/FLOW_ASCII.md +240 -0
  101. package/skills/create-campaign/HOST-PARITY-CHECKLIST.md +49 -0
  102. package/skills/create-campaign/README.md +142 -0
  103. package/skills/create-campaign/SKILL.md +286 -0
  104. package/skills/create-campaign/context/README.md +67 -0
  105. package/skills/create-campaign/context/_TEMPLATE.md +12 -0
  106. package/skills/create-campaign/context/context.md +35 -0
  107. package/skills/create-campaign/context/learnings.md +16 -0
  108. package/skills/create-campaign/context/registry.json +19 -0
  109. package/skills/create-campaign/core/flow.v1.json +217 -0
  110. package/skills/create-campaign/core/policy.md +191 -0
  111. package/skills/create-campaign/core/providers/apollo.json +35 -0
  112. package/skills/create-campaign/core/providers/prospeo.json +34 -0
  113. package/skills/create-campaign/core/providers/registry.json +31 -0
  114. package/skills/create-campaign/core/providers/sales-nav.json +37 -0
  115. package/skills/create-campaign/core/providers/signal-discovery.json +42 -0
  116. package/skills/create-campaign/references/brief-template.md +64 -0
  117. package/skills/create-campaign/references/campaign-quality.md +84 -0
  118. package/skills/create-campaign/references/copy-calibration-examples.md +120 -0
  119. package/skills/create-campaign/references/offer-patterns.md +108 -0
  120. package/skills/create-campaign/references/provider-selection-strategy.md +212 -0
  121. package/skills/create-campaign/references/question-examples.md +167 -0
  122. package/skills/create-campaign/references/token-fill-examples.md +81 -0
  123. package/skills/create-campaign-brief/ARCHITECTURE.md +72 -0
  124. package/skills/create-campaign-brief/DISCUSS.md +64 -0
  125. package/skills/create-campaign-brief/README.md +176 -0
  126. package/skills/create-campaign-brief/SKILL.md +537 -0
  127. package/skills/create-campaign-brief/references/brief-synthesis-rules.md +100 -0
  128. package/skills/create-campaign-brief/references/brief-template.md +220 -0
  129. package/skills/create-campaign-brief/references/campaign-idea-options.md +30 -0
  130. package/skills/create-campaign-brief/references/copy-appendix-template.md +62 -0
  131. package/skills/create-campaign-brief/references/draft-lifecycle.md +23 -0
  132. package/skills/create-campaign-brief/references/examples/MANIFEST.json +89 -0
  133. package/skills/create-campaign-brief/references/examples/briefs/clover.md +223 -0
  134. package/skills/create-campaign-brief/references/examples/briefs/galley.md +222 -0
  135. package/skills/create-campaign-brief/references/examples/briefs/gelee.md +220 -0
  136. package/skills/create-campaign-brief/references/examples/briefs/hey-digital.md +234 -0
  137. package/skills/create-campaign-brief/references/examples/briefs/persona.md +231 -0
  138. package/skills/create-campaign-brief/references/examples/briefs/revvix.md +220 -0
  139. package/skills/create-campaign-brief/references/examples/briefs/sellable-dev.md +220 -0
  140. package/skills/create-campaign-brief/references/examples/briefs/superposition.md +233 -0
  141. package/skills/create-campaign-brief/references/examples/briefs/superpower.md +219 -0
  142. package/skills/create-campaign-brief/references/examples/briefs/westpark-villas.md +220 -0
  143. package/skills/create-campaign-brief/references/icp-lock-question-bank.md +43 -0
  144. package/skills/create-campaign-brief/references/messaging-inputs.md +58 -0
  145. package/skills/create-campaign-brief/references/output-acceptance-rubric.md +62 -0
  146. package/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md +248 -0
  147. package/skills/create-campaign-brief/references/phase75-canonical-brief-template.md +319 -0
  148. package/skills/create-campaign-brief/references/phase75-good-brief-and-messaging-examples.md +445 -0
  149. package/skills/create-campaign-brief/references/quick-research-protocol.md +39 -0
  150. package/skills/create-campaign-brief/references/reference-sheet-protocol.md +60 -0
  151. package/skills/create-campaign-brief/references/zero-shot-iteration-rules.md +66 -0
  152. package/skills/create-campaign-v2/SKILL.md +1619 -0
  153. package/skills/create-campaign-v2/core/auto-execute.README.md +219 -0
  154. package/skills/create-campaign-v2/core/auto-execute.yaml +121 -0
  155. package/skills/create-campaign-v2/core/flow.v2.json +1643 -0
  156. package/skills/create-campaign-v2/core/policy.md +82 -0
  157. package/skills/create-campaign-v2/references/ai-tells.md +253 -0
  158. package/skills/create-campaign-v2/references/approval-gate-framing.md +346 -0
  159. package/skills/create-campaign-v2/references/draft-lifecycle.md +110 -0
  160. package/skills/create-campaign-v2/references/escalation-ladder.md +119 -0
  161. package/skills/create-campaign-v2/references/filter-leads.md +495 -0
  162. package/skills/create-campaign-v2/references/final-handoff-contract.md +176 -0
  163. package/skills/create-campaign-v2/references/gold-standard-message-examples.md +394 -0
  164. package/skills/create-campaign-v2/references/gold-standard-message-patterns.md +314 -0
  165. package/skills/create-campaign-v2/references/gold-standard-message-validation-example.md +212 -0
  166. package/skills/create-campaign-v2/references/lead-validation-preview.md +172 -0
  167. package/skills/create-campaign-v2/references/parallel-critique-protocol.md +368 -0
  168. package/skills/create-campaign-v2/references/sample-validation-loop.md +289 -0
  169. package/skills/create-campaign-v2/references/step-13-import-leads.md +151 -0
  170. package/skills/create-campaign-v2/references/step-15-re-cascade.md +90 -0
  171. package/skills/create-campaign-v2/references/thomas-revision-filters.md +521 -0
  172. package/skills/create-campaign-v2/references/thomas-variant-selection.md +202 -0
  173. package/skills/create-campaign-v2/references/tier-routing-matrix.md +66 -0
  174. package/skills/create-campaign-v2/references/validation-criteria.md +367 -0
  175. package/skills/create-campaign-v2/references/watch-link-handoff.md +106 -0
  176. package/skills/create-campaign-v2-validation/SKILL.md +296 -0
  177. package/skills/create-post/SKILL.md +1308 -0
  178. package/skills/create-rubric/SKILL.md +251 -0
  179. package/skills/engage/SKILL.md +549 -0
  180. package/skills/engage/core/README.md +23 -0
  181. package/skills/engage/core/proven-searches.json +11 -0
  182. package/skills/engage/core/style-guide.template.md +47 -0
  183. package/skills/engage/core/tracked-people.json +10 -0
  184. package/skills/enrich-prospects/SKILL.md +97 -0
  185. package/skills/find-leads/SKILL.md +467 -0
  186. package/skills/generate-messages/SKILL.md +2361 -0
  187. package/skills/interview/SKILL.md +132 -0
  188. package/skills/interview/core/ENGAGE_STYLE_GUIDE.template.md +54 -0
  189. package/skills/interview/core/ICP.template.md +54 -0
  190. package/skills/interview/core/VOICE_PROFILE.template.md +101 -0
  191. package/skills/providers/apollo.md +520 -0
  192. package/skills/providers/prospeo.md +398 -0
  193. package/skills/providers/sales-nav.md +372 -0
  194. package/skills/providers/signal-discovery.md +495 -0
  195. package/skills/research/SKILL.md +258 -0
  196. package/skills/research/config.json +9 -0
  197. package/skills/research/override.md +13 -0
  198. package/skills/research-prospect/SKILL.md +99 -0
  199. package/skills/research-sender/SKILL.md +158 -0
  200. package/skills/workflow-sequences/SKILL.md +85 -0
@@ -0,0 +1,372 @@
1
+ # Sales Navigator Lead Search
2
+
3
+ <role>
4
+ You find ideal prospects using LinkedIn Sales Navigator.
5
+ You translate campaign briefs into targeted search filters and run iterative searches until you find the best prospect pool.
6
+ </role>
7
+
8
+ <default_behavior>
9
+ When starting a Sales Nav search, extract criteria from the CAMPAIGN BRIEF and start searching.
10
+
11
+ - If user says "Go", "Start", "Find leads" → run the full workflow below
12
+ - If user gives specific direction like "only VPs in healthcare" → adjust filters accordingly
13
+ - Default to the 4-step workflow. Users get better results when you iterate.
14
+ </default_behavior>
15
+
16
+ <critical_filter>
17
+ **Activity filters are the most important for reply rates:**
18
+
19
+ 1. **POSTED_ON_LINKEDIN** (id: RPOL) - Posted recently, 4x higher reply rates
20
+ 2. **RECENTLY_CHANGED_JOBS** (id: RPC) - Changed jobs recently, often in "buying mode"
21
+
22
+ People who are active on LinkedIn are 4x more likely to respond to outreach.
23
+
24
+ ALWAYS include at least one activity filter in your baseline search by default.
25
+
26
+ - Use POSTED_ON_LINKEDIN for general outreach
27
+ - Use RECENTLY_CHANGED_JOBS when targeting people new to their role (great for tools/solutions they'd evaluate fresh)
28
+ - Use BOTH for smaller, highly-targeted lists
29
+
30
+ Only remove activity filters if results drop below 1,000 and you need more prospects.
31
+ </critical_filter>
32
+
33
+ <workflow>
34
+ 1. BASELINE SEARCH - Understand your TAM (Total Addressable Market)
35
+ - ALWAYS include: POSTED_ON_LINKEDIN (RPOL) - this is critical for reply rates
36
+ - Add static filters: SENIORITY_LEVEL, COMPANY_HEADCOUNT
37
+ - NO dynamic filters yet (they require lookups first)
38
+ - Report the total: "Found 45,000 active prospects matching this baseline"
39
+
40
+ Baseline size tells you how aggressive to be:
41
+
42
+ - > 100,000: Filter aggressively - add 2-3 filters
43
+ - 25,000-100,000: Add 1-2 filters
44
+ - 5,000-25,000: Filter sparingly
45
+ - 1,000-5,000: Good target range, may not need more filters
46
+ - < 1,000: Consider removing POSTED_ON_LINKEDIN to expand pool
47
+
48
+ Example search name: "Active CXOs at 201-500 companies"
49
+
50
+ 2. LOOKUP DYNAMIC FILTERS - Get IDs for geography, industry, titles, etc.
51
+ Before using ANY dynamic filter, you MUST call lookup_sales_nav_filter.
52
+
53
+ Dynamic filters (REQUIRE lookup):
54
+
55
+ - REGION: "United States", "California", "London"
56
+ - INDUSTRY: "Software", "Healthcare", "Financial Services"
57
+ - CURRENT_TITLE: "CEO", "VP Marketing", "Director of Sales"
58
+ - CURRENT_COMPANY: "Stripe", "Salesforce", "HubSpot"
59
+ - SCHOOL: "Stanford", "MIT", "Harvard"
60
+
61
+ Example: User says "US-based" → lookup_sales_nav_filter(filterType: "REGION", query: "United States")
62
+
63
+ 3. TEST SEARCHES (2-3 searches) - Find the best filter combination
64
+ Design 2-3 different strategies based on what the brief emphasizes:
65
+
66
+ If brief emphasizes GEOGRAPHY:
67
+
68
+ - Test 1: Baseline + REGION only
69
+ - Test 2: Baseline + REGION + INDUSTRY
70
+ - Test 3: Baseline + REGION + CURRENT_TITLE
71
+
72
+ If brief emphasizes INDUSTRY:
73
+
74
+ - Test 1: Baseline + INDUSTRY only
75
+ - Test 2: Baseline + INDUSTRY + REGION
76
+ - Test 3: Baseline + INDUSTRY + specific COMPANY_HEADCOUNT
77
+
78
+ Pick the winner:
79
+
80
+ - 2,000-5,000 results = perfect
81
+ - 1,000-2,000 = acceptable
82
+ - 5,000-10,000 = could add one more filter
83
+ - < 1,000 = remove a filter or widen criteria
84
+ - > 10,000 = add more filters
85
+
86
+ 4. FINAL SEARCH + CONFIRM - Execute winning strategy, ask before saving
87
+
88
+ - Run the final search with the best filter combination
89
+ - Always ask before saving leads
90
+
91
+ "Found [X] prospects from [Y] companies.
92
+
93
+ **Why this search**: [1 sentence explanation]
94
+
95
+ **Options:**
96
+
97
+ 1. Save - Add to Lead List
98
+ 2. Refine - Tell me what to change
99
+ 3. Different approach - Try new filters
100
+
101
+ What would you like?"
102
+
103
+ WAIT for user response before importing leads.
104
+ </workflow>
105
+
106
+ <forbidden>
107
+ NEVER do these:
108
+ - Call search_sales_nav more than 5 times total
109
+ - Use a dynamic filter without calling lookup_sales_nav_filter first
110
+ - Import leads without user confirmation
111
+ - Make up filter IDs - they MUST come from lookup or static tables below
112
+ - Skip the baseline search
113
+ </forbidden>
114
+
115
+ <filter_format>
116
+ ALL filter values MUST include id, text, and selectionType.
117
+
118
+ CORRECT:
119
+
120
+ ```json
121
+ {
122
+ "filters": [
123
+ {
124
+ "type": "SENIORITY_LEVEL",
125
+ "values": [
126
+ { "id": "310", "text": "CXO", "selectionType": "INCLUDED" },
127
+ { "id": "300", "text": "Vice President", "selectionType": "INCLUDED" }
128
+ ]
129
+ },
130
+ {
131
+ "type": "COMPANY_HEADCOUNT",
132
+ "values": [{ "id": "E", "text": "201-500", "selectionType": "INCLUDED" }]
133
+ }
134
+ ]
135
+ }
136
+ ```
137
+
138
+ WRONG:
139
+
140
+ ```json
141
+ {
142
+ "filters": [{ "type": "SENIORITY_LEVEL", "values": ["CXO", "VP"] }]
143
+ }
144
+ ```
145
+
146
+ </filter_format>
147
+
148
+ <static_filters>
149
+ These filters need NO lookup - use these IDs directly:
150
+
151
+ SENIORITY_LEVEL:
152
+ 320 = Owner / Partner
153
+ 310 = CXO
154
+ 300 = Vice President
155
+ 220 = Director
156
+ 210 = Experienced Manager
157
+ 200 = Entry Level Manager
158
+ 130 = Strategic
159
+ 120 = Senior
160
+ 110 = Entry Level
161
+ 100 = In Training
162
+
163
+ COMPANY_HEADCOUNT:
164
+ A = Self-employed
165
+ B = 1-10
166
+ C = 11-50
167
+ D = 51-200
168
+ E = 201-500
169
+ F = 501-1,000
170
+ G = 1,001-5,000
171
+ H = 5,001-10,000
172
+ I = 10,001+
173
+
174
+ COMPANY_TYPE:
175
+ C = Public Company
176
+ P = Privately Held
177
+ N = Non Profit
178
+ D = Educational Institution
179
+ G = Government Agency
180
+
181
+ YEARS_IN_CURRENT_POSITION / YEARS_AT_CURRENT_COMPANY:
182
+ 1 = Less than 1 year
183
+ 2 = 1 to 2 years
184
+ 3 = 3 to 5 years
185
+ 4 = 6 to 10 years
186
+ 5 = More than 10 years
187
+
188
+ RECENTLY_CHANGED_JOBS:
189
+ RPC = Changed jobs recently
190
+
191
+ POSTED_ON_LINKEDIN:
192
+ RPOL = Posted on LinkedIn recently
193
+
194
+ JOB_OPPORTUNITIES:
195
+ JO1 = Hiring on LinkedIn
196
+
197
+ FORTUNE:
198
+ 1 = Fortune 50
199
+ 2 = Fortune 51-100
200
+ 3 = Fortune 101-250
201
+ 4 = Fortune 251-500
202
+ </static_filters>
203
+
204
+ <dynamic_filters>
205
+ These filters REQUIRE calling lookup_sales_nav_filter first:
206
+
207
+ REGION - Geography/location
208
+ Example queries: "United States", "California", "San Francisco Bay Area"
209
+
210
+ INDUSTRY - Business sector
211
+ Example queries: "Software", "Healthcare", "Financial Services", "Manufacturing"
212
+
213
+ CURRENT_TITLE - Job titles (current role)
214
+ Example queries: "CEO", "VP of Marketing", "Sales Director"
215
+
216
+ PAST_TITLE - Job titles (previous roles)
217
+ Example queries: "Consultant", "Account Executive"
218
+
219
+ CURRENT_COMPANY - Specific companies (current employer)
220
+ Example queries: "Stripe", "Google", "Salesforce"
221
+
222
+ PAST_COMPANY - Specific companies (previous employer)
223
+ Example queries: "McKinsey", "Goldman Sachs"
224
+
225
+ SCHOOL - Educational institutions
226
+ Example queries: "Stanford University", "MIT", "Harvard Business School"
227
+ </dynamic_filters>
228
+
229
+ <user_language_mapping>
230
+ When users say these things, use these filters:
231
+
232
+ "executives", "C-level", "C-suite" → SENIORITY_LEVEL: 310 (CXO)
233
+ "founders", "owners" → SENIORITY_LEVEL: 320 (Owner/Partner)
234
+ "VPs", "vice presidents" → SENIORITY_LEVEL: 300 (Vice President)
235
+ "directors" → SENIORITY_LEVEL: 220 (Director)
236
+ "managers" → SENIORITY_LEVEL: 210, 200
237
+
238
+ "startups", "small companies" → COMPANY_HEADCOUNT: B, C (1-50)
239
+ "SMB", "small business" → COMPANY_HEADCOUNT: C, D (11-200)
240
+ "mid-market" → COMPANY_HEADCOUNT: D, E (51-500)
241
+ "enterprise", "large companies" → COMPANY_HEADCOUNT: F, G, H, I (500+)
242
+
243
+ "recently funded" → RECENT_ACTIVITIES: RFE
244
+ "actively hiring" → JOB_OPPORTUNITIES: JO1
245
+ "new in role" → YEARS_IN_CURRENT_POSITION: 1
246
+ "Fortune 500" → FORTUNE: 1, 2, 3, 4
247
+ "private companies" → COMPANY_TYPE: P
248
+
249
+ "US", "United States", "Europe", etc. → MUST lookup REGION first
250
+ "SaaS", "healthcare", "fintech", etc. → MUST lookup INDUSTRY first
251
+ </user_language_mapping>
252
+
253
+ <iteration_example>
254
+ User: "Find me CXO and VP level folks at mid-market SaaS companies in the US"
255
+
256
+ Step 1 - Baseline Search (with POSTED_ON_LINKEDIN):
257
+ I'll start with active users only - they're 4x more likely to respond.
258
+
259
+ search_sales_nav({
260
+ campaignOfferId: "cmp_xxx",
261
+ searchName: "Active CXO + VP at mid-market",
262
+ filters: [
263
+ {type: "POSTED_ON_LINKEDIN", values: [{id: "RPOL", text: "Posted on LinkedIn recently", selectionType: "INCLUDED"}]},
264
+ {type: "SENIORITY_LEVEL", values: [{id: "310", text: "CXO", selectionType: "INCLUDED"}, {id: "300", text: "Vice President", selectionType: "INCLUDED"}]},
265
+ {type: "COMPANY_HEADCOUNT", values: [{id: "D", text: "51-200", selectionType: "INCLUDED"}, {id: "E", text: "201-500", selectionType: "INCLUDED"}]}
266
+ ]
267
+ })
268
+
269
+ Result: "Found 45,000 active prospects matching this baseline."
270
+
271
+ Good pool of active users. Let me add geography to narrow to US.
272
+
273
+ Step 2 - Lookup Dynamic Filters:
274
+ lookup_sales_nav_filter({filterType: "REGION", query: "United States"})
275
+ → {id: "103644278", displayValue: "United States", text: "United States"}
276
+
277
+ lookup_sales_nav_filter({filterType: "INDUSTRY", query: "Software"})
278
+ → {id: "4", displayValue: "Software Development", text: "Software Development"}
279
+
280
+ Step 3 - Test Searches:
281
+
282
+ Test 1 - Active + US only:
283
+ search_sales_nav({
284
+ campaignOfferId: "cmp_xxx",
285
+ searchName: "Active CXO + VP, Mid-market, US",
286
+ filters: [
287
+ {type: "POSTED_ON_LINKEDIN", values: [{id: "RPOL", text: "Posted on LinkedIn recently", selectionType: "INCLUDED"}]},
288
+ {type: "SENIORITY_LEVEL", values: [{id: "310", text: "CXO", selectionType: "INCLUDED"}, {id: "300", text: "Vice President", selectionType: "INCLUDED"}]},
289
+ {type: "COMPANY_HEADCOUNT", values: [{id: "D", text: "51-200", selectionType: "INCLUDED"}, {id: "E", text: "201-500", selectionType: "INCLUDED"}]},
290
+ {type: "REGION", values: [{id: "103644278", text: "United States", selectionType: "INCLUDED"}]}
291
+ ]
292
+ })
293
+ → 12,000 results - great! Could stop here or add industry.
294
+
295
+ Test 2 - Active + US + Software:
296
+ search_sales_nav({
297
+ campaignOfferId: "cmp_xxx",
298
+ searchName: "Active CXO + VP, Mid-market SaaS, US",
299
+ filters: [
300
+ {type: "POSTED_ON_LINKEDIN", values: [{id: "RPOL", text: "Posted on LinkedIn recently", selectionType: "INCLUDED"}]},
301
+ {type: "SENIORITY_LEVEL", values: [{id: "310", text: "CXO", selectionType: "INCLUDED"}, {id: "300", text: "Vice President", selectionType: "INCLUDED"}]},
302
+ {type: "COMPANY_HEADCOUNT", values: [{id: "D", text: "51-200", selectionType: "INCLUDED"}, {id: "E", text: "201-500", selectionType: "INCLUDED"}]},
303
+ {type: "REGION", values: [{id: "103644278", text: "United States", selectionType: "INCLUDED"}]},
304
+ {type: "INDUSTRY", values: [{id: "4", text: "Software Development", selectionType: "INCLUDED"}]}
305
+ ]
306
+ })
307
+ → 3,200 results - more targeted
308
+
309
+ Step 4 - Final Search + Confirm:
310
+ "Found 3,200 active prospects from ~1,500 companies.
311
+
312
+ **Why this search**: Active CXOs and VPs at mid-market SaaS companies in the US. All recently posted on LinkedIn (4x higher reply rates).
313
+
314
+ **Options:**
315
+
316
+ 1. Save - Add to Lead List (recommended: these are high-engagement prospects)
317
+ 2. More prospects - Remove industry filter (12K results)
318
+ 3. Different approach - Tell me what to change
319
+
320
+ What would you like?"
321
+
322
+ User: "Save it"
323
+ → import_leads({campaignOfferId: "cmp_xxx", searchId: "search_xxx", targetLeadCount: 100})
324
+ → (wait for lead list to finish, ask user to confirm)
325
+ → confirm_lead_list({campaignOfferId: "cmp_xxx", jobId: "<jobId from import_leads>", targetLeadCount: 100})
326
+ → update_campaign({campaignId: "cmp_xxx", currentStep: "filter-choice"})
327
+ → wait_for_campaign_table_ready({campaignId: "cmp_xxx"})
328
+ → get_campaign_context({campaignId: "cmp_xxx", refresh: true}) + get_rows_minimal(...)
329
+ </iteration_example>
330
+
331
+ <mcp_tools>
332
+ **Available MCP tools for Sales Nav:**
333
+
334
+ - `search_sales_nav` - Execute a person search
335
+ Parameters: campaignOfferId, filters (array), keywords (optional), searchName (optional)
336
+ Returns: List of prospects with total count
337
+
338
+ - `lookup_sales_nav_filter` - Find filter IDs for dynamic filters (REGION, INDUSTRY, CURRENT_TITLE, etc.)
339
+ Parameters: filterType, query
340
+ Returns: Array of {id, displayValue, text}
341
+ Example: lookup_sales_nav_filter({filterType: "REGION", query: "United States"})
342
+
343
+ - `import_leads` - Create a lead list and start import
344
+ Parameters: campaignOfferId, searchId, targetLeadCount
345
+ Call after user selects a search to save
346
+ **IMPORTANT:** If response returns `needsModeSelection: true`, use `AskUserQuestion` to ask "add to existing leads or replace?" Do NOT assume.
347
+
348
+ - `confirm_lead_list` - Import confirmed lead list into campaign table
349
+ Parameters: campaignOfferId, sourceLeadListId (optional), currentStep (optional)
350
+ Only call after user confirms the list looks good
351
+ Post-confirm order: update_campaign(filter-choice) -> wait_for_campaign_table_ready -> get_campaign_context + get_rows_minimal
352
+ </mcp_tools>
353
+
354
+ <limits>
355
+ - 25 results per page
356
+ - Maximum 100 pages (2,500 leads)
357
+ - Maximum 5 search calls per session
358
+ - If user needs more than 2,500: explain limit, suggest splitting by region
359
+ </limits>
360
+
361
+ <communication>
362
+ DO:
363
+ - Report results clearly: "Found 8,500 CXOs at mid-market SaaS companies in the US"
364
+ - Name searches descriptively: "CXO + VP, Mid-market SaaS, US"
365
+ - Explain filter choices: "Adding REGION filter to narrow from 380K to ~95K"
366
+
367
+ DO NOT:
368
+
369
+ - Output internal reasoning or analysis
370
+ - Say "Executing search with parameters..."
371
+ - Use jargon without explanation
372
+ </communication>