@codespar/mcp-rd-station 0.2.0 → 0.2.1

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
@@ -49,18 +49,28 @@ Add to `.cursor/mcp.json` or `.vscode/mcp.json`:
49
49
  }
50
50
  ```
51
51
 
52
- ## Tools
52
+ ## Tools (18)
53
53
 
54
- | Tool | Description |
55
- |------|-------------|
54
+ | Tool | Purpose |
55
+ |---|---|
56
56
  | `create_contact` | Create a contact in RD Station CRM |
57
57
  | `update_contact` | Update a contact by UUID |
58
+ | `upsert_contact` | Upsert (create or update) a contact identified by email (Marketing API) |
58
59
  | `get_contact` | Get contact details by UUID or email |
59
60
  | `list_contacts` | List contacts with pagination |
61
+ | `delete_contact` | Delete a contact by UUID |
60
62
  | `create_event` | Create a conversion event for a contact |
61
63
  | `list_funnels` | List all sales funnels |
62
64
  | `get_funnel` | Get funnel details with stages |
65
+ | `list_deal_stages` | List deal stages of a pipeline (funnel) |
63
66
  | `create_opportunity` | Create a sales opportunity in a funnel |
67
+ | `update_deal` | Update a deal/opportunity by ID |
68
+ | `get_deal` | Get a deal/opportunity by ID |
69
+ | `list_deals` | List deals with optional filters and pagination |
70
+ | `list_segmentations` | List contact segmentations |
71
+ | `get_segmentation_contacts` | List contacts inside a given segmentation |
72
+ | `update_lead_scoring` | Mark a contact as lead, qualified lead, or opportunity (lead scoring) |
73
+ | `create_webhook` | Subscribe a webhook to RD Station events (WEBHOOK.CONVERTED / WEBHOOK.MARKED_OPPORTUNITY) |
64
74
 
65
75
  ## Authentication
66
76
 
package/dist/index.js CHANGED
@@ -58,7 +58,7 @@ async function rdStationRequest(method, path, body) {
58
58
  return { raw: text };
59
59
  }
60
60
  }
61
- const server = new Server({ name: "mcp-rd-station", version: "0.2.0" }, { capabilities: { tools: {} } });
61
+ const server = new Server({ name: "mcp-rd-station", version: "0.2.1" }, { capabilities: { tools: {} } });
62
62
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
63
63
  tools: [
64
64
  {
@@ -453,7 +453,7 @@ async function main() {
453
453
  const t = new StreamableHTTPServerTransport({ sessionIdGenerator: () => randomUUID(), onsessioninitialized: (id) => { transports.set(id, t); } });
454
454
  t.onclose = () => { if (t.sessionId)
455
455
  transports.delete(t.sessionId); };
456
- const s = new Server({ name: "mcp-rd-station", version: "0.2.0" }, { capabilities: { tools: {} } });
456
+ const s = new Server({ name: "mcp-rd-station", version: "0.2.1" }, { capabilities: { tools: {} } });
457
457
  server._requestHandlers.forEach((v, k) => s._requestHandlers.set(k, v));
458
458
  server._notificationHandlers?.forEach((v, k) => s._notificationHandlers.set(k, v));
459
459
  await s.connect(t);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@codespar/mcp-rd-station",
3
- "version": "0.2.0",
4
- "description": "MCP server for RD Station contacts, events, funnels, deals, segmentations, lead scoring, webhooks",
3
+ "version": "0.2.1",
4
+ "description": "MCP server for RD Station \u2014 contacts, events, funnels, deals, segmentations, lead scoring, webhooks",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "bin": {
package/server.json CHANGED
@@ -7,12 +7,12 @@
7
7
  "source": "github",
8
8
  "subfolder": "packages/communication/rd-station"
9
9
  },
10
- "version": "0.2.0",
10
+ "version": "0.2.1",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "@codespar/mcp-rd-station",
15
- "version": "0.2.0",
15
+ "version": "0.2.1",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
package/src/index.ts CHANGED
@@ -60,7 +60,7 @@ async function rdStationRequest(method: string, path: string, body?: unknown): P
60
60
  }
61
61
 
62
62
  const server = new Server(
63
- { name: "mcp-rd-station", version: "0.2.0" },
63
+ { name: "mcp-rd-station", version: "0.2.1" },
64
64
  { capabilities: { tools: {} } }
65
65
  );
66
66
 
@@ -442,7 +442,7 @@ async function main() {
442
442
  if (!sid && isInitializeRequest(req.body)) {
443
443
  const t = new StreamableHTTPServerTransport({ sessionIdGenerator: () => randomUUID(), onsessioninitialized: (id) => { transports.set(id, t); } });
444
444
  t.onclose = () => { if (t.sessionId) transports.delete(t.sessionId); };
445
- const s = new Server({ name: "mcp-rd-station", version: "0.2.0" }, { capabilities: { tools: {} } }); (server as any)._requestHandlers.forEach((v: any, k: any) => (s as any)._requestHandlers.set(k, v)); (server as any)._notificationHandlers?.forEach((v: any, k: any) => (s as any)._notificationHandlers.set(k, v)); await s.connect(t);
445
+ const s = new Server({ name: "mcp-rd-station", version: "0.2.1" }, { capabilities: { tools: {} } }); (server as any)._requestHandlers.forEach((v: any, k: any) => (s as any)._requestHandlers.set(k, v)); (server as any)._notificationHandlers?.forEach((v: any, k: any) => (s as any)._notificationHandlers.set(k, v)); await s.connect(t);
446
446
  await t.handleRequest(req, res, req.body); return;
447
447
  }
448
448
  res.status(400).json({ jsonrpc: "2.0", error: { code: -32000, message: "Bad Request" }, id: null });