@wellforce/zendesk-mcp 1.0.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.
Files changed (54) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +130 -0
  3. package/dist/src/client/types.d.ts +160 -0
  4. package/dist/src/client/types.js +2 -0
  5. package/dist/src/client/types.js.map +1 -0
  6. package/dist/src/client/zendesk-client.d.ts +13 -0
  7. package/dist/src/client/zendesk-client.js +79 -0
  8. package/dist/src/client/zendesk-client.js.map +1 -0
  9. package/dist/src/config.d.ts +8 -0
  10. package/dist/src/config.js +27 -0
  11. package/dist/src/config.js.map +1 -0
  12. package/dist/src/index.d.ts +2 -0
  13. package/dist/src/index.js +39 -0
  14. package/dist/src/index.js.map +1 -0
  15. package/dist/src/tools/auth.d.ts +3 -0
  16. package/dist/src/tools/auth.js +48 -0
  17. package/dist/src/tools/auth.js.map +1 -0
  18. package/dist/src/tools/automations.d.ts +3 -0
  19. package/dist/src/tools/automations.js +146 -0
  20. package/dist/src/tools/automations.js.map +1 -0
  21. package/dist/src/tools/comments.d.ts +3 -0
  22. package/dist/src/tools/comments.js +47 -0
  23. package/dist/src/tools/comments.js.map +1 -0
  24. package/dist/src/tools/groups.d.ts +3 -0
  25. package/dist/src/tools/groups.js +86 -0
  26. package/dist/src/tools/groups.js.map +1 -0
  27. package/dist/src/tools/index.d.ts +3 -0
  28. package/dist/src/tools/index.js +25 -0
  29. package/dist/src/tools/index.js.map +1 -0
  30. package/dist/src/tools/macros.d.ts +3 -0
  31. package/dist/src/tools/macros.js +56 -0
  32. package/dist/src/tools/macros.js.map +1 -0
  33. package/dist/src/tools/organizations.d.ts +3 -0
  34. package/dist/src/tools/organizations.js +105 -0
  35. package/dist/src/tools/organizations.js.map +1 -0
  36. package/dist/src/tools/search.d.ts +3 -0
  37. package/dist/src/tools/search.js +41 -0
  38. package/dist/src/tools/search.js.map +1 -0
  39. package/dist/src/tools/tickets.d.ts +3 -0
  40. package/dist/src/tools/tickets.js +167 -0
  41. package/dist/src/tools/tickets.js.map +1 -0
  42. package/dist/src/tools/triggers.d.ts +3 -0
  43. package/dist/src/tools/triggers.js +144 -0
  44. package/dist/src/tools/triggers.js.map +1 -0
  45. package/dist/src/tools/users.d.ts +3 -0
  46. package/dist/src/tools/users.js +107 -0
  47. package/dist/src/tools/users.js.map +1 -0
  48. package/dist/src/tools/views.d.ts +3 -0
  49. package/dist/src/tools/views.js +79 -0
  50. package/dist/src/tools/views.js.map +1 -0
  51. package/dist/src/utils/errors.d.ts +13 -0
  52. package/dist/src/utils/errors.js +31 -0
  53. package/dist/src/utils/errors.js.map +1 -0
  54. package/package.json +53 -0
@@ -0,0 +1,146 @@
1
+ import { z } from "zod";
2
+ import { formatErrorResponse } from "../utils/errors.js";
3
+ const conditionSchema = z.object({
4
+ field: z.string().describe("Condition field name"),
5
+ operator: z.string().describe("Condition operator"),
6
+ value: z
7
+ .union([z.string(), z.number(), z.boolean(), z.null()])
8
+ .describe("Condition value"),
9
+ });
10
+ const actionSchema = z.object({
11
+ field: z.string().describe("Action field name"),
12
+ value: z
13
+ .union([
14
+ z.string(),
15
+ z.number(),
16
+ z.boolean(),
17
+ z.null(),
18
+ z.array(z.string()),
19
+ ])
20
+ .describe("Action value"),
21
+ });
22
+ const conditionsSchema = z
23
+ .object({
24
+ all: z
25
+ .array(conditionSchema)
26
+ .optional()
27
+ .describe("All conditions must match"),
28
+ any: z
29
+ .array(conditionSchema)
30
+ .optional()
31
+ .describe("Any condition can match"),
32
+ })
33
+ .describe("Automation conditions");
34
+ export function registerAutomationTools(server, client) {
35
+ server.tool("zendesk_list_automations", "List automations with optional active filter", {
36
+ active: z
37
+ .boolean()
38
+ .optional()
39
+ .describe("Set true to list only active automations"),
40
+ sort_by: z
41
+ .enum(["position", "title", "created_at", "updated_at"])
42
+ .optional()
43
+ .describe("Sort field"),
44
+ sort_order: z
45
+ .enum(["asc", "desc"])
46
+ .optional()
47
+ .describe("Sort direction"),
48
+ page: z.number().optional().describe("Page number for pagination"),
49
+ per_page: z
50
+ .number()
51
+ .min(1)
52
+ .max(100)
53
+ .optional()
54
+ .describe("Results per page (max 100)"),
55
+ }, async ({ active, ...params }) => {
56
+ try {
57
+ const path = active
58
+ ? "/automations/active.json"
59
+ : "/automations.json";
60
+ const result = await client.get(path, params);
61
+ return {
62
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
63
+ };
64
+ }
65
+ catch (error) {
66
+ return formatErrorResponse(error);
67
+ }
68
+ });
69
+ server.tool("zendesk_get_automation", "Get a single automation by ID", {
70
+ automation_id: z.number().describe("The automation ID to retrieve"),
71
+ }, async ({ automation_id }) => {
72
+ try {
73
+ const result = await client.get(`/automations/${automation_id}.json`);
74
+ return {
75
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
76
+ };
77
+ }
78
+ catch (error) {
79
+ return formatErrorResponse(error);
80
+ }
81
+ });
82
+ server.tool("zendesk_create_automation", "Create a new automation with conditions and actions", {
83
+ title: z.string().describe("Automation title"),
84
+ conditions: conditionsSchema,
85
+ actions: z
86
+ .array(actionSchema)
87
+ .describe("Actions to perform when automation fires"),
88
+ active: z
89
+ .boolean()
90
+ .optional()
91
+ .describe("Whether the automation is active (default true)"),
92
+ position: z.number().optional().describe("Position for ordering"),
93
+ }, async (params) => {
94
+ try {
95
+ const result = await client.post("/automations.json", {
96
+ automation: params,
97
+ });
98
+ return {
99
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
100
+ };
101
+ }
102
+ catch (error) {
103
+ return formatErrorResponse(error);
104
+ }
105
+ });
106
+ server.tool("zendesk_update_automation", "Update an existing automation", {
107
+ automation_id: z.number().describe("The automation ID to update"),
108
+ title: z.string().optional().describe("Updated title"),
109
+ conditions: conditionsSchema.optional().describe("Updated conditions"),
110
+ actions: z
111
+ .array(actionSchema)
112
+ .optional()
113
+ .describe("Updated actions"),
114
+ active: z.boolean().optional().describe("Updated active status"),
115
+ position: z.number().optional().describe("Updated position"),
116
+ }, async ({ automation_id, ...updates }) => {
117
+ try {
118
+ const result = await client.put(`/automations/${automation_id}.json`, { automation: updates });
119
+ return {
120
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
121
+ };
122
+ }
123
+ catch (error) {
124
+ return formatErrorResponse(error);
125
+ }
126
+ });
127
+ server.tool("zendesk_delete_automation", "Delete an automation", {
128
+ automation_id: z.number().describe("The automation ID to delete"),
129
+ }, async ({ automation_id }) => {
130
+ try {
131
+ await client.delete(`/automations/${automation_id}.json`);
132
+ return {
133
+ content: [
134
+ {
135
+ type: "text",
136
+ text: `Automation ${automation_id} deleted successfully.`,
137
+ },
138
+ ],
139
+ };
140
+ }
141
+ catch (error) {
142
+ return formatErrorResponse(error);
143
+ }
144
+ });
145
+ }
146
+ //# sourceMappingURL=automations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automations.js","sourceRoot":"","sources":["../../../src/tools/automations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ZendeskClient } from "../client/zendesk-client.js";
3
+ export declare function registerCommentTools(server: McpServer, client: ZendeskClient): void;
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ import { formatErrorResponse } from "../utils/errors.js";
3
+ export function registerCommentTools(server, client) {
4
+ server.tool("zendesk_list_comments", "List all comments on a ticket", {
5
+ ticket_id: z.number().describe("The ticket ID to get comments for"),
6
+ sort_order: z
7
+ .enum(["asc", "desc"])
8
+ .optional()
9
+ .describe("Sort order by created time (default: asc)"),
10
+ }, async ({ ticket_id, sort_order }) => {
11
+ try {
12
+ const params = sort_order ? { sort_order } : undefined;
13
+ const result = await client.get(`/tickets/${ticket_id}/comments.json`, params);
14
+ return {
15
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
16
+ };
17
+ }
18
+ catch (error) {
19
+ return formatErrorResponse(error);
20
+ }
21
+ });
22
+ server.tool("zendesk_add_comment", "Add a public reply or private internal note to a ticket", {
23
+ ticket_id: z.number().describe("The ticket ID to comment on"),
24
+ body: z.string().describe("The comment text"),
25
+ public: z
26
+ .boolean()
27
+ .describe("true for public reply, false for private internal note"),
28
+ }, async ({ ticket_id, body, public: isPublic }) => {
29
+ try {
30
+ const result = await client.put(`/tickets/${ticket_id}.json`, {
31
+ ticket: {
32
+ comment: {
33
+ body,
34
+ public: isPublic,
35
+ },
36
+ },
37
+ });
38
+ return {
39
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
40
+ };
41
+ }
42
+ catch (error) {
43
+ return formatErrorResponse(error);
44
+ }
45
+ });
46
+ }
47
+ //# sourceMappingURL=comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../../src/tools/comments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,MAAqB;IAErB,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,+BAA+B,EAC/B;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACnE,UAAU,EAAE,CAAC;aACV,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aACrB,QAAQ,EAAE;aACV,QAAQ,CAAC,2CAA2C,CAAC;KACzD,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAC7B,YAAY,SAAS,gBAAgB,EACrC,MAAM,CACP,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,yDAAyD,EACzD;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAC7D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC7C,MAAM,EAAE,CAAC;aACN,OAAO,EAAE;aACT,QAAQ,CAAC,wDAAwD,CAAC;KACtE,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,SAAS,OAAO,EAAE;gBAC5D,MAAM,EAAE;oBACN,OAAO,EAAE;wBACP,IAAI;wBACJ,MAAM,EAAE,QAAQ;qBACjB;iBACF;aACF,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ZendeskClient } from "../client/zendesk-client.js";
3
+ export declare function registerGroupTools(server: McpServer, client: ZendeskClient): void;
@@ -0,0 +1,86 @@
1
+ import { z } from "zod";
2
+ import { formatErrorResponse } from "../utils/errors.js";
3
+ export function registerGroupTools(server, client) {
4
+ server.tool("zendesk_list_groups", "List all groups", {
5
+ page: z.number().optional().describe("Page number for pagination"),
6
+ per_page: z
7
+ .number()
8
+ .min(1)
9
+ .max(100)
10
+ .optional()
11
+ .describe("Results per page (max 100)"),
12
+ }, async (params) => {
13
+ try {
14
+ const result = await client.get("/groups.json", params);
15
+ return {
16
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
17
+ };
18
+ }
19
+ catch (error) {
20
+ return formatErrorResponse(error);
21
+ }
22
+ });
23
+ server.tool("zendesk_get_group", "Get a single group by ID", {
24
+ group_id: z.number().describe("The group ID to retrieve"),
25
+ }, async ({ group_id }) => {
26
+ try {
27
+ const result = await client.get(`/groups/${group_id}.json`);
28
+ return {
29
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
30
+ };
31
+ }
32
+ catch (error) {
33
+ return formatErrorResponse(error);
34
+ }
35
+ });
36
+ server.tool("zendesk_create_group", "Create a new group", {
37
+ name: z.string().describe("Group name"),
38
+ description: z.string().optional().describe("Group description"),
39
+ }, async (params) => {
40
+ try {
41
+ const result = await client.post("/groups.json", { group: params });
42
+ return {
43
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
44
+ };
45
+ }
46
+ catch (error) {
47
+ return formatErrorResponse(error);
48
+ }
49
+ });
50
+ server.tool("zendesk_update_group", "Update an existing group", {
51
+ group_id: z.number().describe("The group ID to update"),
52
+ name: z.string().optional().describe("Updated group name"),
53
+ description: z.string().optional().describe("Updated group description"),
54
+ }, async ({ group_id, ...updates }) => {
55
+ try {
56
+ const result = await client.put(`/groups/${group_id}.json`, {
57
+ group: updates,
58
+ });
59
+ return {
60
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
61
+ };
62
+ }
63
+ catch (error) {
64
+ return formatErrorResponse(error);
65
+ }
66
+ });
67
+ server.tool("zendesk_delete_group", "Delete a group", {
68
+ group_id: z.number().describe("The group ID to delete"),
69
+ }, async ({ group_id }) => {
70
+ try {
71
+ await client.delete(`/groups/${group_id}.json`);
72
+ return {
73
+ content: [
74
+ {
75
+ type: "text",
76
+ text: `Group ${group_id} deleted successfully.`,
77
+ },
78
+ ],
79
+ };
80
+ }
81
+ catch (error) {
82
+ return formatErrorResponse(error);
83
+ }
84
+ });
85
+ }
86
+ //# sourceMappingURL=groups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groups.js","sourceRoot":"","sources":["../../../src/tools/groups.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ZendeskClient } from "../client/zendesk-client.js";
3
+ export declare function registerAllTools(server: McpServer, client: ZendeskClient, subdomain: string): void;
@@ -0,0 +1,25 @@
1
+ import { registerAuthTools } from "./auth.js";
2
+ import { registerTicketTools } from "./tickets.js";
3
+ import { registerCommentTools } from "./comments.js";
4
+ import { registerUserTools } from "./users.js";
5
+ import { registerOrganizationTools } from "./organizations.js";
6
+ import { registerGroupTools } from "./groups.js";
7
+ import { registerViewTools } from "./views.js";
8
+ import { registerMacroTools } from "./macros.js";
9
+ import { registerTriggerTools } from "./triggers.js";
10
+ import { registerAutomationTools } from "./automations.js";
11
+ import { registerSearchTools } from "./search.js";
12
+ export function registerAllTools(server, client, subdomain) {
13
+ registerAuthTools(server, client, subdomain);
14
+ registerTicketTools(server, client);
15
+ registerCommentTools(server, client);
16
+ registerUserTools(server, client);
17
+ registerOrganizationTools(server, client);
18
+ registerGroupTools(server, client);
19
+ registerViewTools(server, client);
20
+ registerMacroTools(server, client);
21
+ registerTriggerTools(server, client);
22
+ registerAutomationTools(server, client);
23
+ registerSearchTools(server, client);
24
+ }
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,UAAU,gBAAgB,CAC9B,MAAiB,EACjB,MAAqB,EACrB,SAAiB;IAEjB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC7C,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ZendeskClient } from "../client/zendesk-client.js";
3
+ export declare function registerMacroTools(server: McpServer, client: ZendeskClient): void;
@@ -0,0 +1,56 @@
1
+ import { z } from "zod";
2
+ import { formatErrorResponse } from "../utils/errors.js";
3
+ export function registerMacroTools(server, client) {
4
+ server.tool("zendesk_list_macros", "List macros with optional active filter", {
5
+ active: z
6
+ .boolean()
7
+ .optional()
8
+ .describe("Set true to list only active macros"),
9
+ page: z.number().optional().describe("Page number for pagination"),
10
+ per_page: z
11
+ .number()
12
+ .min(1)
13
+ .max(100)
14
+ .optional()
15
+ .describe("Results per page (max 100)"),
16
+ }, async ({ active, ...params }) => {
17
+ try {
18
+ const path = active ? "/macros/active.json" : "/macros.json";
19
+ const result = await client.get(path, params);
20
+ return {
21
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
22
+ };
23
+ }
24
+ catch (error) {
25
+ return formatErrorResponse(error);
26
+ }
27
+ });
28
+ server.tool("zendesk_get_macro", "Get a single macro by ID", {
29
+ macro_id: z.number().describe("The macro ID to retrieve"),
30
+ }, async ({ macro_id }) => {
31
+ try {
32
+ const result = await client.get(`/macros/${macro_id}.json`);
33
+ return {
34
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
35
+ };
36
+ }
37
+ catch (error) {
38
+ return formatErrorResponse(error);
39
+ }
40
+ });
41
+ server.tool("zendesk_apply_macro", "Apply a macro to a ticket, returning the changes the macro would make", {
42
+ ticket_id: z.number().describe("The ticket ID to apply the macro to"),
43
+ macro_id: z.number().describe("The macro ID to apply"),
44
+ }, async ({ ticket_id, macro_id }) => {
45
+ try {
46
+ const result = await client.get(`/tickets/${ticket_id}/macros/${macro_id}/apply.json`);
47
+ return {
48
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
49
+ };
50
+ }
51
+ catch (error) {
52
+ return formatErrorResponse(error);
53
+ }
54
+ });
55
+ }
56
+ //# sourceMappingURL=macros.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"macros.js","sourceRoot":"","sources":["../../../src/tools/macros.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,UAAU,kBAAkB,CAChC,MAAiB,EACjB,MAAqB;IAErB,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,yCAAyC,EACzC;QACE,MAAM,EAAE,CAAC;aACN,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,qCAAqC,CAAC;QAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAClE,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,4BAA4B,CAAC;KAC1C,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,cAAc,CAAC;YAC7D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,0BAA0B,EAC1B;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC1D,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,QAAQ,OAAO,CAAC,CAAC;YAC5D,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,uEAAuE,EACvE;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QACrE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACvD,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAC7B,YAAY,SAAS,WAAW,QAAQ,aAAa,CACtD,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ZendeskClient } from "../client/zendesk-client.js";
3
+ export declare function registerOrganizationTools(server: McpServer, client: ZendeskClient): void;
@@ -0,0 +1,105 @@
1
+ import { z } from "zod";
2
+ import { formatErrorResponse } from "../utils/errors.js";
3
+ export function registerOrganizationTools(server, client) {
4
+ server.tool("zendesk_list_organizations", "List all organizations", {
5
+ page: z.number().optional().describe("Page number for pagination"),
6
+ per_page: z
7
+ .number()
8
+ .min(1)
9
+ .max(100)
10
+ .optional()
11
+ .describe("Results per page (max 100)"),
12
+ }, async (params) => {
13
+ try {
14
+ const result = await client.get("/organizations.json", params);
15
+ return {
16
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
17
+ };
18
+ }
19
+ catch (error) {
20
+ return formatErrorResponse(error);
21
+ }
22
+ });
23
+ server.tool("zendesk_get_organization", "Get a single organization by ID", {
24
+ organization_id: z
25
+ .number()
26
+ .describe("The organization ID to retrieve"),
27
+ }, async ({ organization_id }) => {
28
+ try {
29
+ const result = await client.get(`/organizations/${organization_id}.json`);
30
+ return {
31
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
32
+ };
33
+ }
34
+ catch (error) {
35
+ return formatErrorResponse(error);
36
+ }
37
+ });
38
+ server.tool("zendesk_create_organization", "Create a new organization", {
39
+ name: z.string().describe("Organization name"),
40
+ domain_names: z
41
+ .array(z.string())
42
+ .optional()
43
+ .describe("Associated domain names"),
44
+ tags: z.array(z.string()).optional().describe("Tags to apply"),
45
+ notes: z.string().optional().describe("Notes about the organization"),
46
+ details: z
47
+ .string()
48
+ .optional()
49
+ .describe("Additional details about the organization"),
50
+ }, async (params) => {
51
+ try {
52
+ const result = await client.post("/organizations.json", {
53
+ organization: params,
54
+ });
55
+ return {
56
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
57
+ };
58
+ }
59
+ catch (error) {
60
+ return formatErrorResponse(error);
61
+ }
62
+ });
63
+ server.tool("zendesk_update_organization", "Update an existing organization's properties", {
64
+ organization_id: z.number().describe("The organization ID to update"),
65
+ name: z.string().optional().describe("Updated name"),
66
+ domain_names: z
67
+ .array(z.string())
68
+ .optional()
69
+ .describe("Updated domain names"),
70
+ tags: z.array(z.string()).optional().describe("Updated tags"),
71
+ notes: z.string().optional().describe("Updated notes"),
72
+ details: z.string().optional().describe("Updated details"),
73
+ }, async ({ organization_id, ...updates }) => {
74
+ try {
75
+ const result = await client.put(`/organizations/${organization_id}.json`, { organization: updates });
76
+ return {
77
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
78
+ };
79
+ }
80
+ catch (error) {
81
+ return formatErrorResponse(error);
82
+ }
83
+ });
84
+ server.tool("zendesk_delete_organization", "Delete an organization", {
85
+ organization_id: z
86
+ .number()
87
+ .describe("The organization ID to delete"),
88
+ }, async ({ organization_id }) => {
89
+ try {
90
+ await client.delete(`/organizations/${organization_id}.json`);
91
+ return {
92
+ content: [
93
+ {
94
+ type: "text",
95
+ text: `Organization ${organization_id} deleted successfully.`,
96
+ },
97
+ ],
98
+ };
99
+ }
100
+ catch (error) {
101
+ return formatErrorResponse(error);
102
+ }
103
+ });
104
+ }
105
+ //# sourceMappingURL=organizations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organizations.js","sourceRoot":"","sources":["../../../src/tools/organizations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ZendeskClient } from "../client/zendesk-client.js";
3
+ export declare function registerSearchTools(server: McpServer, client: ZendeskClient): void;
@@ -0,0 +1,41 @@
1
+ import { z } from "zod";
2
+ import { formatErrorResponse } from "../utils/errors.js";
3
+ export function registerSearchTools(server, client) {
4
+ server.tool("zendesk_search", 'Search across tickets, users, and organizations using Zendesk query syntax. Examples: "status:open type:ticket", "type:user email:jane@example.com", "type:organization name:Acme"', {
5
+ query: z
6
+ .string()
7
+ .describe('Zendesk search query string (e.g. "status:open type:ticket priority:high")'),
8
+ sort_by: z
9
+ .enum([
10
+ "updated_at",
11
+ "created_at",
12
+ "priority",
13
+ "status",
14
+ "ticket_type",
15
+ ])
16
+ .optional()
17
+ .describe("Sort field"),
18
+ sort_order: z
19
+ .enum(["asc", "desc"])
20
+ .optional()
21
+ .describe("Sort direction"),
22
+ page: z.number().optional().describe("Page number for pagination"),
23
+ per_page: z
24
+ .number()
25
+ .min(1)
26
+ .max(100)
27
+ .optional()
28
+ .describe("Results per page (max 100)"),
29
+ }, async (params) => {
30
+ try {
31
+ const result = await client.get("/search.json", params);
32
+ return {
33
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
34
+ };
35
+ }
36
+ catch (error) {
37
+ return formatErrorResponse(error);
38
+ }
39
+ });
40
+ }
41
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,UAAU,mBAAmB,CACjC,MAAiB,EACjB,MAAqB;IAErB,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,oLAAoL,EACpL;QACE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,CACP,4EAA4E,CAC7E;QACH,OAAO,EAAE,CAAC;aACP,IAAI,CAAC;YACJ,YAAY;YACZ,YAAY;YACZ,UAAU;YACV,QAAQ;YACR,aAAa;SACd,CAAC;aACD,QAAQ,EAAE;aACV,QAAQ,CAAC,YAAY,CAAC;QACzB,UAAU,EAAE,CAAC;aACV,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aACrB,QAAQ,EAAE;aACV,QAAQ,CAAC,gBAAgB,CAAC;QAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAClE,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,4BAA4B,CAAC;KAC1C,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { ZendeskClient } from "../client/zendesk-client.js";
3
+ export declare function registerTicketTools(server: McpServer, client: ZendeskClient): void;