@jrpool/kilotest 46.0.8 → 46.0.14

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 (60) hide show
  1. package/.devin/config.local.json +4 -1
  2. package/.github/workflows/{smoke-test.yml → ci.yml} +8 -2
  3. package/README.md +14 -8
  4. package/alerts.test.js +137 -0
  5. package/api/listDiagnoses.test.js +44 -0
  6. package/api/listIssues.js +1 -1
  7. package/api/listIssues.test.js +10 -0
  8. package/api/listReports.test.js +6 -2
  9. package/api/listViolators.test.js +35 -0
  10. package/api/requestTest.test.js +7 -0
  11. package/api/routes.test.js +63 -0
  12. package/api/util.js +9 -11
  13. package/api/util.test.js +68 -2
  14. package/apiIntegration.test.js +13 -3
  15. package/docs/AI-TOOLS.md +41 -158
  16. package/docs/{Smoke Test.json → CI.json} +4 -3
  17. package/index.html +3 -3
  18. package/index.js +64 -77
  19. package/index.test.js +1152 -0
  20. package/indexBalances.test.js +188 -0
  21. package/indexFallback.test.js +33 -0
  22. package/indexServe.test.js +59 -0
  23. package/indexWorkers.test.js +79 -0
  24. package/lhm.plugin.json +3218 -0
  25. package/llms-full.txt +6 -7
  26. package/llms.txt +1 -1
  27. package/mcp.js +2 -2
  28. package/mcp.test.js +281 -0
  29. package/openapi.yaml +1 -1
  30. package/package.json +10 -5
  31. package/routing.test.js +13 -3
  32. package/scripts/generate-openapi.js +1 -1
  33. package/test/fixtures/buildFixtures.js +83 -0
  34. package/test/fixtures/db/reports/260101T0008-mul.json +137 -0
  35. package/test/fixtures/db/reports/260101T0009-brd.json +147 -0
  36. package/test/setup.cjs +14 -0
  37. package/util.js +16 -6
  38. package/util.test.js +886 -3
  39. package/web/ai0BalanceForm/ai0BalanceForm.test.js +88 -0
  40. package/web/expungeReportsForm/expungeReportsForm.test.js +114 -0
  41. package/web/hideReportForm/hideReportForm.test.js +82 -0
  42. package/web/listDiagnoses/listDiagnoses.test.js +160 -0
  43. package/web/listIssues/listIssues.test.js +109 -0
  44. package/web/listReports/listReports.test.js +139 -3
  45. package/web/listRules/listRules.test.js +103 -0
  46. package/web/listTopIssues/listTopIssues.test.js +126 -0
  47. package/web/listViolators/index.js +1 -2
  48. package/web/listViolators/listViolators.test.js +256 -0
  49. package/web/pruneReportsForm/pruneReportsForm.test.js +86 -0
  50. package/web/reannotate/reannotate.test.js +144 -0
  51. package/web/reannotateForm/reannotateForm.test.js +134 -0
  52. package/web/renewWCAG/renewWCAG.test.js +124 -0
  53. package/web/requestRetest/requestRetest.test.js +119 -0
  54. package/web/requestRetestForm/requestRetestForm.test.js +62 -0
  55. package/web/requestTest/requestTest.test.js +115 -0
  56. package/web/requestTestForm/requestTestForm.test.js +40 -0
  57. package/web/rewindReportsForm/rewindReportsForm.test.js +86 -0
  58. package/web/tutorial/index.html +3 -3
  59. package/web/tutorial/tutorial.test.js +97 -0
  60. package/web/unhideReportForm/unhideReportForm.test.js +135 -0
@@ -0,0 +1,3218 @@
1
+ {
2
+ "author": "Jonathan Robert Pool",
3
+ "cloudEndpoint": "https://kilotest.com/mcp",
4
+ "description": "Tools that test web pages for front-end quality (accessibility, usability, and standards conformity) and make test results available",
5
+ "homepage": "https://github.com/jrpool/kilotest",
6
+ "identifier": "jrpool-kilotest",
7
+ "name": "Kilotest",
8
+ "prompts": [],
9
+ "resources": [],
10
+ "tags": [
11
+ "accessibility",
12
+ "a11y",
13
+ "testing",
14
+ "mcp",
15
+ "mcp-server",
16
+ "modelcontextprotocol"
17
+ ],
18
+ "tools": [
19
+ {
20
+ "name": "listReports",
21
+ "description": "Provide basics about all available reports.",
22
+ "inputSchema": {
23
+ "type": "object",
24
+ "properties": {},
25
+ "$schema": "http://json-schema.org/draft-07/schema#"
26
+ },
27
+ "outputSchema": {
28
+ "type": "object",
29
+ "properties": {
30
+ "tool collection": {
31
+ "$ref": "#/definitions/ToolsFacts"
32
+ },
33
+ "tool name": {
34
+ "type": "string"
35
+ },
36
+ "this request": {
37
+ "type": "object",
38
+ "properties": {
39
+ "description": {
40
+ "type": "string"
41
+ },
42
+ "method": {
43
+ "type": "string",
44
+ "const": "GET"
45
+ },
46
+ "URL": {
47
+ "type": "string"
48
+ },
49
+ "closest ancestor request": {
50
+ "anyOf": [
51
+ {
52
+ "$ref": "#/definitions/RequestReference"
53
+ },
54
+ {
55
+ "type": "null"
56
+ }
57
+ ]
58
+ }
59
+ },
60
+ "required": [
61
+ "description",
62
+ "method",
63
+ "URL",
64
+ "closest ancestor request"
65
+ ],
66
+ "additionalProperties": false
67
+ },
68
+ "URLs of similar requests for web users": {
69
+ "$ref": "#/definitions/SimilarWebRequests"
70
+ },
71
+ "response metadata": {
72
+ "$ref": "#/definitions/ResponseMetadata"
73
+ },
74
+ "response content": {
75
+ "type": "object",
76
+ "properties": {
77
+ "basics about all available reports": {
78
+ "type": "array",
79
+ "items": {
80
+ "type": "object",
81
+ "properties": {
82
+ "identifier": {
83
+ "type": "string",
84
+ "description": "timeStamp-jobID identifier of the report."
85
+ },
86
+ "completion date and time": {
87
+ "type": "string"
88
+ },
89
+ "days since the report was completed": {
90
+ "type": "number"
91
+ },
92
+ "tested web page": {
93
+ "type": "object",
94
+ "properties": {
95
+ "description": {
96
+ "type": "string"
97
+ },
98
+ "URL": {
99
+ "type": "string"
100
+ }
101
+ },
102
+ "required": [
103
+ "description",
104
+ "URL"
105
+ ],
106
+ "additionalProperties": false
107
+ },
108
+ "whether a later report about the same page exists": {
109
+ "type": "boolean"
110
+ },
111
+ "how to get details about the report": {
112
+ "type": "object",
113
+ "properties": {
114
+ "method": {
115
+ "type": "string",
116
+ "const": "GET"
117
+ },
118
+ "URL": {
119
+ "type": "string"
120
+ }
121
+ },
122
+ "required": [
123
+ "method",
124
+ "URL"
125
+ ],
126
+ "additionalProperties": false
127
+ },
128
+ "web users can get details about the report at": {
129
+ "type": "string"
130
+ }
131
+ },
132
+ "required": [
133
+ "identifier",
134
+ "completion date and time",
135
+ "days since the report was completed",
136
+ "tested web page",
137
+ "whether a later report about the same page exists",
138
+ "how to get details about the report",
139
+ "web users can get details about the report at"
140
+ ],
141
+ "additionalProperties": false
142
+ }
143
+ },
144
+ "how to request that a page with no report be tested": {
145
+ "type": "object",
146
+ "properties": {
147
+ "method": {
148
+ "type": "string",
149
+ "const": "POST"
150
+ },
151
+ "URL": {
152
+ "type": "string"
153
+ },
154
+ "request body": {
155
+ "type": "object",
156
+ "properties": {
157
+ "description": {
158
+ "type": "string"
159
+ },
160
+ "URL": {
161
+ "type": "string"
162
+ },
163
+ "reason": {
164
+ "type": "string"
165
+ }
166
+ },
167
+ "required": [
168
+ "description",
169
+ "URL",
170
+ "reason"
171
+ ],
172
+ "additionalProperties": false
173
+ },
174
+ "how to check whether the request has been fulfilled": {
175
+ "type": "string"
176
+ }
177
+ },
178
+ "required": [
179
+ "method",
180
+ "URL",
181
+ "request body",
182
+ "how to check whether the request has been fulfilled"
183
+ ],
184
+ "additionalProperties": false
185
+ },
186
+ "how a web user can request that the page be tested": {
187
+ "type": "object",
188
+ "properties": {
189
+ "URL": {
190
+ "type": "string"
191
+ }
192
+ },
193
+ "required": [
194
+ "URL"
195
+ ],
196
+ "additionalProperties": false
197
+ }
198
+ },
199
+ "required": [
200
+ "basics about all available reports",
201
+ "how to request that a page with no report be tested",
202
+ "how a web user can request that the page be tested"
203
+ ],
204
+ "additionalProperties": false
205
+ }
206
+ },
207
+ "required": [
208
+ "tool collection",
209
+ "tool name",
210
+ "this request",
211
+ "URLs of similar requests for web users",
212
+ "response metadata",
213
+ "response content"
214
+ ],
215
+ "$schema": "http://json-schema.org/draft-07/schema#",
216
+ "additionalProperties": false,
217
+ "definitions": {
218
+ "ToolsFacts": {
219
+ "type": "object",
220
+ "properties": {
221
+ "name": {
222
+ "type": "string"
223
+ },
224
+ "description": {
225
+ "type": "object",
226
+ "properties": {
227
+ "what Kilotest does": {
228
+ "type": "string"
229
+ },
230
+ "how to retrieve findings": {
231
+ "type": "object",
232
+ "properties": {
233
+ "level 1": {
234
+ "type": "string"
235
+ },
236
+ "level 2": {
237
+ "type": "string"
238
+ },
239
+ "level 3": {
240
+ "type": "string"
241
+ },
242
+ "level 4": {
243
+ "type": "string"
244
+ }
245
+ },
246
+ "required": [
247
+ "level 1",
248
+ "level 2",
249
+ "level 3",
250
+ "level 4"
251
+ ],
252
+ "additionalProperties": false
253
+ },
254
+ "how to generate more findings": {
255
+ "type": "object",
256
+ "properties": {
257
+ "new testing": {
258
+ "type": "string"
259
+ },
260
+ "retesting": {
261
+ "type": "string"
262
+ },
263
+ "latency": {
264
+ "type": "string"
265
+ },
266
+ "confirmation": {
267
+ "type": "string"
268
+ }
269
+ },
270
+ "required": [
271
+ "new testing",
272
+ "retesting",
273
+ "latency",
274
+ "confirmation"
275
+ ],
276
+ "additionalProperties": false
277
+ }
278
+ },
279
+ "required": [
280
+ "what Kilotest does",
281
+ "how to retrieve findings",
282
+ "how to generate more findings"
283
+ ],
284
+ "additionalProperties": false,
285
+ "description": "Explanation of what Kilotest does and how to use its tools."
286
+ },
287
+ "URL": {
288
+ "type": "string",
289
+ "description": "URL of the Kilotest MCP server."
290
+ },
291
+ "web users can obtain similar functionalities at": {
292
+ "type": "string"
293
+ }
294
+ },
295
+ "required": [
296
+ "name",
297
+ "description",
298
+ "URL",
299
+ "web users can obtain similar functionalities at"
300
+ ],
301
+ "additionalProperties": false
302
+ },
303
+ "RequestReference": {
304
+ "type": "object",
305
+ "properties": {
306
+ "tool name": {
307
+ "type": "string"
308
+ },
309
+ "description": {
310
+ "type": "string"
311
+ },
312
+ "method": {
313
+ "type": "string",
314
+ "const": "GET"
315
+ },
316
+ "URL": {
317
+ "type": "string"
318
+ }
319
+ },
320
+ "required": [
321
+ "tool name",
322
+ "description",
323
+ "method",
324
+ "URL"
325
+ ],
326
+ "additionalProperties": false
327
+ },
328
+ "SimilarWebRequests": {
329
+ "type": "object",
330
+ "properties": {
331
+ "this request": {
332
+ "type": "string",
333
+ "description": "URL of the equivalent web UI page for this request."
334
+ },
335
+ "closest ancestor request": {
336
+ "type": [
337
+ "string",
338
+ "null"
339
+ ]
340
+ }
341
+ },
342
+ "required": [
343
+ "this request",
344
+ "closest ancestor request"
345
+ ],
346
+ "additionalProperties": false
347
+ },
348
+ "ResponseMetadata": {
349
+ "type": "object",
350
+ "properties": {
351
+ "identifier": {
352
+ "type": "string",
353
+ "description": "Unique identifier of this response (timestamp and random suffix)."
354
+ },
355
+ "date and time": {
356
+ "type": "string",
357
+ "description": "UTC date and time when the response was generated, in ISO 8601 format."
358
+ }
359
+ },
360
+ "required": [
361
+ "identifier",
362
+ "date and time"
363
+ ],
364
+ "additionalProperties": false
365
+ }
366
+ }
367
+ },
368
+ "annotations": {
369
+ "title": "Provide basics about all available reports.",
370
+ "readOnlyHint": true,
371
+ "destructiveHint": false,
372
+ "idempotentHint": true,
373
+ "openWorldHint": false
374
+ },
375
+ "execution": {
376
+ "taskSupport": "forbidden"
377
+ }
378
+ },
379
+ {
380
+ "name": "listIssues",
381
+ "description": "Provide details about one report, including basics about the issues reported in it.",
382
+ "inputSchema": {
383
+ "type": "object",
384
+ "properties": {
385
+ "timeStamp": {
386
+ "type": "string",
387
+ "description": "Timestamp of the report in YYMMDDTHHmm format (example: 260503T0432)"
388
+ },
389
+ "jobID": {
390
+ "type": "string",
391
+ "description": "Job identifier of the report (example: x9z)"
392
+ }
393
+ },
394
+ "required": [
395
+ "timeStamp",
396
+ "jobID"
397
+ ],
398
+ "$schema": "http://json-schema.org/draft-07/schema#"
399
+ },
400
+ "outputSchema": {
401
+ "type": "object",
402
+ "properties": {
403
+ "tool collection": {
404
+ "$ref": "#/definitions/ToolsFacts"
405
+ },
406
+ "tool name": {
407
+ "type": "string"
408
+ },
409
+ "this request": {
410
+ "type": "object",
411
+ "properties": {
412
+ "description": {
413
+ "type": "string"
414
+ },
415
+ "method": {
416
+ "type": "string",
417
+ "const": "GET"
418
+ },
419
+ "URL": {
420
+ "type": "string"
421
+ },
422
+ "closest ancestor request": {
423
+ "anyOf": [
424
+ {
425
+ "$ref": "#/definitions/RequestReference"
426
+ },
427
+ {
428
+ "type": "null"
429
+ }
430
+ ]
431
+ }
432
+ },
433
+ "required": [
434
+ "description",
435
+ "method",
436
+ "URL",
437
+ "closest ancestor request"
438
+ ],
439
+ "additionalProperties": false
440
+ },
441
+ "URLs of similar requests for web users": {
442
+ "$ref": "#/definitions/SimilarWebRequests"
443
+ },
444
+ "response metadata": {
445
+ "$ref": "#/definitions/ResponseMetadata"
446
+ },
447
+ "response content": {
448
+ "type": "object",
449
+ "properties": {
450
+ "basics about the report": {
451
+ "$ref": "#/definitions/ReportBasicsOrError"
452
+ },
453
+ "details about the report": {
454
+ "anyOf": [
455
+ {
456
+ "type": "object",
457
+ "properties": {
458
+ "job definition": {
459
+ "type": "object",
460
+ "properties": {
461
+ "whether the job prohibited redirection": {
462
+ "description": "Copied from the report (strict); type not guaranteed."
463
+ },
464
+ "whether the native results of rule engines are reported": {
465
+ "type": "boolean"
466
+ },
467
+ "whether standardized results are reported": {
468
+ "type": "boolean"
469
+ },
470
+ "device emulated by the job": {
471
+ "description": "Device object copied verbatim from the report; shape may vary."
472
+ },
473
+ "browser type used by the job": {
474
+ "description": "Copied from the report (browserID); type not guaranteed."
475
+ }
476
+ },
477
+ "required": [
478
+ "whether the job prohibited redirection",
479
+ "whether the native results of rule engines are reported",
480
+ "whether standardized results are reported",
481
+ "device emulated by the job",
482
+ "browser type used by the job"
483
+ ],
484
+ "additionalProperties": false
485
+ },
486
+ "test results": {
487
+ "type": "object",
488
+ "properties": {
489
+ "rule engines that tried to test the page": {
490
+ "type": "array",
491
+ "items": {
492
+ "$ref": "#/definitions/RuleEngineFacts"
493
+ }
494
+ },
495
+ "rule engines that could not test the page": {
496
+ "type": "array",
497
+ "items": {
498
+ "type": "object",
499
+ "properties": {
500
+ "name": {
501
+ "type": [
502
+ "string",
503
+ "null"
504
+ ]
505
+ },
506
+ "reason for failure": {
507
+ "description": "Copied verbatim from the Testaro report; shape may vary."
508
+ }
509
+ },
510
+ "required": [
511
+ "name",
512
+ "reason for failure"
513
+ ],
514
+ "additionalProperties": false
515
+ }
516
+ },
517
+ "names of rule engines that reported rule violations": {
518
+ "type": "array",
519
+ "items": {
520
+ "type": [
521
+ "string",
522
+ "null"
523
+ ]
524
+ }
525
+ },
526
+ "counts of issues by priority": {
527
+ "type": "object",
528
+ "properties": {
529
+ "highest": {
530
+ "type": "number"
531
+ },
532
+ "high": {
533
+ "type": "number"
534
+ },
535
+ "low": {
536
+ "type": "number"
537
+ },
538
+ "lowest": {
539
+ "type": "number"
540
+ }
541
+ },
542
+ "required": [
543
+ "highest",
544
+ "high",
545
+ "low",
546
+ "lowest"
547
+ ],
548
+ "additionalProperties": false
549
+ },
550
+ "number of elements reported as violators": {
551
+ "type": "number"
552
+ }
553
+ },
554
+ "required": [
555
+ "rule engines that tried to test the page",
556
+ "rule engines that could not test the page",
557
+ "names of rule engines that reported rule violations",
558
+ "counts of issues by priority",
559
+ "number of elements reported as violators"
560
+ ],
561
+ "additionalProperties": false
562
+ }
563
+ },
564
+ "required": [
565
+ "job definition",
566
+ "test results"
567
+ ],
568
+ "additionalProperties": false
569
+ },
570
+ {
571
+ "type": "null"
572
+ }
573
+ ]
574
+ },
575
+ "how to request that the page be retested": {
576
+ "anyOf": [
577
+ {
578
+ "anyOf": [
579
+ {
580
+ "type": "object",
581
+ "properties": {
582
+ "notice": {
583
+ "type": "string"
584
+ }
585
+ },
586
+ "required": [
587
+ "notice"
588
+ ],
589
+ "additionalProperties": false
590
+ },
591
+ {
592
+ "type": "object",
593
+ "properties": {
594
+ "method": {
595
+ "type": "string",
596
+ "const": "POST"
597
+ },
598
+ "URL": {
599
+ "type": "string"
600
+ },
601
+ "request body": {
602
+ "type": "object",
603
+ "properties": {
604
+ "reason": {
605
+ "type": "string"
606
+ }
607
+ },
608
+ "required": [
609
+ "reason"
610
+ ],
611
+ "additionalProperties": false
612
+ },
613
+ "how to check whether the request has been fulfilled": {
614
+ "type": "string"
615
+ }
616
+ },
617
+ "required": [
618
+ "method",
619
+ "URL",
620
+ "request body",
621
+ "how to check whether the request has been fulfilled"
622
+ ],
623
+ "additionalProperties": false
624
+ }
625
+ ]
626
+ },
627
+ {
628
+ "type": "null"
629
+ }
630
+ ]
631
+ },
632
+ "how a web user can request that the page be retested": {
633
+ "anyOf": [
634
+ {
635
+ "type": "object",
636
+ "properties": {
637
+ "URL": {
638
+ "type": "string"
639
+ }
640
+ },
641
+ "required": [
642
+ "URL"
643
+ ],
644
+ "additionalProperties": false
645
+ },
646
+ {
647
+ "type": "null"
648
+ }
649
+ ]
650
+ },
651
+ "how to get the full report in JSON": {
652
+ "anyOf": [
653
+ {
654
+ "type": "object",
655
+ "properties": {
656
+ "size of the report in bytes": {
657
+ "type": "number"
658
+ },
659
+ "method": {
660
+ "type": "string",
661
+ "const": "GET"
662
+ },
663
+ "URL": {
664
+ "type": "string"
665
+ }
666
+ },
667
+ "required": [
668
+ "size of the report in bytes",
669
+ "method",
670
+ "URL"
671
+ ],
672
+ "additionalProperties": false
673
+ },
674
+ {
675
+ "type": "null"
676
+ }
677
+ ]
678
+ },
679
+ "how a web user can get the full report in JSON": {
680
+ "anyOf": [
681
+ {
682
+ "type": "object",
683
+ "properties": {
684
+ "URL": {
685
+ "type": "string"
686
+ }
687
+ },
688
+ "required": [
689
+ "URL"
690
+ ],
691
+ "additionalProperties": false
692
+ },
693
+ {
694
+ "type": "null"
695
+ }
696
+ ]
697
+ },
698
+ "basics about all issues reported in the report": {
699
+ "type": "array",
700
+ "items": {
701
+ "type": "object",
702
+ "properties": {
703
+ "identifier": {
704
+ "type": "string"
705
+ },
706
+ "summary": {
707
+ "type": "string"
708
+ },
709
+ "impact on a user": {
710
+ "type": "string"
711
+ },
712
+ "priority": {
713
+ "type": "string",
714
+ "enum": [
715
+ "lowest",
716
+ "low",
717
+ "high",
718
+ "highest"
719
+ ]
720
+ },
721
+ "rule engines with any violations belonging to the issue": {
722
+ "type": "array",
723
+ "items": {
724
+ "type": "string"
725
+ }
726
+ },
727
+ "how to get details about the issue": {
728
+ "type": "object",
729
+ "properties": {
730
+ "method": {
731
+ "type": "string",
732
+ "const": "GET"
733
+ },
734
+ "URL": {
735
+ "type": "string"
736
+ }
737
+ },
738
+ "required": [
739
+ "method",
740
+ "URL"
741
+ ],
742
+ "additionalProperties": false
743
+ },
744
+ "web users can get details about the issue at": {
745
+ "type": "string"
746
+ }
747
+ },
748
+ "required": [
749
+ "identifier",
750
+ "summary",
751
+ "impact on a user",
752
+ "priority",
753
+ "rule engines with any violations belonging to the issue",
754
+ "how to get details about the issue",
755
+ "web users can get details about the issue at"
756
+ ],
757
+ "additionalProperties": false
758
+ }
759
+ }
760
+ },
761
+ "required": [
762
+ "basics about the report",
763
+ "details about the report",
764
+ "how to request that the page be retested",
765
+ "how a web user can request that the page be retested",
766
+ "how to get the full report in JSON",
767
+ "how a web user can get the full report in JSON",
768
+ "basics about all issues reported in the report"
769
+ ],
770
+ "additionalProperties": false
771
+ }
772
+ },
773
+ "required": [
774
+ "tool collection",
775
+ "tool name",
776
+ "this request",
777
+ "URLs of similar requests for web users",
778
+ "response metadata",
779
+ "response content"
780
+ ],
781
+ "$schema": "http://json-schema.org/draft-07/schema#",
782
+ "additionalProperties": false,
783
+ "definitions": {
784
+ "ToolsFacts": {
785
+ "type": "object",
786
+ "properties": {
787
+ "name": {
788
+ "type": "string"
789
+ },
790
+ "description": {
791
+ "type": "object",
792
+ "properties": {
793
+ "what Kilotest does": {
794
+ "type": "string"
795
+ },
796
+ "how to retrieve findings": {
797
+ "type": "object",
798
+ "properties": {
799
+ "level 1": {
800
+ "type": "string"
801
+ },
802
+ "level 2": {
803
+ "type": "string"
804
+ },
805
+ "level 3": {
806
+ "type": "string"
807
+ },
808
+ "level 4": {
809
+ "type": "string"
810
+ }
811
+ },
812
+ "required": [
813
+ "level 1",
814
+ "level 2",
815
+ "level 3",
816
+ "level 4"
817
+ ],
818
+ "additionalProperties": false
819
+ },
820
+ "how to generate more findings": {
821
+ "type": "object",
822
+ "properties": {
823
+ "new testing": {
824
+ "type": "string"
825
+ },
826
+ "retesting": {
827
+ "type": "string"
828
+ },
829
+ "latency": {
830
+ "type": "string"
831
+ },
832
+ "confirmation": {
833
+ "type": "string"
834
+ }
835
+ },
836
+ "required": [
837
+ "new testing",
838
+ "retesting",
839
+ "latency",
840
+ "confirmation"
841
+ ],
842
+ "additionalProperties": false
843
+ }
844
+ },
845
+ "required": [
846
+ "what Kilotest does",
847
+ "how to retrieve findings",
848
+ "how to generate more findings"
849
+ ],
850
+ "additionalProperties": false,
851
+ "description": "Explanation of what Kilotest does and how to use its tools."
852
+ },
853
+ "URL": {
854
+ "type": "string",
855
+ "description": "URL of the Kilotest MCP server."
856
+ },
857
+ "web users can obtain similar functionalities at": {
858
+ "type": "string"
859
+ }
860
+ },
861
+ "required": [
862
+ "name",
863
+ "description",
864
+ "URL",
865
+ "web users can obtain similar functionalities at"
866
+ ],
867
+ "additionalProperties": false
868
+ },
869
+ "RequestReference": {
870
+ "type": "object",
871
+ "properties": {
872
+ "tool name": {
873
+ "type": "string"
874
+ },
875
+ "description": {
876
+ "type": "string"
877
+ },
878
+ "method": {
879
+ "type": "string",
880
+ "const": "GET"
881
+ },
882
+ "URL": {
883
+ "type": "string"
884
+ }
885
+ },
886
+ "required": [
887
+ "tool name",
888
+ "description",
889
+ "method",
890
+ "URL"
891
+ ],
892
+ "additionalProperties": false
893
+ },
894
+ "SimilarWebRequests": {
895
+ "type": "object",
896
+ "properties": {
897
+ "this request": {
898
+ "type": "string",
899
+ "description": "URL of the equivalent web UI page for this request."
900
+ },
901
+ "closest ancestor request": {
902
+ "type": [
903
+ "string",
904
+ "null"
905
+ ]
906
+ }
907
+ },
908
+ "required": [
909
+ "this request",
910
+ "closest ancestor request"
911
+ ],
912
+ "additionalProperties": false
913
+ },
914
+ "ResponseMetadata": {
915
+ "type": "object",
916
+ "properties": {
917
+ "identifier": {
918
+ "type": "string",
919
+ "description": "Unique identifier of this response (timestamp and random suffix)."
920
+ },
921
+ "date and time": {
922
+ "type": "string",
923
+ "description": "UTC date and time when the response was generated, in ISO 8601 format."
924
+ }
925
+ },
926
+ "required": [
927
+ "identifier",
928
+ "date and time"
929
+ ],
930
+ "additionalProperties": false
931
+ },
932
+ "ReportBasicsOrError": {
933
+ "anyOf": [
934
+ {
935
+ "$ref": "#/definitions/ReportBasics"
936
+ },
937
+ {
938
+ "type": "object",
939
+ "properties": {
940
+ "error": {
941
+ "type": "string"
942
+ }
943
+ },
944
+ "required": [
945
+ "error"
946
+ ],
947
+ "additionalProperties": false
948
+ }
949
+ ]
950
+ },
951
+ "ReportBasics": {
952
+ "type": "object",
953
+ "properties": {
954
+ "identifier": {
955
+ "type": "string",
956
+ "description": "timeStamp-jobID identifier of the report."
957
+ },
958
+ "completion date and time": {
959
+ "type": "string"
960
+ },
961
+ "days since the report was completed": {
962
+ "type": "number"
963
+ },
964
+ "tested web page": {
965
+ "type": "object",
966
+ "properties": {
967
+ "description": {
968
+ "type": "string"
969
+ },
970
+ "URL": {
971
+ "type": "string"
972
+ }
973
+ },
974
+ "required": [
975
+ "description",
976
+ "URL"
977
+ ],
978
+ "additionalProperties": false
979
+ },
980
+ "whether a later report about the same page exists": {
981
+ "type": "boolean"
982
+ }
983
+ },
984
+ "required": [
985
+ "identifier",
986
+ "completion date and time",
987
+ "days since the report was completed",
988
+ "tested web page",
989
+ "whether a later report about the same page exists"
990
+ ],
991
+ "additionalProperties": false
992
+ },
993
+ "RuleEngineFacts": {
994
+ "type": "object",
995
+ "properties": {
996
+ "identifier": {
997
+ "type": "string"
998
+ },
999
+ "name": {
1000
+ "type": [
1001
+ "string",
1002
+ "null"
1003
+ ]
1004
+ },
1005
+ "sponsor": {
1006
+ "type": [
1007
+ "string",
1008
+ "null"
1009
+ ]
1010
+ }
1011
+ },
1012
+ "required": [
1013
+ "identifier",
1014
+ "name",
1015
+ "sponsor"
1016
+ ],
1017
+ "additionalProperties": false
1018
+ }
1019
+ }
1020
+ },
1021
+ "annotations": {
1022
+ "title": "Provide details about one report, including basics about the issues reported in it.",
1023
+ "readOnlyHint": true,
1024
+ "destructiveHint": false,
1025
+ "idempotentHint": true,
1026
+ "openWorldHint": false
1027
+ },
1028
+ "execution": {
1029
+ "taskSupport": "forbidden"
1030
+ }
1031
+ },
1032
+ {
1033
+ "name": "listViolators",
1034
+ "description": "Provide details about one issue in one report, including basics about the elements of the tested page that were reported as exhibiting the issue.",
1035
+ "inputSchema": {
1036
+ "type": "object",
1037
+ "properties": {
1038
+ "issueID": {
1039
+ "type": "string",
1040
+ "description": "Issue identifier (example: contrastPoor)"
1041
+ },
1042
+ "timeStamp": {
1043
+ "type": "string",
1044
+ "description": "Timestamp of the report in YYMMDDTHHmm format (example: 260503T0432)"
1045
+ },
1046
+ "jobID": {
1047
+ "type": "string",
1048
+ "description": "Job identifier of the report (example: x9z)"
1049
+ }
1050
+ },
1051
+ "required": [
1052
+ "issueID",
1053
+ "timeStamp",
1054
+ "jobID"
1055
+ ],
1056
+ "$schema": "http://json-schema.org/draft-07/schema#"
1057
+ },
1058
+ "outputSchema": {
1059
+ "type": "object",
1060
+ "properties": {
1061
+ "tool collection": {
1062
+ "$ref": "#/definitions/ToolsFacts"
1063
+ },
1064
+ "tool name": {
1065
+ "type": "string"
1066
+ },
1067
+ "this request": {
1068
+ "type": "object",
1069
+ "properties": {
1070
+ "description": {
1071
+ "type": "string"
1072
+ },
1073
+ "method": {
1074
+ "type": "string",
1075
+ "const": "GET"
1076
+ },
1077
+ "URL": {
1078
+ "type": "string"
1079
+ },
1080
+ "closest ancestor request": {
1081
+ "anyOf": [
1082
+ {
1083
+ "$ref": "#/definitions/RequestReference"
1084
+ },
1085
+ {
1086
+ "type": "null"
1087
+ }
1088
+ ]
1089
+ }
1090
+ },
1091
+ "required": [
1092
+ "description",
1093
+ "method",
1094
+ "URL",
1095
+ "closest ancestor request"
1096
+ ],
1097
+ "additionalProperties": false
1098
+ },
1099
+ "URLs of similar requests for web users": {
1100
+ "$ref": "#/definitions/SimilarWebRequests"
1101
+ },
1102
+ "response metadata": {
1103
+ "$ref": "#/definitions/ResponseMetadata"
1104
+ },
1105
+ "response content": {
1106
+ "type": "object",
1107
+ "properties": {
1108
+ "basics about the report": {
1109
+ "$ref": "#/definitions/ReportBasicsOrError"
1110
+ },
1111
+ "basics about the issue": {
1112
+ "$ref": "#/definitions/IssueBasicsOrError"
1113
+ },
1114
+ "details about the issue": {
1115
+ "anyOf": [
1116
+ {
1117
+ "type": "object",
1118
+ "properties": {
1119
+ "rule engines reporting violations belonging to the issue": {
1120
+ "type": "array",
1121
+ "items": {
1122
+ "$ref": "#/definitions/RuleEngineFacts"
1123
+ }
1124
+ }
1125
+ },
1126
+ "required": [
1127
+ "rule engines reporting violations belonging to the issue"
1128
+ ],
1129
+ "additionalProperties": false
1130
+ },
1131
+ {
1132
+ "type": "null"
1133
+ }
1134
+ ]
1135
+ },
1136
+ "basics about all elements reported as exhibiting the issue": {
1137
+ "anyOf": [
1138
+ {
1139
+ "type": "array",
1140
+ "items": {
1141
+ "type": "object",
1142
+ "properties": {
1143
+ "identifier": {
1144
+ "type": "string"
1145
+ },
1146
+ "tag name": {
1147
+ "description": "Copied from the report catalog entry; type not guaranteed."
1148
+ },
1149
+ "inner text": {
1150
+ "description": "Copied from the report catalog entry; type not guaranteed."
1151
+ },
1152
+ "count of rule engines reporting that the element exhibited the issue": {
1153
+ "type": "number"
1154
+ },
1155
+ "how to get details about the element": {
1156
+ "type": "object",
1157
+ "properties": {
1158
+ "URL": {
1159
+ "type": "string"
1160
+ },
1161
+ "request method": {
1162
+ "type": "string",
1163
+ "const": "GET"
1164
+ }
1165
+ },
1166
+ "required": [
1167
+ "URL",
1168
+ "request method"
1169
+ ],
1170
+ "additionalProperties": false
1171
+ },
1172
+ "web users can get details about the element at": {
1173
+ "type": "string"
1174
+ }
1175
+ },
1176
+ "required": [
1177
+ "identifier",
1178
+ "tag name",
1179
+ "inner text",
1180
+ "count of rule engines reporting that the element exhibited the issue",
1181
+ "how to get details about the element",
1182
+ "web users can get details about the element at"
1183
+ ],
1184
+ "additionalProperties": false
1185
+ }
1186
+ },
1187
+ {
1188
+ "type": "null"
1189
+ }
1190
+ ]
1191
+ }
1192
+ },
1193
+ "required": [
1194
+ "basics about the report",
1195
+ "basics about the issue",
1196
+ "details about the issue",
1197
+ "basics about all elements reported as exhibiting the issue"
1198
+ ],
1199
+ "additionalProperties": false
1200
+ }
1201
+ },
1202
+ "required": [
1203
+ "tool collection",
1204
+ "tool name",
1205
+ "this request",
1206
+ "URLs of similar requests for web users",
1207
+ "response metadata",
1208
+ "response content"
1209
+ ],
1210
+ "$schema": "http://json-schema.org/draft-07/schema#",
1211
+ "additionalProperties": false,
1212
+ "definitions": {
1213
+ "ToolsFacts": {
1214
+ "type": "object",
1215
+ "properties": {
1216
+ "name": {
1217
+ "type": "string"
1218
+ },
1219
+ "description": {
1220
+ "type": "object",
1221
+ "properties": {
1222
+ "what Kilotest does": {
1223
+ "type": "string"
1224
+ },
1225
+ "how to retrieve findings": {
1226
+ "type": "object",
1227
+ "properties": {
1228
+ "level 1": {
1229
+ "type": "string"
1230
+ },
1231
+ "level 2": {
1232
+ "type": "string"
1233
+ },
1234
+ "level 3": {
1235
+ "type": "string"
1236
+ },
1237
+ "level 4": {
1238
+ "type": "string"
1239
+ }
1240
+ },
1241
+ "required": [
1242
+ "level 1",
1243
+ "level 2",
1244
+ "level 3",
1245
+ "level 4"
1246
+ ],
1247
+ "additionalProperties": false
1248
+ },
1249
+ "how to generate more findings": {
1250
+ "type": "object",
1251
+ "properties": {
1252
+ "new testing": {
1253
+ "type": "string"
1254
+ },
1255
+ "retesting": {
1256
+ "type": "string"
1257
+ },
1258
+ "latency": {
1259
+ "type": "string"
1260
+ },
1261
+ "confirmation": {
1262
+ "type": "string"
1263
+ }
1264
+ },
1265
+ "required": [
1266
+ "new testing",
1267
+ "retesting",
1268
+ "latency",
1269
+ "confirmation"
1270
+ ],
1271
+ "additionalProperties": false
1272
+ }
1273
+ },
1274
+ "required": [
1275
+ "what Kilotest does",
1276
+ "how to retrieve findings",
1277
+ "how to generate more findings"
1278
+ ],
1279
+ "additionalProperties": false,
1280
+ "description": "Explanation of what Kilotest does and how to use its tools."
1281
+ },
1282
+ "URL": {
1283
+ "type": "string",
1284
+ "description": "URL of the Kilotest MCP server."
1285
+ },
1286
+ "web users can obtain similar functionalities at": {
1287
+ "type": "string"
1288
+ }
1289
+ },
1290
+ "required": [
1291
+ "name",
1292
+ "description",
1293
+ "URL",
1294
+ "web users can obtain similar functionalities at"
1295
+ ],
1296
+ "additionalProperties": false
1297
+ },
1298
+ "RequestReference": {
1299
+ "type": "object",
1300
+ "properties": {
1301
+ "tool name": {
1302
+ "type": "string"
1303
+ },
1304
+ "description": {
1305
+ "type": "string"
1306
+ },
1307
+ "method": {
1308
+ "type": "string",
1309
+ "const": "GET"
1310
+ },
1311
+ "URL": {
1312
+ "type": "string"
1313
+ }
1314
+ },
1315
+ "required": [
1316
+ "tool name",
1317
+ "description",
1318
+ "method",
1319
+ "URL"
1320
+ ],
1321
+ "additionalProperties": false
1322
+ },
1323
+ "SimilarWebRequests": {
1324
+ "type": "object",
1325
+ "properties": {
1326
+ "this request": {
1327
+ "type": "string",
1328
+ "description": "URL of the equivalent web UI page for this request."
1329
+ },
1330
+ "closest ancestor request": {
1331
+ "type": [
1332
+ "string",
1333
+ "null"
1334
+ ]
1335
+ }
1336
+ },
1337
+ "required": [
1338
+ "this request",
1339
+ "closest ancestor request"
1340
+ ],
1341
+ "additionalProperties": false
1342
+ },
1343
+ "ResponseMetadata": {
1344
+ "type": "object",
1345
+ "properties": {
1346
+ "identifier": {
1347
+ "type": "string",
1348
+ "description": "Unique identifier of this response (timestamp and random suffix)."
1349
+ },
1350
+ "date and time": {
1351
+ "type": "string",
1352
+ "description": "UTC date and time when the response was generated, in ISO 8601 format."
1353
+ }
1354
+ },
1355
+ "required": [
1356
+ "identifier",
1357
+ "date and time"
1358
+ ],
1359
+ "additionalProperties": false
1360
+ },
1361
+ "ReportBasicsOrError": {
1362
+ "anyOf": [
1363
+ {
1364
+ "$ref": "#/definitions/ReportBasics"
1365
+ },
1366
+ {
1367
+ "type": "object",
1368
+ "properties": {
1369
+ "error": {
1370
+ "type": "string"
1371
+ }
1372
+ },
1373
+ "required": [
1374
+ "error"
1375
+ ],
1376
+ "additionalProperties": false
1377
+ }
1378
+ ]
1379
+ },
1380
+ "ReportBasics": {
1381
+ "type": "object",
1382
+ "properties": {
1383
+ "identifier": {
1384
+ "type": "string",
1385
+ "description": "timeStamp-jobID identifier of the report."
1386
+ },
1387
+ "completion date and time": {
1388
+ "type": "string"
1389
+ },
1390
+ "days since the report was completed": {
1391
+ "type": "number"
1392
+ },
1393
+ "tested web page": {
1394
+ "type": "object",
1395
+ "properties": {
1396
+ "description": {
1397
+ "type": "string"
1398
+ },
1399
+ "URL": {
1400
+ "type": "string"
1401
+ }
1402
+ },
1403
+ "required": [
1404
+ "description",
1405
+ "URL"
1406
+ ],
1407
+ "additionalProperties": false
1408
+ },
1409
+ "whether a later report about the same page exists": {
1410
+ "type": "boolean"
1411
+ }
1412
+ },
1413
+ "required": [
1414
+ "identifier",
1415
+ "completion date and time",
1416
+ "days since the report was completed",
1417
+ "tested web page",
1418
+ "whether a later report about the same page exists"
1419
+ ],
1420
+ "additionalProperties": false
1421
+ },
1422
+ "IssueBasicsOrError": {
1423
+ "anyOf": [
1424
+ {
1425
+ "type": "object",
1426
+ "properties": {
1427
+ "identifier": {
1428
+ "type": "string"
1429
+ },
1430
+ "summary": {
1431
+ "type": "string"
1432
+ },
1433
+ "impact on a user": {
1434
+ "type": "string"
1435
+ },
1436
+ "priority": {
1437
+ "type": "string",
1438
+ "enum": [
1439
+ "lowest",
1440
+ "low",
1441
+ "high",
1442
+ "highest"
1443
+ ]
1444
+ },
1445
+ "related WCAG standard": {
1446
+ "type": "object",
1447
+ "properties": {
1448
+ "layer": {
1449
+ "type": "string",
1450
+ "enum": [
1451
+ "success criterion",
1452
+ "guideline"
1453
+ ]
1454
+ },
1455
+ "identifier": {
1456
+ "type": "string"
1457
+ }
1458
+ },
1459
+ "required": [
1460
+ "layer",
1461
+ "identifier"
1462
+ ],
1463
+ "additionalProperties": false
1464
+ }
1465
+ },
1466
+ "required": [
1467
+ "identifier",
1468
+ "summary",
1469
+ "impact on a user",
1470
+ "priority",
1471
+ "related WCAG standard"
1472
+ ],
1473
+ "additionalProperties": false
1474
+ },
1475
+ {
1476
+ "type": "object",
1477
+ "properties": {
1478
+ "error": {
1479
+ "type": "string"
1480
+ }
1481
+ },
1482
+ "required": [
1483
+ "error"
1484
+ ],
1485
+ "additionalProperties": false
1486
+ }
1487
+ ]
1488
+ },
1489
+ "RuleEngineFacts": {
1490
+ "type": "object",
1491
+ "properties": {
1492
+ "identifier": {
1493
+ "type": "string"
1494
+ },
1495
+ "name": {
1496
+ "type": [
1497
+ "string",
1498
+ "null"
1499
+ ]
1500
+ },
1501
+ "sponsor": {
1502
+ "type": [
1503
+ "string",
1504
+ "null"
1505
+ ]
1506
+ }
1507
+ },
1508
+ "required": [
1509
+ "identifier",
1510
+ "name",
1511
+ "sponsor"
1512
+ ],
1513
+ "additionalProperties": false
1514
+ }
1515
+ }
1516
+ },
1517
+ "annotations": {
1518
+ "title": "Provide details about one issue in one report, including basics about the elements of the tested page that were reported as exhibiting the issue.",
1519
+ "readOnlyHint": true,
1520
+ "destructiveHint": false,
1521
+ "idempotentHint": true,
1522
+ "openWorldHint": false
1523
+ },
1524
+ "execution": {
1525
+ "taskSupport": "forbidden"
1526
+ }
1527
+ },
1528
+ {
1529
+ "name": "listDiagnoses",
1530
+ "description": "Provide details about one element reported as exhibiting one issue in one report, including the diagnoses provided by rule engines about how the element exhibited the issue.",
1531
+ "inputSchema": {
1532
+ "type": "object",
1533
+ "properties": {
1534
+ "catalogIndex": {
1535
+ "type": "string",
1536
+ "description": "Identifier of the issue-exhibiting element in the catalog of elements on the page (example: 372)"
1537
+ },
1538
+ "issueID": {
1539
+ "type": "string",
1540
+ "description": "Issue identifier (example: contrastPoor)"
1541
+ },
1542
+ "timeStamp": {
1543
+ "type": "string",
1544
+ "description": "Timestamp of the report in YYMMDDTHHmm format (example: 260503T0432)"
1545
+ },
1546
+ "jobID": {
1547
+ "type": "string",
1548
+ "description": "Job identifier of the report (example: x9z)"
1549
+ }
1550
+ },
1551
+ "required": [
1552
+ "catalogIndex",
1553
+ "issueID",
1554
+ "timeStamp",
1555
+ "jobID"
1556
+ ],
1557
+ "$schema": "http://json-schema.org/draft-07/schema#"
1558
+ },
1559
+ "outputSchema": {
1560
+ "type": "object",
1561
+ "properties": {
1562
+ "tool collection": {
1563
+ "$ref": "#/definitions/ToolsFacts"
1564
+ },
1565
+ "tool name": {
1566
+ "type": "string"
1567
+ },
1568
+ "this request": {
1569
+ "type": "object",
1570
+ "properties": {
1571
+ "description": {
1572
+ "type": "string"
1573
+ },
1574
+ "method": {
1575
+ "type": "string",
1576
+ "const": "GET"
1577
+ },
1578
+ "URL": {
1579
+ "type": "string"
1580
+ },
1581
+ "closest ancestor request": {
1582
+ "anyOf": [
1583
+ {
1584
+ "$ref": "#/definitions/RequestReference"
1585
+ },
1586
+ {
1587
+ "type": "null"
1588
+ }
1589
+ ]
1590
+ }
1591
+ },
1592
+ "required": [
1593
+ "description",
1594
+ "method",
1595
+ "URL",
1596
+ "closest ancestor request"
1597
+ ],
1598
+ "additionalProperties": false
1599
+ },
1600
+ "URLs of similar requests for web users": {
1601
+ "$ref": "#/definitions/SimilarWebRequests"
1602
+ },
1603
+ "response metadata": {
1604
+ "$ref": "#/definitions/ResponseMetadata"
1605
+ },
1606
+ "response content": {
1607
+ "type": "object",
1608
+ "properties": {
1609
+ "basics about the report": {
1610
+ "$ref": "#/definitions/ReportBasicsOrError"
1611
+ },
1612
+ "basics about the issue": {
1613
+ "$ref": "#/definitions/IssueBasicsOrError"
1614
+ },
1615
+ "basics about the element": {
1616
+ "anyOf": [
1617
+ {
1618
+ "anyOf": [
1619
+ {
1620
+ "type": "object",
1621
+ "properties": {
1622
+ "identifier": {
1623
+ "type": "string"
1624
+ },
1625
+ "tag name": {
1626
+ "description": "Copied from the report catalog entry; type not guaranteed."
1627
+ },
1628
+ "inner text": {
1629
+ "description": "Copied from the report catalog entry; type not guaranteed."
1630
+ }
1631
+ },
1632
+ "required": [
1633
+ "identifier",
1634
+ "tag name",
1635
+ "inner text"
1636
+ ],
1637
+ "additionalProperties": false
1638
+ },
1639
+ {
1640
+ "type": "object",
1641
+ "properties": {
1642
+ "error": {
1643
+ "type": "string"
1644
+ }
1645
+ },
1646
+ "required": [
1647
+ "error"
1648
+ ],
1649
+ "additionalProperties": false
1650
+ }
1651
+ ]
1652
+ },
1653
+ {
1654
+ "type": "null"
1655
+ }
1656
+ ]
1657
+ },
1658
+ "details about the element": {
1659
+ "anyOf": [
1660
+ {
1661
+ "type": "object",
1662
+ "properties": {
1663
+ "start tag": {
1664
+ "description": "Copied from the report catalog entry; type not guaranteed."
1665
+ },
1666
+ "XPath": {
1667
+ "description": "Copied from the report catalog entry; type not guaranteed."
1668
+ },
1669
+ "x, y, width, and height of bounding box": {
1670
+ "description": "Copied from the report catalog entry; type not guaranteed."
1671
+ }
1672
+ },
1673
+ "required": [
1674
+ "start tag",
1675
+ "XPath",
1676
+ "x, y, width, and height of bounding box"
1677
+ ],
1678
+ "additionalProperties": false
1679
+ },
1680
+ {
1681
+ "type": "null"
1682
+ }
1683
+ ]
1684
+ },
1685
+ "diagnoses of how the element exhibited the issue": {
1686
+ "anyOf": [
1687
+ {
1688
+ "type": "array",
1689
+ "items": {
1690
+ "type": "object",
1691
+ "properties": {
1692
+ "identifier of the violated rule": {
1693
+ "description": "Copied from the report instance (ruleID); type not guaranteed."
1694
+ },
1695
+ "description of the violation": {
1696
+ "description": "Copied from the report instance (what); type not guaranteed."
1697
+ },
1698
+ "severity of the violation on a 0-to-3 scale": {
1699
+ "description": "Copied from the report instance (ordinalSeverity); type not guaranteed."
1700
+ },
1701
+ "count of violations of the rule by the element": {
1702
+ "type": "number"
1703
+ }
1704
+ },
1705
+ "required": [
1706
+ "identifier of the violated rule",
1707
+ "description of the violation",
1708
+ "severity of the violation on a 0-to-3 scale",
1709
+ "count of violations of the rule by the element"
1710
+ ],
1711
+ "additionalProperties": false
1712
+ }
1713
+ },
1714
+ {
1715
+ "type": "object",
1716
+ "properties": {
1717
+ "error": {
1718
+ "type": "string"
1719
+ }
1720
+ },
1721
+ "required": [
1722
+ "error"
1723
+ ],
1724
+ "additionalProperties": false
1725
+ }
1726
+ ]
1727
+ }
1728
+ },
1729
+ "required": [
1730
+ "basics about the report",
1731
+ "basics about the issue",
1732
+ "basics about the element",
1733
+ "details about the element",
1734
+ "diagnoses of how the element exhibited the issue"
1735
+ ],
1736
+ "additionalProperties": false
1737
+ }
1738
+ },
1739
+ "required": [
1740
+ "tool collection",
1741
+ "tool name",
1742
+ "this request",
1743
+ "URLs of similar requests for web users",
1744
+ "response metadata",
1745
+ "response content"
1746
+ ],
1747
+ "$schema": "http://json-schema.org/draft-07/schema#",
1748
+ "additionalProperties": false,
1749
+ "definitions": {
1750
+ "ToolsFacts": {
1751
+ "type": "object",
1752
+ "properties": {
1753
+ "name": {
1754
+ "type": "string"
1755
+ },
1756
+ "description": {
1757
+ "type": "object",
1758
+ "properties": {
1759
+ "what Kilotest does": {
1760
+ "type": "string"
1761
+ },
1762
+ "how to retrieve findings": {
1763
+ "type": "object",
1764
+ "properties": {
1765
+ "level 1": {
1766
+ "type": "string"
1767
+ },
1768
+ "level 2": {
1769
+ "type": "string"
1770
+ },
1771
+ "level 3": {
1772
+ "type": "string"
1773
+ },
1774
+ "level 4": {
1775
+ "type": "string"
1776
+ }
1777
+ },
1778
+ "required": [
1779
+ "level 1",
1780
+ "level 2",
1781
+ "level 3",
1782
+ "level 4"
1783
+ ],
1784
+ "additionalProperties": false
1785
+ },
1786
+ "how to generate more findings": {
1787
+ "type": "object",
1788
+ "properties": {
1789
+ "new testing": {
1790
+ "type": "string"
1791
+ },
1792
+ "retesting": {
1793
+ "type": "string"
1794
+ },
1795
+ "latency": {
1796
+ "type": "string"
1797
+ },
1798
+ "confirmation": {
1799
+ "type": "string"
1800
+ }
1801
+ },
1802
+ "required": [
1803
+ "new testing",
1804
+ "retesting",
1805
+ "latency",
1806
+ "confirmation"
1807
+ ],
1808
+ "additionalProperties": false
1809
+ }
1810
+ },
1811
+ "required": [
1812
+ "what Kilotest does",
1813
+ "how to retrieve findings",
1814
+ "how to generate more findings"
1815
+ ],
1816
+ "additionalProperties": false,
1817
+ "description": "Explanation of what Kilotest does and how to use its tools."
1818
+ },
1819
+ "URL": {
1820
+ "type": "string",
1821
+ "description": "URL of the Kilotest MCP server."
1822
+ },
1823
+ "web users can obtain similar functionalities at": {
1824
+ "type": "string"
1825
+ }
1826
+ },
1827
+ "required": [
1828
+ "name",
1829
+ "description",
1830
+ "URL",
1831
+ "web users can obtain similar functionalities at"
1832
+ ],
1833
+ "additionalProperties": false
1834
+ },
1835
+ "RequestReference": {
1836
+ "type": "object",
1837
+ "properties": {
1838
+ "tool name": {
1839
+ "type": "string"
1840
+ },
1841
+ "description": {
1842
+ "type": "string"
1843
+ },
1844
+ "method": {
1845
+ "type": "string",
1846
+ "const": "GET"
1847
+ },
1848
+ "URL": {
1849
+ "type": "string"
1850
+ }
1851
+ },
1852
+ "required": [
1853
+ "tool name",
1854
+ "description",
1855
+ "method",
1856
+ "URL"
1857
+ ],
1858
+ "additionalProperties": false
1859
+ },
1860
+ "SimilarWebRequests": {
1861
+ "type": "object",
1862
+ "properties": {
1863
+ "this request": {
1864
+ "type": "string",
1865
+ "description": "URL of the equivalent web UI page for this request."
1866
+ },
1867
+ "closest ancestor request": {
1868
+ "type": [
1869
+ "string",
1870
+ "null"
1871
+ ]
1872
+ }
1873
+ },
1874
+ "required": [
1875
+ "this request",
1876
+ "closest ancestor request"
1877
+ ],
1878
+ "additionalProperties": false
1879
+ },
1880
+ "ResponseMetadata": {
1881
+ "type": "object",
1882
+ "properties": {
1883
+ "identifier": {
1884
+ "type": "string",
1885
+ "description": "Unique identifier of this response (timestamp and random suffix)."
1886
+ },
1887
+ "date and time": {
1888
+ "type": "string",
1889
+ "description": "UTC date and time when the response was generated, in ISO 8601 format."
1890
+ }
1891
+ },
1892
+ "required": [
1893
+ "identifier",
1894
+ "date and time"
1895
+ ],
1896
+ "additionalProperties": false
1897
+ },
1898
+ "ReportBasicsOrError": {
1899
+ "anyOf": [
1900
+ {
1901
+ "$ref": "#/definitions/ReportBasics"
1902
+ },
1903
+ {
1904
+ "type": "object",
1905
+ "properties": {
1906
+ "error": {
1907
+ "type": "string"
1908
+ }
1909
+ },
1910
+ "required": [
1911
+ "error"
1912
+ ],
1913
+ "additionalProperties": false
1914
+ }
1915
+ ]
1916
+ },
1917
+ "ReportBasics": {
1918
+ "type": "object",
1919
+ "properties": {
1920
+ "identifier": {
1921
+ "type": "string",
1922
+ "description": "timeStamp-jobID identifier of the report."
1923
+ },
1924
+ "completion date and time": {
1925
+ "type": "string"
1926
+ },
1927
+ "days since the report was completed": {
1928
+ "type": "number"
1929
+ },
1930
+ "tested web page": {
1931
+ "type": "object",
1932
+ "properties": {
1933
+ "description": {
1934
+ "type": "string"
1935
+ },
1936
+ "URL": {
1937
+ "type": "string"
1938
+ }
1939
+ },
1940
+ "required": [
1941
+ "description",
1942
+ "URL"
1943
+ ],
1944
+ "additionalProperties": false
1945
+ },
1946
+ "whether a later report about the same page exists": {
1947
+ "type": "boolean"
1948
+ }
1949
+ },
1950
+ "required": [
1951
+ "identifier",
1952
+ "completion date and time",
1953
+ "days since the report was completed",
1954
+ "tested web page",
1955
+ "whether a later report about the same page exists"
1956
+ ],
1957
+ "additionalProperties": false
1958
+ },
1959
+ "IssueBasicsOrError": {
1960
+ "anyOf": [
1961
+ {
1962
+ "type": "object",
1963
+ "properties": {
1964
+ "identifier": {
1965
+ "type": "string"
1966
+ },
1967
+ "summary": {
1968
+ "type": "string"
1969
+ },
1970
+ "impact on a user": {
1971
+ "type": "string"
1972
+ },
1973
+ "priority": {
1974
+ "type": "string",
1975
+ "enum": [
1976
+ "lowest",
1977
+ "low",
1978
+ "high",
1979
+ "highest"
1980
+ ]
1981
+ },
1982
+ "related WCAG standard": {
1983
+ "type": "object",
1984
+ "properties": {
1985
+ "layer": {
1986
+ "type": "string",
1987
+ "enum": [
1988
+ "success criterion",
1989
+ "guideline"
1990
+ ]
1991
+ },
1992
+ "identifier": {
1993
+ "type": "string"
1994
+ }
1995
+ },
1996
+ "required": [
1997
+ "layer",
1998
+ "identifier"
1999
+ ],
2000
+ "additionalProperties": false
2001
+ }
2002
+ },
2003
+ "required": [
2004
+ "identifier",
2005
+ "summary",
2006
+ "impact on a user",
2007
+ "priority",
2008
+ "related WCAG standard"
2009
+ ],
2010
+ "additionalProperties": false
2011
+ },
2012
+ {
2013
+ "type": "object",
2014
+ "properties": {
2015
+ "error": {
2016
+ "type": "string"
2017
+ }
2018
+ },
2019
+ "required": [
2020
+ "error"
2021
+ ],
2022
+ "additionalProperties": false
2023
+ }
2024
+ ]
2025
+ }
2026
+ }
2027
+ },
2028
+ "annotations": {
2029
+ "title": "Provide details about one element reported as exhibiting one issue in one report, including the diagnoses provided by rule engines about how the element exhibited the issue.",
2030
+ "readOnlyHint": true,
2031
+ "destructiveHint": false,
2032
+ "idempotentHint": true,
2033
+ "openWorldHint": false
2034
+ },
2035
+ "execution": {
2036
+ "taskSupport": "forbidden"
2037
+ }
2038
+ },
2039
+ {
2040
+ "name": "getReport",
2041
+ "description": "Get one full report in JSON.",
2042
+ "inputSchema": {
2043
+ "type": "object",
2044
+ "properties": {
2045
+ "timeStamp": {
2046
+ "type": "string",
2047
+ "description": "Timestamp of the report in YYMMDDTHHmm format (example: 260503T0432)"
2048
+ },
2049
+ "jobID": {
2050
+ "type": "string",
2051
+ "description": "Job identifier of the report (example: x9z)"
2052
+ }
2053
+ },
2054
+ "required": [
2055
+ "timeStamp",
2056
+ "jobID"
2057
+ ],
2058
+ "$schema": "http://json-schema.org/draft-07/schema#"
2059
+ },
2060
+ "outputSchema": {
2061
+ "type": "object",
2062
+ "properties": {
2063
+ "tool collection": {
2064
+ "$ref": "#/definitions/ToolsFacts"
2065
+ },
2066
+ "tool name": {
2067
+ "type": "string"
2068
+ },
2069
+ "this request": {
2070
+ "type": "object",
2071
+ "properties": {
2072
+ "description": {
2073
+ "type": "string"
2074
+ },
2075
+ "method": {
2076
+ "type": "string",
2077
+ "const": "GET"
2078
+ },
2079
+ "URL": {
2080
+ "type": "string"
2081
+ },
2082
+ "closest ancestor request": {
2083
+ "anyOf": [
2084
+ {
2085
+ "$ref": "#/definitions/RequestReference"
2086
+ },
2087
+ {
2088
+ "type": "null"
2089
+ }
2090
+ ]
2091
+ }
2092
+ },
2093
+ "required": [
2094
+ "description",
2095
+ "method",
2096
+ "URL",
2097
+ "closest ancestor request"
2098
+ ],
2099
+ "additionalProperties": false
2100
+ },
2101
+ "URLs of similar requests for web users": {
2102
+ "$ref": "#/definitions/SimilarWebRequests"
2103
+ },
2104
+ "response metadata": {
2105
+ "$ref": "#/definitions/ResponseMetadata"
2106
+ },
2107
+ "response content": {
2108
+ "type": "object",
2109
+ "properties": {
2110
+ "size of the report in bytes": {
2111
+ "type": [
2112
+ "number",
2113
+ "string"
2114
+ ]
2115
+ },
2116
+ "full report": {
2117
+ "description": "The full raw Testaro/Testilo report JSON, copied verbatim, or an error object if it could not be retrieved."
2118
+ }
2119
+ },
2120
+ "required": [
2121
+ "size of the report in bytes",
2122
+ "full report"
2123
+ ],
2124
+ "additionalProperties": false
2125
+ }
2126
+ },
2127
+ "required": [
2128
+ "tool collection",
2129
+ "tool name",
2130
+ "this request",
2131
+ "URLs of similar requests for web users",
2132
+ "response metadata",
2133
+ "response content"
2134
+ ],
2135
+ "$schema": "http://json-schema.org/draft-07/schema#",
2136
+ "additionalProperties": false,
2137
+ "definitions": {
2138
+ "ToolsFacts": {
2139
+ "type": "object",
2140
+ "properties": {
2141
+ "name": {
2142
+ "type": "string"
2143
+ },
2144
+ "description": {
2145
+ "type": "object",
2146
+ "properties": {
2147
+ "what Kilotest does": {
2148
+ "type": "string"
2149
+ },
2150
+ "how to retrieve findings": {
2151
+ "type": "object",
2152
+ "properties": {
2153
+ "level 1": {
2154
+ "type": "string"
2155
+ },
2156
+ "level 2": {
2157
+ "type": "string"
2158
+ },
2159
+ "level 3": {
2160
+ "type": "string"
2161
+ },
2162
+ "level 4": {
2163
+ "type": "string"
2164
+ }
2165
+ },
2166
+ "required": [
2167
+ "level 1",
2168
+ "level 2",
2169
+ "level 3",
2170
+ "level 4"
2171
+ ],
2172
+ "additionalProperties": false
2173
+ },
2174
+ "how to generate more findings": {
2175
+ "type": "object",
2176
+ "properties": {
2177
+ "new testing": {
2178
+ "type": "string"
2179
+ },
2180
+ "retesting": {
2181
+ "type": "string"
2182
+ },
2183
+ "latency": {
2184
+ "type": "string"
2185
+ },
2186
+ "confirmation": {
2187
+ "type": "string"
2188
+ }
2189
+ },
2190
+ "required": [
2191
+ "new testing",
2192
+ "retesting",
2193
+ "latency",
2194
+ "confirmation"
2195
+ ],
2196
+ "additionalProperties": false
2197
+ }
2198
+ },
2199
+ "required": [
2200
+ "what Kilotest does",
2201
+ "how to retrieve findings",
2202
+ "how to generate more findings"
2203
+ ],
2204
+ "additionalProperties": false,
2205
+ "description": "Explanation of what Kilotest does and how to use its tools."
2206
+ },
2207
+ "URL": {
2208
+ "type": "string",
2209
+ "description": "URL of the Kilotest MCP server."
2210
+ },
2211
+ "web users can obtain similar functionalities at": {
2212
+ "type": "string"
2213
+ }
2214
+ },
2215
+ "required": [
2216
+ "name",
2217
+ "description",
2218
+ "URL",
2219
+ "web users can obtain similar functionalities at"
2220
+ ],
2221
+ "additionalProperties": false
2222
+ },
2223
+ "RequestReference": {
2224
+ "type": "object",
2225
+ "properties": {
2226
+ "tool name": {
2227
+ "type": "string"
2228
+ },
2229
+ "description": {
2230
+ "type": "string"
2231
+ },
2232
+ "method": {
2233
+ "type": "string",
2234
+ "const": "GET"
2235
+ },
2236
+ "URL": {
2237
+ "type": "string"
2238
+ }
2239
+ },
2240
+ "required": [
2241
+ "tool name",
2242
+ "description",
2243
+ "method",
2244
+ "URL"
2245
+ ],
2246
+ "additionalProperties": false
2247
+ },
2248
+ "SimilarWebRequests": {
2249
+ "type": "object",
2250
+ "properties": {
2251
+ "this request": {
2252
+ "type": "string",
2253
+ "description": "URL of the equivalent web UI page for this request."
2254
+ },
2255
+ "closest ancestor request": {
2256
+ "type": [
2257
+ "string",
2258
+ "null"
2259
+ ]
2260
+ }
2261
+ },
2262
+ "required": [
2263
+ "this request",
2264
+ "closest ancestor request"
2265
+ ],
2266
+ "additionalProperties": false
2267
+ },
2268
+ "ResponseMetadata": {
2269
+ "type": "object",
2270
+ "properties": {
2271
+ "identifier": {
2272
+ "type": "string",
2273
+ "description": "Unique identifier of this response (timestamp and random suffix)."
2274
+ },
2275
+ "date and time": {
2276
+ "type": "string",
2277
+ "description": "UTC date and time when the response was generated, in ISO 8601 format."
2278
+ }
2279
+ },
2280
+ "required": [
2281
+ "identifier",
2282
+ "date and time"
2283
+ ],
2284
+ "additionalProperties": false
2285
+ }
2286
+ }
2287
+ },
2288
+ "annotations": {
2289
+ "title": "Get one full report in JSON.",
2290
+ "readOnlyHint": true,
2291
+ "destructiveHint": false,
2292
+ "idempotentHint": true,
2293
+ "openWorldHint": false
2294
+ },
2295
+ "execution": {
2296
+ "taskSupport": "forbidden"
2297
+ }
2298
+ },
2299
+ {
2300
+ "name": "requestTest",
2301
+ "description": "Process my request to test a page about which no report is available yet.",
2302
+ "inputSchema": {
2303
+ "type": "object",
2304
+ "properties": {
2305
+ "description": {
2306
+ "type": "string",
2307
+ "description": "10- to 100-character description of the page conforming to the naming convention used in the listReports output"
2308
+ },
2309
+ "URL": {
2310
+ "type": "string",
2311
+ "description": "12- to 300-character URL of the page, including the https:// scheme and any query"
2312
+ },
2313
+ "reason": {
2314
+ "type": "string",
2315
+ "description": "20- to 100-character reason why the page should be tested"
2316
+ }
2317
+ },
2318
+ "required": [
2319
+ "description",
2320
+ "URL",
2321
+ "reason"
2322
+ ],
2323
+ "$schema": "http://json-schema.org/draft-07/schema#"
2324
+ },
2325
+ "outputSchema": {
2326
+ "type": "object",
2327
+ "properties": {
2328
+ "tool collection": {
2329
+ "$ref": "#/definitions/ToolsFacts"
2330
+ },
2331
+ "tool name": {
2332
+ "type": "string"
2333
+ },
2334
+ "this request": {
2335
+ "type": "object",
2336
+ "properties": {
2337
+ "description": {
2338
+ "type": "string"
2339
+ },
2340
+ "method": {
2341
+ "type": "string",
2342
+ "const": "POST"
2343
+ },
2344
+ "URL": {
2345
+ "type": "string"
2346
+ },
2347
+ "body": {
2348
+ "type": "object",
2349
+ "properties": {
2350
+ "description": {
2351
+ "type": "string",
2352
+ "description": "10- to 100-character description of the page conforming to the naming convention used in the listReports output"
2353
+ },
2354
+ "URL": {
2355
+ "type": "string",
2356
+ "description": "12- to 300-character URL of the page, including the https:// scheme and any query"
2357
+ },
2358
+ "reason": {
2359
+ "type": "string",
2360
+ "description": "20- to 100-character reason why the page should be tested"
2361
+ }
2362
+ },
2363
+ "required": [
2364
+ "description",
2365
+ "URL",
2366
+ "reason"
2367
+ ],
2368
+ "additionalProperties": false
2369
+ },
2370
+ "closest ancestor request": {
2371
+ "anyOf": [
2372
+ {
2373
+ "$ref": "#/definitions/RequestReference"
2374
+ },
2375
+ {
2376
+ "type": "null"
2377
+ }
2378
+ ]
2379
+ }
2380
+ },
2381
+ "required": [
2382
+ "description",
2383
+ "method",
2384
+ "URL",
2385
+ "body",
2386
+ "closest ancestor request"
2387
+ ],
2388
+ "additionalProperties": false
2389
+ },
2390
+ "URLs of similar requests for web users": {
2391
+ "$ref": "#/definitions/SimilarWebRequests"
2392
+ },
2393
+ "response metadata": {
2394
+ "$ref": "#/definitions/ResponseMetadata"
2395
+ },
2396
+ "response content": {
2397
+ "type": "object",
2398
+ "properties": {
2399
+ "details about your request": {
2400
+ "anyOf": [
2401
+ {
2402
+ "type": "object",
2403
+ "properties": {
2404
+ "error": {
2405
+ "type": "string"
2406
+ }
2407
+ },
2408
+ "required": [
2409
+ "error"
2410
+ ],
2411
+ "additionalProperties": false
2412
+ },
2413
+ {
2414
+ "type": "object",
2415
+ "properties": {
2416
+ "date and time received": {
2417
+ "type": "string"
2418
+ },
2419
+ "page to be tested": {
2420
+ "type": "object",
2421
+ "properties": {
2422
+ "description": {
2423
+ "type": "string"
2424
+ },
2425
+ "URL": {
2426
+ "type": "string"
2427
+ }
2428
+ },
2429
+ "required": [
2430
+ "description",
2431
+ "URL"
2432
+ ],
2433
+ "additionalProperties": false
2434
+ },
2435
+ "reason why the page should be tested": {
2436
+ "type": "string"
2437
+ }
2438
+ },
2439
+ "required": [
2440
+ "date and time received",
2441
+ "page to be tested",
2442
+ "reason why the page should be tested"
2443
+ ],
2444
+ "additionalProperties": false
2445
+ }
2446
+ ]
2447
+ }
2448
+ },
2449
+ "required": [
2450
+ "details about your request"
2451
+ ],
2452
+ "additionalProperties": false
2453
+ }
2454
+ },
2455
+ "required": [
2456
+ "tool collection",
2457
+ "tool name",
2458
+ "this request",
2459
+ "URLs of similar requests for web users",
2460
+ "response metadata",
2461
+ "response content"
2462
+ ],
2463
+ "$schema": "http://json-schema.org/draft-07/schema#",
2464
+ "additionalProperties": false,
2465
+ "definitions": {
2466
+ "ToolsFacts": {
2467
+ "type": "object",
2468
+ "properties": {
2469
+ "name": {
2470
+ "type": "string"
2471
+ },
2472
+ "description": {
2473
+ "type": "object",
2474
+ "properties": {
2475
+ "what Kilotest does": {
2476
+ "type": "string"
2477
+ },
2478
+ "how to retrieve findings": {
2479
+ "type": "object",
2480
+ "properties": {
2481
+ "level 1": {
2482
+ "type": "string"
2483
+ },
2484
+ "level 2": {
2485
+ "type": "string"
2486
+ },
2487
+ "level 3": {
2488
+ "type": "string"
2489
+ },
2490
+ "level 4": {
2491
+ "type": "string"
2492
+ }
2493
+ },
2494
+ "required": [
2495
+ "level 1",
2496
+ "level 2",
2497
+ "level 3",
2498
+ "level 4"
2499
+ ],
2500
+ "additionalProperties": false
2501
+ },
2502
+ "how to generate more findings": {
2503
+ "type": "object",
2504
+ "properties": {
2505
+ "new testing": {
2506
+ "type": "string"
2507
+ },
2508
+ "retesting": {
2509
+ "type": "string"
2510
+ },
2511
+ "latency": {
2512
+ "type": "string"
2513
+ },
2514
+ "confirmation": {
2515
+ "type": "string"
2516
+ }
2517
+ },
2518
+ "required": [
2519
+ "new testing",
2520
+ "retesting",
2521
+ "latency",
2522
+ "confirmation"
2523
+ ],
2524
+ "additionalProperties": false
2525
+ }
2526
+ },
2527
+ "required": [
2528
+ "what Kilotest does",
2529
+ "how to retrieve findings",
2530
+ "how to generate more findings"
2531
+ ],
2532
+ "additionalProperties": false,
2533
+ "description": "Explanation of what Kilotest does and how to use its tools."
2534
+ },
2535
+ "URL": {
2536
+ "type": "string",
2537
+ "description": "URL of the Kilotest MCP server."
2538
+ },
2539
+ "web users can obtain similar functionalities at": {
2540
+ "type": "string"
2541
+ }
2542
+ },
2543
+ "required": [
2544
+ "name",
2545
+ "description",
2546
+ "URL",
2547
+ "web users can obtain similar functionalities at"
2548
+ ],
2549
+ "additionalProperties": false
2550
+ },
2551
+ "RequestReference": {
2552
+ "type": "object",
2553
+ "properties": {
2554
+ "tool name": {
2555
+ "type": "string"
2556
+ },
2557
+ "description": {
2558
+ "type": "string"
2559
+ },
2560
+ "method": {
2561
+ "type": "string",
2562
+ "const": "GET"
2563
+ },
2564
+ "URL": {
2565
+ "type": "string"
2566
+ }
2567
+ },
2568
+ "required": [
2569
+ "tool name",
2570
+ "description",
2571
+ "method",
2572
+ "URL"
2573
+ ],
2574
+ "additionalProperties": false
2575
+ },
2576
+ "SimilarWebRequests": {
2577
+ "type": "object",
2578
+ "properties": {
2579
+ "this request": {
2580
+ "type": "string",
2581
+ "description": "URL of the equivalent web UI page for this request."
2582
+ },
2583
+ "closest ancestor request": {
2584
+ "type": [
2585
+ "string",
2586
+ "null"
2587
+ ]
2588
+ }
2589
+ },
2590
+ "required": [
2591
+ "this request",
2592
+ "closest ancestor request"
2593
+ ],
2594
+ "additionalProperties": false
2595
+ },
2596
+ "ResponseMetadata": {
2597
+ "type": "object",
2598
+ "properties": {
2599
+ "identifier": {
2600
+ "type": "string",
2601
+ "description": "Unique identifier of this response (timestamp and random suffix)."
2602
+ },
2603
+ "date and time": {
2604
+ "type": "string",
2605
+ "description": "UTC date and time when the response was generated, in ISO 8601 format."
2606
+ }
2607
+ },
2608
+ "required": [
2609
+ "identifier",
2610
+ "date and time"
2611
+ ],
2612
+ "additionalProperties": false
2613
+ }
2614
+ }
2615
+ },
2616
+ "annotations": {
2617
+ "title": "Process my request to test a page about which no report is available yet.",
2618
+ "readOnlyHint": false,
2619
+ "destructiveHint": false,
2620
+ "idempotentHint": false,
2621
+ "openWorldHint": false
2622
+ },
2623
+ "execution": {
2624
+ "taskSupport": "forbidden"
2625
+ }
2626
+ },
2627
+ {
2628
+ "name": "requestRetest",
2629
+ "description": "Process my request to retest a page about which a report is available.",
2630
+ "inputSchema": {
2631
+ "type": "object",
2632
+ "properties": {
2633
+ "timeStamp": {
2634
+ "type": "string",
2635
+ "description": "Timestamp of the latest report about the page in YYMMDDTHHmm format (example: 260503T0432)"
2636
+ },
2637
+ "jobID": {
2638
+ "type": "string",
2639
+ "description": "Job identifier of the latest report about the page (example: x9z)"
2640
+ },
2641
+ "reason": {
2642
+ "type": "string",
2643
+ "description": "20- to 100-character reason why the page should be retested"
2644
+ }
2645
+ },
2646
+ "required": [
2647
+ "timeStamp",
2648
+ "jobID",
2649
+ "reason"
2650
+ ],
2651
+ "$schema": "http://json-schema.org/draft-07/schema#"
2652
+ },
2653
+ "outputSchema": {
2654
+ "type": "object",
2655
+ "properties": {
2656
+ "tool collection": {
2657
+ "$ref": "#/definitions/ToolsFacts"
2658
+ },
2659
+ "tool name": {
2660
+ "type": "string"
2661
+ },
2662
+ "this request": {
2663
+ "type": "object",
2664
+ "properties": {
2665
+ "description": {
2666
+ "type": "string"
2667
+ },
2668
+ "method": {
2669
+ "type": "string",
2670
+ "const": "POST"
2671
+ },
2672
+ "URL": {
2673
+ "type": "string"
2674
+ },
2675
+ "body": {
2676
+ "type": "object",
2677
+ "properties": {
2678
+ "reason": {
2679
+ "type": "string",
2680
+ "description": "20- to 100-character reason why the page should be retested"
2681
+ }
2682
+ },
2683
+ "required": [
2684
+ "reason"
2685
+ ],
2686
+ "additionalProperties": false
2687
+ },
2688
+ "closest ancestor request": {
2689
+ "anyOf": [
2690
+ {
2691
+ "$ref": "#/definitions/RequestReference"
2692
+ },
2693
+ {
2694
+ "type": "null"
2695
+ }
2696
+ ]
2697
+ }
2698
+ },
2699
+ "required": [
2700
+ "description",
2701
+ "method",
2702
+ "URL",
2703
+ "body",
2704
+ "closest ancestor request"
2705
+ ],
2706
+ "additionalProperties": false
2707
+ },
2708
+ "URLs of similar requests for web users": {
2709
+ "$ref": "#/definitions/SimilarWebRequests"
2710
+ },
2711
+ "response metadata": {
2712
+ "$ref": "#/definitions/ResponseMetadata"
2713
+ },
2714
+ "response content": {
2715
+ "type": "object",
2716
+ "properties": {
2717
+ "details about your request": {
2718
+ "anyOf": [
2719
+ {
2720
+ "type": "object",
2721
+ "properties": {
2722
+ "error": {
2723
+ "type": "string"
2724
+ }
2725
+ },
2726
+ "required": [
2727
+ "error"
2728
+ ],
2729
+ "additionalProperties": false
2730
+ },
2731
+ {
2732
+ "type": "object",
2733
+ "properties": {
2734
+ "date and time received": {
2735
+ "type": "string"
2736
+ },
2737
+ "page to be retested": {
2738
+ "type": "object",
2739
+ "properties": {
2740
+ "description": {
2741
+ "type": "string"
2742
+ },
2743
+ "URL": {
2744
+ "type": "string"
2745
+ }
2746
+ },
2747
+ "required": [
2748
+ "description",
2749
+ "URL"
2750
+ ],
2751
+ "additionalProperties": false
2752
+ },
2753
+ "reason why the page should be retested": {
2754
+ "type": "string"
2755
+ }
2756
+ },
2757
+ "required": [
2758
+ "date and time received",
2759
+ "page to be retested",
2760
+ "reason why the page should be retested"
2761
+ ],
2762
+ "additionalProperties": false
2763
+ }
2764
+ ]
2765
+ }
2766
+ },
2767
+ "required": [
2768
+ "details about your request"
2769
+ ],
2770
+ "additionalProperties": false
2771
+ }
2772
+ },
2773
+ "required": [
2774
+ "tool collection",
2775
+ "tool name",
2776
+ "this request",
2777
+ "URLs of similar requests for web users",
2778
+ "response metadata",
2779
+ "response content"
2780
+ ],
2781
+ "$schema": "http://json-schema.org/draft-07/schema#",
2782
+ "additionalProperties": false,
2783
+ "definitions": {
2784
+ "ToolsFacts": {
2785
+ "type": "object",
2786
+ "properties": {
2787
+ "name": {
2788
+ "type": "string"
2789
+ },
2790
+ "description": {
2791
+ "type": "object",
2792
+ "properties": {
2793
+ "what Kilotest does": {
2794
+ "type": "string"
2795
+ },
2796
+ "how to retrieve findings": {
2797
+ "type": "object",
2798
+ "properties": {
2799
+ "level 1": {
2800
+ "type": "string"
2801
+ },
2802
+ "level 2": {
2803
+ "type": "string"
2804
+ },
2805
+ "level 3": {
2806
+ "type": "string"
2807
+ },
2808
+ "level 4": {
2809
+ "type": "string"
2810
+ }
2811
+ },
2812
+ "required": [
2813
+ "level 1",
2814
+ "level 2",
2815
+ "level 3",
2816
+ "level 4"
2817
+ ],
2818
+ "additionalProperties": false
2819
+ },
2820
+ "how to generate more findings": {
2821
+ "type": "object",
2822
+ "properties": {
2823
+ "new testing": {
2824
+ "type": "string"
2825
+ },
2826
+ "retesting": {
2827
+ "type": "string"
2828
+ },
2829
+ "latency": {
2830
+ "type": "string"
2831
+ },
2832
+ "confirmation": {
2833
+ "type": "string"
2834
+ }
2835
+ },
2836
+ "required": [
2837
+ "new testing",
2838
+ "retesting",
2839
+ "latency",
2840
+ "confirmation"
2841
+ ],
2842
+ "additionalProperties": false
2843
+ }
2844
+ },
2845
+ "required": [
2846
+ "what Kilotest does",
2847
+ "how to retrieve findings",
2848
+ "how to generate more findings"
2849
+ ],
2850
+ "additionalProperties": false,
2851
+ "description": "Explanation of what Kilotest does and how to use its tools."
2852
+ },
2853
+ "URL": {
2854
+ "type": "string",
2855
+ "description": "URL of the Kilotest MCP server."
2856
+ },
2857
+ "web users can obtain similar functionalities at": {
2858
+ "type": "string"
2859
+ }
2860
+ },
2861
+ "required": [
2862
+ "name",
2863
+ "description",
2864
+ "URL",
2865
+ "web users can obtain similar functionalities at"
2866
+ ],
2867
+ "additionalProperties": false
2868
+ },
2869
+ "RequestReference": {
2870
+ "type": "object",
2871
+ "properties": {
2872
+ "tool name": {
2873
+ "type": "string"
2874
+ },
2875
+ "description": {
2876
+ "type": "string"
2877
+ },
2878
+ "method": {
2879
+ "type": "string",
2880
+ "const": "GET"
2881
+ },
2882
+ "URL": {
2883
+ "type": "string"
2884
+ }
2885
+ },
2886
+ "required": [
2887
+ "tool name",
2888
+ "description",
2889
+ "method",
2890
+ "URL"
2891
+ ],
2892
+ "additionalProperties": false
2893
+ },
2894
+ "SimilarWebRequests": {
2895
+ "type": "object",
2896
+ "properties": {
2897
+ "this request": {
2898
+ "type": "string",
2899
+ "description": "URL of the equivalent web UI page for this request."
2900
+ },
2901
+ "closest ancestor request": {
2902
+ "type": [
2903
+ "string",
2904
+ "null"
2905
+ ]
2906
+ }
2907
+ },
2908
+ "required": [
2909
+ "this request",
2910
+ "closest ancestor request"
2911
+ ],
2912
+ "additionalProperties": false
2913
+ },
2914
+ "ResponseMetadata": {
2915
+ "type": "object",
2916
+ "properties": {
2917
+ "identifier": {
2918
+ "type": "string",
2919
+ "description": "Unique identifier of this response (timestamp and random suffix)."
2920
+ },
2921
+ "date and time": {
2922
+ "type": "string",
2923
+ "description": "UTC date and time when the response was generated, in ISO 8601 format."
2924
+ }
2925
+ },
2926
+ "required": [
2927
+ "identifier",
2928
+ "date and time"
2929
+ ],
2930
+ "additionalProperties": false
2931
+ }
2932
+ }
2933
+ },
2934
+ "annotations": {
2935
+ "title": "Process my request to retest a page about which a report is available.",
2936
+ "readOnlyHint": false,
2937
+ "destructiveHint": false,
2938
+ "idempotentHint": false,
2939
+ "openWorldHint": false
2940
+ },
2941
+ "execution": {
2942
+ "taskSupport": "forbidden"
2943
+ }
2944
+ },
2945
+ {
2946
+ "name": "requestFeature",
2947
+ "description": "Process my request to add or improve a feature.",
2948
+ "inputSchema": {
2949
+ "type": "object",
2950
+ "properties": {
2951
+ "feature": {
2952
+ "type": "string",
2953
+ "description": "description of requested feature improvement or new feature"
2954
+ }
2955
+ },
2956
+ "required": [
2957
+ "feature"
2958
+ ],
2959
+ "$schema": "http://json-schema.org/draft-07/schema#"
2960
+ },
2961
+ "outputSchema": {
2962
+ "type": "object",
2963
+ "properties": {
2964
+ "tool collection": {
2965
+ "$ref": "#/definitions/ToolsFacts"
2966
+ },
2967
+ "tool name": {
2968
+ "type": "string"
2969
+ },
2970
+ "this request": {
2971
+ "type": "object",
2972
+ "properties": {
2973
+ "description": {
2974
+ "type": "string"
2975
+ },
2976
+ "method": {
2977
+ "type": "string",
2978
+ "const": "POST"
2979
+ },
2980
+ "URL": {
2981
+ "type": "string"
2982
+ },
2983
+ "body": {
2984
+ "type": "object",
2985
+ "properties": {
2986
+ "feature": {
2987
+ "type": "string",
2988
+ "description": "description of requested feature improvement or new feature"
2989
+ }
2990
+ },
2991
+ "required": [
2992
+ "feature"
2993
+ ],
2994
+ "additionalProperties": false
2995
+ },
2996
+ "closest ancestor request": {
2997
+ "anyOf": [
2998
+ {
2999
+ "$ref": "#/definitions/RequestReference"
3000
+ },
3001
+ {
3002
+ "type": "null"
3003
+ }
3004
+ ]
3005
+ }
3006
+ },
3007
+ "required": [
3008
+ "description",
3009
+ "method",
3010
+ "URL",
3011
+ "body",
3012
+ "closest ancestor request"
3013
+ ],
3014
+ "additionalProperties": false
3015
+ },
3016
+ "URLs of similar requests for web users": {
3017
+ "type": "null"
3018
+ },
3019
+ "response metadata": {
3020
+ "$ref": "#/definitions/ResponseMetadata"
3021
+ },
3022
+ "response content": {
3023
+ "type": "object",
3024
+ "properties": {
3025
+ "details about your request": {
3026
+ "anyOf": [
3027
+ {
3028
+ "type": "object",
3029
+ "properties": {
3030
+ "error": {
3031
+ "type": "string"
3032
+ }
3033
+ },
3034
+ "required": [
3035
+ "error"
3036
+ ],
3037
+ "additionalProperties": false
3038
+ },
3039
+ {
3040
+ "type": "object",
3041
+ "properties": {
3042
+ "date and time received": {
3043
+ "type": "string"
3044
+ },
3045
+ "disposition": {
3046
+ "type": "string"
3047
+ }
3048
+ },
3049
+ "required": [
3050
+ "date and time received",
3051
+ "disposition"
3052
+ ],
3053
+ "additionalProperties": false
3054
+ }
3055
+ ]
3056
+ }
3057
+ },
3058
+ "required": [
3059
+ "details about your request"
3060
+ ],
3061
+ "additionalProperties": false
3062
+ }
3063
+ },
3064
+ "required": [
3065
+ "tool collection",
3066
+ "tool name",
3067
+ "this request",
3068
+ "URLs of similar requests for web users",
3069
+ "response metadata",
3070
+ "response content"
3071
+ ],
3072
+ "$schema": "http://json-schema.org/draft-07/schema#",
3073
+ "additionalProperties": false,
3074
+ "definitions": {
3075
+ "ToolsFacts": {
3076
+ "type": "object",
3077
+ "properties": {
3078
+ "name": {
3079
+ "type": "string"
3080
+ },
3081
+ "description": {
3082
+ "type": "object",
3083
+ "properties": {
3084
+ "what Kilotest does": {
3085
+ "type": "string"
3086
+ },
3087
+ "how to retrieve findings": {
3088
+ "type": "object",
3089
+ "properties": {
3090
+ "level 1": {
3091
+ "type": "string"
3092
+ },
3093
+ "level 2": {
3094
+ "type": "string"
3095
+ },
3096
+ "level 3": {
3097
+ "type": "string"
3098
+ },
3099
+ "level 4": {
3100
+ "type": "string"
3101
+ }
3102
+ },
3103
+ "required": [
3104
+ "level 1",
3105
+ "level 2",
3106
+ "level 3",
3107
+ "level 4"
3108
+ ],
3109
+ "additionalProperties": false
3110
+ },
3111
+ "how to generate more findings": {
3112
+ "type": "object",
3113
+ "properties": {
3114
+ "new testing": {
3115
+ "type": "string"
3116
+ },
3117
+ "retesting": {
3118
+ "type": "string"
3119
+ },
3120
+ "latency": {
3121
+ "type": "string"
3122
+ },
3123
+ "confirmation": {
3124
+ "type": "string"
3125
+ }
3126
+ },
3127
+ "required": [
3128
+ "new testing",
3129
+ "retesting",
3130
+ "latency",
3131
+ "confirmation"
3132
+ ],
3133
+ "additionalProperties": false
3134
+ }
3135
+ },
3136
+ "required": [
3137
+ "what Kilotest does",
3138
+ "how to retrieve findings",
3139
+ "how to generate more findings"
3140
+ ],
3141
+ "additionalProperties": false,
3142
+ "description": "Explanation of what Kilotest does and how to use its tools."
3143
+ },
3144
+ "URL": {
3145
+ "type": "string",
3146
+ "description": "URL of the Kilotest MCP server."
3147
+ },
3148
+ "web users can obtain similar functionalities at": {
3149
+ "type": "string"
3150
+ }
3151
+ },
3152
+ "required": [
3153
+ "name",
3154
+ "description",
3155
+ "URL",
3156
+ "web users can obtain similar functionalities at"
3157
+ ],
3158
+ "additionalProperties": false
3159
+ },
3160
+ "RequestReference": {
3161
+ "type": "object",
3162
+ "properties": {
3163
+ "tool name": {
3164
+ "type": "string"
3165
+ },
3166
+ "description": {
3167
+ "type": "string"
3168
+ },
3169
+ "method": {
3170
+ "type": "string",
3171
+ "const": "GET"
3172
+ },
3173
+ "URL": {
3174
+ "type": "string"
3175
+ }
3176
+ },
3177
+ "required": [
3178
+ "tool name",
3179
+ "description",
3180
+ "method",
3181
+ "URL"
3182
+ ],
3183
+ "additionalProperties": false
3184
+ },
3185
+ "ResponseMetadata": {
3186
+ "type": "object",
3187
+ "properties": {
3188
+ "identifier": {
3189
+ "type": "string",
3190
+ "description": "Unique identifier of this response (timestamp and random suffix)."
3191
+ },
3192
+ "date and time": {
3193
+ "type": "string",
3194
+ "description": "UTC date and time when the response was generated, in ISO 8601 format."
3195
+ }
3196
+ },
3197
+ "required": [
3198
+ "identifier",
3199
+ "date and time"
3200
+ ],
3201
+ "additionalProperties": false
3202
+ }
3203
+ }
3204
+ },
3205
+ "annotations": {
3206
+ "title": "Process my request to add or improve a feature.",
3207
+ "readOnlyHint": false,
3208
+ "destructiveHint": false,
3209
+ "idempotentHint": false,
3210
+ "openWorldHint": false
3211
+ },
3212
+ "execution": {
3213
+ "taskSupport": "forbidden"
3214
+ }
3215
+ }
3216
+ ],
3217
+ "version": "2.1.0"
3218
+ }