@sellable/mcp 0.1.11 → 0.1.12
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.12 --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.12 --host codex
|
|
94
94
|
sellable --verify-only --host codex
|
|
95
95
|
```
|
|
96
96
|
|
package/package.json
CHANGED
|
@@ -114,8 +114,9 @@ Validated draft directory:
|
|
|
114
114
|
loading, runbooks, local skill files, or skill versions.
|
|
115
115
|
- Do not treat the active Sellable workspace as the campaign subject. The
|
|
116
116
|
workspace only tells you where the campaign will be saved. Before buyer, CTA,
|
|
117
|
-
proof, or source questions, identify
|
|
118
|
-
for
|
|
117
|
+
proof, or source questions, identify two things:
|
|
118
|
+
1. who/what company this campaign is for, and
|
|
119
|
+
2. who the LinkedIn messages should send from.
|
|
119
120
|
- If the user supplied a LinkedIn profile, website, domain, company name, or
|
|
120
121
|
sender name in the invocation, do one lightweight lookup first:
|
|
121
122
|
- LinkedIn profile: call `fetch_linkedin_profile`.
|
|
@@ -123,26 +124,54 @@ Validated draft directory:
|
|
|
123
124
|
web lookup.
|
|
124
125
|
- Workspace sender id or known sender: call `get_sender` or `enrich_sender`.
|
|
125
126
|
Then summarize what you found in one or two lines and ask the user to confirm
|
|
126
|
-
the
|
|
127
|
+
the campaign subject and sender before continuing.
|
|
127
128
|
- If the user did not provide the launch identity, make the first quick question
|
|
128
|
-
panel an identity gate.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
129
|
+
panel an identity gate. The point of this gate is not "pick a sender"; it is
|
|
130
|
+
to learn who the user is / what company we are launching for, and who we
|
|
131
|
+
should send from. Before that gate, call `list_senders` once if it is
|
|
132
|
+
available, only so you can offer connected senders as shortcuts. The
|
|
133
|
+
customer-facing shape should be:
|
|
134
|
+
|
|
135
|
+
```text
|
|
136
|
+
I found these connected senders in {workspace}: {sender names}.
|
|
137
|
+
|
|
138
|
+
First I need to know who this campaign is for and who we’re sending from. If
|
|
139
|
+
one of these connected senders is you, pick them; otherwise paste your LinkedIn
|
|
140
|
+
URL or company website.
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
The identity gate should ask:
|
|
144
|
+
|
|
145
|
+
1. `Who is this campaign for?` Options: connected sender names if available,
|
|
146
|
+
`I’ll paste a LinkedIn profile`, `I’ll paste a company website/domain`,
|
|
147
|
+
`Other / custom`.
|
|
148
|
+
2. `Who should the LinkedIn messages send from?` Options:
|
|
149
|
+
`same person/company`, connected sender names if available,
|
|
150
|
+
`I’ll paste a different sender profile`, `Other / custom`.
|
|
151
|
+
|
|
152
|
+
After that answer, do the lightweight lookup. For a connected sender, call
|
|
153
|
+
`enrich_sender` and identify their current or most recent company. For a
|
|
154
|
+
LinkedIn profile, call `fetch_linkedin_profile` and infer the current or most
|
|
155
|
+
recent company from the profile. Then ask:
|
|
156
|
+
|
|
157
|
+
```text
|
|
158
|
+
Cool — I have this as {campaign subject/company}, sending from {sender}. Is that right?
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
After the user confirms the subject and sender, run one lightweight company
|
|
162
|
+
lookup (`fetch_company` when possible, otherwise one web lookup), then ask the
|
|
163
|
+
campaign setup questions. The setup questions should use the confirmed company
|
|
164
|
+
context so they do not feel generic. If identity is still unavailable, use
|
|
165
|
+
neutral/custom intake options instead of guessed vertical-specific options.
|
|
166
|
+
|
|
138
167
|
- Before the identity gate, use this customer-facing shape:
|
|
139
168
|
|
|
140
169
|
```text
|
|
141
170
|
I’m ready to build the campaign in {workspace}.
|
|
142
171
|
|
|
143
|
-
First I need to confirm who
|
|
144
|
-
|
|
145
|
-
|
|
172
|
+
First I need to confirm who this campaign is for and who we’re sending from.
|
|
173
|
+
If you already have a connected sender, I can use that to infer the company;
|
|
174
|
+
otherwise paste a LinkedIn profile or company website and I’ll look it up.
|
|
146
175
|
|
|
147
176
|
Then I’ll turn that into a campaign brief for you to approve before anything is created.
|
|
148
177
|
```
|
|
@@ -162,10 +191,11 @@ Validated draft directory:
|
|
|
162
191
|
must ask for the launch identity before buyer/offer/source. Before that first
|
|
163
192
|
structured question gate, do not run source discovery, Sales Nav, Prospeo,
|
|
164
193
|
Signals, Bash, Read, Write, Edit, Glob, Grep, full company research, or
|
|
165
|
-
draft-directory inspection/creation.
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
194
|
+
draft-directory inspection/creation. `list_senders` is allowed once before the
|
|
195
|
+
first identity gate so the user can pick from connected senders. Do
|
|
196
|
+
draft-directory setup only after the founder answers. After launch identity is
|
|
197
|
+
confirmed, the setup packet must ask buyer, offer/CTA, proof, and lead source,
|
|
198
|
+
and all four questions must include an `Other / custom` option.
|
|
169
199
|
- After the founder answers the first strategy/source packet, explain the next
|
|
170
200
|
stage only: campaign brief creation and brief approval. Use this shape:
|
|
171
201
|
|
|
@@ -28,14 +28,15 @@ approval. Hide implementation details unless they are needed to unblock setup.
|
|
|
28
28
|
The customer believes Sellable is helping them launch a campaign. Keep every
|
|
29
29
|
turn anchored to that:
|
|
30
30
|
|
|
31
|
-
1. Confirm who the campaign is
|
|
32
|
-
2.
|
|
33
|
-
3.
|
|
34
|
-
4.
|
|
35
|
-
5.
|
|
36
|
-
6.
|
|
37
|
-
7.
|
|
38
|
-
8.
|
|
31
|
+
1. Confirm who/what company the campaign is for.
|
|
32
|
+
2. Confirm who the LinkedIn messages send from.
|
|
33
|
+
3. Understand the company and offer.
|
|
34
|
+
4. Turn that into a campaign brief.
|
|
35
|
+
5. Find likely responders.
|
|
36
|
+
6. Filter for fit.
|
|
37
|
+
7. Draft messages.
|
|
38
|
+
8. Ask for approval.
|
|
39
|
+
9. Create the campaign.
|
|
39
40
|
|
|
40
41
|
## Progress Updates
|
|
41
42
|
|
|
@@ -100,12 +100,21 @@
|
|
|
100
100
|
"optional": false,
|
|
101
101
|
"when": "before_founder_strategy_source_packet",
|
|
102
102
|
"allowedTools": [
|
|
103
|
+
"list_senders",
|
|
104
|
+
"get_sender",
|
|
105
|
+
"enrich_sender",
|
|
103
106
|
"fetch_company",
|
|
104
107
|
"fetch_linkedin_profile",
|
|
105
108
|
"WebFetch",
|
|
106
109
|
"WebSearch"
|
|
107
110
|
],
|
|
108
|
-
"maxCalls":
|
|
111
|
+
"maxCalls": {
|
|
112
|
+
"list_senders": 1,
|
|
113
|
+
"identityLookup": 1,
|
|
114
|
+
"companyLookupAfterIdentityConfirm": 1
|
|
115
|
+
},
|
|
116
|
+
"preferConnectedSendersFirst": true,
|
|
117
|
+
"confirmCompanyBeforeStrategyQuestions": true,
|
|
109
118
|
"mustNotInferFromNameOnly": true,
|
|
110
119
|
"fallback": "ask identity gate first; use neutral/custom intake options only when identity remains unavailable"
|
|
111
120
|
},
|