notifyme-csm-mcp 1.0.12 → 1.0.13

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 (2) hide show
  1. package/dist/index.js +36 -0
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -486,6 +486,32 @@ const TOOLS = [
486
486
  required: ["agencyCompanyId", "merchantCompanyId"],
487
487
  },
488
488
  },
489
+ {
490
+ name: "merge_companies",
491
+ description: "Merge a duplicate company into its canonical record. EVERYTHING moves to the target — notes, meetings, emails, reminders, Kanban cards (deduped to the furthest-along), activity, Gmail threads — and the source's primary contact plus any previously merged contacts are preserved on the target's Contacts block with provenance. An audit note is written on the target, then the source record is deleted (its full history now lives on the target; nothing is stranded). IRREVERSIBLE — double-check ids with get_company first.",
492
+ inputSchema: {
493
+ type: "object",
494
+ properties: {
495
+ sourceCompanyId: { type: "number", description: "companies.id of the DUPLICATE to merge away" },
496
+ targetCompanyId: { type: "number", description: "companies.id of the CANONICAL record that keeps everything" },
497
+ },
498
+ required: ["sourceCompanyId", "targetCompanyId"],
499
+ },
500
+ },
501
+ {
502
+ name: "add_contact",
503
+ description: "Append a secondary contact to a company's Contacts block (structured — shows on the company page). Deduped against the primary contact and existing entries. Use update_company for the PRIMARY contact slot; use this for additional people.",
504
+ inputSchema: {
505
+ type: "object",
506
+ properties: {
507
+ companyId: { type: "number", description: "Company id" },
508
+ email: { type: "string", description: "Contact email (required, the dedupe key)" },
509
+ name: { type: "string", description: "Full name" },
510
+ phone: { type: "string", description: "Phone" },
511
+ },
512
+ required: ["companyId", "email"],
513
+ },
514
+ },
489
515
  {
490
516
  name: "log_outreach",
491
517
  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.",
@@ -753,6 +779,16 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
753
779
  });
754
780
  break;
755
781
  }
782
+ case "merge_companies": {
783
+ const a = args;
784
+ data = await api("POST", "/companies/merge", a);
785
+ break;
786
+ }
787
+ case "add_contact": {
788
+ const { companyId, ...body } = args;
789
+ data = await api("POST", `/companies/${companyId}/contacts`, body);
790
+ break;
791
+ }
756
792
  case "log_outreach": {
757
793
  const a = args;
758
794
  data = await api("POST", "/outreach", a);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "notifyme-csm-mcp",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
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",