conduyt-mcp 4.60.0 → 4.62.0

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.
@@ -11,8 +11,8 @@ export function registerDiscoveryTools(server, client) {
11
11
  const result = await client.get("/api/v1/api-keys/check");
12
12
  return formatResult(result);
13
13
  });
14
- server.tool("conduyt_search", "Global search across all CRM entities — contacts, deals, companies, tasks.", {
15
- query: z.string().describe("Search query — matches names, emails, phone numbers, deal titles"),
14
+ server.tool("conduyt_search", "Global search across all CRM entities — contacts, deals, companies, tasks, plus notes, messages, activities and document text. Names, emails, phones and deal titles match from 2 characters; the text legs (note/message/activity/task bodies, message subjects, activity titles) need 3 or more and each runs under a 3-second budget — a leg cut at the budget is left out and the response says so (`partial: true`, `partialLegs: [...]`); with a term under 3 characters the text legs are not searched and `skippedLegs` lists them (`textMinLength` = 3); retry with a longer or more specific term.", {
15
+ query: z.string().describe("Search query — matches names, emails, phone numbers, deal titles (2+ characters); free text in notes, messages, activities, tasks and documents from 3 characters"),
16
16
  limit: z.number().optional().describe("Max results to return (default 50)"),
17
17
  cursor: z.string().optional().describe("Pagination cursor from a previous response's nextCursor"),
18
18
  }, async ({ query, limit, cursor }) => {
@@ -19,7 +19,7 @@ export function registerSmartViewTools(server, client) {
19
19
  const result = await client.get("/api/v1/smart-views");
20
20
  return formatResult(result);
21
21
  });
22
- server.tool("conduyt_update_smart_view_dialing", "Change one Smart View's Smart Dialing settings (admin key): make it a priority or not, the lifetime attempt cap, the per-day cap (null = no daily cap, counted in the account timezone), the cooldown between calls to the same lead, and the retry schedule. Only the fields you pass change. Use conduyt_reorder_smart_views to change WHICH priority it is.", {
22
+ server.tool("conduyt_update_smart_view_dialing", "Change one Smart View's Smart Dialing settings (admin key): make it a priority or not, the lifetime attempt cap, the per-day cap (null = no daily cap, counted in the account timezone), the cooldown between calls to the same lead, the shared pool and when a pool lead is assigned, and the retry schedule. Only the fields you pass change. Use conduyt_reorder_smart_views to change WHICH priority it is.", {
23
23
  id: z.string().uuid().describe("Smart View UUID (from conduyt_list_smart_views)"),
24
24
  dialEnabled: z.boolean().optional().describe("true = this view is a Smart Dialing priority; false = agents no longer dial it"),
25
25
  maxDialAttempts: z.number().int().min(1).max(20).optional().describe("Stop after N calls to a lead, ever (1–20)"),
@@ -35,14 +35,18 @@ export function registerSmartViewTools(server, client) {
35
35
  dialIncludeUnassigned: z
36
36
  .boolean()
37
37
  .optional()
38
- .describe("true = this priority also hands out leads nobody owns yet (a shared pool; the lead is assigned to the rep at hand-out); false = the rep's own leads only"),
38
+ .describe("true = this priority also hands out leads nobody owns yet (a shared pool); false = the rep's own leads only"),
39
+ dialPoolAssignOn: z
40
+ .enum(["handout", "disposition"])
41
+ .optional()
42
+ .describe("Shared pool only: when an unowned lead becomes the rep's. handout (default) = the moment the dialer offers it; disposition = only when the rep saves a disposition (an unanswered lead goes back to the pool)"),
39
43
  dialSchedule: z
40
44
  .array(scheduleStepSchema)
41
45
  .min(1)
42
46
  .max(20)
43
47
  .optional()
44
48
  .describe('Retry schedule, e.g. [{"attemptNumber":1,"delayMinutes":0},{"attemptNumber":2,"delayMinutes":60},{"attemptNumber":3,"delayMinutes":1440}]'),
45
- }, async ({ id, dialEnabled, maxDialAttempts, maxDialAttemptsPerDay, dialCooldownMinutes, dialIncludeUnassigned, dialSchedule }) => {
49
+ }, async ({ id, dialEnabled, maxDialAttempts, maxDialAttemptsPerDay, dialCooldownMinutes, dialIncludeUnassigned, dialPoolAssignOn, dialSchedule }) => {
46
50
  // Inline body (undefined fields drop out in JSON) — keeps the shape
47
51
  // readable by the contract verifier's static parser.
48
52
  const result = await client.patch(`/api/v1/smart-views/${encodeURIComponent(id)}`, {
@@ -51,6 +55,7 @@ export function registerSmartViewTools(server, client) {
51
55
  maxDialAttemptsPerDay,
52
56
  dialCooldownMinutes,
53
57
  dialIncludeUnassigned,
58
+ dialPoolAssignOn,
54
59
  dialSchedule,
55
60
  });
56
61
  return formatResult(result);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "conduyt-mcp",
3
- "version": "4.60.0",
3
+ "version": "4.62.0",
4
4
  "description": "MCP server for Conduyt CRM — expose CRM operations as AI-accessible tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,11 +1,11 @@
1
1
  {
2
- "generatedAt": "2026-09-16T15:12:50.401Z",
2
+ "generatedAt": "2026-09-16T16:47:18.079Z",
3
3
  "toolCount": 277,
4
- "totalEndpoints": 983,
4
+ "totalEndpoints": 984,
5
5
  "counts": {
6
6
  "covered": 259,
7
7
  "excluded": 289,
8
- "planned": 435,
8
+ "planned": 436,
9
9
  "uncategorized": 0
10
10
  },
11
11
  "matrix": {
@@ -3924,6 +3924,10 @@
3924
3924
  "status": "planned",
3925
3925
  "reason": "smart view management beyond summaries"
3926
3926
  },
3927
+ "GET /api/v1/smart-views/:id": {
3928
+ "status": "planned",
3929
+ "reason": "smart view management beyond summaries"
3930
+ },
3927
3931
  "PATCH /api/v1/smart-views/:id": {
3928
3932
  "status": "covered",
3929
3933
  "tools": [