@jrpool/kilotest 33.0.1 → 33.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/AI-TOOL.md +45 -154
  2. package/llms-full.txt +33 -6
  3. package/package.json +1 -1
package/AI-TOOL.md CHANGED
@@ -45,8 +45,11 @@ The external actions that have been taken to support the use of Kilotest as an A
45
45
  - A [request](https://rapidapi.com/studio/api_91f2ce07-2572-48bd-a34d-ff01ed6cd039/publish/general) to add Kilotest to the Rapid API Hub.
46
46
  - An [issue](https://github.com/APIs-guru/openapi-directory/issues/2677) to add Kilotest to `openapi-directory`.
47
47
  - A [pull request](https://github.com/w3c/wai-evaluation-tools-list/pull/1153) to add Kilotest to the WAI evaluation tools list.
48
- - [Configuration of Claude Desktop](https://github.com/ivo-toby/mcp-openapi-server#option-1-using-with-claude-desktop-stdio-transport) on the local development host to connect Claude Desktop models to Kilotest tools.
49
48
  - Deployment of an MCP server in HTTP mode on the Kilotest service host.
49
+ - Configuration of Claude Desktop on the local development host and the `claude.ai` web application to connect Claude Desktop models to the Kilotest MCP server. The configuration was performed in the UI of each platform with the addition of Kilotest as a _connector_. The user used the `Customize/Connectors/Add connector/Add custom connector` interface, providing these data before activating the `Add` button:
50
+
51
+ - Name: Kilotest
52
+ - Remote MCP server URL: `https://kilotest.com/mcp`
50
53
 
51
54
  ## Use cases
52
55
 
@@ -81,190 +84,78 @@ Another benefit is that subsequent increments can be defined incrementally rathe
81
84
 
82
85
  In the first increment, the objective was to make Anthropic Claude models use Kilotest to help them answer questions from developers using the Claude Desktop application for use case 3, where the code in question is already deployed as a public web page.
83
86
 
84
- As mentioned above, Claude Desktop was installed on the local development host and then configured for Kilotest. That configuration consisted of the addition of a property to the Claude Desktop configuration file, located at `~/Library/Application Support/Claude/claude_desktop_config.json`. The added property is:
85
-
86
- ```json
87
- "mcpServers": {
88
- "kilotest": {
89
- "command": "npx",
90
- "args": [
91
- "-y",
92
- "@ivotoby/openapi-mcp-server",
93
- "--disable-abbreviation",
94
- "true"
95
- ],
96
- "env": {
97
- "API_BASE_URL": "https://kilotest.com",
98
- "OPENAPI_SPEC_PATH": "https://kilotest.com/openapi.yaml"
99
- }
100
- }
101
- },
102
- ```
103
-
104
- That configuration notifies models that Kilotest is available as an MCP server, but does not explain what tools it provides, what they are useful for, or how to use them.
87
+ A locally installed MCP server, `@ivotoby/openapi-mcp-server`, was used. It turned out to be incompatible with Claude Desktop, so even though connections to Kilotest were made and calls to its tools were submitted the responses did not arrive.
105
88
 
106
- Experimentation revealed that Claude Sonnet 4.6 with Medium effort chose to use Kilotest when answering questions about the accessibility and usability of particular public web pages. Low effort did not result in the use of Kilotest. The less capable Claude Haiku model did not use Kilotest.
89
+ The model behavior motivated an architectural change in the MCP server and improvements in the naming and description of the Kilotest tools before the next increment.
107
90
 
108
- ### Increment 2
91
+ #### Increment 2
109
92
 
110
- Increment 2 somewhat lightens the burden on the user by shifting the user environment from an installed application to a web browser, and by providing an easier interface for users to tell the platform about Kilotest. The platform is the `claude.ai` web application instead of Claude Desktop. Instead of editing a JSON file, the user tells the platform about Kilotest with a setting.
93
+ Increment 2 repeated the exercise of increment 1 with the `claude.ai` web application instead of Claude Desktop, and with the improvements indicated by increment 1 made.
111
94
 
112
- The investigation began with the addition of Kilotest as a _connector_ to the `claude.ai` web application. The user used the `Customize/Connectors/Add connector/Add custom connector` interface, providing these data before activating the `Add` button:
95
+ With Kilotest added as a custom connector, the user asked the platform, “I want to know whether the home page of the nonprofit organization named ‘Open Secrets’ has quality defects, such as with accissibility [_sic_] and usability.”
113
96
 
114
- - Name: Kilotest
115
- - Remote MCP server URL: `https://kilotest.com/mcp`
97
+ It was discovered that Claude Haiku 4.5 with Extended capability used Kilotest tools, but Claude Haiku 4.5 without Extended capability did not.
116
98
 
117
- When the connector configuration with tools appeared, the user changed the all tool permissions from `Needs approval` to `Always allow`.
99
+ When Kilotest was used, it was used appropriately for the task, but the planning was suboptimal, because the model initially stated an intention to recommend the web page for testing instead of first checking for an existing available report on it.
118
100
 
119
- Then the user asked the platform, “I want to know whether the home page of the nonprofit organization named ‘Open Secrets’ has quality defects, such as with accissibility [_sic_] and usability.”
101
+ The output to the user was a mixture of Kilotest results with knowledge and judgments of the model. Kilotest results were presented with some selective pruning, interpretation, and advice on what to do.
120
102
 
121
- An earlier trial had revealed that the least powerful model, Claude Haiku 4.5 without the Extended capability, did not consider using any tools.
103
+ The trial in increment 2 suggested some opportunities for further improvements:
122
104
 
123
- For this trial, then, the user selected Claude Haiku 4.5 with Extended capability.
105
+ - Clearer instructions about the sequencing of tool calls
106
+ - Addition of instructions to attribute the interpretive additions by the model to the model or its other sources rather than to Kilotest.
124
107
 
125
- The record of thinking began with:
108
+ #### Increment 3
126
109
 
127
- ```text
128
- The user is asking about the quality of the home page for a nonprofit organization called "Open Secrets," specifically regarding accessibility and usability defects.
129
- This is asking for a quality assessment of a web page. Looking at my available tools, I have access to Kilotest, which has tools for analyzing web page quality:
130
-
131
- Kilotest:describeQualityOfOneWebPage — Returns data from a specified Kilotest report about issues of front-end quality
132
- Kilotest:recommendQualityTestingOfOneWebPage — Recommends a web page for Kilotest to test for front-end quality
133
- Kilotest:summarizeQualityOfAllTestedWebPages — Returns summary data from every available Kilotest report
110
+ After the above-described improvements were made, a similar exercise, with the home page of a company named “CMT Services”, was performed again in Claude Desktop. In this case Claude Haiku 4.5 succeeded in recognizing the relevance of Kilotest and used its tools, though imperfectly. Instead of using Kilotest to check for an existing report on the page, the model searched for it in a cached file with:
134
111
 
135
- I should first use the recommendQualityTestingOfOneWebPage tool to see if I can get Kilotest to test the Open Secrets home page for quality issues including accessibility and usability.
136
- First, I need to find the correct URL for Open Secrets. Open Secrets is a well-known nonprofit that tracks money in politics. Their homepage should be at opensecrets.org. Let me use the Kilotest tool to request that they test this page for quality issues.
112
+ ```bash
113
+ Bash
114
+ jq '.[] | .tested_web_page.description' /Users/pool/.claude/projects/-Users-pool-Documents/18b3821c-b60d-4f63-bf3f-542830ed3bc4/tool-results/toolu_012qMKW66d88vWjp8JKj5qNn.json 2>/dev/null | grep -i "cmt" || echo "CMT Services not found in tested pages"
137
115
  ```
138
116
 
139
- As shown, the discovery was immediate, but the utilization strategy was confused. The sequencing instructions failed to shape the model’s utilization planning at first.
140
-
141
- The model then output:
142
-
143
- `I can help you assess the quality of the Open Secrets home page using Kilotest, which specializes in finding accessibility and usability defects. Let me recommend their home page for testing.`
144
-
145
- After contemplating this errant plan, the model then corrected its thinking and resumed with `Good! I now have access to the Kilotest tools. Let me first check if there's already a report on the Open Secrets home page by calling summarizeQualityOfAllTestedWebPages.`.
146
-
147
- The thinking record continues with the Kilotest logo and `Summarize quality of all tested web pages`, the `annotations.title` property of the appropriate tool, followed by the complete output of that tool, and then:
117
+ Claude Haiku then incorrectly concluded: `CMT Services hasn't been tested yet. Let me search for their website so I can recommend it for quality testing.` The model asked the user for the URL and said:
148
118
 
149
119
  ```text
150
- Great! I found the Open Secrets website has already been tested by Kilotest. Here's the information:
151
- Identifier: 260519T1437-79l
152
- Creation date: 2026-05-19T14:37:00.000Z (33 days ago from June 21)
153
- URL: https://www.opensecrets.org/
154
- Number of issues reported: 80
155
- Number of HTML elements reported as exhibiting issues: 1631
156
- Rule engines that reported issues: 9 (Accessibility Checker, Alfa, ASLint, Axe, Editoria11y, Html Checker API, HTML CodeSniffer, QualWeb, Testaro)
157
-
158
- Now I should call the describeQualityOfOneWebPage tool to get the detailed information about these quality defects.
159
- ```
160
-
161
- The model then output: `Great news! I found that Open Secrets' home page has already been tested by Kilotest. Let me get the detailed quality report for you.`
162
-
163
- The thinking record continued with `Synthesized accessibility audit findings to assess website quality defects`, the Kilotest logo, the title of the next tool (`Describe the quality of one web page`), and the complete result of that tool call.
120
+ Once you provide the URL, I'll:
164
121
 
165
- The final segment of the thinking record contained:
166
-
167
- ```text
168
- Perfect! Now I have a detailed report about the Open Secrets home page. Let me synthesize this information to provide a comprehensive answer to the user. The report shows:
169
-
170
- Total issues: 80
171
- 18 highest priority issues
172
- 23 high priority issues
173
- 10 low priority issues
174
- 29 lowest priority issues
175
- 1,631 HTML elements with issues
176
-
177
- Key defects include:
178
-
179
- Images without text (12 elements) - major accessibility issue
180
- Links without names (4 elements) - critical for accessibility
181
- Duplicate IDs (689 elements!) - this is a huge problem
182
- Elements that are focusable but hidden (14 elements)
183
- Buttons without text (8 elements)
184
- Poor contrast (60 elements)
185
- Visible labels not in accessible names (39 elements)
186
- Invalid roles (28 elements)
187
- Various usability issues like poor focus indication, small targets, etc.
188
-
189
- The most critical issues are those marked as "highest priority" which relate to WCAG 2.2 success criteria.
122
+ Recommend their home page for quality testing with Kilotest
123
+ Retrieve the quality report showing accessibility and usability defects
124
+ Provide you with a detailed analysis of any issues found
190
125
  ```
191
126
 
192
- This record shows the model adding its own knowledge and judgment to the Kilotest results.
193
-
194
- The final output to the user was:
195
-
196
- ```markdown
197
- ## Open Secrets Home Page Quality Assessment
198
-
199
- Based on Kilotest's comprehensive testing of **https://www.opensecrets.org/**, the home page has **significant accessibility and usability defects**. Here's what was found:
200
-
201
- ### Overall Quality Summary
127
+ The user provided the URL, and Claude Haiku then submitted a recommendation to Kilotest to test the page. The submission was successful and, as expected, yielded an error message: `{"error":"A report about the page is already available"}`.
202
128
 
203
- - **Total Issues Reported:** 80
204
- - **HTML Elements with Issues:** 1,631
205
- - **Priority Breakdown:**
206
- - 18 highest priority issues
207
- - 23 high priority issues
208
- - 10 low priority issues
209
- - 29 lowest priority issues
129
+ The model drew the correct conclusion from this and (contradicting itself) announced: `Great news—there's already a quality report for CMT Services! Let me retrieve it for you.` The model did so and gave the user an appropriate rendition of the results, modulo attribution. The results were introduced with `The Kilotest analysis found 51 quality defects on the CMT Services home page, affecting 163 HTML elements. Here's a breakdown:`. Some mildly interpretive additions, such as calling “high-priority” issues “critical”, were made without attribution, making it easy for a user to infer that they were made by Kilotest tools rather than the model.
210
130
 
211
- ### Critical Accessibility Issues (Highest Priority)
131
+ The same trial was repeated, with a different website, using Claude Sonnet 4.6 with Low effort. This model immediately checked for and found an already available report and used it in the production of output to the user. The output was somewhat less interpretive than that of Claude Haiku.
212
132
 
213
- 1. **Missing Image Text** (12 elements)
214
- - Users cannot understand what images depict
215
- - Violates WCAG 2.2 criterion 1.1.1
133
+ Increment 3 showed that, after the naming, instructions, and connector configuration were improved, the relatively inexpensive Claude models use Kilotest where appropriate.
216
134
 
217
- 2. **Links Without Names** (4 elements)
218
- - Users can't tell where links lead
219
- - Impacts navigation understanding
135
+ The misbehavior of Claude Haiku suggested that further improvements in the instructions may improve the utilization of Kilotest, namely:
220
136
 
221
- 3. **Duplicate HTML IDs** (689 elements!) ⚠️ **Most Severe**
222
- - This is the most widespread issue
223
- - Users may be pointed to wrong page sections
224
- - Violates WCAG 2.2 criterion 4.1.1
137
+ - a warning not to use cached lists of available reports
138
+ - stronger advice to avoid implicitly attributing interpretations, judgments, and advice to Kilotest.
225
139
 
226
- 4. **Focusable Elements That Are Hidden** (14 elements)
227
- - Keyboard-only users cannot navigate properly
228
- - Disrupts keyboard accessibility
140
+ #### Increment 4
229
141
 
230
- 5. **Buttons Without Names** (8 elements)
231
- - Users cannot understand button purposes
142
+ The first trial in which the user asked about a page **without** an available report repeated the conditions of Increment 3, except for the web page in question and the model. The model here was Claude Haiku in Extended mode, an option available with `claude.ai` but not Claude Desktop.
232
143
 
233
- 6. **Form Controls Without Labels** (12 elements)
234
- - Users can't understand how to use forms
144
+ The user asked: “I want to know whether the home page of Milgard Windows and Doors, at `www.milgard.com`, has quality defects, such as with accessibility and usability.”
235
145
 
236
- 7. **Poor Text Contrast** (60 elements)
237
- - Content is difficult to read
238
- - Impacts users with low vision
146
+ The model immediately:
239
147
 
240
- ### Significant Usability Issues (High Priority)
148
+ - found Kilotest
149
+ - checked for an available report about the page
150
+ - found no report
151
+ - submitted a recommendation to test the page
241
152
 
242
- - **Visible Labels Not in Accessible Names** (39 elements) — users struggle to find controls
243
- - **Invalid Roles** (28 elements) — assistive technologies misdescribe content
244
- - **Missing Submit Buttons** on forms (6 elements)
245
- - **Nested Controls** (17 elements) — users cannot reliably click intended items
246
-
247
- ### Additional Readability Issues
248
-
249
- - **Poor Focus Indication** (63 elements) — keyboard users can't see where they are
250
- - **Small/Close Targets** (7 elements) — difficult to click on mobile or for users with motor disabilities
251
- - **Low Line Height** (269 elements) — text is cramped and hard to read
252
- - **Small Font Size** (2 elements)
253
- - **Absolute Box Sizes** (121 elements) — prevents text enlargement for readability
254
-
255
- ### Test Coverage
256
-
257
- Nine different accessibility testing engines detected issues, including Accessibility Checker (IBM), Axe (Deque), WAVE (Utah State University), and others. The WAVE tool timed out at 25 seconds, suggesting possible performance issues.
258
-
259
- ### Recommendations
260
- The **duplicate ID problem** (689 instances) should be addressed first, as it's both widespread and critical to document structure. After that, focus on naming images, links, and form controls, which are foundational accessibility requirements.
261
- ```
153
+ The recommendation was successfully received by the Kilotest service.
262
154
 
263
- The model had decided which data from Kilotest to provide with its own elaborations and interpretations, which to provide as-is, and which to summarize.
155
+ During the workflow the model kept the user informed. After the last step, the model summarized the type of report that the user could expect and advised the user to check directly with the Kilotest UI at `https://kilotest.com/targets` in 24 to 48 hours for the results.
264
156
 
265
- The results of this increment can be considered a success, including the fact that the model interpreted the misspelled word "accissibility" as "accessibility".
157
+ The behavior of Claude Haiku in Extended mode was nearly perfect. The naming of the page in the recommendation was “Milgard Windows and Doors home page”, whereas “Milgard Windows and Doors” would have followed the existing naming pattern. This deviation suggests adding a specific instruction to name home pages without anything more than the name of the organization.
266
158
 
267
- However, some further improvements merit consideration:
159
+ The most notable fact was that Claude Haiku converted a long workflow to a short one by ending the output with a recommendation to the user to get the test results by self-service. The instructions to models presumed that the user and the model would jointly decide to maintain their relationship until the testing is completed and the model would then interpret the results for the user. Instead, Claude Haiku had enough imagination to suggest a viable workflow not even hinted at by the instructions.
268
160
 
269
- - The instructions can be further improved to more reliably deter models from planning to recommend testing a page before learning whether a report about the page is already available. They sufficed in this trial to avoid an unnecessary tool call, but, given the stochastic behavior of models, the initially deviant thinking suggests that might not always be the case.
270
- - The possibility of incorrect attribution to Kilotest of the interpretive content provided by the model can be mitigated with disclaimers, such as “Kilotest makes no recommendations about methods or sequences of issue remediation”, or with advice to models to describe their interpretations as theirs.
161
+ This result suggested that the instructions should be revised to describe, as a valid option, a short workflow ending with a recommendation to the user to get the test results by self-service after the model submits a testing recommendation.
package/llms-full.txt CHANGED
@@ -29,7 +29,11 @@ The tool that tests web pages for front-end quality has attributes that no other
29
29
 
30
30
  The tools that report test results extract from reports statistics and details at various levels of granularity, as required by an agent to fulfill particular requests.
31
31
 
32
- You can infer from this description that the Kilotest tools are (currently) best suited for help in answering comprehensive audit-type requests (e.g., “How can I improve this page?”) and, in the case of web pages for which reports are already available, more specific questions (e.g., “Is the heading structure of this page OK?”), but, if no report is available for a page, recommending that Kilotest test the page is overkill when the purpose is to answer a specific one-issue question.
32
+ ## What Kilotest does **not** do for language models
33
+
34
+ The Kilotest tools are (currently) overkill for help in answering specific questions (e.g., “Is the heading structure of this page OK?”) when no report on the page is available, because in such cases you must wait up to a day before testing is completed.
35
+
36
+ Kilotest tools are thin on advice. They give you mostly facts and educated guesses about facts. The reporting uses rough heuristics to classify quality issues into 4 “priorities”, and some rule engines in the Kilotest ensemble include remediation advice when diagnosing rule violations, but Kilotest reporting does not otherwise advise you about the methods, sequences, urgency, or side effects of defect remediation.
33
37
 
34
38
  ## How Kilotest integrates methods
35
39
 
@@ -87,25 +91,48 @@ Kilotest is implementing a richer suite of capabilities optimized for language m
87
91
  - purpose: recommend quality testing of one web page about which no report is available
88
92
  - path: `/api/testRecForm`
89
93
  - payload properties
94
+
90
95
  - `what`: description of the page to be tested
91
96
  - `url`: URL of the page to be tested
92
97
  - `why`: reason for testing the page
93
- - how to verify disposition of the recommendation: submit a `summarizeQualityOfAllTestedWebPages` request and inspect the response to determine whether a report on the page is now available
94
- - expected wait until a testing recommendation has been fulfilled: 1 day
98
+
99
+ - possible responses:
100
+
101
+ - acknowledgment of a successful recommendation
102
+ - error message stating that a report about the recommended page is already available
103
+ - error message stating that the recommendation is invalid
104
+
105
+ - possible Kilotest manager actions after a recommendation:
106
+
107
+ - approval followed by the recommended testing
108
+ - rejection
109
+
110
+ - possible next step if your recommendation succeeds:
111
+
112
+ - You end the workflow by advising the user to check in approximately 1 day for the test results on the Kilotest website, starting at `https://kilotest.com/targets.html`, and drill down as desired for more detailed results. You offer to help interpret the results if needed.
113
+ - You continue the workflow by advising the user to resubmit the same request to you in approximately 1 day.
95
114
 
96
115
  An [OpenAPI specification for Kilotest](https://kilotest.com/openapi.yaml) is available.
97
116
 
98
- ### More information
117
+ ## How to report results to users
118
+
119
+ When you use Kilotest tools, you are free to perform any appropriate interpretation and condensation of the results for presentation to users. However, users expect the sources of facts and interpretations to be truthfully represented. Do not meld facts from Kilotest tools with interpretations of your own with an implied attribution of both to Kilotest.
120
+
121
+ An example of a **poor** attribution is “Here are the results from Kilotest: …. The page is at risk of …. Among all the issues, … are critical and require immediate attention.”
122
+
123
+ An example of a **good** attribution is “Kilotest reported these issues: …. On the basis of these results, I conclude that there is a serious risk of …, and, if you are responsible for maintaining the page, I recommend ….”
124
+
125
+ ## More information
99
126
 
100
127
  More information about Kilotest features and internals:
101
128
 
102
- #### For language models and AI platforms
129
+ ### For language models and AI platforms
103
130
 
104
131
  - [AI-TOOL file](https://github.com/jrpool/kilotest/blob/main/AI-TOOL.md)
105
132
  - [OpenAPI specification for Kilotest](https://kilotest.com/openapi.yaml)
106
133
  - [Tool caller for testing](https://github.com/jrpool/kilotest/blob/main/researchAgent.js)
107
134
 
108
- #### General
135
+ ### General
109
136
 
110
137
  - [Introduction to Kilotest](https://kilotest.com/)
111
138
  - [Tutorial, “Accessibility testing strategies”](https://kilotest.com/tutorial.html)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jrpool/kilotest",
3
- "version": "33.0.1",
3
+ "version": "33.0.2",
4
4
  "description": "An ensemble testing service with a focus on accessibility",
5
5
  "main": "index.js",
6
6
  "scripts": {