notifyme-csm-mcp 1.0.5 → 1.0.6
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/dist/index.js +39 -8
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* list_companies — browse/filter companies
|
|
15
15
|
* search_companies — search by name / domain / email
|
|
16
16
|
* get_company — full profile + recent notes/reminders/meetings/emails
|
|
17
|
-
* update_company — update priority /
|
|
17
|
+
* update_company — update priority / status / tags
|
|
18
18
|
*
|
|
19
19
|
* Per-company sub-resources
|
|
20
20
|
* list_notes — all notes for a company
|
|
@@ -43,6 +43,9 @@
|
|
|
43
43
|
* get_dashboard — at-risk merchants
|
|
44
44
|
* get_stats — full dashboard stats
|
|
45
45
|
*
|
|
46
|
+
* StoreLeads
|
|
47
|
+
* get_storeleads — popularity rank + store enrichment by domain
|
|
48
|
+
*
|
|
46
49
|
* Kanban
|
|
47
50
|
* list_kanban_columns — list pipeline columns
|
|
48
51
|
* move_to_column — move a company to a pipeline column
|
|
@@ -79,7 +82,7 @@ const TOOLS = [
|
|
|
79
82
|
// ── Companies ────────────────────────────────────────────────────────────
|
|
80
83
|
{
|
|
81
84
|
name: "list_companies",
|
|
82
|
-
description: "Browse or filter all companies in the CSM. Supports filtering by type,
|
|
85
|
+
description: "Browse or filter all companies in the CSM. Supports filtering by type, status, priority, tag, and whether any outreach has occurred. Use search_companies for name/domain lookups.",
|
|
83
86
|
inputSchema: {
|
|
84
87
|
type: "object",
|
|
85
88
|
properties: {
|
|
@@ -88,7 +91,8 @@ const TOOLS = [
|
|
|
88
91
|
enum: ["agency", "merchant", "app_partner", "technology_partner", "media", "investor", "other"],
|
|
89
92
|
description: "Filter by company type (optional)",
|
|
90
93
|
},
|
|
91
|
-
|
|
94
|
+
status: { type: "string", enum: ["active", "inactive", "churned", "prospective", "archived"], description: "Filter by lifecycle status (optional, e.g. 'active', 'churned'). Replaces the older `stage` arg." },
|
|
95
|
+
stage: { type: "string", description: "[Deprecated] alias for `status` — kept for back-compat. Prefer `status`." },
|
|
92
96
|
priority: { type: "string", enum: ["p1", "p2", "p3"], description: "Filter by priority tier (optional)" },
|
|
93
97
|
tag: { type: "string", description: "Filter by a single tag label (optional, e.g. 'websummit')" },
|
|
94
98
|
no_outreach: { type: "boolean", description: "If true, only return companies with zero emails, notes, or meetings logged — i.e. never contacted" },
|
|
@@ -151,13 +155,14 @@ const TOOLS = [
|
|
|
151
155
|
},
|
|
152
156
|
{
|
|
153
157
|
name: "update_company",
|
|
154
|
-
description: "Update a company's priority,
|
|
158
|
+
description: "Update a company's priority, status, or tags. All fields are optional — only pass what you want to change.",
|
|
155
159
|
inputSchema: {
|
|
156
160
|
type: "object",
|
|
157
161
|
properties: {
|
|
158
162
|
id: { type: "number", description: "Company id" },
|
|
159
163
|
priority: { type: "string", enum: ["p1", "p2", "p3"], description: "Priority tier" },
|
|
160
|
-
|
|
164
|
+
status: { type: "string", enum: ["active", "inactive", "churned", "prospective", "archived"], description: "Lifecycle status (replaces the older `state` arg)." },
|
|
165
|
+
state: { type: "string", description: "[Deprecated] alias for `status` — kept for back-compat. Prefer `status`." },
|
|
161
166
|
tags: { type: "array", items: { type: "string" }, description: "Tags array (replaces existing)" },
|
|
162
167
|
},
|
|
163
168
|
required: ["id"],
|
|
@@ -368,6 +373,21 @@ const TOOLS = [
|
|
|
368
373
|
required: [],
|
|
369
374
|
},
|
|
370
375
|
},
|
|
376
|
+
// ── StoreLeads ──────────────────────────────────────────────────────────────
|
|
377
|
+
{
|
|
378
|
+
name: "get_storeleads",
|
|
379
|
+
description: "Look up a store's StoreLeads enrichment by domain: global popularity `rank` (lower = more popular; rank < 1000 means a top store), Shopify plan, estimated monthly revenue, category, country/city, product count, and contact email/phone. Use it to score how notable a merchant or a new app install is.",
|
|
380
|
+
inputSchema: {
|
|
381
|
+
type: "object",
|
|
382
|
+
properties: {
|
|
383
|
+
domain: {
|
|
384
|
+
type: "string",
|
|
385
|
+
description: "Store domain or myshopify domain (e.g. 'acme.com' or 'acme.myshopify.com'). Protocol/www/path are stripped automatically.",
|
|
386
|
+
},
|
|
387
|
+
},
|
|
388
|
+
required: ["domain"],
|
|
389
|
+
},
|
|
390
|
+
},
|
|
371
391
|
// ── Kanban ────────────────────────────────────────────────────────────────
|
|
372
392
|
{
|
|
373
393
|
name: "list_kanban_columns",
|
|
@@ -412,12 +432,15 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
412
432
|
break;
|
|
413
433
|
}
|
|
414
434
|
case "list_companies": {
|
|
415
|
-
const { type, stage, priority, tag, no_outreach, limit } = args;
|
|
435
|
+
const { type, status, stage, priority, tag, no_outreach, limit } = args;
|
|
416
436
|
const params = new URLSearchParams();
|
|
417
437
|
if (type)
|
|
418
438
|
params.set("type", type);
|
|
419
|
-
|
|
420
|
-
|
|
439
|
+
// `status` is canonical; `stage` is a back-compat alias. The server
|
|
440
|
+
// accepts both and prefers `status`; pass whichever was provided.
|
|
441
|
+
const effectiveStatus = status ?? stage;
|
|
442
|
+
if (effectiveStatus)
|
|
443
|
+
params.set("status", effectiveStatus);
|
|
421
444
|
if (priority)
|
|
422
445
|
params.set("priority", priority);
|
|
423
446
|
if (tag)
|
|
@@ -445,6 +468,8 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
445
468
|
break;
|
|
446
469
|
}
|
|
447
470
|
case "update_company": {
|
|
471
|
+
// Accept `status` (canonical) and `state` (back-compat alias).
|
|
472
|
+
// Server resolves precedence (status wins) and writes to companies.status.
|
|
448
473
|
const { id, ...updates } = args;
|
|
449
474
|
data = await api("PATCH", `/companies/${id}`, updates);
|
|
450
475
|
break;
|
|
@@ -548,6 +573,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
548
573
|
data = await api("GET", "/stats");
|
|
549
574
|
break;
|
|
550
575
|
}
|
|
576
|
+
// ── StoreLeads ─────────────────────────────────────────────────────────
|
|
577
|
+
case "get_storeleads": {
|
|
578
|
+
const { domain } = args;
|
|
579
|
+
data = await api("GET", `/storeleads?${new URLSearchParams({ domain })}`);
|
|
580
|
+
break;
|
|
581
|
+
}
|
|
551
582
|
// ── Kanban ─────────────────────────────────────────────────────────────
|
|
552
583
|
case "list_kanban_columns": {
|
|
553
584
|
data = await api("GET", "/kanban/columns");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "notifyme-csm-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "NotifyMe CSM — MCP server for LLM integrations (Claude Code, Cursor, etc.)",
|
|
5
5
|
"_versionPolicy": "The version field above is a placeholder and is NEVER updated in git. The real published version lives only on npm — run `npm view notifyme-csm-mcp version` to check. To publish a new release, use the GitHub workflow `Publish MCP` (Actions tab → Publish notifyme-csm-mcp → Run workflow). This prevents recurring merge conflicts across feature/dev/main branches that used to plague every PR.",
|
|
6
6
|
"type": "module",
|