@kryptosai/mcp-observatory 0.22.0 → 0.24.0

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 (62) hide show
  1. package/COMMERCIAL.md +5 -3
  2. package/PRIVACY.md +5 -2
  3. package/README.md +28 -13
  4. package/dist/src/cli.js +1 -1
  5. package/dist/src/cli.js.map +1 -1
  6. package/dist/src/commands/init-ci.d.ts +3 -0
  7. package/dist/src/commands/init-ci.js +26 -9
  8. package/dist/src/commands/init-ci.js.map +1 -1
  9. package/dist/src/commercial.js +2 -2
  10. package/dist/src/commercial.js.map +1 -1
  11. package/dist/src/reporters/pr-comment.js +6 -2
  12. package/dist/src/reporters/pr-comment.js.map +1 -1
  13. package/dist/src/score.js +1 -1
  14. package/dist/src/score.js.map +1 -1
  15. package/dist/src/validate.js +58 -3
  16. package/dist/src/validate.js.map +1 -1
  17. package/docs/certification-campaign-template.md +10 -10
  18. package/docs/certification-distribution.md +16 -0
  19. package/docs/directory-listing-copy.md +12 -5
  20. package/docs/distribution-launch.md +5 -5
  21. package/docs/enterprise-outreach-playbook.md +2 -2
  22. package/docs/mcp-lock-files.md +63 -0
  23. package/docs/mcp-safety-report-latest.md +16 -7
  24. package/docs/mcp-security-field-guide.md +97 -0
  25. package/docs/mcp-server-safety-index.md +61 -0
  26. package/docs/methodology.md +90 -0
  27. package/docs/metrics-dashboard.md +105 -0
  28. package/docs/paid-pilot-offer.md +74 -0
  29. package/docs/project-case-study.md +77 -43
  30. package/docs/proof.md +42 -12
  31. package/docs/public-post-drafts.md +98 -0
  32. package/docs/publish-readiness.md +6 -4
  33. package/docs/reference-evaluations.md +134 -0
  34. package/docs/safety-index/artifacts/antv-chart-server.json +2765 -0
  35. package/docs/safety-index/artifacts/antv-chart-server.md +156 -0
  36. package/docs/safety-index/artifacts/browsermcp-server.json +416 -0
  37. package/docs/safety-index/artifacts/browsermcp-server.md +163 -0
  38. package/docs/safety-index/artifacts/context7-server.json +286 -0
  39. package/docs/safety-index/artifacts/context7-server.md +163 -0
  40. package/docs/safety-index/artifacts/everything-server.json +482 -0
  41. package/docs/safety-index/artifacts/everything-server.md +163 -0
  42. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +955 -0
  43. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +163 -0
  44. package/docs/safety-index/artifacts/filesystem-server.json +583 -0
  45. package/docs/safety-index/artifacts/filesystem-server.md +156 -0
  46. package/docs/safety-index/artifacts/memory-server.json +469 -0
  47. package/docs/safety-index/artifacts/memory-server.md +156 -0
  48. package/docs/safety-index/artifacts/opentofu-server.json +387 -0
  49. package/docs/safety-index/artifacts/opentofu-server.md +163 -0
  50. package/docs/safety-index/artifacts/playwright-mcp-server.json +919 -0
  51. package/docs/safety-index/artifacts/playwright-mcp-server.md +156 -0
  52. package/docs/safety-index/artifacts/promptopia-server.json +442 -0
  53. package/docs/safety-index/artifacts/promptopia-server.md +156 -0
  54. package/docs/safety-index/artifacts/puppeteer-server.json +377 -0
  55. package/docs/safety-index/artifacts/puppeteer-server.md +163 -0
  56. package/docs/safety-index/artifacts/ref-tools-server.json +262 -0
  57. package/docs/safety-index/artifacts/ref-tools-server.md +156 -0
  58. package/docs/safety-index/artifacts/sequential-thinking-server.json +286 -0
  59. package/docs/safety-index/artifacts/sequential-thinking-server.md +156 -0
  60. package/docs/safety-index/maintainer-note-template.md +25 -0
  61. package/docs/safety-index/targets.json +192 -0
  62. package/package.json +17 -13
@@ -0,0 +1,156 @@
1
+ # MCP Observatory Run Report
2
+
3
+ Generated at 2026-06-24T02:07:23.999Z
4
+
5
+ ## Target and Environment Metadata
6
+
7
+ - Target: `filesystem-server`
8
+ - Adapter: `local-process`
9
+ - Command: `npx -y @modelcontextprotocol/server-filesystem examples/filesystem-fixture`
10
+ - Server: `secure-filesystem-server 0.2.0`
11
+ - Platform: `darwin 25.5.0`
12
+ - Node: `v22.22.1`
13
+
14
+ ## Executive Summary
15
+
16
+ **Health Score: 77/100 (C)**
17
+
18
+ | Dimension | Score | Weight |
19
+ | --- | --- | --- |
20
+ | Protocol Compliance | 100/100 | 30% |
21
+ | Schema Quality | 60/100 | 20% |
22
+ | Security | 60/100 | 20% |
23
+ | Reliability | 67/100 | 20% |
24
+ | Performance | 100/100 | 10% |
25
+
26
+ | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
+ | --- | --- | --- | --- | --- | --- | --- | --- |
28
+ | pass | 7 | 2 | 0 | 3 | 2 | 0 | 0 |
29
+
30
+ ## At a Glance
31
+
32
+ - Safety verdict: **Needs review** — The server is usable, but caveated checks should be reviewed before agents depend on it.
33
+ - Top risks: schema-quality: Found 18 quality finding(s) across 14 item(s): 0 warnings, 18 info.; security: Found 3 security finding(s): 0 high, 3 medium, 0 low.; security-lite: Found 3 security finding(s): 0 high, 3 medium, 0 low.
34
+ - Regression/schema drift: Run `mcp-observatory diff <previous-run.json> <current-run.json>` to classify regressions and schema drift.
35
+ - Failing checks: none
36
+ - Partial or flaky checks: security-lite, schema-quality, security
37
+ - Skipped checks: none
38
+ - Unsupported checks: prompts, resources
39
+ - Suggested next step: Review the caveated checks next: security-lite, schema-quality, security.
40
+ - CI next step: `Add CI: npx @kryptosai/mcp-observatory init-ci --all --command "npx -y <server-package>"`
41
+
42
+ ## Regressions and Recoveries
43
+
44
+ _Use the `diff` command against another run artifact to classify regressions and recoveries over time._
45
+
46
+ ## Full Capability Status Table
47
+
48
+ | Focus | Check | Status | Duration (ms) | Message |
49
+ | --- | --- | --- | --- | --- |
50
+ | healthy | conformance | pass | 5.24 | All 7 conformance checks passed. |
51
+ | healthy | tools | pass | 5.63 | Advertised capability responded with the minimal expected shape (14 items). |
52
+ | review | schema-quality | partial | 2.26 | Found 18 quality finding(s) across 14 item(s): 0 warnings, 18 info. |
53
+ | review | security | partial | 2.14 | Found 3 security finding(s): 0 high, 3 medium, 0 low. |
54
+ | review | security-lite | partial | 0.18 | Found 3 security finding(s): 0 high, 3 medium, 0 low. |
55
+ | confirm intent | prompts | unsupported | 0.00 | Prompts are not advertised by the target. |
56
+ | confirm intent | resources | unsupported | 0.00 | Resources are not advertised by the target. |
57
+
58
+ ## Evidence Snippets
59
+
60
+ ### conformance — pass
61
+
62
+ Summary: All 7 conformance checks passed.
63
+
64
+ - Endpoint: `conformance/check`
65
+ - Advertised: `true`
66
+ - Responded: `true`
67
+ - Minimal shape present: `true`
68
+ - Item count: `7`
69
+ - Identifiers: none
70
+ - Diagnostics: [pass] capabilities-present: Server returned capabilities object., [pass] server-info: Server provided initialization info., [pass] tools-capability-match: tools/list returned 14 tool(s). (+4 more)
71
+
72
+ ### tools — pass
73
+
74
+ Summary: Advertised capability responded with the minimal expected shape (14 items).
75
+
76
+ - Endpoint: `tools/list`
77
+ - Advertised: `true`
78
+ - Responded: `true`
79
+ - Minimal shape present: `true`
80
+ - Item count: `14`
81
+ - Identifiers: read_file, read_text_file, read_media_file, read_multiple_files, write_file (+9 more)
82
+ - Diagnostics: Secure MCP Filesystem Server running on stdio, Client does not support MCP Roots, using allowed directories set from server args: [, '/Users/williamweishuhn/Documents/New project/mcp-observatory/examples/filesystem-fixture' (+1 more)
83
+
84
+ ### schema-quality — partial
85
+
86
+ Summary: Found 18 quality finding(s) across 14 item(s): 0 warnings, 18 info.
87
+
88
+ - Endpoint: `schema-quality/scan`
89
+ - Advertised: `true`
90
+ - Responded: `true`
91
+ - Minimal shape present: `true`
92
+ - Item count: `18`
93
+ - Identifiers: read_file, read_text_file, read_media_file, write_file, edit_file (+7 more)
94
+ - Diagnostics: [info] tool "read_file": Property 'path' missing description, [info] tool "read_text_file": Property 'path' missing description, [info] tool "read_media_file": Property 'path' missing description (+15 more)
95
+
96
+ ### security — partial
97
+
98
+ Summary: Found 3 security finding(s): 0 high, 3 medium, 0 low.
99
+
100
+ - Endpoint: `security/scan`
101
+ - Advertised: `true`
102
+ - Responded: `true`
103
+ - Minimal shape present: `true`
104
+ - Item count: `3`
105
+ - Identifiers: write_file, edit_file, create_directory
106
+ - Diagnostics: [medium] Tool "write_file" accepts filesystem paths and has destructive capabilities., [medium] Tool "edit_file" accepts filesystem paths and has destructive capabilities., [medium] Tool "create_directory" accepts filesystem paths and has destructive capabilities.
107
+
108
+ ### security-lite — partial
109
+
110
+ Summary: Found 3 security finding(s): 0 high, 3 medium, 0 low.
111
+
112
+ - Endpoint: `security/scan-lite`
113
+ - Advertised: `true`
114
+ - Responded: `true`
115
+ - Minimal shape present: `true`
116
+ - Item count: `3`
117
+ - Identifiers: write_file, edit_file, create_directory
118
+ - Diagnostics: [medium] Tool "write_file" accepts filesystem paths and has destructive capabilities., [medium] Tool "edit_file" accepts filesystem paths and has destructive capabilities., [medium] Tool "create_directory" accepts filesystem paths and has destructive capabilities.
119
+
120
+ ### prompts — unsupported
121
+
122
+ Summary: Prompts are not advertised by the target.
123
+
124
+ - Endpoint: `prompts/list`
125
+ - Advertised: `false`
126
+ - Responded: `false`
127
+ - Minimal shape present: `false`
128
+ - Item count: `0`
129
+ - Identifiers: none
130
+ - Diagnostics: none
131
+
132
+ ### resources — unsupported
133
+
134
+ Summary: Resources are not advertised by the target.
135
+
136
+ - Endpoint: `resources/list | resources/templates/list`
137
+ - Advertised: `false`
138
+ - Responded: `false`
139
+ - Minimal shape present: `false`
140
+ - Item count: `0`
141
+ - Identifiers: none
142
+ - Diagnostics: none
143
+
144
+ ## Reproduction Commands
145
+
146
+ ```bash
147
+ npm run cli -- run --target <path-to-target-config.json>
148
+ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
149
+ ```
150
+
151
+ ## Artifact Provenance
152
+
153
+ - Artifact type: `run`
154
+ - Schema version: `1.0.0`
155
+ - Run ID: `run_2026-06-24T020723999Z_5297ea01`
156
+ - Gate: `pass`
@@ -0,0 +1,469 @@
1
+ {
2
+ "artifactType": "run",
3
+ "schemaVersion": "1.0.0",
4
+ "gate": "pass",
5
+ "runId": "run_2026-06-24T020723256Z_467de620",
6
+ "createdAt": "2026-06-24T02:07:23.256Z",
7
+ "toolVersion": "0.24.0",
8
+ "target": {
9
+ "targetId": "memory-server",
10
+ "adapter": "local-process",
11
+ "command": "npx",
12
+ "args": [
13
+ "-y",
14
+ "@modelcontextprotocol/server-memory"
15
+ ],
16
+ "cwd": ".",
17
+ "metadata": {
18
+ "package": "@modelcontextprotocol/server-memory",
19
+ "purpose": "mcp-safety-index",
20
+ "riskClass": "Agent memory mutation",
21
+ "failureClass": "Persistent state tools",
22
+ "whyItMatters": "Memory tools are agent-facing state; their schemas and write behavior should be visible before use."
23
+ },
24
+ "serverName": "memory-server",
25
+ "serverVersion": "0.6.3"
26
+ },
27
+ "environment": {
28
+ "platform": "darwin 25.5.0",
29
+ "nodeVersion": "v22.22.1"
30
+ },
31
+ "summary": {
32
+ "total": 7,
33
+ "pass": 4,
34
+ "fail": 0,
35
+ "partial": 1,
36
+ "unsupported": 2,
37
+ "flaky": 0,
38
+ "skipped": 0,
39
+ "gate": "pass"
40
+ },
41
+ "checks": [
42
+ {
43
+ "id": "tools",
44
+ "capability": "tools",
45
+ "status": "pass",
46
+ "durationMs": 7.443624999999884,
47
+ "message": "Advertised capability responded with the minimal expected shape (9 items).",
48
+ "evidence": [
49
+ {
50
+ "endpoint": "tools/list",
51
+ "advertised": true,
52
+ "responded": true,
53
+ "minimalShapePresent": true,
54
+ "itemCount": 9,
55
+ "identifiers": [
56
+ "create_entities",
57
+ "create_relations",
58
+ "add_observations",
59
+ "delete_entities",
60
+ "delete_observations",
61
+ "delete_relations",
62
+ "read_graph",
63
+ "search_nodes",
64
+ "open_nodes"
65
+ ],
66
+ "diagnostics": [
67
+ "Knowledge Graph MCP Server running on stdio"
68
+ ],
69
+ "schemas": {
70
+ "create_entities": {
71
+ "type": "object",
72
+ "properties": {
73
+ "entities": {
74
+ "type": "array",
75
+ "items": {
76
+ "type": "object",
77
+ "properties": {
78
+ "name": {
79
+ "type": "string",
80
+ "description": "The name of the entity"
81
+ },
82
+ "entityType": {
83
+ "type": "string",
84
+ "description": "The type of the entity"
85
+ },
86
+ "observations": {
87
+ "type": "array",
88
+ "items": {
89
+ "type": "string"
90
+ },
91
+ "description": "An array of observation contents associated with the entity"
92
+ }
93
+ },
94
+ "required": [
95
+ "name",
96
+ "entityType",
97
+ "observations"
98
+ ]
99
+ }
100
+ }
101
+ },
102
+ "required": [
103
+ "entities"
104
+ ],
105
+ "$schema": "http://json-schema.org/draft-07/schema#"
106
+ },
107
+ "create_relations": {
108
+ "type": "object",
109
+ "properties": {
110
+ "relations": {
111
+ "type": "array",
112
+ "items": {
113
+ "type": "object",
114
+ "properties": {
115
+ "from": {
116
+ "type": "string",
117
+ "description": "The name of the entity where the relation starts"
118
+ },
119
+ "to": {
120
+ "type": "string",
121
+ "description": "The name of the entity where the relation ends"
122
+ },
123
+ "relationType": {
124
+ "type": "string",
125
+ "description": "The type of the relation"
126
+ }
127
+ },
128
+ "required": [
129
+ "from",
130
+ "to",
131
+ "relationType"
132
+ ]
133
+ }
134
+ }
135
+ },
136
+ "required": [
137
+ "relations"
138
+ ],
139
+ "$schema": "http://json-schema.org/draft-07/schema#"
140
+ },
141
+ "add_observations": {
142
+ "type": "object",
143
+ "properties": {
144
+ "observations": {
145
+ "type": "array",
146
+ "items": {
147
+ "type": "object",
148
+ "properties": {
149
+ "entityName": {
150
+ "type": "string",
151
+ "description": "The name of the entity to add the observations to"
152
+ },
153
+ "contents": {
154
+ "type": "array",
155
+ "items": {
156
+ "type": "string"
157
+ },
158
+ "description": "An array of observation contents to add"
159
+ }
160
+ },
161
+ "required": [
162
+ "entityName",
163
+ "contents"
164
+ ]
165
+ }
166
+ }
167
+ },
168
+ "required": [
169
+ "observations"
170
+ ],
171
+ "$schema": "http://json-schema.org/draft-07/schema#"
172
+ },
173
+ "delete_entities": {
174
+ "type": "object",
175
+ "properties": {
176
+ "entityNames": {
177
+ "type": "array",
178
+ "items": {
179
+ "type": "string"
180
+ },
181
+ "description": "An array of entity names to delete"
182
+ }
183
+ },
184
+ "required": [
185
+ "entityNames"
186
+ ],
187
+ "$schema": "http://json-schema.org/draft-07/schema#"
188
+ },
189
+ "delete_observations": {
190
+ "type": "object",
191
+ "properties": {
192
+ "deletions": {
193
+ "type": "array",
194
+ "items": {
195
+ "type": "object",
196
+ "properties": {
197
+ "entityName": {
198
+ "type": "string",
199
+ "description": "The name of the entity containing the observations"
200
+ },
201
+ "observations": {
202
+ "type": "array",
203
+ "items": {
204
+ "type": "string"
205
+ },
206
+ "description": "An array of observations to delete"
207
+ }
208
+ },
209
+ "required": [
210
+ "entityName",
211
+ "observations"
212
+ ]
213
+ }
214
+ }
215
+ },
216
+ "required": [
217
+ "deletions"
218
+ ],
219
+ "$schema": "http://json-schema.org/draft-07/schema#"
220
+ },
221
+ "delete_relations": {
222
+ "type": "object",
223
+ "properties": {
224
+ "relations": {
225
+ "type": "array",
226
+ "items": {
227
+ "type": "object",
228
+ "properties": {
229
+ "from": {
230
+ "type": "string",
231
+ "description": "The name of the entity where the relation starts"
232
+ },
233
+ "to": {
234
+ "type": "string",
235
+ "description": "The name of the entity where the relation ends"
236
+ },
237
+ "relationType": {
238
+ "type": "string",
239
+ "description": "The type of the relation"
240
+ }
241
+ },
242
+ "required": [
243
+ "from",
244
+ "to",
245
+ "relationType"
246
+ ]
247
+ },
248
+ "description": "An array of relations to delete"
249
+ }
250
+ },
251
+ "required": [
252
+ "relations"
253
+ ],
254
+ "$schema": "http://json-schema.org/draft-07/schema#"
255
+ },
256
+ "read_graph": {
257
+ "type": "object",
258
+ "properties": {},
259
+ "$schema": "http://json-schema.org/draft-07/schema#"
260
+ },
261
+ "search_nodes": {
262
+ "type": "object",
263
+ "properties": {
264
+ "query": {
265
+ "type": "string",
266
+ "description": "The search query to match against entity names, types, and observation content"
267
+ }
268
+ },
269
+ "required": [
270
+ "query"
271
+ ],
272
+ "$schema": "http://json-schema.org/draft-07/schema#"
273
+ },
274
+ "open_nodes": {
275
+ "type": "object",
276
+ "properties": {
277
+ "names": {
278
+ "type": "array",
279
+ "items": {
280
+ "type": "string"
281
+ },
282
+ "description": "An array of entity names to retrieve"
283
+ }
284
+ },
285
+ "required": [
286
+ "names"
287
+ ],
288
+ "$schema": "http://json-schema.org/draft-07/schema#"
289
+ }
290
+ }
291
+ }
292
+ ]
293
+ },
294
+ {
295
+ "id": "prompts",
296
+ "capability": "prompts",
297
+ "status": "unsupported",
298
+ "durationMs": 0.0019579999998313724,
299
+ "message": "Prompts are not advertised by the target.",
300
+ "evidence": [
301
+ {
302
+ "endpoint": "prompts/list",
303
+ "advertised": false,
304
+ "responded": false,
305
+ "minimalShapePresent": false,
306
+ "diagnostics": []
307
+ }
308
+ ]
309
+ },
310
+ {
311
+ "id": "resources",
312
+ "capability": "resources",
313
+ "status": "unsupported",
314
+ "durationMs": 0.001374999999825377,
315
+ "message": "Resources are not advertised by the target.",
316
+ "evidence": [
317
+ {
318
+ "endpoint": "resources/list | resources/templates/list",
319
+ "advertised": false,
320
+ "responded": false,
321
+ "minimalShapePresent": false,
322
+ "diagnostics": []
323
+ }
324
+ ]
325
+ },
326
+ {
327
+ "id": "security-lite",
328
+ "capability": "security-lite",
329
+ "status": "pass",
330
+ "durationMs": 0.03662500000018554,
331
+ "message": "No security issues detected (lightweight scan).",
332
+ "evidence": [
333
+ {
334
+ "endpoint": "security/scan-lite",
335
+ "advertised": true,
336
+ "responded": true,
337
+ "minimalShapePresent": true,
338
+ "itemCount": 0
339
+ }
340
+ ]
341
+ },
342
+ {
343
+ "id": "conformance",
344
+ "capability": "conformance",
345
+ "status": "pass",
346
+ "durationMs": 9.77066700000023,
347
+ "message": "All 7 conformance checks passed.",
348
+ "evidence": [
349
+ {
350
+ "endpoint": "conformance/check",
351
+ "advertised": true,
352
+ "responded": true,
353
+ "minimalShapePresent": true,
354
+ "itemCount": 7,
355
+ "identifiers": [],
356
+ "diagnostics": [
357
+ "[pass] capabilities-present: Server returned capabilities object.",
358
+ "[pass] server-info: Server provided initialization info.",
359
+ "[pass] tools-capability-match: tools/list returned 9 tool(s).",
360
+ "[pass] prompts-capability-match: Prompts not advertised — endpoint check skipped.",
361
+ "[pass] resources-capability-match: Resources not advertised — endpoint check skipped.",
362
+ "[pass] tool-response-content: Tool \"read_graph\" response has valid content array.",
363
+ "[pass] error-handling: Server returned proper error code -32601 for unknown method."
364
+ ]
365
+ }
366
+ ]
367
+ },
368
+ {
369
+ "id": "schema-quality",
370
+ "capability": "schema-quality",
371
+ "status": "partial",
372
+ "durationMs": 4.149374999999964,
373
+ "message": "Found 4 quality finding(s) across 9 item(s): 0 warnings, 4 info.",
374
+ "evidence": [
375
+ {
376
+ "endpoint": "schema-quality/scan",
377
+ "advertised": true,
378
+ "responded": true,
379
+ "minimalShapePresent": true,
380
+ "itemCount": 4,
381
+ "identifiers": [
382
+ "create_entities",
383
+ "create_relations",
384
+ "add_observations",
385
+ "delete_observations"
386
+ ],
387
+ "diagnostics": [
388
+ "[info] tool \"create_entities\": Property 'entities' missing description",
389
+ "[info] tool \"create_relations\": Property 'relations' missing description",
390
+ "[info] tool \"add_observations\": Property 'observations' missing description",
391
+ "[info] tool \"delete_observations\": Property 'deletions' missing description"
392
+ ]
393
+ }
394
+ ]
395
+ },
396
+ {
397
+ "id": "security",
398
+ "capability": "security",
399
+ "status": "pass",
400
+ "durationMs": 4.098707999999988,
401
+ "message": "No security issues detected.",
402
+ "evidence": [
403
+ {
404
+ "endpoint": "security/scan",
405
+ "advertised": true,
406
+ "responded": true,
407
+ "minimalShapePresent": true,
408
+ "itemCount": 0
409
+ }
410
+ ]
411
+ }
412
+ ],
413
+ "healthScore": {
414
+ "overall": 85,
415
+ "grade": "B",
416
+ "dimensions": [
417
+ {
418
+ "name": "Protocol Compliance",
419
+ "weight": 0.3,
420
+ "score": 100,
421
+ "details": [
422
+ "conformance: pass (100/100)"
423
+ ]
424
+ },
425
+ {
426
+ "name": "Schema Quality",
427
+ "weight": 0.2,
428
+ "score": 60,
429
+ "details": [
430
+ "schema-quality: partial (60/100)"
431
+ ]
432
+ },
433
+ {
434
+ "name": "Security",
435
+ "weight": 0.2,
436
+ "score": 100,
437
+ "details": [
438
+ "security-lite: pass (100/100)",
439
+ "security: pass (100/100)"
440
+ ]
441
+ },
442
+ {
443
+ "name": "Reliability",
444
+ "weight": 0.2,
445
+ "score": 67,
446
+ "details": [
447
+ "tools: pass (100/100)",
448
+ "prompts: unsupported (50/100)",
449
+ "resources: unsupported (50/100)"
450
+ ]
451
+ },
452
+ {
453
+ "name": "Performance",
454
+ "weight": 0.1,
455
+ "score": 100,
456
+ "details": [
457
+ "Connect: 703ms",
458
+ "p95 latency: 7ms (3 operations)"
459
+ ]
460
+ }
461
+ ]
462
+ },
463
+ "performanceMetrics": {
464
+ "connectMs": 703.391959,
465
+ "toolsListMs": 7.443624999999884,
466
+ "promptsListMs": 0.0019579999998313724,
467
+ "resourcesListMs": 0.001374999999825377
468
+ }
469
+ }