@kryptosai/mcp-observatory 0.28.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 (108) hide show
  1. package/COMMERCIAL.md +26 -5
  2. package/README.md +65 -12
  3. package/dist/src/action-receipt.d.ts +20 -0
  4. package/dist/src/action-receipt.js +85 -0
  5. package/dist/src/action-receipt.js.map +1 -0
  6. package/dist/src/audit.d.ts +64 -0
  7. package/dist/src/audit.js +359 -0
  8. package/dist/src/audit.js.map +1 -0
  9. package/dist/src/checks/attack-sim.d.ts +2 -0
  10. package/dist/src/checks/attack-sim.js +12 -0
  11. package/dist/src/checks/attack-sim.js.map +1 -1
  12. package/dist/src/cli.js +8 -1
  13. package/dist/src/cli.js.map +1 -1
  14. package/dist/src/commands/attack-sim.js +54 -2
  15. package/dist/src/commands/attack-sim.js.map +1 -1
  16. package/dist/src/commands/audit.d.ts +2 -0
  17. package/dist/src/commands/audit.js +132 -0
  18. package/dist/src/commands/audit.js.map +1 -0
  19. package/dist/src/commands/init-ci.d.ts +2 -0
  20. package/dist/src/commands/init-ci.js +71 -11
  21. package/dist/src/commands/init-ci.js.map +1 -1
  22. package/dist/src/commands/legacy.js +2 -0
  23. package/dist/src/commands/legacy.js.map +1 -1
  24. package/dist/src/commands/receipt.d.ts +2 -0
  25. package/dist/src/commands/receipt.js +113 -0
  26. package/dist/src/commands/receipt.js.map +1 -0
  27. package/dist/src/commands/scan.js +23 -5
  28. package/dist/src/commands/scan.js.map +1 -1
  29. package/dist/src/commands/score.js +63 -0
  30. package/dist/src/commands/score.js.map +1 -1
  31. package/dist/src/commands/setup-ci-conversion.d.ts +2 -1
  32. package/dist/src/commands/setup-ci-conversion.js +22 -8
  33. package/dist/src/commands/setup-ci-conversion.js.map +1 -1
  34. package/dist/src/commands/test.js +18 -1
  35. package/dist/src/commands/test.js.map +1 -1
  36. package/dist/src/findings.d.ts +1 -0
  37. package/dist/src/findings.js +1 -0
  38. package/dist/src/findings.js.map +1 -1
  39. package/dist/src/index.d.ts +2 -0
  40. package/dist/src/index.js +2 -0
  41. package/dist/src/index.js.map +1 -1
  42. package/dist/src/receipt.d.ts +100 -0
  43. package/dist/src/receipt.js +375 -0
  44. package/dist/src/receipt.js.map +1 -0
  45. package/dist/src/reporters/attack-sim.js +6 -1
  46. package/dist/src/reporters/attack-sim.js.map +1 -1
  47. package/dist/src/reporters/sarif.js +11 -1
  48. package/dist/src/reporters/sarif.js.map +1 -1
  49. package/dist/src/security-profiles.d.ts +13 -0
  50. package/dist/src/security-profiles.js +59 -0
  51. package/dist/src/security-profiles.js.map +1 -0
  52. package/dist/src/telemetry.d.ts +7 -0
  53. package/dist/src/telemetry.js.map +1 -1
  54. package/docs/10x-agentic-growth-sprint.md +47 -0
  55. package/docs/agent-ecosystem-promotion-plan.md +1 -1
  56. package/docs/agentic-contributor-outreach.md +52 -0
  57. package/docs/code-scanning-demo.md +2 -2
  58. package/docs/commercial-boundary.md +83 -0
  59. package/docs/contributor-proof-cards/README.md +1 -1
  60. package/docs/examples/nsa-mcp-audit-report.md +372 -0
  61. package/docs/examples/nsa-mcp-results.sarif +930 -0
  62. package/docs/examples/nsa-mcp-score.json +13 -0
  63. package/docs/feishu-lark-mcp.md +1 -1
  64. package/docs/github-code-scanning-for-mcp.md +1 -1
  65. package/docs/government-enterprise-pilot.md +93 -0
  66. package/docs/mcp-receipts.md +109 -0
  67. package/docs/mcp-server-safety-index.md +26 -25
  68. package/docs/nsa-mcp-audit-ci.md +88 -0
  69. package/docs/procurement-one-pager.md +74 -0
  70. package/docs/proof.md +2 -2
  71. package/docs/public-guidance-crosswalk.md +48 -0
  72. package/docs/safety-index/artifacts/antv-chart-server.json +41 -23
  73. package/docs/safety-index/artifacts/antv-chart-server.md +23 -10
  74. package/docs/safety-index/artifacts/browsermcp-server.json +38 -20
  75. package/docs/safety-index/artifacts/browsermcp-server.md +23 -10
  76. package/docs/safety-index/artifacts/context7-server.json +85 -28
  77. package/docs/safety-index/artifacts/context7-server.md +35 -22
  78. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +460 -36
  79. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +31 -18
  80. package/docs/safety-index/artifacts/everything-server.json +38 -20
  81. package/docs/safety-index/artifacts/everything-server.md +25 -12
  82. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +155 -20
  83. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +26 -13
  84. package/docs/safety-index/artifacts/filesystem-server.json +116 -22
  85. package/docs/safety-index/artifacts/filesystem-server.md +27 -14
  86. package/docs/safety-index/artifacts/kubernetes-server.json +252 -27
  87. package/docs/safety-index/artifacts/kubernetes-server.md +44 -18
  88. package/docs/safety-index/artifacts/memory-server.json +39 -21
  89. package/docs/safety-index/artifacts/memory-server.md +24 -11
  90. package/docs/safety-index/artifacts/opentofu-server.json +38 -20
  91. package/docs/safety-index/artifacts/opentofu-server.md +24 -11
  92. package/docs/safety-index/artifacts/playwright-mcp-server.json +140 -20
  93. package/docs/safety-index/artifacts/playwright-mcp-server.md +26 -13
  94. package/docs/safety-index/artifacts/promptopia-server.json +41 -23
  95. package/docs/safety-index/artifacts/promptopia-server.md +26 -13
  96. package/docs/safety-index/artifacts/puppeteer-server.json +77 -34
  97. package/docs/safety-index/artifacts/puppeteer-server.md +45 -32
  98. package/docs/safety-index/artifacts/ref-tools-server.json +38 -20
  99. package/docs/safety-index/artifacts/ref-tools-server.md +22 -9
  100. package/docs/safety-index/artifacts/sequential-thinking-server.json +39 -21
  101. package/docs/safety-index/artifacts/sequential-thinking-server.md +23 -10
  102. package/docs/security-due-diligence.md +87 -0
  103. package/docs/setup-ci-doctor.md +11 -1
  104. package/docs/tool-call-receipts.md +1 -2
  105. package/examples/insecure-mcp-server/mcp-observatory.target.json +13 -0
  106. package/examples/insecure-mcp-server/server.mjs +62 -0
  107. package/package.json +12 -1
  108. package/scripts/postinstall.mjs +22 -7
@@ -2,9 +2,9 @@
2
2
  "artifactType": "run",
3
3
  "schemaVersion": "1.0.0",
4
4
  "gate": "fail",
5
- "runId": "run_2026-07-06T014703410Z_c94b3464",
6
- "createdAt": "2026-07-06T01:47:03.410Z",
7
- "toolVersion": "0.26.1",
5
+ "runId": "run_2026-07-06T194955359Z_d769bb31",
6
+ "createdAt": "2026-07-06T19:49:55.359Z",
7
+ "toolVersion": "0.28.0",
8
8
  "target": {
9
9
  "targetId": "playwright-mcp-server",
10
10
  "adapter": "local-process",
@@ -25,13 +25,13 @@
25
25
  "serverVersion": "1.62.0-alpha-2026-06-29"
26
26
  },
27
27
  "environment": {
28
- "platform": "darwin 24.0.0",
29
- "nodeVersion": "v25.8.1"
28
+ "platform": "darwin 25.5.0",
29
+ "nodeVersion": "v22.22.1"
30
30
  },
31
31
  "summary": {
32
- "total": 7,
32
+ "total": 8,
33
33
  "pass": 2,
34
- "fail": 2,
34
+ "fail": 3,
35
35
  "partial": 1,
36
36
  "unsupported": 2,
37
37
  "flaky": 0,
@@ -43,7 +43,7 @@
43
43
  "id": "tools",
44
44
  "capability": "tools",
45
45
  "status": "pass",
46
- "durationMs": 3.186707999999271,
46
+ "durationMs": 2.8597500000014406,
47
47
  "message": "Advertised capability responded with the minimal expected shape (23 items).",
48
48
  "evidence": [
49
49
  {
@@ -651,7 +651,7 @@
651
651
  "id": "prompts",
652
652
  "capability": "prompts",
653
653
  "status": "unsupported",
654
- "durationMs": 0.0010409999995317776,
654
+ "durationMs": 0.0011660000000119908,
655
655
  "message": "Prompts are not advertised by the target.",
656
656
  "evidence": [
657
657
  {
@@ -667,7 +667,7 @@
667
667
  "id": "resources",
668
668
  "capability": "resources",
669
669
  "status": "unsupported",
670
- "durationMs": 0.002291000000695931,
670
+ "durationMs": 0.0022920000010344665,
671
671
  "message": "Resources are not advertised by the target.",
672
672
  "evidence": [
673
673
  {
@@ -683,7 +683,7 @@
683
683
  "id": "security-lite",
684
684
  "capability": "security-lite",
685
685
  "status": "fail",
686
- "durationMs": 0.06658400000014808,
686
+ "durationMs": 0.05433400000038091,
687
687
  "message": "Found 6 security finding(s): 2 high, 2 medium, 2 low.",
688
688
  "evidence": [
689
689
  {
@@ -751,7 +751,7 @@
751
751
  "id": "conformance",
752
752
  "capability": "conformance",
753
753
  "status": "pass",
754
- "durationMs": 567.6830420000006,
754
+ "durationMs": 987.085916,
755
755
  "message": "All 7 conformance checks passed.",
756
756
  "evidence": [
757
757
  {
@@ -777,7 +777,7 @@
777
777
  "id": "schema-quality",
778
778
  "capability": "schema-quality",
779
779
  "status": "partial",
780
- "durationMs": 1.3853339999986929,
780
+ "durationMs": 1.854709000001094,
781
781
  "message": "Found 4 quality finding(s) across 23 item(s): 0 warnings, 4 info.",
782
782
  "evidence": [
783
783
  {
@@ -831,7 +831,7 @@
831
831
  "id": "security",
832
832
  "capability": "security",
833
833
  "status": "fail",
834
- "durationMs": 1.2317499999990105,
834
+ "durationMs": 2.534332999999606,
835
835
  "message": "Found 6 security finding(s): 2 high, 2 medium, 2 low.",
836
836
  "evidence": [
837
837
  {
@@ -894,6 +894,125 @@
894
894
  ]
895
895
  }
896
896
  ]
897
+ },
898
+ {
899
+ "id": "attack-sim",
900
+ "capability": "attack-sim",
901
+ "status": "fail",
902
+ "durationMs": 1.0038750000003347,
903
+ "message": "Safe attack simulation found 4 finding(s): 1 high, 3 medium, 0 low.",
904
+ "evidence": [
905
+ {
906
+ "endpoint": "attack-sim/safe",
907
+ "advertised": true,
908
+ "responded": true,
909
+ "minimalShapePresent": true,
910
+ "itemCount": 4,
911
+ "identifiers": [
912
+ "browser_evaluate",
913
+ "browser_navigate",
914
+ "browser_run_code_unsafe",
915
+ "browser_tabs"
916
+ ],
917
+ "diagnostics": [
918
+ "[medium] Tool \"browser_evaluate\" combines broad parameters (filename) with destructive or non-read-only behavior.",
919
+ "[medium] Tool \"browser_navigate\" combines broad parameters (url) with destructive or non-read-only behavior.",
920
+ "[high] Tool \"browser_run_code_unsafe\" combines broad parameters (code, filename) with destructive or non-read-only behavior.",
921
+ "[medium] Tool \"browser_tabs\" combines broad parameters (url) with destructive or non-read-only behavior."
922
+ ],
923
+ "findings": [
924
+ {
925
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
926
+ "attackClass": "permission-boundary",
927
+ "severity": "medium",
928
+ "itemType": "tool",
929
+ "itemName": "browser_evaluate",
930
+ "message": "Tool \"browser_evaluate\" combines broad parameters (filename) with destructive or non-read-only behavior.",
931
+ "evidence": {
932
+ "broadParams": [
933
+ "filename"
934
+ ],
935
+ "annotations": {
936
+ "title": "Evaluate JavaScript",
937
+ "readOnlyHint": false,
938
+ "destructiveHint": true,
939
+ "openWorldHint": true
940
+ },
941
+ "description": "Evaluate JavaScript expression on page or element"
942
+ },
943
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
944
+ "recommendedAction": "gate"
945
+ },
946
+ {
947
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
948
+ "attackClass": "permission-boundary",
949
+ "severity": "medium",
950
+ "itemType": "tool",
951
+ "itemName": "browser_navigate",
952
+ "message": "Tool \"browser_navigate\" combines broad parameters (url) with destructive or non-read-only behavior.",
953
+ "evidence": {
954
+ "broadParams": [
955
+ "url"
956
+ ],
957
+ "annotations": {
958
+ "title": "Navigate to a URL",
959
+ "readOnlyHint": false,
960
+ "destructiveHint": true,
961
+ "openWorldHint": true
962
+ },
963
+ "description": "Navigate to a URL"
964
+ },
965
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
966
+ "recommendedAction": "gate"
967
+ },
968
+ {
969
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
970
+ "attackClass": "permission-boundary",
971
+ "severity": "high",
972
+ "itemType": "tool",
973
+ "itemName": "browser_run_code_unsafe",
974
+ "message": "Tool \"browser_run_code_unsafe\" combines broad parameters (code, filename) with destructive or non-read-only behavior.",
975
+ "evidence": {
976
+ "broadParams": [
977
+ "code",
978
+ "filename"
979
+ ],
980
+ "annotations": {
981
+ "title": "Run Playwright code (unsafe)",
982
+ "readOnlyHint": false,
983
+ "destructiveHint": true,
984
+ "openWorldHint": true
985
+ },
986
+ "description": "Run a Playwright code snippet. Unsafe: executes arbitrary JavaScript in the Playwright server process and is RCE-equivalent."
987
+ },
988
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
989
+ "recommendedAction": "quarantine"
990
+ },
991
+ {
992
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
993
+ "attackClass": "permission-boundary",
994
+ "severity": "medium",
995
+ "itemType": "tool",
996
+ "itemName": "browser_tabs",
997
+ "message": "Tool \"browser_tabs\" combines broad parameters (url) with destructive or non-read-only behavior.",
998
+ "evidence": {
999
+ "broadParams": [
1000
+ "url"
1001
+ ],
1002
+ "annotations": {
1003
+ "title": "Manage tabs",
1004
+ "readOnlyHint": false,
1005
+ "destructiveHint": true,
1006
+ "openWorldHint": true
1007
+ },
1008
+ "description": "List, create, close, or select a browser tab."
1009
+ },
1010
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
1011
+ "recommendedAction": "gate"
1012
+ }
1013
+ ]
1014
+ }
1015
+ ]
897
1016
  }
898
1017
  ],
899
1018
  "healthScore": {
@@ -922,7 +1041,8 @@
922
1041
  "score": 0,
923
1042
  "details": [
924
1043
  "security-lite: fail (0/100)",
925
- "security: fail (0/100)"
1044
+ "security: fail (0/100)",
1045
+ "attack-sim: fail (0/100)"
926
1046
  ]
927
1047
  },
928
1048
  {
@@ -940,16 +1060,16 @@
940
1060
  "weight": 0.1,
941
1061
  "score": 100,
942
1062
  "details": [
943
- "Connect: 793ms",
1063
+ "Connect: 683ms",
944
1064
  "p95 latency: 3ms (3 operations)"
945
1065
  ]
946
1066
  }
947
1067
  ]
948
1068
  },
949
1069
  "performanceMetrics": {
950
- "connectMs": 793.3979579999996,
951
- "toolsListMs": 3.186707999999271,
952
- "promptsListMs": 0.0010409999995317776,
953
- "resourcesListMs": 0.002291000000695931
1070
+ "connectMs": 683.3468749999993,
1071
+ "toolsListMs": 2.8597500000014406,
1072
+ "promptsListMs": 0.0011660000000119908,
1073
+ "resourcesListMs": 0.0022920000010344665
954
1074
  }
955
1075
  }
@@ -1,6 +1,6 @@
1
1
  # MCP Observatory Run Report
2
2
 
3
- Generated at 2026-07-06T01:47:03.410Z
3
+ Generated at 2026-07-06T19:49:55.359Z
4
4
 
5
5
  ## Target and Environment Metadata
6
6
 
@@ -8,8 +8,8 @@ Generated at 2026-07-06T01:47:03.410Z
8
8
  - Adapter: `local-process`
9
9
  - Command: `npx -y @playwright/mcp`
10
10
  - Server: `Playwright 1.62.0-alpha-2026-06-29`
11
- - Platform: `darwin 24.0.0`
12
- - Node: `v25.8.1`
11
+ - Platform: `darwin 25.5.0`
12
+ - Node: `v22.22.1`
13
13
 
14
14
  ## Executive Summary
15
15
 
@@ -25,18 +25,18 @@ Generated at 2026-07-06T01:47:03.410Z
25
25
 
26
26
  | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
27
  | --- | --- | --- | --- | --- | --- | --- | --- |
28
- | fail | 7 | 2 | 2 | 1 | 2 | 0 | 0 |
28
+ | fail | 8 | 2 | 3 | 1 | 2 | 0 | 0 |
29
29
 
30
30
  ## At a Glance
31
31
 
32
32
  - Safety verdict: **Blocked** — One or more checks can break agent dependence and should be fixed before production use.
33
- - Top risks: schema-quality: Found 4 quality finding(s) across 23 item(s): 0 warnings, 4 info.; security: Found 6 security finding(s): 2 high, 2 medium, 2 low.; security-lite: Found 6 security finding(s): 2 high, 2 medium, 2 low.
33
+ - Top risks: schema-quality: Found 4 quality finding(s) across 23 item(s): 0 warnings, 4 info.; attack-sim: Safe attack simulation found 4 finding(s): 1 high, 3 medium, 0 low.; security: Found 6 security finding(s): 2 high, 2 medium, 2 low.
34
34
  - Regression/schema drift: Run `mcp-observatory diff <previous-run.json> <current-run.json>` to classify regressions and schema drift.
35
- - Failing checks: security-lite, security
35
+ - Failing checks: security-lite, security, attack-sim
36
36
  - Partial or flaky checks: schema-quality
37
37
  - Skipped checks: none
38
38
  - Unsupported checks: prompts, resources
39
- - Suggested next step: Start with the failing checks: security-lite, security.
39
+ - Suggested next step: Start with the failing checks: security-lite, 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,13 +47,14 @@ _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 | 567.68 | All 7 conformance checks passed. |
51
- | healthy | tools | pass | 3.19 | Advertised capability responded with the minimal expected shape (23 items). |
52
- | review | schema-quality | partial | 1.39 | Found 4 quality finding(s) across 23 item(s): 0 warnings, 4 info. |
50
+ | healthy | conformance | pass | 987.09 | All 7 conformance checks passed. |
51
+ | healthy | tools | pass | 2.86 | Advertised capability responded with the minimal expected shape (23 items). |
52
+ | review | schema-quality | partial | 1.85 | Found 4 quality finding(s) across 23 item(s): 0 warnings, 4 info. |
53
53
  | confirm intent | prompts | unsupported | 0.00 | Prompts are not advertised by the target. |
54
54
  | confirm intent | resources | unsupported | 0.00 | Resources are not advertised by the target. |
55
- | act now | security | fail | 1.23 | Found 6 security finding(s): 2 high, 2 medium, 2 low. |
56
- | act now | security-lite | fail | 0.07 | Found 6 security finding(s): 2 high, 2 medium, 2 low. |
55
+ | act now | attack-sim | fail | 1.00 | Safe attack simulation found 4 finding(s): 1 high, 3 medium, 0 low. |
56
+ | act now | security | fail | 2.53 | Found 6 security finding(s): 2 high, 2 medium, 2 low. |
57
+ | act now | security-lite | fail | 0.05 | Found 6 security finding(s): 2 high, 2 medium, 2 low. |
57
58
 
58
59
  ## Evidence Snippets
59
60
 
@@ -117,6 +118,18 @@ Summary: Resources are not advertised by the target.
117
118
  - Identifiers: none
118
119
  - Diagnostics: none
119
120
 
121
+ ### attack-sim — fail
122
+
123
+ Summary: Safe attack simulation found 4 finding(s): 1 high, 3 medium, 0 low.
124
+
125
+ - Endpoint: `attack-sim/safe`
126
+ - Advertised: `true`
127
+ - Responded: `true`
128
+ - Minimal shape present: `true`
129
+ - Item count: `4`
130
+ - Identifiers: browser_evaluate, browser_navigate, browser_run_code_unsafe, browser_tabs
131
+ - Diagnostics: [medium] Tool "browser_evaluate" combines broad parameters (filename) with destructive or non-read-only behavior., [medium] Tool "browser_navigate" combines broad parameters (url) with destructive or non-read-only behavior., [high] Tool "browser_run_code_unsafe" combines broad parameters (code, filename) with destructive or non-read-only behavior. (+1 more)
132
+
120
133
  ### security — fail
121
134
 
122
135
  Summary: Found 6 security finding(s): 2 high, 2 medium, 2 low.
@@ -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-07-06T014703410Z_c94b3464`
168
+ - Run ID: `run_2026-07-06T194955359Z_d769bb31`
156
169
  - Gate: `fail`
@@ -2,9 +2,9 @@
2
2
  "artifactType": "run",
3
3
  "schemaVersion": "1.0.0",
4
4
  "gate": "pass",
5
- "runId": "run_2026-07-06T014655135Z_d970b9ce",
6
- "createdAt": "2026-07-06T01:46:55.135Z",
7
- "toolVersion": "0.26.1",
5
+ "runId": "run_2026-07-06T194948899Z_ab0f7d29",
6
+ "createdAt": "2026-07-06T19:49:48.899Z",
7
+ "toolVersion": "0.28.0",
8
8
  "target": {
9
9
  "targetId": "promptopia-server",
10
10
  "adapter": "local-process",
@@ -25,12 +25,12 @@
25
25
  "serverVersion": "1.1.0"
26
26
  },
27
27
  "environment": {
28
- "platform": "darwin 24.0.0",
29
- "nodeVersion": "v25.8.1"
28
+ "platform": "darwin 25.5.0",
29
+ "nodeVersion": "v22.22.1"
30
30
  },
31
31
  "summary": {
32
- "total": 7,
33
- "pass": 5,
32
+ "total": 8,
33
+ "pass": 6,
34
34
  "fail": 0,
35
35
  "partial": 1,
36
36
  "unsupported": 1,
@@ -43,7 +43,7 @@
43
43
  "id": "tools",
44
44
  "capability": "tools",
45
45
  "status": "pass",
46
- "durationMs": 3.150707999999213,
46
+ "durationMs": 2.4714169999997466,
47
47
  "message": "Advertised capability responded with the minimal expected shape (7 items).",
48
48
  "evidence": [
49
49
  {
@@ -62,7 +62,7 @@
62
62
  "add_multi_message_prompt"
63
63
  ],
64
64
  "diagnostics": [
65
- "Watching for changes in prompts directory: /Users/sanghoon/mcp-observatory/examples/promptopia-prompts",
65
+ "Watching for changes in prompts directory: /Users/williamweishuhn/Documents/New project/mcp-observatory/examples/promptopia-prompts",
66
66
  "promptopia-mcp MCP server running (v1.1.0)"
67
67
  ],
68
68
  "schemas": {
@@ -267,7 +267,7 @@
267
267
  "id": "prompts",
268
268
  "capability": "prompts",
269
269
  "status": "pass",
270
- "durationMs": 1.210667000000285,
270
+ "durationMs": 1.0759590000006938,
271
271
  "message": "Advertised capability responded with the minimal expected shape (1 item).",
272
272
  "evidence": [
273
273
  {
@@ -280,7 +280,7 @@
280
280
  "demo_welcome"
281
281
  ],
282
282
  "diagnostics": [
283
- "Watching for changes in prompts directory: /Users/sanghoon/mcp-observatory/examples/promptopia-prompts",
283
+ "Watching for changes in prompts directory: /Users/williamweishuhn/Documents/New project/mcp-observatory/examples/promptopia-prompts",
284
284
  "promptopia-mcp MCP server running (v1.1.0)"
285
285
  ]
286
286
  }
@@ -290,7 +290,7 @@
290
290
  "id": "resources",
291
291
  "capability": "resources",
292
292
  "status": "unsupported",
293
- "durationMs": 0.0029999999997016857,
293
+ "durationMs": 0.0035409999991316,
294
294
  "message": "Resources are not advertised by the target.",
295
295
  "evidence": [
296
296
  {
@@ -306,7 +306,7 @@
306
306
  "id": "security-lite",
307
307
  "capability": "security-lite",
308
308
  "status": "pass",
309
- "durationMs": 0.027833000000100583,
309
+ "durationMs": 0.02491699999973207,
310
310
  "message": "No security issues detected (lightweight scan).",
311
311
  "evidence": [
312
312
  {
@@ -322,7 +322,7 @@
322
322
  "id": "conformance",
323
323
  "capability": "conformance",
324
324
  "status": "pass",
325
- "durationMs": 1.6946659999994154,
325
+ "durationMs": 1.5870000000004438,
326
326
  "message": "All 7 conformance checks passed.",
327
327
  "evidence": [
328
328
  {
@@ -348,7 +348,7 @@
348
348
  "id": "schema-quality",
349
349
  "capability": "schema-quality",
350
350
  "status": "partial",
351
- "durationMs": 0.7350839999999152,
351
+ "durationMs": 0.5944589999999152,
352
352
  "message": "Found 1 quality finding(s) across 8 item(s): 0 warnings, 1 info.",
353
353
  "evidence": [
354
354
  {
@@ -378,7 +378,7 @@
378
378
  "id": "security",
379
379
  "capability": "security",
380
380
  "status": "pass",
381
- "durationMs": 0.317124999999578,
381
+ "durationMs": 0.19179199999962293,
382
382
  "message": "No security issues detected.",
383
383
  "evidence": [
384
384
  {
@@ -389,6 +389,23 @@
389
389
  "itemCount": 0
390
390
  }
391
391
  ]
392
+ },
393
+ {
394
+ "id": "attack-sim",
395
+ "capability": "attack-sim",
396
+ "status": "pass",
397
+ "durationMs": 0.4236670000000231,
398
+ "message": "Safe attack simulation found no high-risk MCP attack-readiness findings.",
399
+ "evidence": [
400
+ {
401
+ "endpoint": "attack-sim/safe",
402
+ "advertised": true,
403
+ "responded": true,
404
+ "minimalShapePresent": true,
405
+ "itemCount": 0,
406
+ "identifiers": []
407
+ }
408
+ ]
392
409
  }
393
410
  ],
394
411
  "healthScore": {
@@ -417,7 +434,8 @@
417
434
  "score": 100,
418
435
  "details": [
419
436
  "security-lite: pass (100/100)",
420
- "security: pass (100/100)"
437
+ "security: pass (100/100)",
438
+ "attack-sim: pass (100/100)"
421
439
  ]
422
440
  },
423
441
  {
@@ -435,16 +453,16 @@
435
453
  "weight": 0.1,
436
454
  "score": 100,
437
455
  "details": [
438
- "Connect: 910ms",
439
- "p95 latency: 3ms (3 operations)"
456
+ "Connect: 678ms",
457
+ "p95 latency: 2ms (3 operations)"
440
458
  ]
441
459
  }
442
460
  ]
443
461
  },
444
462
  "performanceMetrics": {
445
- "connectMs": 910.1913339999992,
446
- "toolsListMs": 3.150707999999213,
447
- "promptsListMs": 1.210667000000285,
448
- "resourcesListMs": 0.0029999999997016857
463
+ "connectMs": 678.1046249999999,
464
+ "toolsListMs": 2.4714169999997466,
465
+ "promptsListMs": 1.0759590000006938,
466
+ "resourcesListMs": 0.0035409999991316
449
467
  }
450
468
  }
@@ -1,6 +1,6 @@
1
1
  # MCP Observatory Run Report
2
2
 
3
- Generated at 2026-07-06T01:46:55.135Z
3
+ Generated at 2026-07-06T19:49:48.899Z
4
4
 
5
5
  ## Target and Environment Metadata
6
6
 
@@ -8,8 +8,8 @@ Generated at 2026-07-06T01:46:55.135Z
8
8
  - Adapter: `local-process`
9
9
  - Command: `npx -y promptopia-mcp`
10
10
  - Server: `promptopia-mcp 1.1.0`
11
- - Platform: `darwin 24.0.0`
12
- - Node: `v25.8.1`
11
+ - Platform: `darwin 25.5.0`
12
+ - Node: `v22.22.1`
13
13
 
14
14
  ## Executive Summary
15
15
 
@@ -25,7 +25,7 @@ Generated at 2026-07-06T01:46:55.135Z
25
25
 
26
26
  | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
27
  | --- | --- | --- | --- | --- | --- | --- | --- |
28
- | pass | 7 | 5 | 0 | 1 | 1 | 0 | 0 |
28
+ | pass | 8 | 6 | 0 | 1 | 1 | 0 | 0 |
29
29
 
30
30
  ## At a Glance
31
31
 
@@ -47,16 +47,29 @@ _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 | 1.69 | All 7 conformance checks passed. |
51
- | healthy | prompts | pass | 1.21 | Advertised capability responded with the minimal expected shape (1 item). |
52
- | healthy | security | pass | 0.32 | No security issues detected. |
53
- | healthy | security-lite | pass | 0.03 | No security issues detected (lightweight scan). |
54
- | healthy | tools | pass | 3.15 | Advertised capability responded with the minimal expected shape (7 items). |
55
- | review | schema-quality | partial | 0.74 | Found 1 quality finding(s) across 8 item(s): 0 warnings, 1 info. |
50
+ | healthy | attack-sim | pass | 0.42 | Safe attack simulation found no high-risk MCP attack-readiness findings. |
51
+ | healthy | conformance | pass | 1.59 | All 7 conformance checks passed. |
52
+ | healthy | prompts | pass | 1.08 | Advertised capability responded with the minimal expected shape (1 item). |
53
+ | healthy | security | pass | 0.19 | No security issues detected. |
54
+ | healthy | security-lite | pass | 0.02 | No security issues detected (lightweight scan). |
55
+ | healthy | tools | pass | 2.47 | Advertised capability responded with the minimal expected shape (7 items). |
56
+ | review | schema-quality | partial | 0.59 | Found 1 quality finding(s) across 8 item(s): 0 warnings, 1 info. |
56
57
  | confirm intent | resources | unsupported | 0.00 | Resources are not advertised by the target. |
57
58
 
58
59
  ## Evidence Snippets
59
60
 
61
+ ### attack-sim — pass
62
+
63
+ Summary: Safe attack simulation found no high-risk MCP attack-readiness findings.
64
+
65
+ - Endpoint: `attack-sim/safe`
66
+ - Advertised: `true`
67
+ - Responded: `true`
68
+ - Minimal shape present: `true`
69
+ - Item count: `0`
70
+ - Identifiers: none
71
+ - Diagnostics: none
72
+
60
73
  ### conformance — pass
61
74
 
62
75
  Summary: All 7 conformance checks passed.
@@ -79,7 +92,7 @@ Summary: Advertised capability responded with the minimal expected shape (1 item
79
92
  - Minimal shape present: `true`
80
93
  - Item count: `1`
81
94
  - Identifiers: demo_welcome
82
- - Diagnostics: Watching for changes in prompts directory: /Users/sanghoon/mcp-observatory/examples/promptopia-prompts, promptopia-mcp MCP server running (v1.1.0)
95
+ - Diagnostics: Watching for changes in prompts directory: /Users/williamweishuhn/Documents/New project/mcp-observatory/examples/promptopia-prompts, promptopia-mcp MCP server running (v1.1.0)
83
96
 
84
97
  ### security — pass
85
98
 
@@ -115,7 +128,7 @@ Summary: Advertised capability responded with the minimal expected shape (7 item
115
128
  - Minimal shape present: `true`
116
129
  - Item count: `7`
117
130
  - Identifiers: add_prompt, update_prompt, get_prompt, list_prompts, delete_prompt (+2 more)
118
- - Diagnostics: Watching for changes in prompts directory: /Users/sanghoon/mcp-observatory/examples/promptopia-prompts, promptopia-mcp MCP server running (v1.1.0)
131
+ - Diagnostics: Watching for changes in prompts directory: /Users/williamweishuhn/Documents/New project/mcp-observatory/examples/promptopia-prompts, promptopia-mcp MCP server running (v1.1.0)
119
132
 
120
133
  ### schema-quality — partial
121
134
 
@@ -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-07-06T014655135Z_d970b9ce`
168
+ - Run ID: `run_2026-07-06T194948899Z_ab0f7d29`
156
169
  - Gate: `pass`