notifyme-csm-mcp 1.0.8 → 1.0.10
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 +54 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -420,8 +420,16 @@ const TOOLS = [
|
|
|
420
420
|
},
|
|
421
421
|
timeframe: {
|
|
422
422
|
type: "string",
|
|
423
|
-
enum: ["last7days", "last30days", "last90days", "mtd", "qtd", "ytd"],
|
|
424
|
-
description: "Reporting window (default: last7days).",
|
|
423
|
+
enum: ["last7days", "last30days", "last90days", "mtd", "qtd", "ytd", "custom"],
|
|
424
|
+
description: "Reporting window (default: last7days). Use 'custom' with startDate/endDate for any range.",
|
|
425
|
+
},
|
|
426
|
+
startDate: {
|
|
427
|
+
type: "string",
|
|
428
|
+
description: "YYYY-MM-DD. Passing dates implies timeframe=custom. Interpreted in the server's timezone (UTC on prod).",
|
|
429
|
+
},
|
|
430
|
+
endDate: {
|
|
431
|
+
type: "string",
|
|
432
|
+
description: "YYYY-MM-DD (inclusive, end of day). Passing dates implies timeframe=custom. Interpreted in the server's timezone (UTC on prod).",
|
|
425
433
|
},
|
|
426
434
|
stage: {
|
|
427
435
|
type: "string",
|
|
@@ -448,6 +456,33 @@ const TOOLS = [
|
|
|
448
456
|
required: ["agencyCompanyId", "merchantCompanyId"],
|
|
449
457
|
},
|
|
450
458
|
},
|
|
459
|
+
{
|
|
460
|
+
name: "log_outreach",
|
|
461
|
+
description: "Log an outbound touch to a company — the SOURCE OF TRUTH for outreach with no dedicated integration (phone calls, WhatsApp, in-person). The 'Approached' reporting stage counts these alongside CSM emails, LinkedIn outreach logs, and Gmail threads. Notes do NOT count as outreach — log real touches here instead. Use search_companies first to get the companyId.",
|
|
462
|
+
inputSchema: {
|
|
463
|
+
type: "object",
|
|
464
|
+
properties: {
|
|
465
|
+
companyId: { type: "number", description: "companies.id of the company that was contacted" },
|
|
466
|
+
channel: { type: "string", enum: ["call", "whatsapp", "linkedin", "email", "other"], description: "How the touch happened. Prefer the dedicated flows for linkedin/email when possible." },
|
|
467
|
+
recipient: { type: "string", description: "Who was contacted (name or handle/number)" },
|
|
468
|
+
actionDate: { type: "string", description: "When it happened — YYYY-MM-DD or ISO datetime (default: now)" },
|
|
469
|
+
note: { type: "string", description: "What was said / outcome" },
|
|
470
|
+
},
|
|
471
|
+
required: ["companyId", "channel"],
|
|
472
|
+
},
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
name: "list_outreach",
|
|
476
|
+
description: "List a company's logged outreach touches (calls, WhatsApp, etc.), most recent first.",
|
|
477
|
+
inputSchema: {
|
|
478
|
+
type: "object",
|
|
479
|
+
properties: {
|
|
480
|
+
companyId: { type: "number", description: "Company id" },
|
|
481
|
+
limit: { type: "number", description: "Max results (default 20, max 100)" },
|
|
482
|
+
},
|
|
483
|
+
required: ["companyId"],
|
|
484
|
+
},
|
|
485
|
+
},
|
|
451
486
|
// ── Kanban ────────────────────────────────────────────────────────────────
|
|
452
487
|
{
|
|
453
488
|
name: "list_kanban_columns",
|
|
@@ -647,6 +682,10 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
647
682
|
qs.set("entityType", String(a.entityType));
|
|
648
683
|
if (a.timeframe)
|
|
649
684
|
qs.set("timeframe", String(a.timeframe));
|
|
685
|
+
if (a.startDate)
|
|
686
|
+
qs.set("startDate", String(a.startDate));
|
|
687
|
+
if (a.endDate)
|
|
688
|
+
qs.set("endDate", String(a.endDate));
|
|
650
689
|
if (a.stage)
|
|
651
690
|
qs.set("stage", String(a.stage));
|
|
652
691
|
data = await api("GET", `/funnel-entities?${qs.toString()}`);
|
|
@@ -660,6 +699,19 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
660
699
|
});
|
|
661
700
|
break;
|
|
662
701
|
}
|
|
702
|
+
case "log_outreach": {
|
|
703
|
+
const a = args;
|
|
704
|
+
data = await api("POST", "/outreach", a);
|
|
705
|
+
break;
|
|
706
|
+
}
|
|
707
|
+
case "list_outreach": {
|
|
708
|
+
const { companyId, limit } = args;
|
|
709
|
+
const qs = new URLSearchParams();
|
|
710
|
+
if (limit != null)
|
|
711
|
+
qs.set("limit", String(limit));
|
|
712
|
+
data = await api("GET", `/companies/${companyId}/outreach?${qs.toString()}`);
|
|
713
|
+
break;
|
|
714
|
+
}
|
|
663
715
|
// ── Kanban ─────────────────────────────────────────────────────────────
|
|
664
716
|
case "list_kanban_columns": {
|
|
665
717
|
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.10",
|
|
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",
|