@kryptosai/mcp-observatory 0.27.0 → 1.28.1

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 (160) hide show
  1. package/COMMERCIAL.md +28 -2
  2. package/CONTRIBUTORS.md +39 -0
  3. package/README.md +114 -22
  4. package/dist/src/action-receipt.d.ts +20 -0
  5. package/dist/src/action-receipt.js +85 -0
  6. package/dist/src/action-receipt.js.map +1 -0
  7. package/dist/src/adapters/http.js +1 -5
  8. package/dist/src/adapters/http.js.map +1 -1
  9. package/dist/src/audit.d.ts +64 -0
  10. package/dist/src/audit.js +359 -0
  11. package/dist/src/audit.js.map +1 -0
  12. package/dist/src/cassette.js +3 -2
  13. package/dist/src/cassette.js.map +1 -1
  14. package/dist/src/checks/attack-sim.d.ts +20 -0
  15. package/dist/src/checks/attack-sim.js +316 -0
  16. package/dist/src/checks/attack-sim.js.map +1 -0
  17. package/dist/src/ci-issue.js +4 -3
  18. package/dist/src/ci-issue.js.map +1 -1
  19. package/dist/src/cli.js +25 -4
  20. package/dist/src/cli.js.map +1 -1
  21. package/dist/src/commands/attack-sim.d.ts +2 -0
  22. package/dist/src/commands/attack-sim.js +220 -0
  23. package/dist/src/commands/attack-sim.js.map +1 -0
  24. package/dist/src/commands/audit.d.ts +2 -0
  25. package/dist/src/commands/audit.js +132 -0
  26. package/dist/src/commands/audit.js.map +1 -0
  27. package/dist/src/commands/init-ci.d.ts +3 -0
  28. package/dist/src/commands/init-ci.js +78 -13
  29. package/dist/src/commands/init-ci.js.map +1 -1
  30. package/dist/src/commands/legacy.js +8 -1
  31. package/dist/src/commands/legacy.js.map +1 -1
  32. package/dist/src/commands/receipt.d.ts +2 -0
  33. package/dist/src/commands/receipt.js +113 -0
  34. package/dist/src/commands/receipt.js.map +1 -0
  35. package/dist/src/commands/scan.js +30 -6
  36. package/dist/src/commands/scan.js.map +1 -1
  37. package/dist/src/commands/score.js +63 -0
  38. package/dist/src/commands/score.js.map +1 -1
  39. package/dist/src/commands/serve.js +9 -1
  40. package/dist/src/commands/serve.js.map +1 -1
  41. package/dist/src/commands/setup-ci-conversion.d.ts +3 -1
  42. package/dist/src/commands/setup-ci-conversion.js +23 -8
  43. package/dist/src/commands/setup-ci-conversion.js.map +1 -1
  44. package/dist/src/commands/telemetry.js +20 -14
  45. package/dist/src/commands/telemetry.js.map +1 -1
  46. package/dist/src/commands/test.js +31 -2
  47. package/dist/src/commands/test.js.map +1 -1
  48. package/dist/src/findings.d.ts +1 -0
  49. package/dist/src/findings.js +42 -1
  50. package/dist/src/findings.js.map +1 -1
  51. package/dist/src/history.js +3 -2
  52. package/dist/src/history.js.map +1 -1
  53. package/dist/src/index.d.ts +4 -0
  54. package/dist/src/index.js +4 -0
  55. package/dist/src/index.js.map +1 -1
  56. package/dist/src/integrations/smithery.js +5 -1
  57. package/dist/src/integrations/smithery.js.map +1 -1
  58. package/dist/src/receipt.d.ts +100 -0
  59. package/dist/src/receipt.js +375 -0
  60. package/dist/src/receipt.js.map +1 -0
  61. package/dist/src/reporters/attack-sim.d.ts +2 -0
  62. package/dist/src/reporters/attack-sim.js +89 -0
  63. package/dist/src/reporters/attack-sim.js.map +1 -0
  64. package/dist/src/reporters/pr-comment.js +20 -6
  65. package/dist/src/reporters/pr-comment.js.map +1 -1
  66. package/dist/src/reporters/sarif.js +11 -1
  67. package/dist/src/reporters/sarif.js.map +1 -1
  68. package/dist/src/runner.d.ts +3 -0
  69. package/dist/src/runner.js +5 -0
  70. package/dist/src/runner.js.map +1 -1
  71. package/dist/src/score.js +1 -1
  72. package/dist/src/score.js.map +1 -1
  73. package/dist/src/security-profiles.d.ts +13 -0
  74. package/dist/src/security-profiles.js +59 -0
  75. package/dist/src/security-profiles.js.map +1 -0
  76. package/dist/src/storage.js +3 -2
  77. package/dist/src/storage.js.map +1 -1
  78. package/dist/src/telemetry.d.ts +10 -0
  79. package/dist/src/telemetry.js +17 -1
  80. package/dist/src/telemetry.js.map +1 -1
  81. package/dist/src/types.d.ts +1 -1
  82. package/dist/src/utils/files.d.ts +1 -0
  83. package/dist/src/utils/files.js +21 -0
  84. package/dist/src/utils/files.js.map +1 -0
  85. package/dist/src/utils/ids.js +18 -5
  86. package/dist/src/utils/ids.js.map +1 -1
  87. package/dist/src/utils/url.d.ts +2 -0
  88. package/dist/src/utils/url.js +15 -0
  89. package/dist/src/utils/url.js.map +1 -0
  90. package/dist/src/validate.js +1 -1
  91. package/dist/src/validate.js.map +1 -1
  92. package/docs/10x-agentic-growth-sprint.md +47 -0
  93. package/docs/agent-ecosystem-promotion-plan.md +244 -0
  94. package/docs/agent-tasks.md +95 -0
  95. package/docs/agentic-contributor-outreach.md +52 -0
  96. package/docs/automatic-ci-integration.md +33 -0
  97. package/docs/campaign-attribution.md +58 -0
  98. package/docs/code-scanning-demo.md +57 -0
  99. package/docs/commercial-boundary.md +83 -0
  100. package/docs/contributor-proof-cards/README.md +33 -0
  101. package/docs/contributor-recognition.md +92 -0
  102. package/docs/examples/nsa-mcp-audit-report.md +372 -0
  103. package/docs/examples/nsa-mcp-results.sarif +930 -0
  104. package/docs/examples/nsa-mcp-score.json +13 -0
  105. package/docs/feishu-lark-mcp.md +1 -1
  106. package/docs/github-code-scanning-for-mcp.md +1 -1
  107. package/docs/government-enterprise-pilot.md +93 -0
  108. package/docs/launch.md +64 -0
  109. package/docs/mcp-attack-simulator.md +57 -0
  110. package/docs/mcp-receipts.md +109 -0
  111. package/docs/mcp-server-safety-index.md +29 -22
  112. package/docs/nsa-mcp-audit-ci.md +88 -0
  113. package/docs/procurement-one-pager.md +74 -0
  114. package/docs/proof.md +5 -2
  115. package/docs/public-guidance-crosswalk.md +48 -0
  116. package/docs/receipt-graph.md +54 -0
  117. package/docs/safety-index/artifacts/antv-chart-server.json +40 -22
  118. package/docs/safety-index/artifacts/antv-chart-server.md +22 -9
  119. package/docs/safety-index/artifacts/browsermcp-server.json +36 -18
  120. package/docs/safety-index/artifacts/browsermcp-server.md +22 -9
  121. package/docs/safety-index/artifacts/context7-server.json +83 -26
  122. package/docs/safety-index/artifacts/context7-server.md +33 -20
  123. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +2438 -0
  124. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +176 -0
  125. package/docs/safety-index/artifacts/everything-server.json +150 -57
  126. package/docs/safety-index/artifacts/everything-server.md +36 -23
  127. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +162 -19
  128. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +25 -12
  129. package/docs/safety-index/artifacts/filesystem-server.json +221 -19
  130. package/docs/safety-index/artifacts/filesystem-server.md +24 -11
  131. package/docs/safety-index/artifacts/kubernetes-server.attack.json +1559 -0
  132. package/docs/safety-index/artifacts/kubernetes-server.attack.md +43 -0
  133. package/docs/safety-index/artifacts/kubernetes-server.attack.sarif +2857 -0
  134. package/docs/safety-index/artifacts/kubernetes-server.json +1573 -0
  135. package/docs/safety-index/artifacts/kubernetes-server.md +176 -0
  136. package/docs/safety-index/artifacts/memory-server.json +93 -32
  137. package/docs/safety-index/artifacts/memory-server.md +45 -25
  138. package/docs/safety-index/artifacts/opentofu-server.json +44 -18
  139. package/docs/safety-index/artifacts/opentofu-server.md +23 -10
  140. package/docs/safety-index/artifacts/playwright-mcp-server.json +177 -21
  141. package/docs/safety-index/artifacts/playwright-mcp-server.md +27 -14
  142. package/docs/safety-index/artifacts/promptopia-server.json +45 -19
  143. package/docs/safety-index/artifacts/promptopia-server.md +21 -8
  144. package/docs/safety-index/artifacts/puppeteer-server.json +77 -22
  145. package/docs/safety-index/artifacts/puppeteer-server.md +28 -15
  146. package/docs/safety-index/artifacts/ref-tools-server.json +36 -18
  147. package/docs/safety-index/artifacts/ref-tools-server.md +21 -8
  148. package/docs/safety-index/artifacts/sequential-thinking-server.json +38 -21
  149. package/docs/safety-index/artifacts/sequential-thinking-server.md +22 -9
  150. package/docs/safety-index/targets.json +90 -14
  151. package/docs/security-due-diligence.md +87 -0
  152. package/docs/setup-ci-doctor.md +13 -1
  153. package/docs/target-gallery.md +49 -0
  154. package/docs/target-registry.md +5 -1
  155. package/docs/tool-call-receipts.md +115 -0
  156. package/examples/insecure-mcp-server/mcp-observatory.target.json +13 -0
  157. package/examples/insecure-mcp-server/server.mjs +62 -0
  158. package/package.json +31 -2
  159. package/schemas/run-artifact.schema.json +1 -0
  160. package/scripts/postinstall.mjs +138 -0
@@ -2,9 +2,9 @@
2
2
  "artifactType": "run",
3
3
  "schemaVersion": "1.0.0",
4
4
  "gate": "pass",
5
- "runId": "run_2026-06-24T020723999Z_5297ea01",
6
- "createdAt": "2026-06-24T02:07:23.999Z",
7
- "toolVersion": "0.24.0",
5
+ "runId": "run_2026-07-06T194947442Z_4e90392b",
6
+ "createdAt": "2026-07-06T19:49:47.442Z",
7
+ "toolVersion": "0.28.0",
8
8
  "target": {
9
9
  "targetId": "filesystem-server",
10
10
  "adapter": "local-process",
@@ -30,10 +30,10 @@
30
30
  "nodeVersion": "v22.22.1"
31
31
  },
32
32
  "summary": {
33
- "total": 7,
33
+ "total": 8,
34
34
  "pass": 2,
35
35
  "fail": 0,
36
- "partial": 3,
36
+ "partial": 4,
37
37
  "unsupported": 2,
38
38
  "flaky": 0,
39
39
  "skipped": 0,
@@ -44,7 +44,7 @@
44
44
  "id": "tools",
45
45
  "capability": "tools",
46
46
  "status": "pass",
47
- "durationMs": 5.625334000000294,
47
+ "durationMs": 5.032166999999845,
48
48
  "message": "Advertised capability responded with the minimal expected shape (14 items).",
49
49
  "evidence": [
50
50
  {
@@ -327,7 +327,7 @@
327
327
  "id": "prompts",
328
328
  "capability": "prompts",
329
329
  "status": "unsupported",
330
- "durationMs": 0.0021669999996447586,
330
+ "durationMs": 0.0017920000000231084,
331
331
  "message": "Prompts are not advertised by the target.",
332
332
  "evidence": [
333
333
  {
@@ -343,7 +343,7 @@
343
343
  "id": "resources",
344
344
  "capability": "resources",
345
345
  "status": "unsupported",
346
- "durationMs": 0.001209000000017113,
346
+ "durationMs": 0.0014160000000629225,
347
347
  "message": "Resources are not advertised by the target.",
348
348
  "evidence": [
349
349
  {
@@ -359,7 +359,7 @@
359
359
  "id": "security-lite",
360
360
  "capability": "security-lite",
361
361
  "status": "partial",
362
- "durationMs": 0.17987500000026557,
362
+ "durationMs": 0.13637500000004366,
363
363
  "message": "Found 3 security finding(s): 0 high, 3 medium, 0 low.",
364
364
  "evidence": [
365
365
  {
@@ -405,7 +405,7 @@
405
405
  "id": "conformance",
406
406
  "capability": "conformance",
407
407
  "status": "pass",
408
- "durationMs": 5.242750000000342,
408
+ "durationMs": 5.456833000000188,
409
409
  "message": "All 7 conformance checks passed.",
410
410
  "evidence": [
411
411
  {
@@ -431,7 +431,7 @@
431
431
  "id": "schema-quality",
432
432
  "capability": "schema-quality",
433
433
  "status": "partial",
434
- "durationMs": 2.2571250000000873,
434
+ "durationMs": 2.5004579999999805,
435
435
  "message": "Found 18 quality finding(s) across 14 item(s): 0 warnings, 18 info.",
436
436
  "evidence": [
437
437
  {
@@ -473,6 +473,116 @@
473
473
  "[info] tool \"search_files\": Property 'pattern' missing description",
474
474
  "[info] tool \"search_files\": Property 'excludePatterns' missing description",
475
475
  "[info] tool \"get_file_info\": Property 'path' missing description"
476
+ ],
477
+ "findings": [
478
+ {
479
+ "itemType": "tool",
480
+ "itemName": "read_file",
481
+ "issue": "Property 'path' missing description",
482
+ "severity": "info"
483
+ },
484
+ {
485
+ "itemType": "tool",
486
+ "itemName": "read_text_file",
487
+ "issue": "Property 'path' missing description",
488
+ "severity": "info"
489
+ },
490
+ {
491
+ "itemType": "tool",
492
+ "itemName": "read_media_file",
493
+ "issue": "Property 'path' missing description",
494
+ "severity": "info"
495
+ },
496
+ {
497
+ "itemType": "tool",
498
+ "itemName": "write_file",
499
+ "issue": "Property 'path' missing description",
500
+ "severity": "info"
501
+ },
502
+ {
503
+ "itemType": "tool",
504
+ "itemName": "write_file",
505
+ "issue": "Property 'content' missing description",
506
+ "severity": "info"
507
+ },
508
+ {
509
+ "itemType": "tool",
510
+ "itemName": "edit_file",
511
+ "issue": "Property 'path' missing description",
512
+ "severity": "info"
513
+ },
514
+ {
515
+ "itemType": "tool",
516
+ "itemName": "edit_file",
517
+ "issue": "Property 'edits' missing description",
518
+ "severity": "info"
519
+ },
520
+ {
521
+ "itemType": "tool",
522
+ "itemName": "create_directory",
523
+ "issue": "Property 'path' missing description",
524
+ "severity": "info"
525
+ },
526
+ {
527
+ "itemType": "tool",
528
+ "itemName": "list_directory",
529
+ "issue": "Property 'path' missing description",
530
+ "severity": "info"
531
+ },
532
+ {
533
+ "itemType": "tool",
534
+ "itemName": "list_directory_with_sizes",
535
+ "issue": "Property 'path' missing description",
536
+ "severity": "info"
537
+ },
538
+ {
539
+ "itemType": "tool",
540
+ "itemName": "directory_tree",
541
+ "issue": "Property 'path' missing description",
542
+ "severity": "info"
543
+ },
544
+ {
545
+ "itemType": "tool",
546
+ "itemName": "directory_tree",
547
+ "issue": "Property 'excludePatterns' missing description",
548
+ "severity": "info"
549
+ },
550
+ {
551
+ "itemType": "tool",
552
+ "itemName": "move_file",
553
+ "issue": "Property 'source' missing description",
554
+ "severity": "info"
555
+ },
556
+ {
557
+ "itemType": "tool",
558
+ "itemName": "move_file",
559
+ "issue": "Property 'destination' missing description",
560
+ "severity": "info"
561
+ },
562
+ {
563
+ "itemType": "tool",
564
+ "itemName": "search_files",
565
+ "issue": "Property 'path' missing description",
566
+ "severity": "info"
567
+ },
568
+ {
569
+ "itemType": "tool",
570
+ "itemName": "search_files",
571
+ "issue": "Property 'pattern' missing description",
572
+ "severity": "info"
573
+ },
574
+ {
575
+ "itemType": "tool",
576
+ "itemName": "search_files",
577
+ "issue": "Property 'excludePatterns' missing description",
578
+ "severity": "info"
579
+ },
580
+ {
581
+ "itemType": "tool",
582
+ "itemName": "get_file_info",
583
+ "issue": "Property 'path' missing description",
584
+ "severity": "info"
585
+ }
476
586
  ]
477
587
  }
478
588
  ]
@@ -481,7 +591,7 @@
481
591
  "id": "security",
482
592
  "capability": "security",
483
593
  "status": "partial",
484
- "durationMs": 2.14449999999988,
594
+ "durationMs": 2.2048749999999018,
485
595
  "message": "Found 3 security finding(s): 0 high, 3 medium, 0 low.",
486
596
  "evidence": [
487
597
  {
@@ -522,6 +632,97 @@
522
632
  ]
523
633
  }
524
634
  ]
635
+ },
636
+ {
637
+ "id": "attack-sim",
638
+ "capability": "attack-sim",
639
+ "status": "partial",
640
+ "durationMs": 2.602374999999938,
641
+ "message": "Safe attack simulation found 3 finding(s): 0 high, 3 medium, 0 low.",
642
+ "evidence": [
643
+ {
644
+ "endpoint": "attack-sim/safe",
645
+ "advertised": true,
646
+ "responded": true,
647
+ "minimalShapePresent": true,
648
+ "itemCount": 3,
649
+ "identifiers": [
650
+ "write_file",
651
+ "edit_file",
652
+ "create_directory"
653
+ ],
654
+ "diagnostics": [
655
+ "[medium] Tool \"write_file\" combines broad parameters (path) with destructive or non-read-only behavior.",
656
+ "[medium] Tool \"edit_file\" combines broad parameters (path) with destructive or non-read-only behavior.",
657
+ "[medium] Tool \"create_directory\" combines broad parameters (path) with destructive or non-read-only behavior."
658
+ ],
659
+ "findings": [
660
+ {
661
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
662
+ "attackClass": "permission-boundary",
663
+ "severity": "medium",
664
+ "itemType": "tool",
665
+ "itemName": "write_file",
666
+ "message": "Tool \"write_file\" combines broad parameters (path) with destructive or non-read-only behavior.",
667
+ "evidence": {
668
+ "broadParams": [
669
+ "path"
670
+ ],
671
+ "annotations": {
672
+ "readOnlyHint": false,
673
+ "destructiveHint": true,
674
+ "idempotentHint": true
675
+ },
676
+ "description": "Create a new file or completely overwrite an existing file with new content. Use with caution as it will overwrite existing files without warning. Handles text content with proper encoding. Only works within allowed directories."
677
+ },
678
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
679
+ "recommendedAction": "gate"
680
+ },
681
+ {
682
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
683
+ "attackClass": "permission-boundary",
684
+ "severity": "medium",
685
+ "itemType": "tool",
686
+ "itemName": "edit_file",
687
+ "message": "Tool \"edit_file\" combines broad parameters (path) with destructive or non-read-only behavior.",
688
+ "evidence": {
689
+ "broadParams": [
690
+ "path"
691
+ ],
692
+ "annotations": {
693
+ "readOnlyHint": false,
694
+ "destructiveHint": true,
695
+ "idempotentHint": false
696
+ },
697
+ "description": "Make line-based edits to a text file. Each edit replaces exact line sequences with new content. Returns a git-style diff showing the changes made. Only works within allowed directories."
698
+ },
699
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
700
+ "recommendedAction": "gate"
701
+ },
702
+ {
703
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
704
+ "attackClass": "permission-boundary",
705
+ "severity": "medium",
706
+ "itemType": "tool",
707
+ "itemName": "create_directory",
708
+ "message": "Tool \"create_directory\" combines broad parameters (path) with destructive or non-read-only behavior.",
709
+ "evidence": {
710
+ "broadParams": [
711
+ "path"
712
+ ],
713
+ "annotations": {
714
+ "readOnlyHint": false,
715
+ "destructiveHint": false,
716
+ "idempotentHint": true
717
+ },
718
+ "description": "Create a new directory or ensure a directory exists. Can create multiple nested directories in one operation. If the directory already exists, this operation will succeed silently. Perfect for setting up directory structures for projects or ensuring required paths exist. Only works within allowed directories."
719
+ },
720
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
721
+ "recommendedAction": "gate"
722
+ }
723
+ ]
724
+ }
725
+ ]
525
726
  }
526
727
  ],
527
728
  "healthScore": {
@@ -550,7 +751,8 @@
550
751
  "score": 60,
551
752
  "details": [
552
753
  "security-lite: partial (60/100)",
553
- "security: partial (60/100)"
754
+ "security: partial (60/100)",
755
+ "attack-sim: partial (60/100)"
554
756
  ]
555
757
  },
556
758
  {
@@ -568,16 +770,16 @@
568
770
  "weight": 0.1,
569
771
  "score": 100,
570
772
  "details": [
571
- "Connect: 733ms",
572
- "p95 latency: 6ms (3 operations)"
773
+ "Connect: 662ms",
774
+ "p95 latency: 5ms (3 operations)"
573
775
  ]
574
776
  }
575
777
  ]
576
778
  },
577
779
  "performanceMetrics": {
578
- "connectMs": 733.215083,
579
- "toolsListMs": 5.625334000000294,
580
- "promptsListMs": 0.0021669999996447586,
581
- "resourcesListMs": 0.001209000000017113
780
+ "connectMs": 661.862083,
781
+ "toolsListMs": 5.032166999999845,
782
+ "promptsListMs": 0.0017920000000231084,
783
+ "resourcesListMs": 0.0014160000000629225
582
784
  }
583
785
  }
@@ -1,6 +1,6 @@
1
1
  # MCP Observatory Run Report
2
2
 
3
- Generated at 2026-06-24T02:07:23.999Z
3
+ Generated at 2026-07-06T19:49:47.442Z
4
4
 
5
5
  ## Target and Environment Metadata
6
6
 
@@ -25,18 +25,18 @@ Generated at 2026-06-24T02:07:23.999Z
25
25
 
26
26
  | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
27
  | --- | --- | --- | --- | --- | --- | --- | --- |
28
- | pass | 7 | 2 | 0 | 3 | 2 | 0 | 0 |
28
+ | pass | 8 | 2 | 0 | 4 | 2 | 0 | 0 |
29
29
 
30
30
  ## At a Glance
31
31
 
32
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.
33
+ - Top risks: attack-sim: Safe attack simulation found 3 finding(s): 0 high, 3 medium, 0 low.; 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.
34
34
  - Regression/schema drift: Run `mcp-observatory diff <previous-run.json> <current-run.json>` to classify regressions and schema drift.
35
35
  - Failing checks: none
36
- - Partial or flaky checks: security-lite, schema-quality, security
36
+ - Partial or flaky checks: security-lite, schema-quality, security, attack-sim
37
37
  - Skipped checks: none
38
38
  - Unsupported checks: prompts, resources
39
- - Suggested next step: Review the caveated checks next: security-lite, schema-quality, security.
39
+ - Suggested next step: Review the caveated checks next: security-lite, schema-quality, security, attack-sim.
40
40
  - CI next step: `Add CI: npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y <server-package>"`
41
41
 
42
42
  ## Regressions and Recoveries
@@ -47,11 +47,12 @@ _Use the `diff` command against another run artifact to classify regressions and
47
47
 
48
48
  | Focus | Check | Status | Duration (ms) | Message |
49
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. |
50
+ | healthy | conformance | pass | 5.46 | All 7 conformance checks passed. |
51
+ | healthy | tools | pass | 5.03 | Advertised capability responded with the minimal expected shape (14 items). |
52
+ | review | attack-sim | partial | 2.60 | Safe attack simulation found 3 finding(s): 0 high, 3 medium, 0 low. |
53
+ | review | schema-quality | partial | 2.50 | Found 18 quality finding(s) across 14 item(s): 0 warnings, 18 info. |
54
+ | review | security | partial | 2.20 | Found 3 security finding(s): 0 high, 3 medium, 0 low. |
55
+ | review | security-lite | partial | 0.14 | Found 3 security finding(s): 0 high, 3 medium, 0 low. |
55
56
  | confirm intent | prompts | unsupported | 0.00 | Prompts are not advertised by the target. |
56
57
  | confirm intent | resources | unsupported | 0.00 | Resources are not advertised by the target. |
57
58
 
@@ -81,6 +82,18 @@ Summary: Advertised capability responded with the minimal expected shape (14 ite
81
82
  - Identifiers: read_file, read_text_file, read_media_file, read_multiple_files, write_file (+9 more)
82
83
  - 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
 
85
+ ### attack-sim — partial
86
+
87
+ Summary: Safe attack simulation found 3 finding(s): 0 high, 3 medium, 0 low.
88
+
89
+ - Endpoint: `attack-sim/safe`
90
+ - Advertised: `true`
91
+ - Responded: `true`
92
+ - Minimal shape present: `true`
93
+ - Item count: `3`
94
+ - Identifiers: write_file, edit_file, create_directory
95
+ - Diagnostics: [medium] Tool "write_file" combines broad parameters (path) with destructive or non-read-only behavior., [medium] Tool "edit_file" combines broad parameters (path) with destructive or non-read-only behavior., [medium] Tool "create_directory" combines broad parameters (path) with destructive or non-read-only behavior.
96
+
84
97
  ### schema-quality — partial
85
98
 
86
99
  Summary: Found 18 quality finding(s) across 14 item(s): 0 warnings, 18 info.
@@ -152,5 +165,5 @@ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
152
165
 
153
166
  - Artifact type: `run`
154
167
  - Schema version: `1.0.0`
155
- - Run ID: `run_2026-06-24T020723999Z_5297ea01`
168
+ - Run ID: `run_2026-07-06T194947442Z_4e90392b`
156
169
  - Gate: `pass`