@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
@@ -1,6 +1,6 @@
1
1
  # MCP Observatory Run Report
2
2
 
3
- Generated at 2026-07-06T01:46:58.742Z
3
+ Generated at 2026-07-06T19:49:52.194Z
4
4
 
5
5
  ## Target and Environment Metadata
6
6
 
@@ -8,8 +8,8 @@ Generated at 2026-07-06T01:46:58.742Z
8
8
  - Adapter: `local-process`
9
9
  - Command: `npx -y @cyanheads/git-mcp-server`
10
10
  - Server: `@cyanheads/git-mcp-server 2.15.1`
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:46:58.742Z
25
25
 
26
26
  | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
27
  | --- | --- | --- | --- | --- | --- | --- | --- |
28
- | pass | 7 | 4 | 0 | 3 | 0 | 0 | 0 |
28
+ | pass | 8 | 4 | 0 | 4 | 0 | 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 17 quality finding(s) across 30 item(s): 0 warnings, 17 info.; security: Found 19 security finding(s): 0 high, 19 medium, 0 low.; security-lite: Found 19 security finding(s): 0 high, 19 medium, 0 low.
33
+ - Top risks: attack-sim: Safe attack simulation found 19 finding(s): 0 high, 19 medium, 0 low.; schema-quality: Found 17 quality finding(s) across 30 item(s): 0 warnings, 17 info.; security: Found 19 security finding(s): 0 high, 19 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: none
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,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 | 43.66 | All 7 conformance checks passed. |
51
- | healthy | prompts | pass | 0.77 | Advertised capability responded with the minimal expected shape (1 item). |
52
- | healthy | resources | pass | 0.70 | Advertised capability responded with the minimal expected shape (2 items). |
53
- | healthy | tools | pass | 33.99 | Advertised capability responded with the minimal expected shape (28 items). |
54
- | review | schema-quality | partial | 21.67 | Found 17 quality finding(s) across 30 item(s): 0 warnings, 17 info. |
55
- | review | security | partial | 27.04 | Found 19 security finding(s): 0 high, 19 medium, 0 low. |
56
- | review | security-lite | partial | 0.10 | Found 19 security finding(s): 0 high, 19 medium, 0 low. |
50
+ | healthy | conformance | pass | 35.62 | All 7 conformance checks passed. |
51
+ | healthy | prompts | pass | 0.65 | Advertised capability responded with the minimal expected shape (1 item). |
52
+ | healthy | resources | pass | 0.60 | Advertised capability responded with the minimal expected shape (2 items). |
53
+ | healthy | tools | pass | 27.61 | Advertised capability responded with the minimal expected shape (28 items). |
54
+ | review | attack-sim | partial | 18.08 | Safe attack simulation found 19 finding(s): 0 high, 19 medium, 0 low. |
55
+ | review | schema-quality | partial | 17.43 | Found 17 quality finding(s) across 30 item(s): 0 warnings, 17 info. |
56
+ | review | security | partial | 16.14 | Found 19 security finding(s): 0 high, 19 medium, 0 low. |
57
+ | review | security-lite | partial | 0.08 | Found 19 security finding(s): 0 high, 19 medium, 0 low. |
57
58
 
58
59
  ## Evidence Snippets
59
60
 
@@ -79,7 +80,7 @@ Summary: Advertised capability responded with the minimal expected shape (1 item
79
80
  - Minimal shape present: `true`
80
81
  - Item count: `1`
81
82
  - Identifiers: git_wrapup
82
- - Diagnostics: {"level":30,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
83
+ - Diagnostics: {"level":30,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
83
84
 
84
85
  ### resources — pass
85
86
 
@@ -91,14 +92,14 @@ Summary: Advertised capability responded with the minimal expected shape (2 item
91
92
  - Minimal shape present: `true`
92
93
  - Item count: `1`
93
94
  - Identifiers: git://working-directory
94
- - Diagnostics: {"level":30,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
95
+ - Diagnostics: {"level":30,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
95
96
  - Endpoint: `resources/templates/list`
96
97
  - Advertised: `true`
97
98
  - Responded: `true`
98
99
  - Minimal shape present: `true`
99
100
  - Item count: `1`
100
101
  - Identifiers: git://working-directory
101
- - Diagnostics: {"level":30,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783302419905,"env":"development","version":"2.15.1","pid":87344,"transport":"stdio","requestId":"0MOWN-K5EH1","timestamp":"2026-07-06T01:46:59.900Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
102
+ - Diagnostics: {"level":30,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Attempting to connect stdio transport..."}, {"level":20,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Creating StdioServerTransport instance..."}, {"level":20,"time":1783367393061,"env":"development","version":"2.15.1","pid":13590,"transport":"stdio","requestId":"A40P7-B7WJU","timestamp":"2026-07-06T19:49:53.057Z","operation":"connectStdioTransport","transportType":"Stdio","msg":"Connecting McpServer instance to StdioServerTransport..."} (+2 more)
102
103
 
103
104
  ### tools — pass
104
105
 
@@ -112,6 +113,18 @@ Summary: Advertised capability responded with the minimal expected shape (28 ite
112
113
  - Identifiers: git_add, git_blame, git_branch, git_changelog_analyze, git_checkout (+23 more)
113
114
  - Diagnostics: none
114
115
 
116
+ ### attack-sim — partial
117
+
118
+ Summary: Safe attack simulation found 19 finding(s): 0 high, 19 medium, 0 low.
119
+
120
+ - Endpoint: `attack-sim/safe`
121
+ - Advertised: `true`
122
+ - Responded: `true`
123
+ - Minimal shape present: `true`
124
+ - Item count: `19`
125
+ - Identifiers: git_add, git_branch, git_checkout, git_cherry_pick, git_clean (+14 more)
126
+ - Diagnostics: [medium] Tool "git_add" combines broad parameters (path) with destructive or non-read-only behavior., [medium] Tool "git_branch" combines broad parameters (path) with destructive or non-read-only behavior., [medium] Tool "git_checkout" combines broad parameters (path) with destructive or non-read-only behavior. (+16 more)
127
+
115
128
  ### schema-quality — partial
116
129
 
117
130
  Summary: Found 17 quality finding(s) across 30 item(s): 0 warnings, 17 info.
@@ -159,5 +172,5 @@ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
159
172
 
160
173
  - Artifact type: `run`
161
174
  - Schema version: `1.0.0`
162
- - Run ID: `run_2026-07-06T014658742Z_9d713d02`
175
+ - Run ID: `run_2026-07-06T194952194Z_80b1e6dd`
163
176
  - Gate: `pass`
@@ -2,9 +2,9 @@
2
2
  "artifactType": "run",
3
3
  "schemaVersion": "1.0.0",
4
4
  "gate": "pass",
5
- "runId": "run_2026-07-06T014650996Z_273c0c65",
6
- "createdAt": "2026-07-06T01:46:50.997Z",
7
- "toolVersion": "0.26.1",
5
+ "runId": "run_2026-07-06T194944859Z_dd0288c3",
6
+ "createdAt": "2026-07-06T19:49:44.860Z",
7
+ "toolVersion": "0.28.0",
8
8
  "target": {
9
9
  "targetId": "everything-server",
10
10
  "adapter": "local-process",
@@ -25,12 +25,12 @@
25
25
  "serverVersion": "2.0.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": 6,
32
+ "total": 8,
33
+ "pass": 7,
34
34
  "fail": 0,
35
35
  "partial": 1,
36
36
  "unsupported": 0,
@@ -43,7 +43,7 @@
43
43
  "id": "tools",
44
44
  "capability": "tools",
45
45
  "status": "pass",
46
- "durationMs": 7.431291999999985,
46
+ "durationMs": 6.7089169999999285,
47
47
  "message": "Advertised capability responded with the minimal expected shape (13 items).",
48
48
  "evidence": [
49
49
  {
@@ -263,7 +263,7 @@
263
263
  "id": "prompts",
264
264
  "capability": "prompts",
265
265
  "status": "pass",
266
- "durationMs": 0.8740839999999253,
266
+ "durationMs": 0.6612079999999878,
267
267
  "message": "Advertised capability responded with the minimal expected shape (4 items).",
268
268
  "evidence": [
269
269
  {
@@ -288,7 +288,7 @@
288
288
  "id": "resources",
289
289
  "capability": "resources",
290
290
  "status": "pass",
291
- "durationMs": 1.2153749999999945,
291
+ "durationMs": 1.076082999999926,
292
292
  "message": "Advertised capability responded with the minimal expected shape (9 items).",
293
293
  "evidence": [
294
294
  {
@@ -330,7 +330,7 @@
330
330
  "id": "security-lite",
331
331
  "capability": "security-lite",
332
332
  "status": "pass",
333
- "durationMs": 0.5052909999999429,
333
+ "durationMs": 0.5017080000000078,
334
334
  "message": "Found 2 security finding(s): 0 high, 0 medium, 2 low.",
335
335
  "evidence": [
336
336
  {
@@ -368,7 +368,7 @@
368
368
  "id": "conformance",
369
369
  "capability": "conformance",
370
370
  "status": "pass",
371
- "durationMs": 5.802541000000019,
371
+ "durationMs": 3.4615420000000086,
372
372
  "message": "All 7 conformance checks passed.",
373
373
  "evidence": [
374
374
  {
@@ -394,7 +394,7 @@
394
394
  "id": "schema-quality",
395
395
  "capability": "schema-quality",
396
396
  "status": "partial",
397
- "durationMs": 4.454166999999984,
397
+ "durationMs": 1.3427919999999176,
398
398
  "message": "Found 6 quality finding(s) across 24 item(s): 0 warnings, 6 info.",
399
399
  "evidence": [
400
400
  {
@@ -463,7 +463,7 @@
463
463
  "id": "security",
464
464
  "capability": "security",
465
465
  "status": "pass",
466
- "durationMs": 1.5368330000000014,
466
+ "durationMs": 0.8974590000000262,
467
467
  "message": "Found 2 security finding(s): 0 high, 0 medium, 2 low.",
468
468
  "evidence": [
469
469
  {
@@ -496,6 +496,23 @@
496
496
  ]
497
497
  }
498
498
  ]
499
+ },
500
+ {
501
+ "id": "attack-sim",
502
+ "capability": "attack-sim",
503
+ "status": "pass",
504
+ "durationMs": 2.646041999999852,
505
+ "message": "Safe attack simulation found no high-risk MCP attack-readiness findings.",
506
+ "evidence": [
507
+ {
508
+ "endpoint": "attack-sim/safe",
509
+ "advertised": true,
510
+ "responded": true,
511
+ "minimalShapePresent": true,
512
+ "itemCount": 0,
513
+ "identifiers": []
514
+ }
515
+ ]
499
516
  }
500
517
  ],
501
518
  "healthScore": {
@@ -524,7 +541,8 @@
524
541
  "score": 100,
525
542
  "details": [
526
543
  "security-lite: pass (100/100)",
527
- "security: pass (100/100)"
544
+ "security: pass (100/100)",
545
+ "attack-sim: pass (100/100)"
528
546
  ]
529
547
  },
530
548
  {
@@ -542,16 +560,16 @@
542
560
  "weight": 0.1,
543
561
  "score": 100,
544
562
  "details": [
545
- "Connect: 761ms",
563
+ "Connect: 891ms",
546
564
  "p95 latency: 7ms (3 operations)"
547
565
  ]
548
566
  }
549
567
  ]
550
568
  },
551
569
  "performanceMetrics": {
552
- "connectMs": 760.63275,
553
- "toolsListMs": 7.431291999999985,
554
- "promptsListMs": 0.8740839999999253,
555
- "resourcesListMs": 1.2153749999999945
570
+ "connectMs": 890.503833,
571
+ "toolsListMs": 6.7089169999999285,
572
+ "promptsListMs": 0.6612079999999878,
573
+ "resourcesListMs": 1.076082999999926
556
574
  }
557
575
  }
@@ -1,6 +1,6 @@
1
1
  # MCP Observatory Run Report
2
2
 
3
- Generated at 2026-07-06T01:46:50.997Z
3
+ Generated at 2026-07-06T19:49:44.860Z
4
4
 
5
5
  ## Target and Environment Metadata
6
6
 
@@ -8,8 +8,8 @@ Generated at 2026-07-06T01:46:50.997Z
8
8
  - Adapter: `local-process`
9
9
  - Command: `npx -y @modelcontextprotocol/server-everything`
10
10
  - Server: `mcp-servers/everything 2.0.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:50.997Z
25
25
 
26
26
  | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
27
  | --- | --- | --- | --- | --- | --- | --- | --- |
28
- | pass | 7 | 6 | 0 | 1 | 0 | 0 | 0 |
28
+ | pass | 8 | 7 | 0 | 1 | 0 | 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 | 5.80 | All 7 conformance checks passed. |
51
- | healthy | prompts | pass | 0.87 | Advertised capability responded with the minimal expected shape (4 items). |
52
- | healthy | resources | pass | 1.22 | Advertised capability responded with the minimal expected shape (9 items). |
53
- | healthy | security | pass | 1.54 | Found 2 security finding(s): 0 high, 0 medium, 2 low. |
54
- | healthy | security-lite | pass | 0.51 | Found 2 security finding(s): 0 high, 0 medium, 2 low. |
55
- | healthy | tools | pass | 7.43 | Advertised capability responded with the minimal expected shape (13 items). |
56
- | review | schema-quality | partial | 4.45 | Found 6 quality finding(s) across 24 item(s): 0 warnings, 6 info. |
50
+ | healthy | attack-sim | pass | 2.65 | Safe attack simulation found no high-risk MCP attack-readiness findings. |
51
+ | healthy | conformance | pass | 3.46 | All 7 conformance checks passed. |
52
+ | healthy | prompts | pass | 0.66 | Advertised capability responded with the minimal expected shape (4 items). |
53
+ | healthy | resources | pass | 1.08 | Advertised capability responded with the minimal expected shape (9 items). |
54
+ | healthy | security | pass | 0.90 | Found 2 security finding(s): 0 high, 0 medium, 2 low. |
55
+ | healthy | security-lite | pass | 0.50 | Found 2 security finding(s): 0 high, 0 medium, 2 low. |
56
+ | healthy | tools | pass | 6.71 | Advertised capability responded with the minimal expected shape (13 items). |
57
+ | review | schema-quality | partial | 1.34 | Found 6 quality finding(s) across 24 item(s): 0 warnings, 6 info. |
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.
@@ -159,5 +172,5 @@ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
159
172
 
160
173
  - Artifact type: `run`
161
174
  - Schema version: `1.0.0`
162
- - Run ID: `run_2026-07-06T014650996Z_273c0c65`
175
+ - Run ID: `run_2026-07-06T194944859Z_dd0288c3`
163
176
  - Gate: `pass`
@@ -2,9 +2,9 @@
2
2
  "artifactType": "run",
3
3
  "schemaVersion": "1.0.0",
4
4
  "gate": "fail",
5
- "runId": "run_2026-07-06T014705638Z_2fa3564a",
6
- "createdAt": "2026-07-06T01:47:05.638Z",
7
- "toolVersion": "0.26.1",
5
+ "runId": "run_2026-07-06T194957955Z_4eaf8a90",
6
+ "createdAt": "2026-07-06T19:49:57.956Z",
7
+ "toolVersion": "0.28.0",
8
8
  "target": {
9
9
  "targetId": "executeautomation-playwright-server",
10
10
  "adapter": "local-process",
@@ -25,13 +25,13 @@
25
25
  "serverVersion": "1.0.11"
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": 3,
34
- "fail": 2,
34
+ "fail": 3,
35
35
  "partial": 1,
36
36
  "unsupported": 1,
37
37
  "flaky": 0,
@@ -43,7 +43,7 @@
43
43
  "id": "tools",
44
44
  "capability": "tools",
45
45
  "status": "pass",
46
- "durationMs": 1.4651249999988067,
46
+ "durationMs": 1.1761660000011034,
47
47
  "message": "Advertised capability responded with the minimal expected shape (33 items).",
48
48
  "evidence": [
49
49
  {
@@ -746,7 +746,7 @@
746
746
  "id": "prompts",
747
747
  "capability": "prompts",
748
748
  "status": "unsupported",
749
- "durationMs": 0.0007910000003903406,
749
+ "durationMs": 0.0007080000013957033,
750
750
  "message": "Prompts are not advertised by the target.",
751
751
  "evidence": [
752
752
  {
@@ -762,7 +762,7 @@
762
762
  "id": "resources",
763
763
  "capability": "resources",
764
764
  "status": "pass",
765
- "durationMs": 0.7251669999986916,
765
+ "durationMs": 0.6060830000005808,
766
766
  "message": "Advertised capability responded with the minimal expected shape, but one optional resource endpoint appears unsupported.",
767
767
  "evidence": [
768
768
  {
@@ -791,7 +791,7 @@
791
791
  "id": "security-lite",
792
792
  "capability": "security-lite",
793
793
  "status": "fail",
794
- "durationMs": 0.06308300000091549,
794
+ "durationMs": 0.05783300000075542,
795
795
  "message": "Found 1 security finding(s): 1 high, 0 medium, 0 low.",
796
796
  "evidence": [
797
797
  {
@@ -821,7 +821,7 @@
821
821
  "id": "conformance",
822
822
  "capability": "conformance",
823
823
  "status": "pass",
824
- "durationMs": 2.7162499999994907,
824
+ "durationMs": 2.294624999998632,
825
825
  "message": "All 7 conformance checks passed.",
826
826
  "evidence": [
827
827
  {
@@ -847,7 +847,7 @@
847
847
  "id": "schema-quality",
848
848
  "capability": "schema-quality",
849
849
  "status": "partial",
850
- "durationMs": 0.7485839999990276,
850
+ "durationMs": 0.6172920000008162,
851
851
  "message": "Found 1 quality finding(s) across 34 item(s): 1 warnings, 0 info.",
852
852
  "evidence": [
853
853
  {
@@ -877,7 +877,7 @@
877
877
  "id": "security",
878
878
  "capability": "security",
879
879
  "status": "fail",
880
- "durationMs": 0.4188750000012078,
880
+ "durationMs": 0.2935410000009142,
881
881
  "message": "Found 1 security finding(s): 1 high, 0 medium, 0 low.",
882
882
  "evidence": [
883
883
  {
@@ -902,6 +902,140 @@
902
902
  ]
903
903
  }
904
904
  ]
905
+ },
906
+ {
907
+ "id": "attack-sim",
908
+ "capability": "attack-sim",
909
+ "status": "fail",
910
+ "durationMs": 1.4405839999999444,
911
+ "message": "Safe attack simulation found 6 finding(s): 1 high, 5 medium, 0 low.",
912
+ "evidence": [
913
+ {
914
+ "endpoint": "attack-sim/safe",
915
+ "advertised": true,
916
+ "responded": true,
917
+ "minimalShapePresent": true,
918
+ "itemCount": 6,
919
+ "identifiers": [
920
+ "playwright_upload_file",
921
+ "playwright_evaluate",
922
+ "playwright_post",
923
+ "playwright_put",
924
+ "playwright_patch",
925
+ "playwright_delete"
926
+ ],
927
+ "diagnostics": [
928
+ "[medium] Tool \"playwright_upload_file\" combines broad parameters (filePath) with destructive or non-read-only behavior.",
929
+ "[high] Tool \"playwright_evaluate\" combines broad parameters (script) with destructive or non-read-only behavior.",
930
+ "[medium] Tool \"playwright_post\" combines broad parameters (url, headers) with destructive or non-read-only behavior.",
931
+ "[medium] Tool \"playwright_put\" combines broad parameters (url, headers) with destructive or non-read-only behavior.",
932
+ "[medium] Tool \"playwright_patch\" combines broad parameters (url, headers) with destructive or non-read-only behavior.",
933
+ "[medium] Tool \"playwright_delete\" combines broad parameters (url, headers) with destructive or non-read-only behavior."
934
+ ],
935
+ "findings": [
936
+ {
937
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
938
+ "attackClass": "permission-boundary",
939
+ "severity": "medium",
940
+ "itemType": "tool",
941
+ "itemName": "playwright_upload_file",
942
+ "message": "Tool \"playwright_upload_file\" combines broad parameters (filePath) with destructive or non-read-only behavior.",
943
+ "evidence": {
944
+ "broadParams": [
945
+ "filePath"
946
+ ],
947
+ "description": "Upload a file to an input[type='file'] element on the page"
948
+ },
949
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
950
+ "recommendedAction": "gate"
951
+ },
952
+ {
953
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
954
+ "attackClass": "permission-boundary",
955
+ "severity": "high",
956
+ "itemType": "tool",
957
+ "itemName": "playwright_evaluate",
958
+ "message": "Tool \"playwright_evaluate\" combines broad parameters (script) with destructive or non-read-only behavior.",
959
+ "evidence": {
960
+ "broadParams": [
961
+ "script"
962
+ ],
963
+ "description": "Execute JavaScript in the browser console"
964
+ },
965
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
966
+ "recommendedAction": "quarantine"
967
+ },
968
+ {
969
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
970
+ "attackClass": "permission-boundary",
971
+ "severity": "medium",
972
+ "itemType": "tool",
973
+ "itemName": "playwright_post",
974
+ "message": "Tool \"playwright_post\" combines broad parameters (url, headers) with destructive or non-read-only behavior.",
975
+ "evidence": {
976
+ "broadParams": [
977
+ "url",
978
+ "headers"
979
+ ],
980
+ "description": "Perform an HTTP POST request"
981
+ },
982
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
983
+ "recommendedAction": "gate"
984
+ },
985
+ {
986
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
987
+ "attackClass": "permission-boundary",
988
+ "severity": "medium",
989
+ "itemType": "tool",
990
+ "itemName": "playwright_put",
991
+ "message": "Tool \"playwright_put\" combines broad parameters (url, headers) with destructive or non-read-only behavior.",
992
+ "evidence": {
993
+ "broadParams": [
994
+ "url",
995
+ "headers"
996
+ ],
997
+ "description": "Perform an HTTP PUT request"
998
+ },
999
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
1000
+ "recommendedAction": "gate"
1001
+ },
1002
+ {
1003
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
1004
+ "attackClass": "permission-boundary",
1005
+ "severity": "medium",
1006
+ "itemType": "tool",
1007
+ "itemName": "playwright_patch",
1008
+ "message": "Tool \"playwright_patch\" combines broad parameters (url, headers) with destructive or non-read-only behavior.",
1009
+ "evidence": {
1010
+ "broadParams": [
1011
+ "url",
1012
+ "headers"
1013
+ ],
1014
+ "description": "Perform an HTTP PATCH request"
1015
+ },
1016
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
1017
+ "recommendedAction": "gate"
1018
+ },
1019
+ {
1020
+ "ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
1021
+ "attackClass": "permission-boundary",
1022
+ "severity": "medium",
1023
+ "itemType": "tool",
1024
+ "itemName": "playwright_delete",
1025
+ "message": "Tool \"playwright_delete\" combines broad parameters (url, headers) with destructive or non-read-only behavior.",
1026
+ "evidence": {
1027
+ "broadParams": [
1028
+ "url",
1029
+ "headers"
1030
+ ],
1031
+ "description": "Perform an HTTP DELETE request"
1032
+ },
1033
+ "recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
1034
+ "recommendedAction": "gate"
1035
+ }
1036
+ ]
1037
+ }
1038
+ ]
905
1039
  }
906
1040
  ],
907
1041
  "healthScore": {
@@ -930,7 +1064,8 @@
930
1064
  "score": 0,
931
1065
  "details": [
932
1066
  "security-lite: fail (0/100)",
933
- "security: fail (0/100)"
1067
+ "security: fail (0/100)",
1068
+ "attack-sim: fail (0/100)"
934
1069
  ]
935
1070
  },
936
1071
  {
@@ -948,16 +1083,16 @@
948
1083
  "weight": 0.1,
949
1084
  "score": 100,
950
1085
  "details": [
951
- "Connect: 850ms",
1086
+ "Connect: 908ms",
952
1087
  "p95 latency: 1ms (3 operations)"
953
1088
  ]
954
1089
  }
955
1090
  ]
956
1091
  },
957
1092
  "performanceMetrics": {
958
- "connectMs": 850.0112910000007,
959
- "toolsListMs": 1.4651249999988067,
960
- "promptsListMs": 0.0007910000003903406,
961
- "resourcesListMs": 0.7251669999986916
1093
+ "connectMs": 907.6346670000003,
1094
+ "toolsListMs": 1.1761660000011034,
1095
+ "promptsListMs": 0.0007080000013957033,
1096
+ "resourcesListMs": 0.6060830000005808
962
1097
  }
963
1098
  }