elasticsearch-mcp-vsee 0.5.13 → 0.5.15

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 (59) hide show
  1. package/build/server.d.ts +2 -9
  2. package/build/server.d.ts.map +1 -1
  3. package/build/server.js +24 -445
  4. package/build/server.js.map +1 -1
  5. package/build/tools/base-tool.d.ts +4 -2
  6. package/build/tools/base-tool.d.ts.map +1 -1
  7. package/build/tools/base-tool.js +10 -3
  8. package/build/tools/base-tool.js.map +1 -1
  9. package/build/tools/find-entities-by-metric.d.ts +1 -0
  10. package/build/tools/find-entities-by-metric.d.ts.map +1 -1
  11. package/build/tools/find-entities-by-metric.js +4 -2
  12. package/build/tools/find-entities-by-metric.js.map +1 -1
  13. package/build/tools/get-index-fields.d.ts +38 -4
  14. package/build/tools/get-index-fields.d.ts.map +1 -1
  15. package/build/tools/get-index-fields.js +36 -49
  16. package/build/tools/get-index-fields.js.map +1 -1
  17. package/build/tools/get-platform-breakdown.d.ts +1 -0
  18. package/build/tools/get-platform-breakdown.d.ts.map +1 -1
  19. package/build/tools/get-platform-breakdown.js +7 -5
  20. package/build/tools/get-platform-breakdown.js.map +1 -1
  21. package/build/tools/get-rating-distribution.d.ts +1 -0
  22. package/build/tools/get-rating-distribution.d.ts.map +1 -1
  23. package/build/tools/get-rating-distribution.js +6 -4
  24. package/build/tools/get-rating-distribution.js.map +1 -1
  25. package/build/tools/get-subscription-breakdown.d.ts +1 -0
  26. package/build/tools/get-subscription-breakdown.d.ts.map +1 -1
  27. package/build/tools/get-subscription-breakdown.js +5 -3
  28. package/build/tools/get-subscription-breakdown.js.map +1 -1
  29. package/build/tools/get-usage-leaderboard.d.ts +1 -0
  30. package/build/tools/get-usage-leaderboard.d.ts.map +1 -1
  31. package/build/tools/get-usage-leaderboard.js +6 -4
  32. package/build/tools/get-usage-leaderboard.js.map +1 -1
  33. package/build/tools/get-usage-profile.d.ts +1 -0
  34. package/build/tools/get-usage-profile.d.ts.map +1 -1
  35. package/build/tools/get-usage-profile.js +5 -3
  36. package/build/tools/get-usage-profile.js.map +1 -1
  37. package/build/tools/get-visit-trends.d.ts +7 -6
  38. package/build/tools/get-visit-trends.d.ts.map +1 -1
  39. package/build/tools/get-visit-trends.js +16 -3
  40. package/build/tools/get-visit-trends.js.map +1 -1
  41. package/build/tools/health-check.d.ts +20 -0
  42. package/build/tools/health-check.d.ts.map +1 -0
  43. package/build/tools/health-check.js +40 -0
  44. package/build/tools/health-check.js.map +1 -0
  45. package/build/tools/top-change.d.ts +1 -0
  46. package/build/tools/top-change.d.ts.map +1 -1
  47. package/build/tools/top-change.js +7 -5
  48. package/build/tools/top-change.js.map +1 -1
  49. package/build/tools/types.d.ts +1 -2
  50. package/build/tools/types.d.ts.map +1 -1
  51. package/build/utils/date-math.d.ts +7 -1
  52. package/build/utils/date-math.d.ts.map +1 -1
  53. package/build/utils/date-math.js +74 -29
  54. package/build/utils/date-math.js.map +1 -1
  55. package/build/utils/schema-converter.d.ts +17 -0
  56. package/build/utils/schema-converter.d.ts.map +1 -0
  57. package/build/utils/schema-converter.js +101 -0
  58. package/build/utils/schema-converter.js.map +1 -0
  59. package/package.json +1 -1
package/build/server.d.ts CHANGED
@@ -5,16 +5,9 @@ export declare class ElasticMCPServer {
5
5
  private elasticsearch;
6
6
  private errorHandler;
7
7
  private isShuttingDown;
8
- private getIndexFieldsTool;
9
- private topChangeTool;
10
- private periodSummaryTool;
11
- private getPlatformBreakdownTool;
12
- private getRatingDistributionTool;
13
- private getVisitTrendsTool;
14
- private getUsageProfileTool;
15
- private findEntitiesByMetricTool;
16
- private getUsageLeaderboardTool;
8
+ private tools;
17
9
  constructor();
10
+ private initializeTools;
18
11
  private setupHandlers;
19
12
  private setupGracefulShutdown;
20
13
  start(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAoBA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,wBAAwB,CAA2B;IAC3D,OAAO,CAAC,yBAAyB,CAA4B;IAC7D,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,wBAAwB,CAA2B;IAC3D,OAAO,CAAC,uBAAuB,CAA0B;;IAkCzD,OAAO,CAAC,aAAa;IA4drB,OAAO,CAAC,qBAAqB;IAoCvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAmB7B;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAqBA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,KAAK,CAA8C;;IAyB3D,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,aAAa;IA0DrB,OAAO,CAAC,qBAAqB;IAoCvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAmB7B;AAED,eAAe,gBAAgB,CAAC"}
package/build/server.js CHANGED
@@ -16,15 +16,7 @@ class ElasticMCPServer {
16
16
  elasticsearch;
17
17
  errorHandler;
18
18
  isShuttingDown = false;
19
- getIndexFieldsTool;
20
- topChangeTool;
21
- periodSummaryTool;
22
- getPlatformBreakdownTool;
23
- getRatingDistributionTool;
24
- getVisitTrendsTool;
25
- getUsageProfileTool;
26
- findEntitiesByMetricTool;
27
- getUsageLeaderboardTool;
19
+ tools = new Map();
28
20
  constructor() {
29
21
  this.config = (0, config_js_1.loadConfig)();
30
22
  this.logger = new logger_js_1.Logger(this.config.logging.level, this.config.logging.format);
@@ -38,416 +30,32 @@ class ElasticMCPServer {
38
30
  tools: {},
39
31
  },
40
32
  });
41
- this.getIndexFieldsTool = new index_js_2.GetIndexFieldsTool(this.elasticsearch, this.logger);
42
- this.topChangeTool = new index_js_2.TopChangeTool(this.elasticsearch, this.logger);
43
- this.periodSummaryTool = new index_js_2.PeriodSummaryTool(this.elasticsearch, this.logger);
44
- this.getPlatformBreakdownTool = new index_js_2.GetPlatformBreakdownTool(this.elasticsearch, this.logger);
45
- this.getRatingDistributionTool = new index_js_2.GetRatingDistributionTool(this.elasticsearch, this.logger);
46
- this.getVisitTrendsTool = new index_js_2.GetVisitTrendsTool(this.elasticsearch, this.logger);
47
- this.getUsageProfileTool = new index_js_2.GetUsageProfileTool(this.elasticsearch, this.logger);
48
- this.findEntitiesByMetricTool = new index_js_2.FindEntitiesByMetricTool(this.elasticsearch, this.logger);
49
- this.getUsageLeaderboardTool = new index_js_2.GetUsageLeaderboardTool(this.elasticsearch, this.logger);
33
+ this.initializeTools();
50
34
  this.setupHandlers();
51
35
  this.setupGracefulShutdown();
52
36
  }
37
+ initializeTools() {
38
+ const tools = [
39
+ new index_js_2.GetIndexFieldsTool(this.elasticsearch, this.logger),
40
+ new index_js_2.TopChangeTool(this.elasticsearch, this.logger),
41
+ new index_js_2.PeriodSummaryTool(this.elasticsearch, this.logger),
42
+ new index_js_2.GetPlatformBreakdownTool(this.elasticsearch, this.logger),
43
+ new index_js_2.GetRatingDistributionTool(this.elasticsearch, this.logger),
44
+ new index_js_2.GetVisitTrendsTool(this.elasticsearch, this.logger),
45
+ new index_js_2.GetUsageProfileTool(this.elasticsearch, this.logger),
46
+ new index_js_2.FindEntitiesByMetricTool(this.elasticsearch, this.logger),
47
+ new index_js_2.GetUsageLeaderboardTool(this.elasticsearch, this.logger),
48
+ ];
49
+ for (const tool of tools) {
50
+ this.tools.set(tool.toolName, tool);
51
+ }
52
+ }
53
53
  setupHandlers() {
54
54
  this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
55
55
  this.logger.debug('Received list tools request');
56
+ const toolDefinitions = Array.from(this.tools.values()).map((tool) => tool.toolDefinition);
56
57
  return {
57
- tools: [
58
- {
59
- name: 'get_index_fields',
60
- description: 'Get all fields from an Elasticsearch index with optional filtering by field name and type. Use this tool when you need to discover available fields, their types, and correct field names before constructing queries. This is especially useful when unsure about field names or when looking for fields with specific types (e.g., keyword fields for exact matches or text fields for full-text search). ⚠️ IMPORTANT: Do NOT specify the index parameter unless the user explicitly requests fields from a different index. The tool defaults to "stats-*" which covers all standard indices. Only include the index parameter if the user specifically mentions a different index name.',
61
- inputSchema: {
62
- type: 'object',
63
- properties: {
64
- index: {
65
- type: 'string',
66
- description: 'Index name or pattern (supports wildcards like stats-*). Defaults to "stats-*" if not specified. Only specify if you need fields from a different index.',
67
- default: 'stats-*',
68
- },
69
- fieldFilter: {
70
- type: 'string',
71
- description: 'Filter fields by name (case-insensitive partial match)',
72
- },
73
- typeFilter: {
74
- type: 'string',
75
- description: 'Filter fields by type (e.g., "text", "keyword", "long", "date")',
76
- },
77
- includeNested: {
78
- type: 'boolean',
79
- description: 'Include nested fields in the results',
80
- default: true,
81
- },
82
- },
83
- required: [],
84
- additionalProperties: false,
85
- },
86
- },
87
- {
88
- name: 'top_change',
89
- description: 'Find top N items (accounts, groups, platforms, or versions) with highest visit/usage increase or decrease between two consecutive time periods. Returns items ranked by change with current period count, previous period count, absolute change, and percentage change. The previous period is automatically calculated to match the duration of the current period, ending where the current period starts. Supports filtering by subscription tier.',
90
- inputSchema: {
91
- type: 'object',
92
- properties: {
93
- groupBy: {
94
- type: 'string',
95
- enum: ['account', 'group', 'provider_platform', 'patient_platform', 'provider_platform_version', 'patient_platform_version'],
96
- description: 'Group by: "account", "group", "provider_platform", "patient_platform", "provider_platform_version", or "patient_platform_version"',
97
- },
98
- direction: {
99
- type: 'string',
100
- enum: ['increase', 'decrease'],
101
- description: 'Direction: "increase" for highest growth, "decrease" for highest decline',
102
- },
103
- topN: {
104
- type: 'number',
105
- minimum: 1,
106
- maximum: 50,
107
- default: 5,
108
- description: 'Number of top items to return (default: 5, max: 50)',
109
- },
110
- startDate: {
111
- type: 'string',
112
- description: 'Start date for current period in date math (e.g., "now-30d", "now-1y") or ISO format (YYYY-MM-DD). Defaults to "now-30d"',
113
- },
114
- endDate: {
115
- type: 'string',
116
- description: 'End date for current period in date math (e.g., "now") or ISO format (YYYY-MM-DD). Defaults to "now"',
117
- },
118
- subscription: {
119
- type: 'string',
120
- enum: ['Enterprise', 'Premium', 'FVC', 'BVC', 'Plus'],
121
- description: 'Optional subscription tier to filter by',
122
- },
123
- },
124
- required: ['groupBy', 'direction'],
125
- additionalProperties: false,
126
- },
127
- },
128
- {
129
- name: 'get_subscription_breakdown',
130
- description: 'Compare subscription tiers (Enterprise, Premium, FVC, BVC, Plus) across a time period. Always returns metrics grouped by subscription tier with per-tier breakdown (visits, accounts, providers, patients, ratings, call duration) plus totals.',
131
- inputSchema: {
132
- type: 'object',
133
- properties: {
134
- startDate: {
135
- type: 'string',
136
- description: 'Start date in ISO format (YYYY-MM-DD) or date math (e.g., "now-30d", "now-1y"). Defaults to "now-30d"',
137
- },
138
- endDate: {
139
- type: 'string',
140
- description: 'End date in ISO format (YYYY-MM-DD) or date math (e.g., "now"). Defaults to "now"',
141
- },
142
- },
143
- required: [],
144
- additionalProperties: false,
145
- },
146
- },
147
- {
148
- name: 'get_platform_breakdown',
149
- description: 'Get breakdown of top N platforms or platform versions by usage over a time period, can optionally be filtered by account or group. Supports both provider and patient roles. Returns top N items (default 10) plus "Other" category if needed, with metrics per item including visit counts, unique accounts/providers/patients, ratings, and call duration.',
150
- inputSchema: {
151
- type: 'object',
152
- properties: {
153
- role: {
154
- type: 'string',
155
- enum: ['provider', 'patient'],
156
- description: 'Role: "provider" for provider platforms/versions, "patient" for patient platforms/versions',
157
- },
158
- breakdownType: {
159
- type: 'string',
160
- enum: ['platform', 'version'],
161
- description: 'Breakdown type: "platform" for platform breakdown (Web/iOS/Android), "version" for platform version breakdown',
162
- },
163
- topN: {
164
- type: 'number',
165
- minimum: 1,
166
- maximum: 100,
167
- default: 10,
168
- description: 'Number of top items to return (default: 10, max: 100). Recommended: do not set over 10.',
169
- },
170
- startDate: {
171
- type: 'string',
172
- description: 'Start date. Format: ISO date (YYYY-MM-DD) or date math (now-30d, now-1y). Default: now-30d.',
173
- },
174
- endDate: {
175
- type: 'string',
176
- description: 'End date. Format: ISO date (YYYY-MM-DD) or date math (now). Default: now.',
177
- },
178
- account: {
179
- type: 'string',
180
- description: 'Optional account name to filter data to',
181
- },
182
- group: {
183
- type: 'string',
184
- description: 'Optional group name to filter data to',
185
- },
186
- },
187
- required: ['role', 'breakdownType'],
188
- additionalProperties: false,
189
- },
190
- },
191
- {
192
- name: 'get_rating_distribution',
193
- description: 'Get rating distribution (histogram) for provider and/or patient ratings over a time period. Returns rating buckets with counts and percentages, plus statistics (average, min, max, total count). Supports grouping by subscription, account, or group for comparative analysis.',
194
- inputSchema: {
195
- type: 'object',
196
- properties: {
197
- ratingType: {
198
- type: 'string',
199
- enum: ['provider', 'patient', 'both'],
200
- description: 'Type of rating to analyze: "provider", "patient", or "both"',
201
- },
202
- bucketSize: {
203
- type: 'number',
204
- minimum: 1,
205
- maximum: 5,
206
- default: 1,
207
- description: 'Rating bucket size (default: 1, e.g., 1 = 1-2, 2-3, 3-4, etc.)',
208
- },
209
- startDate: {
210
- type: 'string',
211
- description: 'Start date. Format: ISO date (YYYY-MM-DD) or date math (now-30d, now-1y). Default: now-30d.',
212
- },
213
- endDate: {
214
- type: 'string',
215
- description: 'End date. Format: ISO date (YYYY-MM-DD) or date math (now). Default: now.',
216
- },
217
- account: {
218
- type: 'string',
219
- description: 'Optional account name to filter by',
220
- },
221
- group: {
222
- type: 'string',
223
- description: 'Optional group name to filter by',
224
- },
225
- subscription: {
226
- type: 'string',
227
- enum: ['Enterprise', 'Premium', 'FVC', 'BVC', 'Plus'],
228
- description: 'Optional subscription tier to filter by',
229
- },
230
- groupBy: {
231
- type: 'string',
232
- enum: ['none', 'subscription', 'account', 'group'],
233
- default: 'none',
234
- description: 'Optional grouping dimension (default: none). When set, returns separate distributions for each group value.',
235
- },
236
- },
237
- required: ['ratingType'],
238
- additionalProperties: false,
239
- },
240
- },
241
- {
242
- name: 'get_visit_trends',
243
- description: 'Get visit/usage count trends over time (daily, weekly, or monthly intervals) with optional grouping by subscription, account, or group. Returns time series data points with visit counts and unique counts (accounts, providers, patients) per period.',
244
- inputSchema: {
245
- type: 'object',
246
- properties: {
247
- interval: {
248
- type: 'string',
249
- enum: ['daily', 'weekly', 'monthly'],
250
- description: 'Time interval for trends: "weekly"(recommended max 12 weeks), or "monthly" (recommended max 12 months)',
251
- },
252
- startDate: {
253
- type: 'string',
254
- description: 'Start date in ISO format (YYYY-MM-DD) or date math (e.g., "now-14d", "now-12w", "now-12M"). Recommended: "now-14d" for daily, "now-12w" for weekly, "now-12M" for monthly. Defaults to "now-180d" (6 months).',
255
- },
256
- endDate: {
257
- type: 'string',
258
- description: 'End date in ISO format (YYYY-MM-DD) or date math (e.g., "now"). Defaults to "now"',
259
- },
260
- groupBy: {
261
- type: 'string',
262
- enum: ['none', 'subscription', 'account', 'group'],
263
- default: 'none',
264
- description: 'Optional grouping dimension (default: none)',
265
- },
266
- account: {
267
- type: 'string',
268
- description: 'Optional account name to filter by',
269
- },
270
- group: {
271
- type: 'string',
272
- description: 'Optional group name to filter by',
273
- },
274
- subscription: {
275
- type: 'string',
276
- enum: ['Enterprise', 'Premium', 'FVC', 'BVC', 'Plus'],
277
- description: 'Optional subscription tier to filter by',
278
- },
279
- },
280
- required: ['interval'],
281
- additionalProperties: false,
282
- },
283
- },
284
- {
285
- name: 'get_usage_profile',
286
- description: 'Get a comprehensive usage profile for a specific scope (global, or a specific account/group). Includes deep breakdowns like platform distribution (Web vs iOS) and subscription tiers. Best for exploring HOW a specific context is using the system.',
287
- inputSchema: {
288
- type: 'object',
289
- properties: {
290
- startDate: {
291
- type: 'string',
292
- description: 'Start date. Format: ISO date (YYYY-MM-DD) or date math (now-30d, now-1y). Default: now-30d.',
293
- },
294
- endDate: {
295
- type: 'string',
296
- description: 'End date. Format: ISO date (YYYY-MM-DD) or date math (now). Default: now.',
297
- },
298
- account: {
299
- type: 'string',
300
- description: 'FILTER: Optional account name to filter data to',
301
- },
302
- group: {
303
- type: 'string',
304
- description: 'FILTER: Optional group name to filter data to',
305
- },
306
- subscription: {
307
- type: 'string',
308
- description: 'FILTER: Optional subscription tier to filter data to',
309
- enum: ['Enterprise', 'Premium', 'FVC', 'BVC', 'Plus'],
310
- },
311
- groupBy: {
312
- type: 'string',
313
- enum: ['none', 'subscription', 'account', 'group'],
314
- default: 'none',
315
- description: 'GROUP: Dimension to split/group results by (e.g., "account" to see summaries per account, "group" to see per group)',
316
- },
317
- },
318
- required: [],
319
- additionalProperties: false,
320
- },
321
- },
322
- {
323
- name: 'find_entities_by_metric',
324
- description: 'Find groups or accounts filtered by metrics. Supports single metric (legacy) or multiple metrics (recommended). Available metrics: account_count (groups only), visit_count, provider_rating, patient_rating, avg_call_duration, unique_providers, unique_patients, provider_rating_count, patient_rating_count. Can filter accounts by group. Returns entities matching ALL criteria with their metric values.',
325
- inputSchema: {
326
- type: 'object',
327
- properties: {
328
- entityType: {
329
- type: 'string',
330
- enum: ['group', 'account'],
331
- description: 'Type of entity to find: "group" to find groups, "account" to find accounts',
332
- },
333
- metric: {
334
- type: 'string',
335
- enum: ['account_count', 'visit_count', 'provider_rating', 'patient_rating', 'avg_call_duration', 'unique_providers', 'unique_patients', 'provider_rating_count', 'patient_rating_count'],
336
- description: 'Single metric to filter by (use metrics array for multiple filters). Available: account_count (groups only), visit_count, provider_rating, patient_rating, avg_call_duration, unique_providers, unique_patients, provider_rating_count, patient_rating_count',
337
- },
338
- min: {
339
- type: 'number',
340
- description: 'Minimum value when using single metric (use metrics array for multiple filters)',
341
- },
342
- max: {
343
- type: 'number',
344
- description: 'Maximum value when using single metric (use metrics array for multiple filters)',
345
- },
346
- metrics: {
347
- type: 'array',
348
- items: {
349
- type: 'object',
350
- properties: {
351
- metric: {
352
- type: 'string',
353
- enum: ['account_count', 'visit_count', 'provider_rating', 'patient_rating', 'avg_call_duration', 'unique_providers', 'unique_patients', 'provider_rating_count', 'patient_rating_count'],
354
- description: 'Metric name',
355
- },
356
- min: {
357
- type: 'number',
358
- description: 'Minimum value (inclusive)',
359
- },
360
- max: {
361
- type: 'number',
362
- description: 'Maximum value (inclusive)',
363
- },
364
- },
365
- required: ['metric'],
366
- additionalProperties: false,
367
- },
368
- description: 'Array of metric filters. Use this for filtering by multiple metrics simultaneously. Each filter requires metric and at least one of min/max.',
369
- },
370
- startDate: {
371
- type: 'string',
372
- description: 'Start date in ISO format (YYYY-MM-DD) or date math (e.g., "now-30d", "now-1y"). Defaults to "now-1y"',
373
- },
374
- endDate: {
375
- type: 'string',
376
- description: 'End date in ISO format (YYYY-MM-DD) or date math (e.g., "now"). Defaults to "now"',
377
- },
378
- subscription: {
379
- type: 'string',
380
- enum: ['Enterprise', 'Premium', 'FVC', 'BVC', 'Plus'],
381
- description: 'Optional subscription tier to filter by',
382
- },
383
- group: {
384
- type: 'string',
385
- description: 'Optional group name to filter by (only valid when entityType="account")',
386
- },
387
- limit: {
388
- type: 'number',
389
- minimum: 1,
390
- maximum: 500,
391
- default: 10,
392
- description: 'Maximum number of results to return (default: 10, max: 500). Recommended: do not set over 10.',
393
- },
394
- },
395
- required: ['entityType'],
396
- additionalProperties: false,
397
- },
398
- },
399
- {
400
- name: 'get_usage_leaderboard',
401
- description: 'Generate a ranked leaderboard of accounts, groups, or platforms based on a specific metric (e.g., "top 10 providers by visit count" or "top 5 groups by unique patients"). Best for identifying high-usage entities or outliers. Returns key metrics like visits, unique counts, ratings, and duration.',
402
- inputSchema: {
403
- type: 'object',
404
- properties: {
405
- entityType: {
406
- type: 'string',
407
- enum: ['account', 'group', 'provider_platform', 'patient_platform', 'provider_platform_version', 'patient_platform_version'],
408
- description: 'Type of entity to analyze',
409
- },
410
- mode: {
411
- type: 'string',
412
- enum: ['top_n', 'specific'],
413
- description: 'Mode: "top_n" to find top entities by usage, "specific" to get usage for a specific entity',
414
- },
415
- limit: {
416
- type: 'number',
417
- minimum: 1,
418
- maximum: 50,
419
- default: 10,
420
- description: 'Max number of results (for top_n mode, default 10)',
421
- },
422
- entityValue: {
423
- type: 'string',
424
- description: 'Specific entity name (required if mode is "specific")',
425
- },
426
- startDate: {
427
- type: 'string',
428
- description: 'Start date in ISO format (YYYY-MM-DD) or date math (e.g., "now-30d"). Defaults to "now-30d"',
429
- },
430
- endDate: {
431
- type: 'string',
432
- description: 'End date in ISO format (YYYY-MM-DD) or date math (e.g., "now"). Defaults to "now"',
433
- },
434
- subscription: {
435
- type: 'string',
436
- enum: ['Enterprise', 'Premium', 'FVC', 'BVC', 'Plus'],
437
- description: 'Optional subscription tier to filter by',
438
- },
439
- orderBy: {
440
- type: 'string',
441
- enum: ['visit_count', 'unique_accounts', 'unique_providers', 'unique_patients', 'unique_groups'],
442
- default: 'visit_count',
443
- description: 'Metric to order top N entities by (default: visit_count).',
444
- },
445
- },
446
- required: ['entityType', 'mode'],
447
- additionalProperties: false,
448
- },
449
- },
450
- ],
58
+ tools: toolDefinitions,
451
59
  };
452
60
  });
453
61
  this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
@@ -457,40 +65,11 @@ class ElasticMCPServer {
457
65
  hasArgs: !!args,
458
66
  });
459
67
  try {
460
- // Don't check connection status - let the actual API calls handle connection errors
461
- // Connection checks often fail with limited permissions unnecessarily
462
- let result;
463
- switch (name) {
464
- case 'get_index_fields':
465
- result = await this.getIndexFieldsTool.execute(args);
466
- break;
467
- case 'top_change':
468
- result = await this.topChangeTool.execute(args);
469
- break;
470
- case 'get_subscription_breakdown':
471
- result = await this.periodSummaryTool.execute(args);
472
- break;
473
- case 'get_platform_breakdown':
474
- result = await this.getPlatformBreakdownTool.execute(args);
475
- break;
476
- case 'get_rating_distribution':
477
- result = await this.getRatingDistributionTool.execute(args);
478
- break;
479
- case 'get_visit_trends':
480
- result = await this.getVisitTrendsTool.execute(args);
481
- break;
482
- case 'get_usage_profile':
483
- result = await this.getUsageProfileTool.execute(args);
484
- break;
485
- case 'find_entities_by_metric':
486
- result = await this.findEntitiesByMetricTool.execute(args);
487
- break;
488
- case 'get_usage_leaderboard':
489
- result = await this.getUsageLeaderboardTool.execute(args);
490
- break;
491
- default:
492
- throw new Error(`Unknown tool: ${name}`);
68
+ const tool = this.tools.get(name);
69
+ if (!tool) {
70
+ throw new Error(`Unknown tool: ${name}`);
493
71
  }
72
+ const result = await tool.execute(args);
494
73
  return {
495
74
  content: [
496
75
  {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AACnE,wEAAiF;AACjF,iEAAmG;AAEnG,2CAAuD;AACvD,2CAAqC;AACrC,yDAAiE;AACjE,sDAAoD;AACpD,+CAU0B;AAG1B,MAAa,gBAAgB;IACnB,MAAM,CAAS;IACf,MAAM,CAAe;IACrB,MAAM,CAAS;IACf,aAAa,CAAuB;IACpC,YAAY,CAAe;IAC3B,cAAc,GAAG,KAAK,CAAC;IAEvB,KAAK,GAAoC,IAAI,GAAG,EAAE,CAAC;IAE3D;QACE,IAAI,CAAC,MAAM,GAAG,IAAA,sBAAU,GAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,YAAY,GAAG,IAAI,0BAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,IAAI,gCAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtF,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAM,CACtB;YACE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SAC7B,EACD;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;aACV;SACF,CACF,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,eAAe;QACrB,MAAM,KAAK,GAAG;YACZ,IAAI,6BAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;YACvD,IAAI,wBAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;YAClD,IAAI,4BAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;YACtD,IAAI,mCAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;YAC7D,IAAI,oCAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;YAC9D,IAAI,6BAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;YACvD,IAAI,8BAAmB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;YACxD,IAAI,mCAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;YAC7D,IAAI,kCAAuB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;SAC7D,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,iCAAsB,EAAE,KAAK,IAAI,EAAE;YAC/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAEjD,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CACzD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAC9B,CAAC;YAEF,OAAO;gBACL,KAAK,EAAE,eAAe;aACvB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,gCAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAEjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBACrC,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,CAAC,CAAC,IAAI;aAChB,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAElC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;gBAC3C,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAExC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;yBACtC;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACxE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE;oBACpC,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,aAAa,CAAC,KAAK;iBAC3B,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,UAAU,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE;yBAC9C;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,qBAAqB;QAC3B,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;YACzC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAEhD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,EAAE,EAAE,KAAc,CAAC,CAAC;YAC/E,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEhC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACnD,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;gBACvC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;aACvB,CAAC,CAAC;YACH,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;gBAC9C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;aACpC,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAEzD,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;YAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAErC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,EAAE,KAAc,CAAC,CAAC;YAChE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AApKD,4CAoKC;AAED,kBAAe,gBAAgB,CAAC"}
@@ -2,12 +2,15 @@ import { z } from 'zod';
2
2
  import { ElasticsearchManager } from '../elasticsearch/client.js';
3
3
  import { Logger } from '../logger.js';
4
4
  import { StandardResponse } from './types.js';
5
+ import { ToolDefinition } from '../utils/schema-converter.js';
5
6
  export declare abstract class BaseTool<TArgs extends z.ZodTypeAny, TResult> {
6
7
  protected elasticsearch: ElasticsearchManager;
7
8
  protected logger: Logger;
8
- protected toolName: string;
9
+ readonly toolName: string;
9
10
  constructor(elasticsearch: ElasticsearchManager, logger: Logger, toolName: string);
10
11
  abstract get schema(): TArgs;
12
+ abstract get description(): string;
13
+ get toolDefinition(): ToolDefinition;
11
14
  protected abstract run(args: z.output<TArgs>): Promise<TResult>;
12
15
  execute(args: unknown): Promise<TResult>;
13
16
  protected resolveTimeRange(startDate: string | undefined, endDate: string | undefined, defaultStart?: string, defaultEnd?: string): {
@@ -18,7 +21,6 @@ export declare abstract class BaseTool<TArgs extends z.ZodTypeAny, TResult> {
18
21
  };
19
22
  protected buildResponse<TData>(data: TData, meta: {
20
23
  description?: string;
21
- arguments: Record<string, any>;
22
24
  time?: {
23
25
  start: string;
24
26
  end: string;
@@ -1 +1 @@
1
- {"version":3,"file":"base-tool.d.ts","sourceRoot":"","sources":["../../src/tools/base-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9C,8BAAsB,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,UAAU,EAAE,OAAO;IAC9D,SAAS,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC9C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEf,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAMjF,QAAQ,KAAK,MAAM,IAAI,KAAK,CAAC;IAE7B,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAEzD,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA8B9C,SAAS,CAAC,gBAAgB,CACtB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,YAAY,GAAE,MAAkB,EAChC,UAAU,GAAE,MAAc,GAC3B;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IAenE,SAAS,CAAC,aAAa,CAAC,KAAK,EACzB,IAAI,EAAE,KAAK,EACX,IAAI,EAAE;QACF,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE;YACH,KAAK,EAAE,MAAM,CAAC;YACd,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,WAAW,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;QACF,aAAa,EAAE;YACX,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;YAC/D,KAAK,EAAE,MAAM,CAAC;YACd,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,UAAU,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;KACL,GACF,gBAAgB,CAAC,KAAK,CAAC;CAiB7B"}
1
+ {"version":3,"file":"base-tool.d.ts","sourceRoot":"","sources":["../../src/tools/base-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,OAAO,EAAsB,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAElF,8BAAsB,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,UAAU,EAAE,OAAO;IAC9D,SAAS,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC9C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAErB,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAMjF,QAAQ,KAAK,MAAM,IAAI,KAAK,CAAC;IAC7B,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC;IAEnC,IAAI,cAAc,IAAI,cAAc,CAMnC;IAED,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAEzD,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA8B9C,SAAS,CAAC,gBAAgB,CACtB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,YAAY,GAAE,MAAkB,EAChC,UAAU,GAAE,MAAc,GAC3B;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IAenE,SAAS,CAAC,aAAa,CAAC,KAAK,EACzB,IAAI,EAAE,KAAK,EACX,IAAI,EAAE;QACF,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE;YACH,KAAK,EAAE,MAAM,CAAC;YACd,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,WAAW,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;QACF,aAAa,EAAE;YACX,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;YAC/D,KAAK,EAAE,MAAM,CAAC;YACd,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,UAAU,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;KACL,GACF,gBAAgB,CAAC,KAAK,CAAC;CAgB7B"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseTool = void 0;
4
4
  const date_math_js_1 = require("../utils/date-math.js");
5
5
  const handlers_js_1 = require("../errors/handlers.js");
6
+ const schema_converter_js_1 = require("../utils/schema-converter.js");
6
7
  class BaseTool {
7
8
  elasticsearch;
8
9
  logger;
@@ -12,6 +13,13 @@ class BaseTool {
12
13
  this.logger = logger.child({ tool: toolName });
13
14
  this.toolName = toolName;
14
15
  }
16
+ get toolDefinition() {
17
+ return {
18
+ name: this.toolName,
19
+ description: this.description,
20
+ inputSchema: (0, schema_converter_js_1.zodToMcpToolSchema)(this.schema),
21
+ };
22
+ }
15
23
  async execute(args) {
16
24
  try {
17
25
  const validatedArgs = this.schema.parse(args);
@@ -52,14 +60,13 @@ class BaseTool {
52
60
  meta.visualization.description = `${meta.time.start.split('T')[0]} to ${meta.time.end.split('T')[0]}`;
53
61
  }
54
62
  return {
63
+ data,
55
64
  meta: {
56
65
  tool: this.toolName,
57
66
  description: meta.description || `Results from ${this.toolName}`,
58
- arguments: meta.arguments,
59
67
  time: meta.time || { start: '', end: '' },
60
68
  visualization: meta.visualization
61
- },
62
- data
69
+ }
63
70
  };
64
71
  }
65
72
  }