@instantkom/mcp-server 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 (187) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +274 -0
  3. package/dist/client/api-client.d.ts +76 -0
  4. package/dist/client/api-client.d.ts.map +1 -0
  5. package/dist/client/api-client.js +234 -0
  6. package/dist/client/api-client.js.map +1 -0
  7. package/dist/index.public.d.ts +23 -0
  8. package/dist/index.public.d.ts.map +1 -0
  9. package/dist/index.public.js +79 -0
  10. package/dist/index.public.js.map +1 -0
  11. package/dist/tools/app/account.d.ts +46 -0
  12. package/dist/tools/app/account.d.ts.map +1 -0
  13. package/dist/tools/app/account.js +69 -0
  14. package/dist/tools/app/account.js.map +1 -0
  15. package/dist/tools/app/analytics.d.ts +78 -0
  16. package/dist/tools/app/analytics.d.ts.map +1 -0
  17. package/dist/tools/app/analytics.js +158 -0
  18. package/dist/tools/app/analytics.js.map +1 -0
  19. package/dist/tools/app/api-keys.d.ts +195 -0
  20. package/dist/tools/app/api-keys.d.ts.map +1 -0
  21. package/dist/tools/app/api-keys.js +203 -0
  22. package/dist/tools/app/api-keys.js.map +1 -0
  23. package/dist/tools/app/billing.d.ts +78 -0
  24. package/dist/tools/app/billing.d.ts.map +1 -0
  25. package/dist/tools/app/billing.js +117 -0
  26. package/dist/tools/app/billing.js.map +1 -0
  27. package/dist/tools/app/bots.d.ts +641 -0
  28. package/dist/tools/app/bots.d.ts.map +1 -0
  29. package/dist/tools/app/bots.js +599 -0
  30. package/dist/tools/app/bots.js.map +1 -0
  31. package/dist/tools/app/broadcasts.d.ts +165 -0
  32. package/dist/tools/app/broadcasts.d.ts.map +1 -0
  33. package/dist/tools/app/broadcasts.js +219 -0
  34. package/dist/tools/app/broadcasts.js.map +1 -0
  35. package/dist/tools/app/channels.d.ts +126 -0
  36. package/dist/tools/app/channels.d.ts.map +1 -0
  37. package/dist/tools/app/channels.js +198 -0
  38. package/dist/tools/app/channels.js.map +1 -0
  39. package/dist/tools/app/chats.d.ts +90 -0
  40. package/dist/tools/app/chats.d.ts.map +1 -0
  41. package/dist/tools/app/chats.js +162 -0
  42. package/dist/tools/app/chats.js.map +1 -0
  43. package/dist/tools/app/contacts.d.ts +153 -0
  44. package/dist/tools/app/contacts.d.ts.map +1 -0
  45. package/dist/tools/app/contacts.js +186 -0
  46. package/dist/tools/app/contacts.js.map +1 -0
  47. package/dist/tools/app/coupons.d.ts +37 -0
  48. package/dist/tools/app/coupons.d.ts.map +1 -0
  49. package/dist/tools/app/coupons.js +70 -0
  50. package/dist/tools/app/coupons.js.map +1 -0
  51. package/dist/tools/app/custom-fields.d.ts +301 -0
  52. package/dist/tools/app/custom-fields.d.ts.map +1 -0
  53. package/dist/tools/app/custom-fields.js +265 -0
  54. package/dist/tools/app/custom-fields.js.map +1 -0
  55. package/dist/tools/app/dashboard-widgets.d.ts +121 -0
  56. package/dist/tools/app/dashboard-widgets.d.ts.map +1 -0
  57. package/dist/tools/app/dashboard-widgets.js +163 -0
  58. package/dist/tools/app/dashboard-widgets.js.map +1 -0
  59. package/dist/tools/app/dashboard.d.ts +18 -0
  60. package/dist/tools/app/dashboard.d.ts.map +1 -0
  61. package/dist/tools/app/dashboard.js +29 -0
  62. package/dist/tools/app/dashboard.js.map +1 -0
  63. package/dist/tools/app/ecommerce.d.ts +95 -0
  64. package/dist/tools/app/ecommerce.d.ts.map +1 -0
  65. package/dist/tools/app/ecommerce.js +109 -0
  66. package/dist/tools/app/ecommerce.js.map +1 -0
  67. package/dist/tools/app/events.d.ts +53 -0
  68. package/dist/tools/app/events.d.ts.map +1 -0
  69. package/dist/tools/app/events.js +66 -0
  70. package/dist/tools/app/events.js.map +1 -0
  71. package/dist/tools/app/exports.d.ts +81 -0
  72. package/dist/tools/app/exports.d.ts.map +1 -0
  73. package/dist/tools/app/exports.js +125 -0
  74. package/dist/tools/app/exports.js.map +1 -0
  75. package/dist/tools/app/feeds.d.ts +113 -0
  76. package/dist/tools/app/feeds.d.ts.map +1 -0
  77. package/dist/tools/app/feeds.js +166 -0
  78. package/dist/tools/app/feeds.js.map +1 -0
  79. package/dist/tools/app/flow-edges.d.ts +122 -0
  80. package/dist/tools/app/flow-edges.d.ts.map +1 -0
  81. package/dist/tools/app/flow-edges.js +130 -0
  82. package/dist/tools/app/flow-edges.js.map +1 -0
  83. package/dist/tools/app/flow-nodes.d.ts +122 -0
  84. package/dist/tools/app/flow-nodes.d.ts.map +1 -0
  85. package/dist/tools/app/flow-nodes.js +130 -0
  86. package/dist/tools/app/flow-nodes.js.map +1 -0
  87. package/dist/tools/app/flows.d.ts +136 -0
  88. package/dist/tools/app/flows.d.ts.map +1 -0
  89. package/dist/tools/app/flows.js +141 -0
  90. package/dist/tools/app/flows.js.map +1 -0
  91. package/dist/tools/app/funnels.d.ts +96 -0
  92. package/dist/tools/app/funnels.d.ts.map +1 -0
  93. package/dist/tools/app/funnels.js +127 -0
  94. package/dist/tools/app/funnels.js.map +1 -0
  95. package/dist/tools/app/index.d.ts +51 -0
  96. package/dist/tools/app/index.d.ts.map +1 -0
  97. package/dist/tools/app/index.js +121 -0
  98. package/dist/tools/app/index.js.map +1 -0
  99. package/dist/tools/app/media.d.ts +44 -0
  100. package/dist/tools/app/media.d.ts.map +1 -0
  101. package/dist/tools/app/media.js +183 -0
  102. package/dist/tools/app/media.js.map +1 -0
  103. package/dist/tools/app/message-events.d.ts +69 -0
  104. package/dist/tools/app/message-events.d.ts.map +1 -0
  105. package/dist/tools/app/message-events.js +72 -0
  106. package/dist/tools/app/message-events.js.map +1 -0
  107. package/dist/tools/app/messages.d.ts +380 -0
  108. package/dist/tools/app/messages.d.ts.map +1 -0
  109. package/dist/tools/app/messages.js +345 -0
  110. package/dist/tools/app/messages.js.map +1 -0
  111. package/dist/tools/app/object-folders.d.ts +82 -0
  112. package/dist/tools/app/object-folders.d.ts.map +1 -0
  113. package/dist/tools/app/object-folders.js +123 -0
  114. package/dist/tools/app/object-folders.js.map +1 -0
  115. package/dist/tools/app/plans.d.ts +53 -0
  116. package/dist/tools/app/plans.d.ts.map +1 -0
  117. package/dist/tools/app/plans.js +70 -0
  118. package/dist/tools/app/plans.js.map +1 -0
  119. package/dist/tools/app/polls.d.ts +227 -0
  120. package/dist/tools/app/polls.d.ts.map +1 -0
  121. package/dist/tools/app/polls.js +256 -0
  122. package/dist/tools/app/polls.js.map +1 -0
  123. package/dist/tools/app/qr-codes.d.ts +103 -0
  124. package/dist/tools/app/qr-codes.d.ts.map +1 -0
  125. package/dist/tools/app/qr-codes.js +160 -0
  126. package/dist/tools/app/qr-codes.js.map +1 -0
  127. package/dist/tools/app/segmentations.d.ts +132 -0
  128. package/dist/tools/app/segmentations.d.ts.map +1 -0
  129. package/dist/tools/app/segmentations.js +237 -0
  130. package/dist/tools/app/segmentations.js.map +1 -0
  131. package/dist/tools/app/settings.d.ts +75 -0
  132. package/dist/tools/app/settings.d.ts.map +1 -0
  133. package/dist/tools/app/settings.js +96 -0
  134. package/dist/tools/app/settings.js.map +1 -0
  135. package/dist/tools/app/shortlinks.d.ts +103 -0
  136. package/dist/tools/app/shortlinks.d.ts.map +1 -0
  137. package/dist/tools/app/shortlinks.js +158 -0
  138. package/dist/tools/app/shortlinks.js.map +1 -0
  139. package/dist/tools/app/super-widgets.d.ts +95 -0
  140. package/dist/tools/app/super-widgets.d.ts.map +1 -0
  141. package/dist/tools/app/super-widgets.js +124 -0
  142. package/dist/tools/app/super-widgets.js.map +1 -0
  143. package/dist/tools/app/tags.d.ts +267 -0
  144. package/dist/tools/app/tags.d.ts.map +1 -0
  145. package/dist/tools/app/tags.js +363 -0
  146. package/dist/tools/app/tags.js.map +1 -0
  147. package/dist/tools/app/team-members.d.ts +141 -0
  148. package/dist/tools/app/team-members.d.ts.map +1 -0
  149. package/dist/tools/app/team-members.js +195 -0
  150. package/dist/tools/app/team-members.js.map +1 -0
  151. package/dist/tools/app/templates.d.ts +212 -0
  152. package/dist/tools/app/templates.d.ts.map +1 -0
  153. package/dist/tools/app/templates.js +270 -0
  154. package/dist/tools/app/templates.js.map +1 -0
  155. package/dist/tools/app/tickets.d.ts +277 -0
  156. package/dist/tools/app/tickets.d.ts.map +1 -0
  157. package/dist/tools/app/tickets.js +266 -0
  158. package/dist/tools/app/tickets.js.map +1 -0
  159. package/dist/tools/app/users.d.ts +70 -0
  160. package/dist/tools/app/users.d.ts.map +1 -0
  161. package/dist/tools/app/users.js +72 -0
  162. package/dist/tools/app/users.js.map +1 -0
  163. package/dist/tools/app/webhooks.d.ts +61 -0
  164. package/dist/tools/app/webhooks.d.ts.map +1 -0
  165. package/dist/tools/app/webhooks.js +85 -0
  166. package/dist/tools/app/webhooks.js.map +1 -0
  167. package/dist/tools/app/widgets.d.ts +103 -0
  168. package/dist/tools/app/widgets.d.ts.map +1 -0
  169. package/dist/tools/app/widgets.js +128 -0
  170. package/dist/tools/app/widgets.js.map +1 -0
  171. package/dist/tools/public/health.d.ts +16 -0
  172. package/dist/tools/public/health.d.ts.map +1 -0
  173. package/dist/tools/public/health.js +27 -0
  174. package/dist/tools/public/health.js.map +1 -0
  175. package/dist/tools/public/index.d.ts +15 -0
  176. package/dist/tools/public/index.d.ts.map +1 -0
  177. package/dist/tools/public/index.js +10 -0
  178. package/dist/tools/public/index.js.map +1 -0
  179. package/dist/tools/tool-router.d.ts +21 -0
  180. package/dist/tools/tool-router.d.ts.map +1 -0
  181. package/dist/tools/tool-router.js +118 -0
  182. package/dist/tools/tool-router.js.map +1 -0
  183. package/dist/types/index.d.ts +73 -0
  184. package/dist/types/index.d.ts.map +1 -0
  185. package/dist/types/index.js +5 -0
  186. package/dist/types/index.js.map +1 -0
  187. package/package.json +89 -0
@@ -0,0 +1,103 @@
1
+ import type { ApiClient } from '../../client/api-client.js';
2
+ /**
3
+ * Widgets Tools
4
+ * Widget and superwidget management
5
+ */
6
+ export declare function listWidgets(apiClient: ApiClient, args: any): Promise<any>;
7
+ export declare function getWidget(apiClient: ApiClient, args: {
8
+ id: number;
9
+ }): Promise<any>;
10
+ export declare function createWidget(apiClient: ApiClient, args: any): Promise<any>;
11
+ export declare function updateWidget(apiClient: ApiClient, args: any): Promise<any>;
12
+ export declare function deleteWidget(apiClient: ApiClient, args: {
13
+ id: number;
14
+ }): Promise<any>;
15
+ export declare const widgetTools: ({
16
+ name: string;
17
+ description: string;
18
+ inputSchema: {
19
+ type: string;
20
+ properties: {
21
+ page: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ limit: {
26
+ type: string;
27
+ description: string;
28
+ };
29
+ id?: undefined;
30
+ name?: undefined;
31
+ type?: undefined;
32
+ config?: undefined;
33
+ };
34
+ required?: undefined;
35
+ };
36
+ } | {
37
+ name: string;
38
+ description: string;
39
+ inputSchema: {
40
+ type: string;
41
+ properties: {
42
+ id: {
43
+ type: string;
44
+ description: string;
45
+ };
46
+ page?: undefined;
47
+ limit?: undefined;
48
+ name?: undefined;
49
+ type?: undefined;
50
+ config?: undefined;
51
+ };
52
+ required: string[];
53
+ };
54
+ } | {
55
+ name: string;
56
+ description: string;
57
+ inputSchema: {
58
+ type: string;
59
+ properties: {
60
+ name: {
61
+ type: string;
62
+ description: string;
63
+ };
64
+ type: {
65
+ type: string;
66
+ description: string;
67
+ };
68
+ config: {
69
+ type: string;
70
+ description: string;
71
+ };
72
+ page?: undefined;
73
+ limit?: undefined;
74
+ id?: undefined;
75
+ };
76
+ required: string[];
77
+ };
78
+ } | {
79
+ name: string;
80
+ description: string;
81
+ inputSchema: {
82
+ type: string;
83
+ properties: {
84
+ id: {
85
+ type: string;
86
+ description: string;
87
+ };
88
+ name: {
89
+ type: string;
90
+ description: string;
91
+ };
92
+ config: {
93
+ type: string;
94
+ description: string;
95
+ };
96
+ page?: undefined;
97
+ limit?: undefined;
98
+ type?: undefined;
99
+ };
100
+ required: string[];
101
+ };
102
+ })[];
103
+ //# sourceMappingURL=widgets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widgets.d.ts","sourceRoot":"","sources":["../../../src/tools/app/widgets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;GAGG;AAEH,wBAAsB,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAgB/E;AAED,wBAAsB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAWxF;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAWhF;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAYhF;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAW3F;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4DvB,CAAC"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Widgets Tools
3
+ * Widget and superwidget management
4
+ */
5
+ export async function listWidgets(apiClient, args) {
6
+ const params = new URLSearchParams();
7
+ if (args.page)
8
+ params.append('page', args.page.toString());
9
+ if (args.limit)
10
+ params.append('limit', args.limit.toString());
11
+ const query = params.toString() ? `?${params.toString()}` : '';
12
+ const response = await apiClient.get(`/v1/widgets${query}`);
13
+ return {
14
+ content: [
15
+ {
16
+ type: 'text',
17
+ text: JSON.stringify(response, null, 2),
18
+ },
19
+ ],
20
+ };
21
+ }
22
+ export async function getWidget(apiClient, args) {
23
+ const response = await apiClient.get(`/v1/widgets/${args.id}`);
24
+ return {
25
+ content: [
26
+ {
27
+ type: 'text',
28
+ text: JSON.stringify(response, null, 2),
29
+ },
30
+ ],
31
+ };
32
+ }
33
+ export async function createWidget(apiClient, args) {
34
+ const response = await apiClient.post('/v1/widgets', args);
35
+ return {
36
+ content: [
37
+ {
38
+ type: 'text',
39
+ text: JSON.stringify(response, null, 2),
40
+ },
41
+ ],
42
+ };
43
+ }
44
+ export async function updateWidget(apiClient, args) {
45
+ const { id, ...data } = args;
46
+ const response = await apiClient.put(`/v1/widgets/${id}`, data);
47
+ return {
48
+ content: [
49
+ {
50
+ type: 'text',
51
+ text: JSON.stringify(response, null, 2),
52
+ },
53
+ ],
54
+ };
55
+ }
56
+ export async function deleteWidget(apiClient, args) {
57
+ await apiClient.delete(`/v1/widgets/${args.id}`);
58
+ return {
59
+ content: [
60
+ {
61
+ type: 'text',
62
+ text: 'Widget deleted successfully',
63
+ },
64
+ ],
65
+ };
66
+ }
67
+ export const widgetTools = [
68
+ {
69
+ name: 'list_widgets',
70
+ description: 'List all widgets',
71
+ inputSchema: {
72
+ type: 'object',
73
+ properties: {
74
+ page: { type: 'number', description: 'Page number (default: 1)' },
75
+ limit: { type: 'number', description: 'Items per page (default: 10)' },
76
+ },
77
+ },
78
+ },
79
+ {
80
+ name: 'get_widget',
81
+ description: 'Get a specific widget by ID',
82
+ inputSchema: {
83
+ type: 'object',
84
+ properties: {
85
+ id: { type: 'number', description: 'Widget ID' },
86
+ },
87
+ required: ['id'],
88
+ },
89
+ },
90
+ {
91
+ name: 'create_widget',
92
+ description: 'Create a new widget',
93
+ inputSchema: {
94
+ type: 'object',
95
+ properties: {
96
+ name: { type: 'string', description: 'Widget name' },
97
+ type: { type: 'string', description: 'Widget type' },
98
+ config: { type: 'object', description: 'Widget configuration' },
99
+ },
100
+ required: ['name', 'type'],
101
+ },
102
+ },
103
+ {
104
+ name: 'update_widget',
105
+ description: 'Update an existing widget',
106
+ inputSchema: {
107
+ type: 'object',
108
+ properties: {
109
+ id: { type: 'number', description: 'Widget ID' },
110
+ name: { type: 'string', description: 'Widget name' },
111
+ config: { type: 'object', description: 'Widget configuration' },
112
+ },
113
+ required: ['id'],
114
+ },
115
+ },
116
+ {
117
+ name: 'delete_widget',
118
+ description: 'Delete a widget',
119
+ inputSchema: {
120
+ type: 'object',
121
+ properties: {
122
+ id: { type: 'number', description: 'Widget ID' },
123
+ },
124
+ required: ['id'],
125
+ },
126
+ },
127
+ ];
128
+ //# sourceMappingURL=widgets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widgets.js","sourceRoot":"","sources":["../../../src/tools/app/widgets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Public Tools - Health Check
3
+ * No authentication required
4
+ */
5
+ import type { ApiClient } from '../../client/api-client.js';
6
+ export declare function getHealth(apiClient: ApiClient): Promise<any>;
7
+ export declare const healthTools: {
8
+ name: string;
9
+ description: string;
10
+ inputSchema: {
11
+ type: string;
12
+ properties: {};
13
+ required: never[];
14
+ };
15
+ }[];
16
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/tools/public/health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,wBAAsB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAWlE;AAED,eAAO,MAAM,WAAW;;;;;;;;GAUvB,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Public Tools - Health Check
3
+ * No authentication required
4
+ */
5
+ export async function getHealth(apiClient) {
6
+ const response = await apiClient.get('/v1/health');
7
+ return {
8
+ content: [
9
+ {
10
+ type: 'text',
11
+ text: JSON.stringify(response, null, 2),
12
+ },
13
+ ],
14
+ };
15
+ }
16
+ export const healthTools = [
17
+ {
18
+ name: 'get_health',
19
+ description: 'Get API health status and uptime information',
20
+ inputSchema: {
21
+ type: 'object',
22
+ properties: {},
23
+ required: [],
24
+ },
25
+ },
26
+ ];
27
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/tools/public/health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,SAAoB;IAClD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEnD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aACxC;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,8CAA8C;QAC3D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;CACF,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Public Tools - Index
3
+ * Aggregates all public tools
4
+ */
5
+ export { getHealth, healthTools } from './health.js';
6
+ export declare const publicTools: {
7
+ name: string;
8
+ description: string;
9
+ inputSchema: {
10
+ type: string;
11
+ properties: {};
12
+ required: never[];
13
+ };
14
+ }[];
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/public/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAErD,eAAO,MAAM,WAAW;;;;;;;;GAEvB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Public Tools - Index
3
+ * Aggregates all public tools
4
+ */
5
+ import { healthTools } from './health.js';
6
+ export { getHealth, healthTools } from './health.js';
7
+ export const publicTools = [
8
+ ...healthTools,
9
+ ];
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/public/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,WAAW;CACf,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Dynamic Tool Router
3
+ * Auto-registers tool handlers by matching tool names to exported handler functions.
4
+ *
5
+ * Convention: tool name in snake_case maps to handler function in camelCase.
6
+ * Example: 'list_channels' -> listChannels, 'admin_get_plan' -> adminGetPlan
7
+ */
8
+ import type { ApiClient } from '../client/api-client.js';
9
+ /**
10
+ * Execute a tool by name
11
+ */
12
+ export declare function executeTool(name: string, apiClient: ApiClient, args: any): Promise<any>;
13
+ /**
14
+ * Check if a tool exists
15
+ */
16
+ export declare function hasToolHandler(name: string): boolean;
17
+ /**
18
+ * Get count of registered tools (useful for diagnostics)
19
+ */
20
+ export declare function getRegisteredToolCount(): number;
21
+ //# sourceMappingURL=tool-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-router.d.ts","sourceRoot":"","sources":["../../src/tools/tool-router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAmHzD;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAQ7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Dynamic Tool Router
3
+ * Auto-registers tool handlers by matching tool names to exported handler functions.
4
+ *
5
+ * Convention: tool name in snake_case maps to handler function in camelCase.
6
+ * Example: 'list_channels' -> listChannels, 'admin_get_plan' -> adminGetPlan
7
+ */
8
+ // Import all tool handlers (namespace imports)
9
+ import * as publicHandlers from './public/index.js';
10
+ import * as appHandlers from './app/index.js';
11
+ import * as adminHandlers from './admin/index.js';
12
+ import * as internalHandlers from './internal/index.js';
13
+ // Import tool definition arrays
14
+ import { publicTools } from './public/index.js';
15
+ import { appTools } from './app/index.js';
16
+ import { adminTools } from './admin/index.js';
17
+ import { internalTools } from './internal/index.js';
18
+ /**
19
+ * Tool registry mapping tool names to handlers
20
+ */
21
+ const toolRegistry = new Map();
22
+ /**
23
+ * Convert snake_case tool name to camelCase handler function name.
24
+ * Example: 'list_channels' -> 'listChannels'
25
+ * 'admin_get_plan' -> 'adminGetPlan'
26
+ */
27
+ function snakeToCamel(name) {
28
+ return name.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
29
+ }
30
+ /**
31
+ * Generate candidate handler names for a tool.
32
+ *
33
+ * Tool naming conventions vary across scopes:
34
+ * - app: 'list_channels' -> listChannels
35
+ * - admin: 'admin_list_plans' -> listAdminPlans
36
+ * - internal: 'internal_list_companies' -> listCompanies
37
+ *
38
+ * This function returns all plausible camelCase names to try.
39
+ */
40
+ function getCandidateNames(toolName, scope) {
41
+ const direct = snakeToCamel(toolName);
42
+ const candidates = [direct];
43
+ // For prefixed scopes, also try rearranged and stripped variants
44
+ const prefixes = ['admin_', 'internal_'];
45
+ for (const prefix of prefixes) {
46
+ if (toolName.startsWith(prefix)) {
47
+ const withoutPrefix = toolName.slice(prefix.length);
48
+ const prefixCapitalized = prefix.charAt(0).toUpperCase() + prefix.slice(1, -1); // 'Admin' or 'Internal'
49
+ const parts = withoutPrefix.split('_');
50
+ // Try inserting the prefix word after each possible verb position
51
+ // 'admin_bulk_delete_plans' -> try 'bulkAdminDeletePlans', 'bulkDeleteAdminPlans'
52
+ for (let i = 1; i <= parts.length; i++) {
53
+ const verbParts = parts.slice(0, i);
54
+ const restParts = parts.slice(i);
55
+ const verb = verbParts[0] + verbParts.slice(1).map(p => p.charAt(0).toUpperCase() + p.slice(1)).join('');
56
+ const rest = restParts.map(p => p.charAt(0).toUpperCase() + p.slice(1)).join('');
57
+ candidates.push(verb + prefixCapitalized + rest);
58
+ }
59
+ // 'internal_list_companies' -> 'listCompanies' (strip prefix entirely)
60
+ candidates.push(snakeToCamel(withoutPrefix));
61
+ }
62
+ }
63
+ return candidates;
64
+ }
65
+ /**
66
+ * Auto-register tools by matching tool definition names to handler functions.
67
+ * Tries multiple naming conventions for flexibility.
68
+ */
69
+ function autoRegister(tools, handlers, scope) {
70
+ for (const tool of tools) {
71
+ const candidates = getCandidateNames(tool.name, scope);
72
+ let found = false;
73
+ for (const name of candidates) {
74
+ if (typeof handlers[name] === 'function') {
75
+ toolRegistry.set(tool.name, handlers[name]);
76
+ found = true;
77
+ break;
78
+ }
79
+ }
80
+ if (!found) {
81
+ console.error(`[tool-router] WARNING: No handler found for tool '${tool.name}' (tried: ${candidates.join(', ')}) in ${scope} handlers`);
82
+ }
83
+ }
84
+ }
85
+ /**
86
+ * Register all tool handlers
87
+ */
88
+ function registerTools() {
89
+ autoRegister(publicTools, publicHandlers, 'public');
90
+ autoRegister(appTools, appHandlers, 'app');
91
+ autoRegister(adminTools, adminHandlers, 'admin');
92
+ autoRegister(internalTools, internalHandlers, 'internal');
93
+ }
94
+ // Initialize registry
95
+ registerTools();
96
+ /**
97
+ * Execute a tool by name
98
+ */
99
+ export async function executeTool(name, apiClient, args) {
100
+ const handler = toolRegistry.get(name);
101
+ if (!handler) {
102
+ throw new Error(`Unknown tool: ${name}`);
103
+ }
104
+ return await handler(apiClient, args);
105
+ }
106
+ /**
107
+ * Check if a tool exists
108
+ */
109
+ export function hasToolHandler(name) {
110
+ return toolRegistry.has(name);
111
+ }
112
+ /**
113
+ * Get count of registered tools (useful for diagnostics)
114
+ */
115
+ export function getRegisteredToolCount() {
116
+ return toolRegistry.size;
117
+ }
118
+ //# sourceMappingURL=tool-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-router.js","sourceRoot":"","sources":["../../src/tools/tool-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Type definitions for the MCP Server
3
+ */
4
+ export interface TenantConfig {
5
+ id: string;
6
+ name: string;
7
+ apiUrl: string;
8
+ apiKey: string;
9
+ scope: 'public' | 'app' | 'admin' | 'internal';
10
+ enabledTools?: string[];
11
+ /** Optional credentials for JWT-based auth (required for /admin/* endpoints) */
12
+ username?: string;
13
+ password?: string;
14
+ }
15
+ export interface TenantsConfig {
16
+ tenants: TenantConfig[];
17
+ }
18
+ export interface PaginationParams {
19
+ page?: number;
20
+ limit?: number;
21
+ }
22
+ export interface Channel {
23
+ id: number;
24
+ name: string;
25
+ gatewayType: number;
26
+ status: string;
27
+ createdAt?: string;
28
+ updatedAt?: string;
29
+ }
30
+ export interface Contact {
31
+ id: number;
32
+ channelId: number;
33
+ phoneNumber: string;
34
+ name?: string;
35
+ email?: string;
36
+ createdAt?: string;
37
+ updatedAt?: string;
38
+ }
39
+ export interface Message {
40
+ id: number;
41
+ channelId: number;
42
+ contactId: number;
43
+ content: string;
44
+ direction: 'inbound' | 'outbound';
45
+ status: string;
46
+ createdAt?: string;
47
+ }
48
+ export interface Broadcast {
49
+ id: number;
50
+ name: string;
51
+ channelId: number;
52
+ status: string;
53
+ scheduledAt?: string;
54
+ createdAt?: string;
55
+ }
56
+ export interface PlatformStats {
57
+ totalUsers: number;
58
+ activeUsers: number;
59
+ totalMessages: number;
60
+ totalChannels: number;
61
+ }
62
+ export interface UserAnalytics {
63
+ newUsers: number;
64
+ activeUsers: number;
65
+ period: string;
66
+ }
67
+ export interface RevenueStats {
68
+ totalRevenue: number;
69
+ mrr: number;
70
+ currency: string;
71
+ period: string;
72
+ }
73
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type definitions for the MCP Server
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,89 @@
1
+ {
2
+ "name": "@instantkom/mcp-server",
3
+ "version": "1.0.0",
4
+ "description": "Model Context Protocol Server for the instantKOM REST API. Lets Claude Code, Claude Desktop and other MCP-compatible AI assistants drive your instantKOM messengerzentrale.",
5
+ "main": "dist/index.public.js",
6
+ "types": "dist/index.public.d.ts",
7
+ "type": "module",
8
+ "bin": {
9
+ "instantkom-mcp": "./dist/index.public.js"
10
+ },
11
+ "files": [
12
+ "dist/index.public.js",
13
+ "dist/index.public.js.map",
14
+ "dist/index.public.d.ts",
15
+ "dist/index.public.d.ts.map",
16
+ "dist/client/**",
17
+ "dist/types/**",
18
+ "dist/tools/public/**",
19
+ "dist/tools/app/**",
20
+ "dist/tools/tool-router.js",
21
+ "dist/tools/tool-router.js.map",
22
+ "dist/tools/tool-router.d.ts",
23
+ "dist/tools/tool-router.d.ts.map",
24
+ "README.md",
25
+ "LICENSE"
26
+ ],
27
+ "engines": {
28
+ "node": ">=18"
29
+ },
30
+ "scripts": {
31
+ "build": "tsc && cp src/config/tenants.json dist/config/tenants.json && chmod +x dist/index.js && chmod +x dist/index.public.js",
32
+ "build:public": "tsc && chmod +x dist/index.public.js",
33
+ "dev": "tsx watch src/index.ts",
34
+ "start": "node dist/index.js",
35
+ "test": "vitest run",
36
+ "test:watch": "vitest",
37
+ "test:unit": "vitest run --project unit",
38
+ "test:contract": "vitest run --project contract",
39
+ "test:integration": "IKM_INTEGRATION_TEST=1 vitest run --project integration",
40
+ "test:coverage": "vitest run --coverage",
41
+ "check:api-coverage": "node scripts/check-api-coverage.js",
42
+ "check:public-package": "node scripts/check-public-package.cjs",
43
+ "prepublishOnly": "npm run build:public && npm run check:public-package"
44
+ },
45
+ "keywords": [
46
+ "mcp",
47
+ "model-context-protocol",
48
+ "instantkom",
49
+ "messenger",
50
+ "whatsapp",
51
+ "telegram",
52
+ "signal",
53
+ "claude",
54
+ "anthropic",
55
+ "ai",
56
+ "api"
57
+ ],
58
+ "author": "instantKOM",
59
+ "license": "MIT",
60
+ "homepage": "https://github.com/instantKOM/mcp-server#readme",
61
+ "repository": {
62
+ "type": "git",
63
+ "url": "git+https://github.com/instantKOM/mcp-server.git"
64
+ },
65
+ "bugs": {
66
+ "url": "https://github.com/instantKOM/mcp-server/issues"
67
+ },
68
+ "dependencies": {
69
+ "@modelcontextprotocol/sdk": "^1.29.0",
70
+ "dotenv": "^17.4.2",
71
+ "node-fetch": "^3.3.2"
72
+ },
73
+ "devDependencies": {
74
+ "@types/node": "^25.6.2",
75
+ "@vitest/coverage-v8": "^4.1.5",
76
+ "tsx": "^4.21.0",
77
+ "typescript": "^6.0.3",
78
+ "vitest": "^4.0.18"
79
+ },
80
+ "overrides": {
81
+ "path-to-regexp": "^8.4.0",
82
+ "hono": "^4.12.16",
83
+ "ip-address": "^10.2.0"
84
+ },
85
+ "publishConfig": {
86
+ "access": "public",
87
+ "provenance": true
88
+ }
89
+ }