@iflow-mcp/kamranbiglari-mcp-server-chart 1.0.0 → 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.
@@ -1,455 +0,0 @@
1
- import { z } from "zod";
2
- import { zodToJsonSchema } from "../utils/index.js";
3
- // Define the schema for the bar chart
4
- // {
5
- // type: 'ohlc',
6
- // data: {
7
- // datasets: [
8
- // {
9
- // label: 'MSFT',
10
- // yAxisID: 'y1',
11
- // data: [
12
- // ['2016-04-01', 18.23, 19.36, 18.18, 19.31],
13
- // ['2016-04-02', 19.50, 19.89, 19.00, 19.29],
14
- // ['2016-04-03', 19.13, 19.15, 18.43, 18.75],
15
- // ['2016-04-06', 18.54, 18.76, 18.27, 18.76],
16
- // ['2016-04-07', 18.76, 19.14, 18.63, 18.76],
17
- // ['2016-04-08', 18.97, 19.62, 18.96, 19.19],
18
- // ['2016-04-09', 19.45, 19.70, 19.22, 19.67],
19
- // ['2016-04-13', 19.69, 19.85, 19.37, 19.59],
20
- // ['2016-04-14', 19.44, 19.55, 19.00, 19.35],
21
- // ['2016-04-15', 19.21, 19.25, 18.51, 18.83],
22
- // ['2016-04-16', 19.16, 19.78, 18.99, 19.76],
23
- // ['2016-04-17', 19.69, 19.69, 19.00, 19.20],
24
- // ['2016-04-20', 18.89, 18.95, 18.57, 18.61],
25
- // ['2016-04-21', 18.59, 19.08, 18.57, 18.97],
26
- // ['2016-04-22', 18.76, 19.19, 18.70, 18.78],
27
- // ['2016-04-23', 18.92, 18.94, 18.47, 18.92],
28
- // ['2016-04-24', 19.82, 21.20, 19.50, 20.91],
29
- // ['2016-04-27', 20.55, 20.82, 20.28, 20.40],
30
- // ['2016-04-28', 20.25, 20.27, 19.79, 19.93],
31
- // ['2016-04-29', 20.11, 20.89, 20.06, 20.25],
32
- // ['2016-04-30', 20.60, 21.10, 20.01, 20.26],
33
- // ['2016-05-01', 20.19, 20.35, 19.86, 20.24],
34
- // ['2016-05-04', 20.37, 20.40, 19.98, 20.19],
35
- // ['2016-05-05', 20.14, 20.24, 19.64, 19.79],
36
- // ['2016-05-06', 20.06, 20.07, 19.61, 19.79],
37
- // ['2016-05-07', 19.96, 19.99, 19.14, 19.32],
38
- // ['2016-05-08', 19.46, 19.64, 19.14, 19.42],
39
- // ['2016-05-11', 19.20, 19.73, 19.01, 19.32],
40
- // ['2016-05-12', 19.51, 20.06, 19.47, 19.89],
41
- // ['2016-05-13', 19.92, 20.00, 19.67, 19.75],
42
- // ['2016-05-14', 19.83, 20.23, 19.80, 20.06],
43
- // ['2016-05-15', 20.13, 20.50, 19.98, 20.22],
44
- // ['2016-05-18', 20.36, 20.60, 20.24, 20.60],
45
- // ['2016-05-19', 20.51, 20.74, 20.25, 20.31],
46
- // ['2016-05-20', 20.41, 20.69, 20.22, 20.38],
47
- // ['2016-05-21', 20.14, 20.23, 19.51, 19.82],
48
- // ['2016-05-22', 19.93, 20.17, 19.47, 19.75],
49
- // ['2016-05-26', 19.54, 20.45, 19.45, 20.34],
50
- // ['2016-05-27', 20.25, 20.60, 20.07, 20.13],
51
- // ['2016-05-28', 20.32, 20.63, 20.05, 20.45],
52
- // ['2016-05-29', 20.56, 20.94, 20.30, 20.89],
53
- // ['2016-06-01', 21.00, 21.50, 20.86, 21.40],
54
- // ['2016-06-02', 21.36, 21.98, 21.20, 21.40],
55
- // ['2016-06-03', 21.31, 21.76, 21.29, 21.73],
56
- // ['2016-06-04', 21.77, 21.90, 21.58, 21.83],
57
- // ['2016-06-05', 21.96, 22.31, 21.81, 22.14],
58
- // ['2016-06-08', 21.98, 22.32, 21.63, 22.05],
59
- // ['2016-06-09', 22.06, 22.32, 21.88, 22.08],
60
- // ['2016-06-10', 22.17, 22.62, 22.12, 22.55],
61
- // ['2016-06-11', 22.59, 23.26, 22.57, 22.83],
62
- // ['2016-06-12', 22.90, 23.38, 22.74, 23.33],
63
- // ['2016-06-15', 23.23, 23.54, 23.02, 23.42],
64
- // ['2016-06-16', 23.47, 24.11, 23.44, 23.45],
65
- // ['2016-06-17', 23.50, 23.82, 23.17, 23.68],
66
- // ['2016-06-18', 23.62, 23.69, 23.30, 23.50],
67
- // ['2016-06-19', 24.04, 24.34, 23.75, 24.07],
68
- // ['2016-06-22', 23.95, 23.95, 23.25, 23.28],
69
- // ['2016-06-23', 23.38, 23.66, 23.21, 23.34],
70
- // ['2016-06-24', 23.45, 23.75, 23.36, 23.47],
71
- // ['2016-06-25', 23.43, 23.92, 23.20, 23.79],
72
- // ['2016-06-26', 23.57, 23.69, 23.32, 23.35],
73
- // ].map(([d,o,h,l,c]) => ({x:new Date(d).getTime(),o,h,l,c})),
74
- // color: {
75
- // up: '#aaa',
76
- // down: '#000',
77
- // unchanged: '#ccc',
78
- // },
79
- // },
80
- // {
81
- // type: 'bar',
82
- // yAxisID: 'y2',
83
- // backgroundColor: '#bbb',
84
- // label: 'Volume',
85
- // data: [
86
- // ['2016-04-01', 18],
87
- // ['2016-04-02', 18],
88
- // ['2016-04-03', 18],
89
- // ['2016-04-06', 20],
90
- // ['2016-04-07', 22],
91
- // ['2016-04-08', 24],
92
- // ['2016-04-09', 22],
93
- // ['2016-04-13', 20],
94
- // ['2016-04-14', 21],
95
- // ['2016-04-15', 19],
96
- // ['2016-04-16', 21],
97
- // ['2016-04-17', 18],
98
- // ['2016-04-20', 16],
99
- // ['2016-04-21', 19],
100
- // ['2016-04-22', 16],
101
- // ['2016-04-23', 19],
102
- // ['2016-04-24', 23],
103
- // ['2016-04-27', 25],
104
- // ['2016-04-28', 27],
105
- // ['2016-04-29', 22],
106
- // ['2016-04-30', 21],
107
- // ['2016-05-01', 21],
108
- // ['2016-05-04', 21],
109
- // ['2016-05-05', 17],
110
- // ['2016-05-06', 21],
111
- // ['2016-05-07', 15],
112
- // ['2016-05-08', 22],
113
- // ['2016-05-11', 17],
114
- // ['2016-05-12', 19],
115
- // ['2016-05-13', 24],
116
- // ['2016-05-14', 22],
117
- // ['2016-05-15', 22],
118
- // ['2016-05-18', 25],
119
- // ['2016-05-19', 16],
120
- // ['2016-05-20', 20],
121
- // ['2016-05-21', 18],
122
- // ['2016-05-22', 22],
123
- // ['2016-05-26', 18],
124
- // ['2016-05-27', 25],
125
- // ['2016-05-28', 23],
126
- // ['2016-05-29', 24],
127
- // ['2016-06-01', 24],
128
- // ['2016-06-02', 22],
129
- // ['2016-06-03', 22],
130
- // ['2016-06-04', 22],
131
- // ['2016-06-05', 20],
132
- // ['2016-06-08', 20],
133
- // ['2016-06-09', 20],
134
- // ['2016-06-10', 19],
135
- // ['2016-06-11', 22],
136
- // ['2016-06-12', 23],
137
- // ['2016-06-15', 24],
138
- // ['2016-06-16', 25],
139
- // ['2016-06-17', 24],
140
- // ['2016-06-18', 24],
141
- // ['2016-06-19', 21],
142
- // ['2016-06-22', 22],
143
- // ['2016-06-23', 23],
144
- // ['2016-06-24', 22],
145
- // ['2016-06-25', 21],
146
- // ['2016-06-26', 22],
147
- // ].map(([d,y]) => ({x:new Date(d).getTime(),y})),
148
- // },
149
- // {
150
- // type: 'line',
151
- // yAxisID: 'y1',
152
- // borderColor: '#f00',
153
- // backgroundColor: '#f00',
154
- // borderWidth: 2,
155
- // pointRadius: 0,
156
- // label: 'SMA',
157
- // data: [
158
- // ['2016-04-01', 18.832],
159
- // ['2016-04-02', 18.98],
160
- // ['2016-04-03', 18.97],
161
- // ['2016-04-06', 19.082],
162
- // ['2016-04-07', 19.262],
163
- // ['2016-04-08', 19.352],
164
- // ['2016-04-09', 19.39],
165
- // ['2016-04-13', 19.438],
166
- // ['2016-04-14', 19.278],
167
- // ['2016-04-15', 19.108],
168
- // ['2016-04-16', 19.018],
169
- // ['2016-04-17', 18.97],
170
- // ['2016-04-20', 18.996],
171
- // ['2016-04-21', 19.328],
172
- // ['2016-04-22', 19.66],
173
- // ['2016-04-23', 19.93],
174
- // ['2016-04-24', 20.266],
175
- // ['2016-04-27', 20.34],
176
- // ['2016-04-28', 20.304],
177
- // ['2016-04-29', 20.282],
178
- // ['2016-04-30', 20.272],
179
- // ['2016-05-01', 20.144],
180
- // ['2016-05-04', 19.998],
181
- // ['2016-05-05', 19.764],
182
- // ['2016-05-06', 19.638],
183
- // ['2016-05-07', 19.61],
184
- // ['2016-05-08', 19.584],
185
- // ['2016-05-11', 19.718],
186
- // ['2016-05-12', 19.95],
187
- // ['2016-05-13', 20.15],
188
- // ['2016-05-14', 20.248],
189
- // ['2016-05-15', 20.31],
190
- // ['2016-05-18', 20.27],
191
- // ['2016-05-19', 20.106],
192
- // ['2016-05-20', 20.054],
193
- // ['2016-05-21', 20.036],
194
- // ['2016-05-22', 20.12],
195
- // ['2016-05-26', 20.334],
196
- // ['2016-05-27', 20.698],
197
- // ['2016-05-28', 20.91],
198
- // ['2016-05-29', 21.2],
199
- // ['2016-06-01', 21.48],
200
- // ['2016-06-02', 21.676],
201
- // ['2016-06-03', 21.816],
202
- // ['2016-06-04', 21.988],
203
- // ['2016-06-05', 22.152],
204
- // ['2016-06-08', 22.34],
205
- // ['2016-06-09', 22.59],
206
- // ['2016-06-10', 22.872],
207
- // ['2016-06-11', 23.138],
208
- // ['2016-06-12', 23.344],
209
- // ['2016-06-15', 23.572],
210
- // ['2016-06-16', 23.716],
211
- // ['2016-06-17', 23.698],
212
- // ['2016-06-18', 23.688],
213
- // ['2016-06-19', 23.65],
214
- // ['2016-06-22', 23.556],
215
- // ['2016-06-23', 23.486],
216
- // ['2016-06-24', 23.604],
217
- // ['2016-06-25', 23.724],
218
- // ['2016-06-26', 23.79],
219
- // ].map(([d,y]) => ({x:new Date(d).getTime(),y})),
220
- // },
221
- // ],
222
- // },
223
- // options: {
224
- // scales:{
225
- // x:{
226
- // adapters: {
227
- // date: {
228
- // zone: 'UTC-4'
229
- // }
230
- // },
231
- // time: {
232
- // unit: 'day',
233
- // stepSize: 1,
234
- // displayFormats: {
235
- // day: 'MMM d',
236
- // month: 'MMM d',
237
- // }
238
- // },
239
- // },
240
- // y1: {
241
- // stack: 'stockChart',
242
- // stackWeight: 10,
243
- // weight: 2,
244
- // },
245
- // y2: {
246
- // display: false,
247
- // stack: 'stockChart',
248
- // stackWeight: 1,
249
- // weight: 1,
250
- // },
251
- // },
252
- // plugins: {
253
- // legend: {
254
- // display: false,
255
- // },
256
- // title: {
257
- // display: true,
258
- // text: 'MSFT',
259
- // font: {
260
- // size: 20,
261
- // },
262
- // },
263
- // },
264
- // },
265
- // }
266
- const ohlcDataPointSchema = z.object({
267
- x: z.number(), // timestamp
268
- o: z.number(), // open
269
- h: z.number(), // high
270
- l: z.number(), // low
271
- c: z.number(), // close
272
- });
273
- const barDataPointSchema = z.object({
274
- x: z.number(), // timestamp
275
- y: z.number(), // value
276
- });
277
- const lineDataPointSchema = z.object({
278
- x: z.number(), // timestamp
279
- y: z.number(), // value
280
- });
281
- const colorSchema = z.object({
282
- up: z.string().optional(),
283
- down: z.string().optional(),
284
- unchanged: z.string().optional(),
285
- });
286
- const ohlcDatasetSchema = z.object({
287
- label: z.string(),
288
- yAxisID: z.string().optional(),
289
- data: z.array(ohlcDataPointSchema),
290
- color: colorSchema.optional(),
291
- });
292
- const barDatasetSchema = z.object({
293
- type: z.literal("bar"),
294
- yAxisID: z.string().optional(),
295
- backgroundColor: z.string().optional(),
296
- label: z.string(),
297
- data: z.array(barDataPointSchema),
298
- });
299
- const lineDatasetSchema = z.object({
300
- type: z.literal("line"),
301
- yAxisID: z.string().optional(),
302
- borderColor: z.string().optional(),
303
- backgroundColor: z.string().optional(),
304
- borderWidth: z.number().optional(),
305
- pointRadius: z.number().optional(),
306
- label: z.string(),
307
- data: z.array(lineDataPointSchema),
308
- });
309
- const datasetSchema = z.union([
310
- ohlcDatasetSchema,
311
- barDatasetSchema,
312
- lineDatasetSchema,
313
- ]);
314
- const dateAdapterSchema = z.object({
315
- zone: z.string().optional(),
316
- });
317
- const timeConfigSchema = z.object({
318
- unit: z.string().optional(),
319
- stepSize: z.number().optional(),
320
- displayFormats: z.record(z.string()).optional(),
321
- });
322
- const scaleSchema = z.object({
323
- adapters: z.object({
324
- date: dateAdapterSchema.optional(),
325
- }).optional(),
326
- time: timeConfigSchema.optional(),
327
- stack: z.string().optional(),
328
- stackWeight: z.number().optional(),
329
- weight: z.number().optional(),
330
- display: z.boolean().optional(),
331
- });
332
- const legendSchema = z.object({
333
- display: z.boolean().optional(),
334
- });
335
- const titleSchema = z.object({
336
- display: z.boolean().optional(),
337
- text: z.string().optional(),
338
- font: z.object({
339
- size: z.number().optional(),
340
- }).optional(),
341
- });
342
- const pluginsSchema = z.object({
343
- legend: legendSchema.optional(),
344
- title: titleSchema.optional(),
345
- });
346
- const scalesSchema = z.record(scaleSchema);
347
- const optionsSchema = z.object({
348
- scales: scalesSchema.optional(),
349
- plugins: pluginsSchema.optional(),
350
- });
351
- const schema = {
352
- type: z.literal("ohlc").default("ohlc"),
353
- data: z.object({
354
- datasets: z.array(datasetSchema),
355
- }),
356
- options: optionsSchema.optional(),
357
- };
358
- const tool = {
359
- name: "ohlc",
360
- description: `Generates an OHLC (Open, High, Low, Close) chart with the provided financial data.
361
- example input:
362
- \`\`\`json
363
- {
364
- "type": "ohlc",
365
- "data": {
366
- "datasets": [
367
- {
368
- "label": "MSFT",
369
- "yAxisID": "y1",
370
- "data": [
371
- {"x": 1459468800000, "o": 18.23, "h": 19.36, "l": 18.18, "c": 19.31},
372
- {"x": 1459555200000, "o": 19.50, "h": 19.89, "l": 19.00, "c": 19.29}
373
- ],
374
- "color": {
375
- "up": "#aaa",
376
- "down": "#000",
377
- "unchanged": "#ccc"
378
- }
379
- },
380
- {
381
- "type": "bar",
382
- "yAxisID": "y2",
383
- "backgroundColor": "#bbb",
384
- "label": "Volume",
385
- "data": [
386
- {"x": 1459468800000, "y": 18},
387
- {"x": 1459555200000, "y": 18}
388
- ]
389
- },
390
- {
391
- "type": "line",
392
- "yAxisID": "y1",
393
- "borderColor": "#f00",
394
- "backgroundColor": "#f00",
395
- "borderWidth": 2,
396
- "pointRadius": 0,
397
- "label": "SMA",
398
- "data": [
399
- {"x": 1459468800000, "y": 18.832},
400
- {"x": 1459555200000, "y": 18.98}
401
- ]
402
- }
403
- ]
404
- },
405
- "options": {
406
- "scales": {
407
- "x": {
408
- "adapters": {
409
- "date": {
410
- "zone": "UTC-4"
411
- }
412
- },
413
- "time": {
414
- "unit": "day",
415
- "stepSize": 1,
416
- "displayFormats": {
417
- "day": "MMM d",
418
- "month": "MMM d"
419
- }
420
- }
421
- },
422
- "y1": {
423
- "stack": "stockChart",
424
- "stackWeight": 10,
425
- "weight": 2
426
- },
427
- "y2": {
428
- "display": false,
429
- "stack": "stockChart",
430
- "stackWeight": 1,
431
- "weight": 1
432
- }
433
- },
434
- "plugins": {
435
- "legend": {
436
- "display": false
437
- },
438
- "title": {
439
- "display": true,
440
- "text": "MSFT",
441
- "font": {
442
- "size": 20
443
- }
444
- }
445
- }
446
- }
447
- }
448
- \`\`\`
449
- `,
450
- inputSchema: zodToJsonSchema(schema),
451
- };
452
- export const ohlc = {
453
- schema,
454
- tool,
455
- };
@@ -1,50 +0,0 @@
1
- import { z } from "zod";
2
- import { zodToJsonSchema } from "../utils/index.js";
3
- // Define the schema for the pie chart
4
- // {
5
- // type: 'pie',
6
- // data: {
7
- // labels: ['January', 'February', 'March', 'April', 'May'],
8
- // datasets: [{ data: [50, 60, 70, 180, 190] }],
9
- // },
10
- // }
11
- const schema = {
12
- type: z.literal("pie").default("pie"),
13
- data: z.object({
14
- labels: z.array(z.string()).describe("Labels for each pie slice"),
15
- datasets: z.array(z.object({
16
- data: z.array(z.number()).describe("Data values for each pie slice"),
17
- label: z.string().optional().describe("Label for the dataset"),
18
- backgroundColor: z.array(z.string()).optional().describe("Background colors for each slice"),
19
- borderColor: z.array(z.string()).optional().describe("Border colors for each slice"),
20
- borderWidth: z.number().optional().describe("Width of the slice borders"),
21
- hoverBackgroundColor: z.array(z.string()).optional().describe("Background colors when hovering"),
22
- hoverBorderColor: z.array(z.string()).optional().describe("Border colors when hovering"),
23
- hoverBorderWidth: z.number().optional().describe("Border width when hovering"),
24
- })),
25
- }),
26
- };
27
- const tool = {
28
- name: "pie",
29
- description: `Generates a pie chart with the provided data.
30
- example input:
31
- \`\`\`json
32
- {
33
- "type": "pie",
34
- "data": {
35
- "labels": ["January", "February", "March", "April", "May"],
36
- "datasets": [
37
- {
38
- "data": [50, 60, 70, 180, 190]
39
- }
40
- ]
41
- }
42
- }
43
- \`\`\`
44
- `,
45
- inputSchema: zodToJsonSchema(schema),
46
- };
47
- export const pie = {
48
- schema,
49
- tool,
50
- };
@@ -1,50 +0,0 @@
1
- import { z } from "zod";
2
- import { zodToJsonSchema } from "../utils/index.js";
3
- // Define the schema for the polar area chart
4
- // {
5
- // type: 'polarArea',
6
- // data: {
7
- // labels: ['January', 'February', 'March', 'April', 'May'],
8
- // datasets: [{ data: [50, 60, 70, 180, 190] }],
9
- // },
10
- // }
11
- const schema = {
12
- type: z.literal("polarArea").default("polarArea"),
13
- data: z.object({
14
- labels: z.array(z.string()).describe("Labels for each polar area segment"),
15
- datasets: z.array(z.object({
16
- data: z.array(z.number()).describe("Data values for each segment"),
17
- label: z.string().optional().describe("Label for the dataset"),
18
- backgroundColor: z.array(z.string()).optional().describe("Background colors for each segment"),
19
- borderColor: z.array(z.string()).optional().describe("Border colors for each segment"),
20
- borderWidth: z.number().optional().describe("Width of the segment borders"),
21
- hoverBackgroundColor: z.array(z.string()).optional().describe("Background colors when hovering"),
22
- hoverBorderColor: z.array(z.string()).optional().describe("Border colors when hovering"),
23
- hoverBorderWidth: z.number().optional().describe("Border width when hovering"),
24
- })),
25
- }),
26
- };
27
- const tool = {
28
- name: "polarArea",
29
- description: `Generates a polar area chart with the provided data.
30
- example input:
31
- \`\`\`json
32
- {
33
- "type": "polarArea",
34
- "data": {
35
- "labels": ["January", "February", "March", "April", "May"],
36
- "datasets": [
37
- {
38
- "data": [50, 60, 70, 180, 190]
39
- }
40
- ]
41
- }
42
- }
43
- \`\`\`
44
- `,
45
- inputSchema: zodToJsonSchema(schema),
46
- };
47
- export const polarArea = {
48
- schema,
49
- tool,
50
- };
@@ -1,50 +0,0 @@
1
- import { z } from "zod";
2
- import { zodToJsonSchema } from "../utils/index.js";
3
- // Define the schema for the progress bar chart
4
- // {
5
- // type: 'progressBar',
6
- // data: {
7
- // datasets: [
8
- // {
9
- // data: [50],
10
- // },
11
- // ],
12
- // },
13
- // }
14
- const schema = {
15
- type: z.literal("progressBar").default("progressBar"),
16
- data: z.object({
17
- datasets: z.array(z.object({
18
- data: z.array(z.number()).describe("Progress value (typically 0-100)"),
19
- backgroundColor: z.string().optional().describe("Background color of the progress bar"),
20
- borderColor: z.string().optional().describe("Border color of the progress bar"),
21
- borderWidth: z.number().optional().describe("Width of the progress bar border"),
22
- label: z.string().optional().describe("Label for the dataset"),
23
- barColor: z.string().optional().describe("Color of the progress bar fill"),
24
- barBackgroundColor: z.string().optional().describe("Background color of the empty progress bar"),
25
- })),
26
- }),
27
- };
28
- const tool = {
29
- name: "progressBar",
30
- description: `Generates a progress bar chart with the provided value.
31
- example input:
32
- \`\`\`json
33
- {
34
- "type": "progressBar",
35
- "data": {
36
- "datasets": [
37
- {
38
- "data": [50]
39
- }
40
- ]
41
- }
42
- }
43
- \`\`\`
44
- `,
45
- inputSchema: zodToJsonSchema(schema),
46
- };
47
- export const progressBar = {
48
- schema,
49
- tool,
50
- };
@@ -1,59 +0,0 @@
1
- import { z } from "zod";
2
- import { zodToJsonSchema } from "../utils/index.js";
3
- // Define the schema for the radar chart
4
- // {
5
- // type: 'radar',
6
- // data: {
7
- // labels: ['January', 'February', 'March', 'April', 'May'],
8
- // datasets: [
9
- // { label: 'Dogs', data: [50, 60, 70, 180, 190] },
10
- // { label: 'Cats', data: [100, 200, 300, 400, 500] },
11
- // ],
12
- // },
13
- // }
14
- const schema = {
15
- type: z.literal("radar").default("radar"),
16
- data: z.object({
17
- labels: z.array(z.string()).describe("Labels for the radar chart axes"),
18
- datasets: z.array(z.object({
19
- label: z.string().describe("Label for the dataset"),
20
- data: z.array(z.number()).describe("Data points for each axis"),
21
- backgroundColor: z.string().optional().describe("Fill color of the radar area"),
22
- borderColor: z.string().optional().describe("Color of the radar border line"),
23
- borderWidth: z.number().optional().describe("Width of the border line"),
24
- pointBackgroundColor: z.string().optional().describe("Background color of the data points"),
25
- pointBorderColor: z.string().optional().describe("Border color of the data points"),
26
- pointRadius: z.number().optional().describe("Radius of the data points"),
27
- fill: z.boolean().optional().describe("Whether to fill the area"),
28
- })),
29
- }),
30
- };
31
- const tool = {
32
- name: "radar",
33
- description: `Generates a radar chart with the provided data.
34
- example input:
35
- \`\`\`json
36
- {
37
- "type": "radar",
38
- "data": {
39
- "labels": ["January", "February", "March", "April", "May"],
40
- "datasets": [
41
- {
42
- "label": "Dogs",
43
- "data": [50, 60, 70, 180, 190]
44
- },
45
- {
46
- "label": "Cats",
47
- "data": [100, 200, 300, 400, 500]
48
- }
49
- ]
50
- }
51
- }
52
- \`\`\`
53
- `,
54
- inputSchema: zodToJsonSchema(schema),
55
- };
56
- export const radar = {
57
- schema,
58
- tool,
59
- };