@tedorigawa001/servicenow-mcp 1.0.2

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 (240) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +844 -0
  3. package/dist/cli/auth.d.ts +15 -0
  4. package/dist/cli/auth.d.ts.map +1 -0
  5. package/dist/cli/auth.js +200 -0
  6. package/dist/cli/auth.js.map +1 -0
  7. package/dist/cli/config-store.d.ts +28 -0
  8. package/dist/cli/config-store.d.ts.map +1 -0
  9. package/dist/cli/config-store.js +66 -0
  10. package/dist/cli/config-store.js.map +1 -0
  11. package/dist/cli/detect-clients.d.ts +16 -0
  12. package/dist/cli/detect-clients.d.ts.map +1 -0
  13. package/dist/cli/detect-clients.js +151 -0
  14. package/dist/cli/detect-clients.js.map +1 -0
  15. package/dist/cli/index.d.ts +3 -0
  16. package/dist/cli/index.d.ts.map +1 -0
  17. package/dist/cli/index.js +135 -0
  18. package/dist/cli/index.js.map +1 -0
  19. package/dist/cli/setup.d.ts +4 -0
  20. package/dist/cli/setup.d.ts.map +1 -0
  21. package/dist/cli/setup.js +564 -0
  22. package/dist/cli/setup.js.map +1 -0
  23. package/dist/cli/writers/index.d.ts +9 -0
  24. package/dist/cli/writers/index.d.ts.map +1 -0
  25. package/dist/cli/writers/index.js +135 -0
  26. package/dist/cli/writers/index.js.map +1 -0
  27. package/dist/prompts/index.d.ts +25 -0
  28. package/dist/prompts/index.d.ts.map +1 -0
  29. package/dist/prompts/index.js +38 -0
  30. package/dist/prompts/index.js.map +1 -0
  31. package/dist/prompts/itsm.d.ts +20 -0
  32. package/dist/prompts/itsm.d.ts.map +1 -0
  33. package/dist/prompts/itsm.js +110 -0
  34. package/dist/prompts/itsm.js.map +1 -0
  35. package/dist/prompts/user-prompts.d.ts +3 -0
  36. package/dist/prompts/user-prompts.d.ts.map +1 -0
  37. package/dist/prompts/user-prompts.js +35 -0
  38. package/dist/prompts/user-prompts.js.map +1 -0
  39. package/dist/resources/index.d.ts +26 -0
  40. package/dist/resources/index.d.ts.map +1 -0
  41. package/dist/resources/index.js +99 -0
  42. package/dist/resources/index.js.map +1 -0
  43. package/dist/server-http.d.ts +41 -0
  44. package/dist/server-http.d.ts.map +1 -0
  45. package/dist/server-http.js +187 -0
  46. package/dist/server-http.js.map +1 -0
  47. package/dist/server.d.ts +54 -0
  48. package/dist/server.d.ts.map +1 -0
  49. package/dist/server.js +150 -0
  50. package/dist/server.js.map +1 -0
  51. package/dist/servicenow/client.d.ts +137 -0
  52. package/dist/servicenow/client.d.ts.map +1 -0
  53. package/dist/servicenow/client.js +855 -0
  54. package/dist/servicenow/client.js.map +1 -0
  55. package/dist/servicenow/instances.d.ts +28 -0
  56. package/dist/servicenow/instances.d.ts.map +1 -0
  57. package/dist/servicenow/instances.js +190 -0
  58. package/dist/servicenow/instances.js.map +1 -0
  59. package/dist/servicenow/types.d.ts +578 -0
  60. package/dist/servicenow/types.d.ts.map +1 -0
  61. package/dist/servicenow/types.js +3 -0
  62. package/dist/servicenow/types.js.map +1 -0
  63. package/dist/tools/agile.d.ts +225 -0
  64. package/dist/tools/agile.d.ts.map +1 -0
  65. package/dist/tools/agile.js +205 -0
  66. package/dist/tools/agile.js.map +1 -0
  67. package/dist/tools/app-studio.d.ts +139 -0
  68. package/dist/tools/app-studio.d.ts.map +1 -0
  69. package/dist/tools/app-studio.js +139 -0
  70. package/dist/tools/app-studio.js.map +1 -0
  71. package/dist/tools/atf.d.ts +144 -0
  72. package/dist/tools/atf.d.ts.map +1 -0
  73. package/dist/tools/atf.js +186 -0
  74. package/dist/tools/atf.js.map +1 -0
  75. package/dist/tools/catalog.d.ts +966 -0
  76. package/dist/tools/catalog.d.ts.map +1 -0
  77. package/dist/tools/catalog.js +640 -0
  78. package/dist/tools/catalog.js.map +1 -0
  79. package/dist/tools/change.d.ts +351 -0
  80. package/dist/tools/change.d.ts.map +1 -0
  81. package/dist/tools/change.js +214 -0
  82. package/dist/tools/change.js.map +1 -0
  83. package/dist/tools/core.d.ts +768 -0
  84. package/dist/tools/core.d.ts.map +1 -0
  85. package/dist/tools/core.js +695 -0
  86. package/dist/tools/core.js.map +1 -0
  87. package/dist/tools/csm.d.ts +403 -0
  88. package/dist/tools/csm.d.ts.map +1 -0
  89. package/dist/tools/csm.js +256 -0
  90. package/dist/tools/csm.js.map +1 -0
  91. package/dist/tools/deployment.d.ts +366 -0
  92. package/dist/tools/deployment.d.ts.map +1 -0
  93. package/dist/tools/deployment.js +181 -0
  94. package/dist/tools/deployment.js.map +1 -0
  95. package/dist/tools/devops.d.ts +236 -0
  96. package/dist/tools/devops.d.ts.map +1 -0
  97. package/dist/tools/devops.js +207 -0
  98. package/dist/tools/devops.js.map +1 -0
  99. package/dist/tools/discovery.d.ts +306 -0
  100. package/dist/tools/discovery.d.ts.map +1 -0
  101. package/dist/tools/discovery.js +357 -0
  102. package/dist/tools/discovery.js.map +1 -0
  103. package/dist/tools/flow.d.ts +496 -0
  104. package/dist/tools/flow.d.ts.map +1 -0
  105. package/dist/tools/flow.js +348 -0
  106. package/dist/tools/flow.js.map +1 -0
  107. package/dist/tools/hrsd.d.ts +790 -0
  108. package/dist/tools/hrsd.d.ts.map +1 -0
  109. package/dist/tools/hrsd.js +378 -0
  110. package/dist/tools/hrsd.js.map +1 -0
  111. package/dist/tools/incident.d.ts +259 -0
  112. package/dist/tools/incident.d.ts.map +1 -0
  113. package/dist/tools/incident.js +170 -0
  114. package/dist/tools/incident.js.map +1 -0
  115. package/dist/tools/index.d.ts +13 -0
  116. package/dist/tools/index.d.ts.map +1 -0
  117. package/dist/tools/index.js +385 -0
  118. package/dist/tools/index.js.map +1 -0
  119. package/dist/tools/integration.d.ts +940 -0
  120. package/dist/tools/integration.d.ts.map +1 -0
  121. package/dist/tools/integration.js +685 -0
  122. package/dist/tools/integration.js.map +1 -0
  123. package/dist/tools/itam.d.ts +462 -0
  124. package/dist/tools/itam.d.ts.map +1 -0
  125. package/dist/tools/itam.js +306 -0
  126. package/dist/tools/itam.js.map +1 -0
  127. package/dist/tools/knowledge.d.ts +187 -0
  128. package/dist/tools/knowledge.d.ts.map +1 -0
  129. package/dist/tools/knowledge.js +161 -0
  130. package/dist/tools/knowledge.js.map +1 -0
  131. package/dist/tools/ml.d.ts +263 -0
  132. package/dist/tools/ml.d.ts.map +1 -0
  133. package/dist/tools/ml.js +251 -0
  134. package/dist/tools/ml.js.map +1 -0
  135. package/dist/tools/mobile.d.ts +352 -0
  136. package/dist/tools/mobile.d.ts.map +1 -0
  137. package/dist/tools/mobile.js +122 -0
  138. package/dist/tools/mobile.js.map +1 -0
  139. package/dist/tools/notification.d.ts +590 -0
  140. package/dist/tools/notification.d.ts.map +1 -0
  141. package/dist/tools/notification.js +382 -0
  142. package/dist/tools/notification.js.map +1 -0
  143. package/dist/tools/now-assist.d.ts +300 -0
  144. package/dist/tools/now-assist.d.ts.map +1 -0
  145. package/dist/tools/now-assist.js +227 -0
  146. package/dist/tools/now-assist.js.map +1 -0
  147. package/dist/tools/performance.d.ts +447 -0
  148. package/dist/tools/performance.d.ts.map +1 -0
  149. package/dist/tools/performance.js +473 -0
  150. package/dist/tools/performance.js.map +1 -0
  151. package/dist/tools/portal.d.ts +530 -0
  152. package/dist/tools/portal.d.ts.map +1 -0
  153. package/dist/tools/portal.js +425 -0
  154. package/dist/tools/portal.js.map +1 -0
  155. package/dist/tools/problem.d.ts +111 -0
  156. package/dist/tools/problem.d.ts.map +1 -0
  157. package/dist/tools/problem.js +101 -0
  158. package/dist/tools/problem.js.map +1 -0
  159. package/dist/tools/reporting.d.ts +825 -0
  160. package/dist/tools/reporting.d.ts.map +1 -0
  161. package/dist/tools/reporting.js +453 -0
  162. package/dist/tools/reporting.js.map +1 -0
  163. package/dist/tools/sam.d.ts +312 -0
  164. package/dist/tools/sam.d.ts.map +1 -0
  165. package/dist/tools/sam.js +360 -0
  166. package/dist/tools/sam.js.map +1 -0
  167. package/dist/tools/schema-helpers.d.ts +119 -0
  168. package/dist/tools/schema-helpers.d.ts.map +1 -0
  169. package/dist/tools/schema-helpers.js +121 -0
  170. package/dist/tools/schema-helpers.js.map +1 -0
  171. package/dist/tools/script.d.ts +714 -0
  172. package/dist/tools/script.d.ts.map +1 -0
  173. package/dist/tools/script.js +629 -0
  174. package/dist/tools/script.js.map +1 -0
  175. package/dist/tools/security.d.ts +802 -0
  176. package/dist/tools/security.d.ts.map +1 -0
  177. package/dist/tools/security.js +426 -0
  178. package/dist/tools/security.js.map +1 -0
  179. package/dist/tools/smart-query.d.ts +84 -0
  180. package/dist/tools/smart-query.d.ts.map +1 -0
  181. package/dist/tools/smart-query.js +320 -0
  182. package/dist/tools/smart-query.js.map +1 -0
  183. package/dist/tools/sys-properties.d.ts +315 -0
  184. package/dist/tools/sys-properties.d.ts.map +1 -0
  185. package/dist/tools/sys-properties.js +416 -0
  186. package/dist/tools/sys-properties.js.map +1 -0
  187. package/dist/tools/task.d.ts +82 -0
  188. package/dist/tools/task.d.ts.map +1 -0
  189. package/dist/tools/task.js +96 -0
  190. package/dist/tools/task.js.map +1 -0
  191. package/dist/tools/updateset.d.ts +159 -0
  192. package/dist/tools/updateset.d.ts.map +1 -0
  193. package/dist/tools/updateset.js +266 -0
  194. package/dist/tools/updateset.js.map +1 -0
  195. package/dist/tools/usem-approval.d.ts +130 -0
  196. package/dist/tools/usem-approval.d.ts.map +1 -0
  197. package/dist/tools/usem-approval.js +194 -0
  198. package/dist/tools/usem-approval.js.map +1 -0
  199. package/dist/tools/usem-config.d.ts +171 -0
  200. package/dist/tools/usem-config.d.ts.map +1 -0
  201. package/dist/tools/usem-config.js +254 -0
  202. package/dist/tools/usem-config.js.map +1 -0
  203. package/dist/tools/usem-integration.d.ts +228 -0
  204. package/dist/tools/usem-integration.d.ts.map +1 -0
  205. package/dist/tools/usem-integration.js +223 -0
  206. package/dist/tools/usem-integration.js.map +1 -0
  207. package/dist/tools/usem-sla.d.ts +201 -0
  208. package/dist/tools/usem-sla.d.ts.map +1 -0
  209. package/dist/tools/usem-sla.js +322 -0
  210. package/dist/tools/usem-sla.js.map +1 -0
  211. package/dist/tools/usem.d.ts +489 -0
  212. package/dist/tools/usem.d.ts.map +1 -0
  213. package/dist/tools/usem.js +514 -0
  214. package/dist/tools/usem.js.map +1 -0
  215. package/dist/tools/user.d.ts +206 -0
  216. package/dist/tools/user.d.ts.map +1 -0
  217. package/dist/tools/user.js +163 -0
  218. package/dist/tools/user.js.map +1 -0
  219. package/dist/tools/va.d.ts +217 -0
  220. package/dist/tools/va.d.ts.map +1 -0
  221. package/dist/tools/va.js +178 -0
  222. package/dist/tools/va.js.map +1 -0
  223. package/dist/tools/workspace.d.ts +565 -0
  224. package/dist/tools/workspace.d.ts.map +1 -0
  225. package/dist/tools/workspace.js +201 -0
  226. package/dist/tools/workspace.js.map +1 -0
  227. package/dist/utils/errors.d.ts +6 -0
  228. package/dist/utils/errors.d.ts.map +1 -0
  229. package/dist/utils/errors.js +11 -0
  230. package/dist/utils/errors.js.map +1 -0
  231. package/dist/utils/logging.d.ts +7 -0
  232. package/dist/utils/logging.d.ts.map +1 -0
  233. package/dist/utils/logging.js +15 -0
  234. package/dist/utils/logging.js.map +1 -0
  235. package/dist/utils/permissions.d.ts +21 -0
  236. package/dist/utils/permissions.d.ts.map +1 -0
  237. package/dist/utils/permissions.js +54 -0
  238. package/dist/utils/permissions.js.map +1 -0
  239. package/instances.example.json +69 -0
  240. package/package.json +110 -0
@@ -0,0 +1,170 @@
1
+ import { ServiceNowError } from '../utils/errors.js';
2
+ import { requireWrite } from '../utils/permissions.js';
3
+ import { URGENCY, IMPACT, PRIORITY } from './schema-helpers.js';
4
+ export function getIncidentToolDefinitions() {
5
+ return [
6
+ {
7
+ name: 'create_incident',
8
+ description: 'Create a new incident record (requires WRITE_ENABLED=true)',
9
+ inputSchema: {
10
+ type: 'object',
11
+ properties: {
12
+ short_description: { type: 'string', description: 'Brief description of the issue' },
13
+ urgency: URGENCY,
14
+ impact: IMPACT,
15
+ priority: PRIORITY,
16
+ description: { type: 'string', description: 'Detailed description' },
17
+ assignment_group: { type: 'string', description: 'Assignment group name or sys_id' },
18
+ caller_id: { type: 'string', description: 'Caller user name or sys_id' },
19
+ category: { type: 'string', description: 'Incident category' },
20
+ subcategory: { type: 'string', description: 'Incident subcategory' },
21
+ },
22
+ required: ['short_description'],
23
+ },
24
+ },
25
+ {
26
+ name: 'get_incident',
27
+ description: 'Get full details of an incident by number (e.g. INC0012345) or sys_id',
28
+ inputSchema: {
29
+ type: 'object',
30
+ properties: {
31
+ number_or_sysid: { type: 'string', description: 'Incident number (INC...) or sys_id' },
32
+ },
33
+ required: ['number_or_sysid'],
34
+ },
35
+ },
36
+ {
37
+ name: 'update_incident',
38
+ description: 'Update fields on an existing incident (requires WRITE_ENABLED=true)',
39
+ inputSchema: {
40
+ type: 'object',
41
+ properties: {
42
+ sys_id: { type: 'string', description: 'System ID of the incident' },
43
+ fields: { type: 'object', description: 'Key-value pairs to update (e.g., {"state": "2", "urgency": "1"})' },
44
+ },
45
+ required: ['sys_id', 'fields'],
46
+ },
47
+ },
48
+ {
49
+ name: 'resolve_incident',
50
+ description: 'Resolve an incident with resolution code and notes (requires WRITE_ENABLED=true)',
51
+ inputSchema: {
52
+ type: 'object',
53
+ properties: {
54
+ sys_id: { type: 'string', description: 'System ID of the incident' },
55
+ resolution_code: { type: 'string', description: 'Resolution code (e.g., "Solved (Permanently)")' },
56
+ resolution_notes: { type: 'string', description: 'Details of how the incident was resolved' },
57
+ },
58
+ required: ['sys_id', 'resolution_code', 'resolution_notes'],
59
+ },
60
+ },
61
+ {
62
+ name: 'close_incident',
63
+ description: 'Close a resolved incident (requires WRITE_ENABLED=true)',
64
+ inputSchema: {
65
+ type: 'object',
66
+ properties: {
67
+ sys_id: { type: 'string', description: 'System ID of the incident' },
68
+ },
69
+ required: ['sys_id'],
70
+ },
71
+ },
72
+ {
73
+ name: 'add_work_note',
74
+ description: 'Add an internal work note to any ITSM record (requires WRITE_ENABLED=true)',
75
+ inputSchema: {
76
+ type: 'object',
77
+ properties: {
78
+ table: { type: 'string', description: 'Table name (e.g., "incident", "change_request")' },
79
+ sys_id: { type: 'string', description: 'System ID of the record' },
80
+ note: { type: 'string', description: 'Work note text (internal, not visible to end user)' },
81
+ },
82
+ required: ['table', 'sys_id', 'note'],
83
+ },
84
+ },
85
+ {
86
+ name: 'add_comment',
87
+ description: 'Add a customer-visible comment to any ITSM record (requires WRITE_ENABLED=true)',
88
+ inputSchema: {
89
+ type: 'object',
90
+ properties: {
91
+ table: { type: 'string', description: 'Table name (e.g., "incident")' },
92
+ sys_id: { type: 'string', description: 'System ID of the record' },
93
+ comment: { type: 'string', description: 'Comment text (visible to end user/caller)' },
94
+ },
95
+ required: ['table', 'sys_id', 'comment'],
96
+ },
97
+ },
98
+ ];
99
+ }
100
+ export async function executeIncidentToolCall(client, name, args) {
101
+ switch (name) {
102
+ case 'create_incident': {
103
+ requireWrite();
104
+ if (!args.short_description)
105
+ throw new ServiceNowError('short_description is required', 'INVALID_REQUEST');
106
+ const ALLOWED_FIELDS = new Set([
107
+ 'short_description', 'description', 'urgency', 'impact', 'priority',
108
+ 'category', 'subcategory', 'assignment_group', 'caller_id',
109
+ 'cmdb_ci', 'location', 'contact_type', 'watch_list',
110
+ ]);
111
+ const safeData = Object.fromEntries(Object.entries(args).filter(([key]) => ALLOWED_FIELDS.has(key)));
112
+ const result = await client.createRecord('incident', safeData);
113
+ return { ...result, summary: `Created incident ${result.number || result.sys_id}` };
114
+ }
115
+ case 'get_incident': {
116
+ if (!args.number_or_sysid)
117
+ throw new ServiceNowError('number_or_sysid is required', 'INVALID_REQUEST');
118
+ if (/^[0-9a-f]{32}$/i.test(args.number_or_sysid)) {
119
+ return await client.getRecord('incident', args.number_or_sysid);
120
+ }
121
+ const resp = await client.queryRecords({ table: 'incident', query: `number=${args.number_or_sysid}^ORsys_id=${args.number_or_sysid}`, limit: 1 });
122
+ if (resp.count === 0)
123
+ throw new ServiceNowError(`Incident not found: ${args.number_or_sysid}`, 'NOT_FOUND');
124
+ return resp.records[0];
125
+ }
126
+ case 'update_incident': {
127
+ requireWrite();
128
+ if (!args.sys_id || !args.fields)
129
+ throw new ServiceNowError('sys_id and fields are required', 'INVALID_REQUEST');
130
+ const result = await client.updateRecord('incident', args.sys_id, args.fields);
131
+ return { ...result, summary: `Updated incident ${args.sys_id}` };
132
+ }
133
+ case 'resolve_incident': {
134
+ requireWrite();
135
+ if (!args.sys_id || !args.resolution_code || !args.resolution_notes)
136
+ throw new ServiceNowError('sys_id, resolution_code, and resolution_notes are required', 'INVALID_REQUEST');
137
+ const result = await client.updateRecord('incident', args.sys_id, {
138
+ state: '6',
139
+ close_code: args.resolution_code,
140
+ close_notes: args.resolution_notes,
141
+ resolved_at: new Date().toISOString(),
142
+ });
143
+ return { ...result, summary: `Resolved incident ${args.sys_id}` };
144
+ }
145
+ case 'close_incident': {
146
+ requireWrite();
147
+ if (!args.sys_id)
148
+ throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
149
+ const result = await client.updateRecord('incident', args.sys_id, { state: '7' });
150
+ return { ...result, summary: `Closed incident ${args.sys_id}` };
151
+ }
152
+ case 'add_work_note': {
153
+ requireWrite();
154
+ if (!args.table || !args.sys_id || !args.note)
155
+ throw new ServiceNowError('table, sys_id, and note are required', 'INVALID_REQUEST');
156
+ const result = await client.updateRecord(args.table, args.sys_id, { work_notes: args.note });
157
+ return { ...result, summary: `Added work note to ${args.table} ${args.sys_id}` };
158
+ }
159
+ case 'add_comment': {
160
+ requireWrite();
161
+ if (!args.table || !args.sys_id || !args.comment)
162
+ throw new ServiceNowError('table, sys_id, and comment are required', 'INVALID_REQUEST');
163
+ const result = await client.updateRecord(args.table, args.sys_id, { comments: args.comment });
164
+ return { ...result, summary: `Added comment to ${args.table} ${args.sys_id}` };
165
+ }
166
+ default:
167
+ return null;
168
+ }
169
+ }
170
+ //# sourceMappingURL=incident.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incident.js","sourceRoot":"","sources":["../../src/tools/incident.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Tool Router — aggregates all domain tool modules and implements the
3
+ * MCP_TOOL_PACKAGE role-based packaging system.
4
+ *
5
+ * Tool packages (set via MCP_TOOL_PACKAGE env var):
6
+ * full (default), service_desk, change_coordinator, knowledge_author,
7
+ * catalog_builder, system_administrator, platform_developer, itom_engineer,
8
+ * agile_manager, ai_developer, portal_developer, integration_engineer
9
+ */
10
+ import type { ServiceNowClient } from '../servicenow/client.js';
11
+ export declare function getTools(): Record<string, any>[];
12
+ export declare function executeTool(client: ServiceNowClient, name: string, args: Record<string, any>): Promise<any>;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AA2YhE,wBAAgB,QAAQ,0BAevB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,GAAG,CAAC,CAad"}
@@ -0,0 +1,385 @@
1
+ import { ServiceNowError } from '../utils/errors.js';
2
+ import { ANNOTATIONS_READ, ANNOTATIONS_WRITE, ANNOTATIONS_WRITE_IDEMPOTENT, ANNOTATIONS_DESTRUCTIVE, } from './schema-helpers.js';
3
+ // Core (existing 15 tools)
4
+ import { getCoreToolDefinitions, executeCoreToolCall } from './core.js';
5
+ // ITSM
6
+ import { getIncidentToolDefinitions, executeIncidentToolCall } from './incident.js';
7
+ import { getProblemToolDefinitions, executeProblemToolCall } from './problem.js';
8
+ import { getChangeToolDefinitions, executeChangeToolCall } from './change.js';
9
+ import { getTaskToolDefinitions, executeTaskToolCall } from './task.js';
10
+ // Service Management
11
+ import { getKnowledgeToolDefinitions, executeKnowledgeToolCall } from './knowledge.js';
12
+ import { getCatalogToolDefinitions, executeCatalogToolCall } from './catalog.js';
13
+ // User / Group
14
+ import { getUserToolDefinitions, executeUserToolCall } from './user.js';
15
+ // Reporting & Analytics
16
+ import { getReportingToolDefinitions, executeReportingToolCall } from './reporting.js';
17
+ // ATF
18
+ import { getAtfToolDefinitions, executeAtfToolCall } from './atf.js';
19
+ // Now Assist / AI
20
+ import { getNowAssistToolDefinitions, executeNowAssistToolCall } from './now-assist.js';
21
+ // Scripting
22
+ import { getScriptToolDefinitions, executeScriptToolCall } from './script.js';
23
+ // Agile
24
+ import { getAgileToolDefinitions, executeAgileToolCall } from './agile.js';
25
+ // HR Service Delivery
26
+ import { getHrsdToolDefinitions, executeHrsdToolCall } from './hrsd.js';
27
+ // Customer Service Management
28
+ import { getCsmToolDefinitions, executeCsmToolCall } from './csm.js';
29
+ // Security Operations & GRC
30
+ import { getSecurityToolDefinitions, executeSecurityToolCall } from './security.js';
31
+ // Flow Designer & Process Automation
32
+ import { getFlowToolDefinitions, executeFlowToolCall } from './flow.js';
33
+ // Service Portal & UI Builder
34
+ import { getPortalToolDefinitions, executePortalToolCall } from './portal.js';
35
+ // Integration (REST Messages, Transform Maps, Events)
36
+ import { getIntegrationToolDefinitions, executeIntegrationToolCall } from './integration.js';
37
+ // Notifications, Email, Attachments
38
+ import { getNotificationToolDefinitions, executeNotificationToolCall } from './notification.js';
39
+ // Performance Analytics & Data Quality
40
+ import { getPerformanceToolDefinitions, executePerformanceToolCall } from './performance.js';
41
+ // System Properties
42
+ import { getSysPropertiesToolDefinitions, executeSysPropertiesToolCall } from './sys-properties.js';
43
+ // Update Set management
44
+ import { getUpdateSetToolDefinitions, executeUpdateSetToolCall } from './updateset.js';
45
+ // Virtual Agent authoring
46
+ import { getVaToolDefinitions, executeVaToolCall } from './va.js';
47
+ // IT Asset Management
48
+ import { getItamToolDefinitions, executeItamToolCall } from './itam.js';
49
+ // Software Asset Management (SAM Pro)
50
+ import { getSamToolDefinitions, executeSamToolCall } from './sam.js';
51
+ // Discovery & ACC (Agent Client Collector)
52
+ import { getDiscoveryToolDefinitions, executeDiscoveryToolCall } from './discovery.js';
53
+ // DevOps & pipeline tracking
54
+ import { getDevopsToolDefinitions, executeDevopsToolCall } from './devops.js';
55
+ // Scoped Application (App Studio)
56
+ import { getAppStudioToolDefinitions, executeAppStudioToolCall } from './app-studio.js';
57
+ // Machine Learning & Predictive Intelligence
58
+ import { getMlToolDefinitions, executeMlToolCall } from './ml.js';
59
+ // Workspace & UI Builder
60
+ import { getWorkspaceToolDefinitions, executeWorkspaceToolCall } from './workspace.js';
61
+ // Mobile
62
+ import { getMobileToolDefinitions, executeMobileToolCall } from './mobile.js';
63
+ // Deployment & Artifacts
64
+ import { getDeploymentToolDefinitions, executeDeploymentToolCall } from './deployment.js';
65
+ // USEM (Unified Security Exposure Management)
66
+ import { getUsemToolDefinitions, executeUsemToolCall } from './usem.js';
67
+ // USEM / VR configuration rules
68
+ import { getUsemConfigToolDefinitions, executeUsemConfigToolCall } from './usem-config.js';
69
+ // USEM / VR integration operations
70
+ import { getUsemIntegrationToolDefinitions, executeUsemIntegrationToolCall } from './usem-integration.js';
71
+ // USEM / VR SLA (TTR) + notifications
72
+ import { getUsemSlaToolDefinitions, executeUsemSlaToolCall } from './usem-sla.js';
73
+ // USEM / VR approval (workflow state transitions)
74
+ import { getUsemApprovalToolDefinitions, executeUsemApprovalToolCall } from './usem-approval.js';
75
+ // Natural-language query resolver
76
+ import { getSmartQueryToolDefinitions, executeSmartQueryToolCall } from './smart-query.js';
77
+ // ─── Package Definitions ──────────────────────────────────────────────────────
78
+ const PACKAGE_TOOL_NAMES = {
79
+ devops_engineer: [
80
+ 'query_records', 'get_record', 'get_table_schema',
81
+ 'list_devops_pipelines', 'get_devops_pipeline', 'list_deployments', 'get_deployment',
82
+ 'create_devops_change', 'track_deployment', 'get_devops_insights',
83
+ 'create_update_set', 'switch_update_set', 'get_current_update_set', 'list_update_sets',
84
+ 'complete_update_set', 'preview_update_set', 'export_update_set', 'ensure_active_update_set',
85
+ 'get_change_request', 'create_change_request', 'list_change_requests',
86
+ ],
87
+ itam_analyst: [
88
+ 'query_records', 'get_record',
89
+ 'list_assets', 'get_asset', 'create_asset', 'update_asset', 'retire_asset',
90
+ 'list_software_licenses', 'get_license_compliance', 'list_asset_contracts',
91
+ 'track_asset_lifecycle', 'get_license_optimization',
92
+ // Software Asset Management (SAM Pro)
93
+ 'list_software_installs', 'get_software_install', 'list_software_products',
94
+ 'list_license_positions', 'get_license_position_summary', 'list_software_discovery_models',
95
+ 'list_software_models', 'get_software_model',
96
+ 'list_software_lifecycle_reports', 'get_software_lifecycle_report', 'list_software_lifecycle_entries',
97
+ ],
98
+ secops_analyst: [
99
+ 'query_records', 'get_record', 'get_table_schema', 'describe_table', 'check_table_access',
100
+ // Security Operations & GRC
101
+ 'list_security_incidents', 'get_security_incident', 'create_security_incident', 'update_security_incident',
102
+ 'list_vulnerabilities', 'get_vulnerability', 'update_vulnerability', 'get_security_dashboard',
103
+ 'get_threat_intelligence', 'list_grc_risks', 'get_grc_risk',
104
+ // USEM
105
+ 'list_vulnerable_items', 'get_vulnerable_item', 'list_remediation_tasks', 'get_remediation_task',
106
+ 'list_nvd_entries', 'get_nvd_entry_by_cve', 'get_usem_dashboard',
107
+ 'list_vulnerability_groups', 'get_vulnerability_group',
108
+ 'create_vulnerability_group', 'update_vulnerability_group',
109
+ 'create_remediation_task', 'update_remediation_task', 'add_vi_to_remediation_task',
110
+ // USEM / VR configuration rules
111
+ 'list_usem_rules', 'get_usem_rule', 'create_usem_rule', 'update_usem_rule', 'set_usem_rule_active',
112
+ // USEM / VR integration operations
113
+ 'list_integrations', 'list_integration_implementations', 'list_integration_runs',
114
+ 'get_integration_run', 'list_integration_logs', 'set_integration_active',
115
+ // USEM / VR SLA (TTR) + notifications
116
+ 'list_remediation_sla', 'get_remediation_sla', 'get_group_sla', 'set_remediation_commitment', 'list_vr_notifications',
117
+ 'list_notifications', 'get_notification', 'update_notification',
118
+ // USEM / VR approval (workflow state transitions)
119
+ 'list_vr_approvals', 'list_vr_exception_requests', 'act_on_vr_approval',
120
+ 'get_my_approvals', 'approve_request', 'reject_request',
121
+ // Integration health
122
+ 'get_integration_health',
123
+ ],
124
+ portal_developer: [
125
+ 'query_records', 'get_record', 'get_table_schema',
126
+ 'list_portals', 'get_portal', 'create_portal', 'list_portal_pages', 'get_portal_page', 'create_portal_page',
127
+ 'list_portal_widgets', 'get_portal_widget', 'create_portal_widget', 'update_portal_widget',
128
+ 'list_widget_instances',
129
+ 'list_ux_apps', 'get_ux_app', 'list_ux_pages',
130
+ 'list_portal_themes', 'get_portal_theme',
131
+ 'list_ui_policies', 'get_ui_policy', 'create_ui_policy',
132
+ 'list_ui_actions', 'get_ui_action', 'create_ui_action', 'update_ui_action',
133
+ 'list_client_scripts', 'get_client_script', 'create_client_script', 'update_client_script',
134
+ 'list_changesets', 'get_changeset', 'commit_changeset', 'publish_changeset',
135
+ ],
136
+ integration_engineer: [
137
+ 'query_records', 'get_record', 'get_table_schema',
138
+ 'list_rest_messages', 'get_rest_message', 'list_rest_message_functions', 'create_rest_message',
139
+ 'list_soap_messages', 'get_soap_message', 'list_soap_message_functions', 'create_soap_message', 'create_soap_message_function',
140
+ 'list_transform_maps', 'get_transform_map', 'run_transform_map', 'list_transform_field_maps',
141
+ 'list_import_sets', 'get_import_set', 'create_import_set_row', 'list_data_sources',
142
+ 'list_event_registry', 'get_event_registry_entry', 'register_event', 'fire_event', 'list_event_log',
143
+ 'list_oauth_applications', 'list_credential_aliases',
144
+ 'list_changesets', 'get_changeset', 'commit_changeset', 'publish_changeset',
145
+ ],
146
+ service_desk: [
147
+ // Core read
148
+ 'query_records', 'get_record', 'get_user', 'get_group',
149
+ // Incident full lifecycle
150
+ 'create_incident', 'get_incident', 'update_incident', 'resolve_incident', 'close_incident', 'add_work_note', 'add_comment',
151
+ // Approvals
152
+ 'get_my_approvals', 'approve_request', 'reject_request',
153
+ // Catalog requests
154
+ 'list_requests', 'get_request', 'list_request_items', 'get_request_item',
155
+ // Knowledge read
156
+ 'search_knowledge', 'get_knowledge_article', 'list_knowledge_bases',
157
+ // SLA
158
+ 'get_sla_details', 'list_active_slas',
159
+ // Tasks
160
+ 'get_task', 'list_my_tasks', 'complete_task',
161
+ // Natural language
162
+ 'natural_language_search', 'smart_query',
163
+ ],
164
+ change_coordinator: [
165
+ 'query_records', 'get_record', 'get_user', 'get_group',
166
+ 'create_change_request', 'get_change_request', 'update_change_request', 'list_change_requests', 'submit_change_for_approval', 'close_change_request',
167
+ 'get_my_approvals', 'approve_request', 'reject_request',
168
+ 'get_problem', 'update_problem',
169
+ 'search_cmdb_ci', 'get_cmdb_ci', 'list_relationships',
170
+ 'schedule_cab_meeting',
171
+ ],
172
+ knowledge_author: [
173
+ 'query_records', 'get_record', 'get_user',
174
+ 'list_knowledge_bases', 'search_knowledge', 'get_knowledge_article', 'create_knowledge_article', 'update_knowledge_article', 'publish_knowledge_article',
175
+ 'list_catalog_items', 'search_catalog', 'get_catalog_item',
176
+ 'retire_knowledge_article',
177
+ ],
178
+ catalog_builder: [
179
+ 'query_records', 'get_record', 'get_user',
180
+ 'list_catalog_items', 'search_catalog', 'get_catalog_item', 'create_catalog_item', 'update_catalog_item', 'order_catalog_item',
181
+ 'list_requests', 'get_request', 'list_request_items', 'get_request_item', 'cancel_request', 'update_request_item',
182
+ 'create_approval_rule',
183
+ 'list_users', 'list_groups',
184
+ 'create_catalog_variable', 'create_catalog_ui_policy',
185
+ ],
186
+ system_administrator: [
187
+ 'query_records', 'get_record', 'get_user', 'get_group', 'get_table_schema',
188
+ 'list_users', 'create_user', 'update_user', 'list_groups', 'create_group', 'update_group', 'add_user_to_group', 'remove_user_from_group',
189
+ 'list_reports', 'get_report', 'create_report', 'update_report', 'run_aggregate_query', 'trend_query', 'export_report_data', 'get_sys_log',
190
+ 'list_scheduled_jobs', 'get_scheduled_job', 'create_scheduled_job', 'update_scheduled_job', 'trigger_scheduled_job', 'list_job_run_history',
191
+ 'list_acls', 'get_acl', 'create_acl', 'update_acl',
192
+ 'list_notifications', 'get_notification', 'create_notification', 'update_notification',
193
+ 'list_email_logs', 'get_email_log',
194
+ 'list_attachments', 'get_attachment_metadata', 'upload_attachment', 'delete_attachment',
195
+ 'check_table_completeness', 'get_table_record_count', 'compare_record_counts',
196
+ 'list_pa_indicators', 'get_pa_indicator', 'get_pa_scorecard', 'get_pa_time_series',
197
+ 'list_pa_dashboards', 'get_pa_dashboard', 'create_dashboard', 'update_dashboard',
198
+ 'list_oauth_applications', 'list_credential_aliases',
199
+ 'get_system_property', 'set_system_property', 'list_system_properties', 'search_system_properties',
200
+ 'bulk_get_properties', 'bulk_set_properties', 'list_property_categories',
201
+ 'get_current_update_set', 'list_update_sets',
202
+ 'create_update_set', 'switch_update_set', 'complete_update_set', 'preview_update_set', 'ensure_active_update_set',
203
+ 'create_scheduled_report', 'create_kpi',
204
+ ],
205
+ platform_developer: [
206
+ 'query_records', 'get_record', 'get_table_schema',
207
+ 'list_scoped_apps', 'get_scoped_app', 'create_scoped_app', 'update_scoped_app',
208
+ 'list_business_rules', 'get_business_rule', 'create_business_rule', 'update_business_rule',
209
+ 'list_script_includes', 'get_script_include', 'create_script_include', 'update_script_include',
210
+ 'list_client_scripts', 'get_client_script', 'create_client_script', 'update_client_script',
211
+ 'list_ui_policies', 'get_ui_policy', 'create_ui_policy',
212
+ 'list_ui_actions', 'get_ui_action', 'create_ui_action', 'update_ui_action',
213
+ 'list_acls', 'get_acl', 'create_acl', 'update_acl',
214
+ 'list_changesets', 'get_changeset', 'commit_changeset', 'publish_changeset',
215
+ 'list_atf_suites', 'get_atf_suite', 'run_atf_suite', 'list_atf_tests', 'get_atf_test', 'run_atf_test', 'get_atf_suite_result', 'list_atf_test_results', 'get_atf_failure_insight',
216
+ ],
217
+ itom_engineer: [
218
+ 'query_records', 'get_record', 'get_table_schema',
219
+ 'search_cmdb_ci', 'get_cmdb_ci', 'list_relationships', 'cmdb_health_dashboard', 'service_mapping_summary',
220
+ 'list_discovery_schedules', 'list_mid_servers', 'list_active_events',
221
+ 'run_aggregate_query', 'trend_query',
222
+ 'create_ci_relationship', 'cmdb_impact_analysis', 'run_discovery_scan',
223
+ // Discovery run results & infrastructure health
224
+ 'list_discovery_runs', 'get_discovery_run', 'list_discovered_devices', 'list_discovery_logs',
225
+ 'list_discovery_ranges', 'list_discovery_credentials',
226
+ 'list_mid_server_issues', 'get_mid_server_health',
227
+ // ACC (Agent Client Collector)
228
+ 'list_acc_agents', 'list_acc_policies', 'list_acc_checks',
229
+ ],
230
+ agile_manager: [
231
+ 'query_records', 'get_record', 'get_user',
232
+ 'create_story', 'update_story', 'list_stories',
233
+ 'create_epic', 'update_epic', 'list_epics',
234
+ 'create_scrum_task', 'update_scrum_task', 'list_scrum_tasks',
235
+ 'list_users',
236
+ ],
237
+ ai_developer: [
238
+ 'query_records', 'get_record', 'natural_language_search',
239
+ 'nlq_query', 'ai_search', 'generate_summary', 'suggest_resolution', 'categorize_incident',
240
+ 'get_virtual_agent_topics', 'trigger_agentic_playbook', 'get_ms_copilot_topics', 'generate_work_notes', 'get_pi_models',
241
+ 'search_knowledge', 'get_knowledge_article',
242
+ ],
243
+ };
244
+ // ─── Annotation classifier ────────────────────────────────────────────────────
245
+ /**
246
+ * Tools that only read data — no side effects.
247
+ * Identified by name prefix or exact match.
248
+ */
249
+ const READ_ONLY_PREFIXES = [
250
+ 'get_', 'list_', 'search_', 'export_', 'preview_', 'query_',
251
+ 'check_', 'find_', 'compare_', 'analyze_', 'describe_',
252
+ ];
253
+ const READ_ONLY_EXACT = new Set([
254
+ 'nlq_query', 'natural_language_search', 'smart_query', 'trend_query', 'run_aggregate_query',
255
+ 'ai_search', 'generate_summary', 'suggest_resolution', 'categorize_incident',
256
+ 'cmdb_health_dashboard', 'service_mapping_summary', 'get_devops_insights',
257
+ 'ml_detect_anomalies', 'ml_evaluate_model', 'ml_forecast_incidents',
258
+ 'ml_model_training_history', 'ml_predict_change_risk', 'ml_process_optimization',
259
+ 'ml_virtual_agent_nlu',
260
+ ]);
261
+ /**
262
+ * Destructive tools — deletes, irreversible state transitions.
263
+ */
264
+ const DESTRUCTIVE_EXACT = new Set([
265
+ // Deletes
266
+ 'delete_attachment', 'delete_system_property', 'delete_uib_page',
267
+ // Irreversible state changes
268
+ 'close_incident', 'close_change_request', 'close_csm_case', 'close_hr_case',
269
+ 'cancel_request',
270
+ 'resolve_incident', 'resolve_problem',
271
+ 'retire_asset', 'retire_knowledge_article',
272
+ 'rollback_deployment',
273
+ 'remove_user_from_group',
274
+ // Code deployment / execution
275
+ 'execute_background_script',
276
+ 'commit_changeset', 'publish_changeset',
277
+ ]);
278
+ /**
279
+ * Idempotent writes — same call produces the same result.
280
+ */
281
+ const WRITE_IDEMPOTENT_PREFIXES = ['update_', 'set_', 'configure_', 'complete_'];
282
+ const WRITE_IDEMPOTENT_EXACT = new Set([
283
+ 'submit_change_for_approval', 'approve_request', 'reject_request',
284
+ 'publish_flow', 'publish_knowledge_article',
285
+ 'ensure_active_update_set', 'switch_instance', 'switch_update_set',
286
+ 'natural_language_update', 'bulk_set_properties',
287
+ 'validate_deployment', 'validate_property', 'validate_artifact',
288
+ ]);
289
+ function annotate(tool) {
290
+ const n = tool.name;
291
+ if (DESTRUCTIVE_EXACT.has(n)) {
292
+ return { ...tool, annotations: ANNOTATIONS_DESTRUCTIVE };
293
+ }
294
+ if (READ_ONLY_EXACT.has(n) || READ_ONLY_PREFIXES.some(p => n.startsWith(p))) {
295
+ return { ...tool, annotations: ANNOTATIONS_READ };
296
+ }
297
+ if (WRITE_IDEMPOTENT_EXACT.has(n) || WRITE_IDEMPOTENT_PREFIXES.some(p => n.startsWith(p))) {
298
+ return { ...tool, annotations: ANNOTATIONS_WRITE_IDEMPOTENT };
299
+ }
300
+ return { ...tool, annotations: ANNOTATIONS_WRITE };
301
+ }
302
+ const MODULES = [
303
+ { defs: getCoreToolDefinitions, exec: executeCoreToolCall },
304
+ { defs: getIncidentToolDefinitions, exec: executeIncidentToolCall },
305
+ { defs: getProblemToolDefinitions, exec: executeProblemToolCall },
306
+ { defs: getChangeToolDefinitions, exec: executeChangeToolCall },
307
+ { defs: getTaskToolDefinitions, exec: executeTaskToolCall },
308
+ { defs: getKnowledgeToolDefinitions, exec: executeKnowledgeToolCall },
309
+ { defs: getCatalogToolDefinitions, exec: executeCatalogToolCall },
310
+ { defs: getUserToolDefinitions, exec: executeUserToolCall },
311
+ { defs: getReportingToolDefinitions, exec: executeReportingToolCall },
312
+ { defs: getAtfToolDefinitions, exec: executeAtfToolCall },
313
+ { defs: getNowAssistToolDefinitions, exec: executeNowAssistToolCall },
314
+ { defs: getScriptToolDefinitions, exec: executeScriptToolCall },
315
+ { defs: getAgileToolDefinitions, exec: executeAgileToolCall },
316
+ { defs: getHrsdToolDefinitions, exec: executeHrsdToolCall },
317
+ { defs: getCsmToolDefinitions, exec: executeCsmToolCall },
318
+ { defs: getSecurityToolDefinitions, exec: executeSecurityToolCall },
319
+ { defs: getFlowToolDefinitions, exec: executeFlowToolCall },
320
+ { defs: getPortalToolDefinitions, exec: executePortalToolCall },
321
+ { defs: getIntegrationToolDefinitions, exec: executeIntegrationToolCall },
322
+ { defs: getNotificationToolDefinitions, exec: executeNotificationToolCall },
323
+ { defs: getPerformanceToolDefinitions, exec: executePerformanceToolCall },
324
+ { defs: getSysPropertiesToolDefinitions, exec: executeSysPropertiesToolCall },
325
+ { defs: getUpdateSetToolDefinitions, exec: executeUpdateSetToolCall },
326
+ { defs: getVaToolDefinitions, exec: executeVaToolCall },
327
+ { defs: getItamToolDefinitions, exec: executeItamToolCall },
328
+ { defs: getSamToolDefinitions, exec: executeSamToolCall },
329
+ { defs: getDiscoveryToolDefinitions, exec: executeDiscoveryToolCall },
330
+ { defs: getDevopsToolDefinitions, exec: executeDevopsToolCall },
331
+ { defs: getAppStudioToolDefinitions, exec: executeAppStudioToolCall },
332
+ { defs: getMlToolDefinitions, exec: executeMlToolCall },
333
+ { defs: getWorkspaceToolDefinitions, exec: executeWorkspaceToolCall },
334
+ { defs: getMobileToolDefinitions, exec: executeMobileToolCall },
335
+ { defs: getDeploymentToolDefinitions, exec: executeDeploymentToolCall },
336
+ { defs: getUsemToolDefinitions, exec: executeUsemToolCall },
337
+ { defs: getUsemConfigToolDefinitions, exec: executeUsemConfigToolCall },
338
+ { defs: getUsemIntegrationToolDefinitions, exec: executeUsemIntegrationToolCall },
339
+ { defs: getUsemSlaToolDefinitions, exec: executeUsemSlaToolCall },
340
+ { defs: getUsemApprovalToolDefinitions, exec: executeUsemApprovalToolCall },
341
+ { defs: getSmartQueryToolDefinitions, exec: executeSmartQueryToolCall },
342
+ ];
343
+ // Name → executor map, built once at module load. Detects duplicate tool names
344
+ // across modules (which would otherwise be silently shadowed by the old
345
+ // first-non-null-wins linear scan).
346
+ const TOOL_EXECUTORS = new Map();
347
+ const ALL_TOOLS = MODULES.flatMap(module => {
348
+ const defs = module.defs();
349
+ for (const def of defs) {
350
+ if (TOOL_EXECUTORS.has(def.name)) {
351
+ console.error(`[WARN] Duplicate tool name "${def.name}" — later definition ignored.`);
352
+ continue;
353
+ }
354
+ TOOL_EXECUTORS.set(def.name, module.exec);
355
+ }
356
+ return defs;
357
+ }).map(annotate);
358
+ // ─── Public API ───────────────────────────────────────────────────────────────
359
+ export function getTools() {
360
+ const packageName = (process.env.MCP_TOOL_PACKAGE || 'full').toLowerCase();
361
+ if (packageName === 'full') {
362
+ return ALL_TOOLS;
363
+ }
364
+ const allowed = PACKAGE_TOOL_NAMES[packageName];
365
+ if (!allowed) {
366
+ console.error(`[WARN] Unknown MCP_TOOL_PACKAGE "${packageName}". Using "full".`);
367
+ return ALL_TOOLS;
368
+ }
369
+ const allowedSet = new Set(allowed);
370
+ return ALL_TOOLS.filter(t => allowedSet.has(t.name));
371
+ }
372
+ export async function executeTool(client, name, args) {
373
+ // O(1) dispatch: look up the owning module's executor by tool name.
374
+ const exec = TOOL_EXECUTORS.get(name);
375
+ if (!exec) {
376
+ throw new ServiceNowError(`Unknown tool: ${name}`, 'UNKNOWN_TOOL');
377
+ }
378
+ const result = await exec(client, name, args);
379
+ if (result === null) {
380
+ // The owning module returned null — name is registered but unhandled.
381
+ throw new ServiceNowError(`Unknown tool: ${name}`, 'UNKNOWN_TOOL');
382
+ }
383
+ return result;
384
+ }
385
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}