@sellable/mcp 0.1.12 → 0.1.14
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/README.md
CHANGED
|
@@ -83,14 +83,14 @@ The token is provided when you generate it. Use `list_workspaces` +
|
|
|
83
83
|
For customer/package installs, use the public installer:
|
|
84
84
|
|
|
85
85
|
```bash
|
|
86
|
-
npx -y @sellable/install@0.1.
|
|
86
|
+
npx -y @sellable/install@0.1.14 --host codex --token skt_live_your_token_here --workspace-id your_workspace_id
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
If you already have `~/.sellable/config.json`, rerun/verify without rewriting
|
|
90
90
|
auth:
|
|
91
91
|
|
|
92
92
|
```bash
|
|
93
|
-
npx -y @sellable/install@0.1.
|
|
93
|
+
npx -y @sellable/install@0.1.14 --host codex
|
|
94
94
|
sellable --verify-only --host codex
|
|
95
95
|
```
|
|
96
96
|
|
package/package.json
CHANGED
|
@@ -125,53 +125,90 @@ Validated draft directory:
|
|
|
125
125
|
- Workspace sender id or known sender: call `get_sender` or `enrich_sender`.
|
|
126
126
|
Then summarize what you found in one or two lines and ask the user to confirm
|
|
127
127
|
the campaign subject and sender before continuing.
|
|
128
|
-
- If the user did not provide the launch identity,
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
128
|
+
- If the user did not provide the launch identity, quietly call `list_senders`
|
|
129
|
+
once if available. This is a shortcut to deduce who the user might be from
|
|
130
|
+
their Sellable API token and connected LinkedIn accounts. Do not present it as
|
|
131
|
+
a sender picker yet. If there is one strong likely sender, use `enrich_sender`
|
|
132
|
+
to infer their current or most recent company, then ask a structured
|
|
133
|
+
confirmation question:
|
|
134
134
|
|
|
135
135
|
```text
|
|
136
|
-
I
|
|
136
|
+
I’m ready to build this in {workspace}. I found {matched sender} connected here.
|
|
137
137
|
|
|
138
|
-
|
|
139
|
-
one of these connected senders is you, pick them; otherwise paste your LinkedIn
|
|
140
|
-
URL or company website.
|
|
138
|
+
Is that you, and is this campaign for {company}?
|
|
141
139
|
```
|
|
142
140
|
|
|
143
|
-
The
|
|
141
|
+
The options must be:
|
|
144
142
|
|
|
145
|
-
1. `
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
`I’ll paste a different sender profile`, `Other / custom`.
|
|
143
|
+
1. `Yes, that's me and this is for {company}`
|
|
144
|
+
2. `That's me, but this is for a different company`
|
|
145
|
+
3. `No, I'll paste my LinkedIn URL so you can look me up`
|
|
146
|
+
4. `No, I'll paste the company website instead`
|
|
147
|
+
5. `Other / custom`
|
|
151
148
|
|
|
152
|
-
|
|
153
|
-
`
|
|
154
|
-
LinkedIn
|
|
155
|
-
recent company
|
|
149
|
+
If the user chooses option 2, ask for the company website/domain and call
|
|
150
|
+
`fetch_company` when possible, otherwise one web lookup. If the user chooses
|
|
151
|
+
option 3, ask for their LinkedIn URL, call `fetch_linkedin_profile`, infer
|
|
152
|
+
their current or most recent company, then confirm company and sender again.
|
|
153
|
+
If the user chooses option 4, ask for the company website/domain, call
|
|
154
|
+
`fetch_company` when possible, otherwise one web lookup, then ask who the
|
|
155
|
+
LinkedIn messages should send from.
|
|
156
|
+
|
|
157
|
+
If there is no strong sender match, make the first quick question panel ask
|
|
158
|
+
for the user's LinkedIn URL or company website. The point of this gate is not
|
|
159
|
+
"pick a sender"; it is to learn who the user is, infer the current or most
|
|
160
|
+
recent company, and then confirm who we are sending from. The customer-facing
|
|
161
|
+
shape should be:
|
|
162
|
+
|
|
163
|
+
```text
|
|
164
|
+
I’m ready to build this in {workspace}.
|
|
165
|
+
|
|
166
|
+
First, what’s your LinkedIn URL? If you’d rather start from the company, paste
|
|
167
|
+
the company website instead.
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
The LinkedIn/company identity gate should ask:
|
|
171
|
+
|
|
172
|
+
1. `What’s your LinkedIn URL?` Options: `I’ll paste my LinkedIn profile`,
|
|
173
|
+
`I’ll paste the company website instead`, `Other / custom`.
|
|
174
|
+
|
|
175
|
+
After that answer, do the lightweight lookup. For a LinkedIn profile, call
|
|
176
|
+
`fetch_linkedin_profile` and infer the user's current or most recent company
|
|
177
|
+
from the profile. For a company website, call `fetch_company` when possible,
|
|
178
|
+
otherwise one web lookup.
|
|
179
|
+
|
|
180
|
+
If `list_senders` did not already run, call it once after the lookup to see
|
|
181
|
+
whether the fetched user appears to match a connected sender. If there is a
|
|
182
|
+
likely match, ask:
|
|
156
183
|
|
|
157
184
|
```text
|
|
158
|
-
Cool —
|
|
185
|
+
Cool — are you {matched sender}, and is this campaign for {company}?
|
|
159
186
|
```
|
|
160
187
|
|
|
188
|
+
If there is no likely sender match, ask:
|
|
189
|
+
|
|
190
|
+
```text
|
|
191
|
+
Cool — I have this campaign as {company}. Who should the LinkedIn messages send from?
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Sender options should include connected sender names if available, `same as
|
|
195
|
+
me`, `I’ll paste a different sender profile`, and `Other / custom`.
|
|
196
|
+
|
|
161
197
|
After the user confirms the subject and sender, run one lightweight company
|
|
162
|
-
lookup
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
198
|
+
lookup if it has not already run, then ask the campaign setup questions. The
|
|
199
|
+
setup questions should use the confirmed company context so they do not feel
|
|
200
|
+
generic. If identity is still unavailable, use neutral/custom intake options
|
|
201
|
+
instead of guessed vertical-specific options.
|
|
166
202
|
|
|
167
203
|
- Before the identity gate, use this customer-facing shape:
|
|
168
204
|
|
|
169
205
|
```text
|
|
170
206
|
I’m ready to build the campaign in {workspace}.
|
|
171
207
|
|
|
172
|
-
First I
|
|
173
|
-
|
|
174
|
-
|
|
208
|
+
First I’ll check whether your Sellable token already tells me who you are. If
|
|
209
|
+
not, I’ll ask for your LinkedIn URL or company website, look it up, then
|
|
210
|
+
confirm the company and sender before we pick the target, offer, proof, and
|
|
211
|
+
lead source.
|
|
175
212
|
|
|
176
213
|
Then I’ll turn that into a campaign brief for you to approve before anything is created.
|
|
177
214
|
```
|
|
@@ -192,7 +229,8 @@ Validated draft directory:
|
|
|
192
229
|
structured question gate, do not run source discovery, Sales Nav, Prospeo,
|
|
193
230
|
Signals, Bash, Read, Write, Edit, Glob, Grep, full company research, or
|
|
194
231
|
draft-directory inspection/creation. `list_senders` is allowed once before the
|
|
195
|
-
first identity gate
|
|
232
|
+
first identity gate as a quiet token/sender inference shortcut, and once means
|
|
233
|
+
once: do not call it again after a LinkedIn lookup if it already ran. Do
|
|
196
234
|
draft-directory setup only after the founder answers. After launch identity is
|
|
197
235
|
confirmed, the setup packet must ask buyer, offer/CTA, proof, and lead source,
|
|
198
236
|
and all four questions must include an `Other / custom` option.
|
|
@@ -113,7 +113,9 @@
|
|
|
113
113
|
"identityLookup": 1,
|
|
114
114
|
"companyLookupAfterIdentityConfirm": 1
|
|
115
115
|
},
|
|
116
|
-
"
|
|
116
|
+
"quietlyCheckConnectedSendersFirst": true,
|
|
117
|
+
"preferUserLinkedInWhenSenderInferenceIsWeak": true,
|
|
118
|
+
"doNotPresentSenderPickerBeforeIdentityInference": true,
|
|
117
119
|
"confirmCompanyBeforeStrategyQuestions": true,
|
|
118
120
|
"mustNotInferFromNameOnly": true,
|
|
119
121
|
"fallback": "ask identity gate first; use neutral/custom intake options only when identity remains unavailable"
|