@kryptosai/mcp-observatory 1.31.0 → 1.32.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 (151) hide show
  1. package/PRIVACY.md +16 -0
  2. package/README.md +5 -11
  3. package/README.zh-CN.md +4 -10
  4. package/dist/src/cli.js +4 -2
  5. package/dist/src/cli.js.map +1 -1
  6. package/dist/src/commands/diff.js +24 -2
  7. package/dist/src/commands/diff.js.map +1 -1
  8. package/dist/src/commands/enforce.d.ts +2 -2
  9. package/dist/src/commands/enforce.js +5 -8
  10. package/dist/src/commands/enforce.js.map +1 -1
  11. package/dist/src/commands/scan.js.map +1 -1
  12. package/dist/src/commands/telemetry.js +41 -1
  13. package/dist/src/commands/telemetry.js.map +1 -1
  14. package/dist/src/commands/test.js +2 -2
  15. package/dist/src/commands/test.js.map +1 -1
  16. package/dist/src/diff.d.ts +5 -2
  17. package/dist/src/diff.js +23 -2
  18. package/dist/src/diff.js.map +1 -1
  19. package/dist/src/index.d.ts +1 -0
  20. package/dist/src/index.js +1 -0
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/permission-delta.d.ts +2 -0
  23. package/dist/src/permission-delta.js +99 -0
  24. package/dist/src/permission-delta.js.map +1 -0
  25. package/dist/src/reporters/common.d.ts +1 -0
  26. package/dist/src/reporters/common.js +3 -1
  27. package/dist/src/reporters/common.js.map +1 -1
  28. package/dist/src/reporters/html.js +30 -1
  29. package/dist/src/reporters/html.js.map +1 -1
  30. package/dist/src/reporters/markdown.js +21 -2
  31. package/dist/src/reporters/markdown.js.map +1 -1
  32. package/dist/src/reporters/pr-comment.js +1 -1
  33. package/dist/src/reporters/pr-comment.js.map +1 -1
  34. package/dist/src/reporters/terminal.js +9 -3
  35. package/dist/src/reporters/terminal.js.map +1 -1
  36. package/dist/src/risk-taxonomy.d.ts +16 -0
  37. package/dist/src/risk-taxonomy.js +95 -0
  38. package/dist/src/risk-taxonomy.js.map +1 -0
  39. package/dist/src/schema-diff.d.ts +2 -1
  40. package/dist/src/schema-diff.js +28 -3
  41. package/dist/src/schema-diff.js.map +1 -1
  42. package/dist/src/telemetry.d.ts +17 -0
  43. package/dist/src/telemetry.js +70 -2
  44. package/dist/src/telemetry.js.map +1 -1
  45. package/dist/src/types.d.ts +15 -0
  46. package/dist/src/validate.js +44 -2
  47. package/dist/src/validate.js.map +1 -1
  48. package/docs/mcp-server-safety-index.md +77 -15
  49. package/docs/safety-index/artifacts/antv-chart-server.json +1452 -19
  50. package/docs/safety-index/artifacts/antv-chart-server.md +156 -10
  51. package/docs/safety-index/artifacts/brave-search-server.json +341 -0
  52. package/docs/safety-index/artifacts/brave-search-server.md +201 -0
  53. package/docs/safety-index/artifacts/browsermcp-server.json +83 -18
  54. package/docs/safety-index/artifacts/browsermcp-server.md +46 -12
  55. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.json +592 -21
  56. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.md +96 -14
  57. package/docs/safety-index/artifacts/clay-server.json +66 -0
  58. package/docs/safety-index/artifacts/clay-server.md +106 -0
  59. package/docs/safety-index/artifacts/cloudflare-server.json +66 -0
  60. package/docs/safety-index/artifacts/cloudflare-server.md +106 -0
  61. package/docs/safety-index/artifacts/context7-server.json +85 -18
  62. package/docs/safety-index/artifacts/context7-server.md +52 -11
  63. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +1565 -34
  64. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +178 -17
  65. package/docs/safety-index/artifacts/docker-server.json +395 -0
  66. package/docs/safety-index/artifacts/docker-server.md +204 -0
  67. package/docs/safety-index/artifacts/everything-server.json +145 -18
  68. package/docs/safety-index/artifacts/everything-server.md +56 -11
  69. package/docs/safety-index/artifacts/exa-server.json +400 -0
  70. package/docs/safety-index/artifacts/exa-server.md +207 -0
  71. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +625 -18
  72. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +95 -11
  73. package/docs/safety-index/artifacts/fetch-server.json +66 -0
  74. package/docs/safety-index/artifacts/fetch-server.md +106 -0
  75. package/docs/safety-index/artifacts/figma-server.json +1766 -0
  76. package/docs/safety-index/artifacts/figma-server.md +256 -0
  77. package/docs/safety-index/artifacts/filesystem-mcp-server.json +428 -24
  78. package/docs/safety-index/artifacts/filesystem-mcp-server.md +75 -14
  79. package/docs/safety-index/artifacts/filesystem-server.json +426 -22
  80. package/docs/safety-index/artifacts/filesystem-server.md +73 -12
  81. package/docs/safety-index/artifacts/firecrawl-server.json +4056 -0
  82. package/docs/safety-index/artifacts/firecrawl-server.md +243 -0
  83. package/docs/safety-index/artifacts/github-mcp-server.json +374 -21
  84. package/docs/safety-index/artifacts/github-mcp-server.md +71 -15
  85. package/docs/safety-index/artifacts/gitlab-server.json +229 -0
  86. package/docs/safety-index/artifacts/gitlab-server.md +753 -0
  87. package/docs/safety-index/artifacts/gmail-server.json +66 -0
  88. package/docs/safety-index/artifacts/gmail-server.md +106 -0
  89. package/docs/safety-index/artifacts/google-calendar-server.json +66 -0
  90. package/docs/safety-index/artifacts/google-calendar-server.md +106 -0
  91. package/docs/safety-index/artifacts/google-drive-server.json +66 -0
  92. package/docs/safety-index/artifacts/google-drive-server.md +106 -0
  93. package/docs/safety-index/artifacts/google-sheets-server.json +66 -0
  94. package/docs/safety-index/artifacts/google-sheets-server.md +106 -0
  95. package/docs/safety-index/artifacts/google-tasks-server.json +66 -0
  96. package/docs/safety-index/artifacts/google-tasks-server.md +106 -0
  97. package/docs/safety-index/artifacts/huggingface-server.json +66 -0
  98. package/docs/safety-index/artifacts/huggingface-server.md +106 -0
  99. package/docs/safety-index/artifacts/jina-server.json +66 -0
  100. package/docs/safety-index/artifacts/jina-server.md +106 -0
  101. package/docs/safety-index/artifacts/kubernetes-server.json +1054 -27
  102. package/docs/safety-index/artifacts/kubernetes-server.md +137 -18
  103. package/docs/safety-index/artifacts/linear-server.json +1494 -0
  104. package/docs/safety-index/artifacts/linear-server.md +237 -0
  105. package/docs/safety-index/artifacts/memory-server.json +191 -18
  106. package/docs/safety-index/artifacts/memory-server.md +51 -9
  107. package/docs/safety-index/artifacts/mongodb-server.json +66 -0
  108. package/docs/safety-index/artifacts/mongodb-server.md +106 -0
  109. package/docs/safety-index/artifacts/neon-server.json +66 -0
  110. package/docs/safety-index/artifacts/neon-server.md +103 -0
  111. package/docs/safety-index/artifacts/notion-server.json +7151 -0
  112. package/docs/safety-index/artifacts/notion-server.md +236 -0
  113. package/docs/safety-index/artifacts/onesignal-server.json +66 -0
  114. package/docs/safety-index/artifacts/onesignal-server.md +106 -0
  115. package/docs/safety-index/artifacts/opentofu-server.json +31 -19
  116. package/docs/safety-index/artifacts/opentofu-server.md +28 -10
  117. package/docs/safety-index/artifacts/playwright-mcp-server.json +415 -24
  118. package/docs/safety-index/artifacts/playwright-mcp-server.md +84 -20
  119. package/docs/safety-index/artifacts/postgres-server.json +330 -0
  120. package/docs/safety-index/artifacts/postgres-server.md +208 -0
  121. package/docs/safety-index/artifacts/promptopia-server.json +96 -19
  122. package/docs/safety-index/artifacts/promptopia-server.md +43 -9
  123. package/docs/safety-index/artifacts/puppeteer-server.json +118 -29
  124. package/docs/safety-index/artifacts/puppeteer-server.md +61 -19
  125. package/docs/safety-index/artifacts/qdrant-server.json +66 -0
  126. package/docs/safety-index/artifacts/qdrant-server.md +106 -0
  127. package/docs/safety-index/artifacts/reddit-server.json +66 -0
  128. package/docs/safety-index/artifacts/reddit-server.md +106 -0
  129. package/docs/safety-index/artifacts/ref-tools-server.json +95 -18
  130. package/docs/safety-index/artifacts/ref-tools-server.md +45 -12
  131. package/docs/safety-index/artifacts/sentry-server.json +66 -0
  132. package/docs/safety-index/artifacts/sentry-server.md +106 -0
  133. package/docs/safety-index/artifacts/sequential-thinking-server.json +59 -18
  134. package/docs/safety-index/artifacts/sequential-thinking-server.md +41 -9
  135. package/docs/safety-index/artifacts/slack-server.json +66 -0
  136. package/docs/safety-index/artifacts/slack-server.md +102 -0
  137. package/docs/safety-index/artifacts/sqlite-server.json +67 -0
  138. package/docs/safety-index/artifacts/sqlite-server.md +106 -0
  139. package/docs/safety-index/artifacts/stripe-server.json +66 -0
  140. package/docs/safety-index/artifacts/stripe-server.md +106 -0
  141. package/docs/safety-index/artifacts/supabase-server.json +66 -0
  142. package/docs/safety-index/artifacts/supabase-server.md +102 -0
  143. package/docs/safety-index/artifacts/tavily-search-server.json +66 -0
  144. package/docs/safety-index/artifacts/tavily-search-server.md +106 -0
  145. package/docs/safety-index/artifacts/ui5-mcp-server.json +842 -0
  146. package/docs/safety-index/artifacts/ui5-mcp-server.md +232 -0
  147. package/docs/safety-index/artifacts/vercel-ai-server.json +66 -0
  148. package/docs/safety-index/artifacts/vercel-ai-server.md +106 -0
  149. package/docs/safety-index/targets.json +552 -0
  150. package/package.json +1 -1
  151. package/schemas/run-artifact.schema.json +56 -1
@@ -0,0 +1,204 @@
1
+ # MCP Observatory Run Report
2
+
3
+ Generated at 2026-07-12T23:44:29.245Z
4
+
5
+ ## Target and Environment Metadata
6
+
7
+ - Target: `docker-server`
8
+ - Adapter: `local-process`
9
+ - Command: `npx -y mcp-server-docker`
10
+ - Server: `mcp-server-docker 1.0.0`
11
+ - Platform: `darwin 25.5.0`
12
+ - Node: `v22.22.1`
13
+
14
+ ## Executive Summary
15
+
16
+ **Health Score: 73/100 (C)**
17
+
18
+ | Dimension | Score | Weight |
19
+ | --- | --- | --- |
20
+ | Protocol Compliance | 100/100 | 30% |
21
+ | Schema Quality | 100/100 | 20% |
22
+ | Security | 0/100 | 20% |
23
+ | Reliability | 67/100 | 20% |
24
+ | Performance | 100/100 | 10% |
25
+
26
+ | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
+ | --- | --- | --- | --- | --- | --- | --- | --- |
28
+ | fail | 9 | 3 | 3 | 1 | 2 | 0 | 0 |
29
+
30
+ ## At a Glance
31
+
32
+ - Safety verdict: **Blocked** — One or more checks can break agent dependence and should be fixed before production use.
33
+ - Top risks: runtime-profile: Detected 0 potential egress target(s) and 4 potential state mutation(s) with high confidence.; attack-sim: Safe attack simulation found 1 finding(s): 1 high, 0 medium, 0 low.; security: Found 1 security finding(s): 1 high, 0 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: security-lite, security, attack-sim
36
+ - Partial or flaky checks: runtime-profile
37
+ - Skipped checks: none
38
+ - Unsupported checks: prompts, resources
39
+ - Suggested next step: Start with the failing checks: security-lite, security, attack-sim.
40
+ - CI next step: `Add CI: npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y <server-package>"`
41
+
42
+ ## What Was Not Tested
43
+
44
+ - 🔒 network_egress: No outbound network calls were attempted during scan
45
+ - 🔒 filesystem_mutation: Filesystem write operations were not exercised
46
+ - â„šī¸ credential_access: Credential scanning was performed (see security findings)
47
+ - â„šī¸ destructive_payloads: Destructive payloads were not attempted (safe-mode only)
48
+
49
+ ## Runtime Profile
50
+
51
+ ### State Mutations
52
+
53
+ The following state-modifying operations were identified from tool schemas:
54
+
55
+ | Resource | Operation | Scope | Source |
56
+ | --- | --- | --- | --- |
57
+ | network | execute | specific_path | tool_schema |
58
+ | filesystem | write | working_directory | description_analysis |
59
+ | filesystem | write | working_directory | description_analysis |
60
+ | filesystem | execute | working_directory | description_analysis |
61
+
62
+ _Analyzed at 2026-07-12T23:44:29.940Z_
63
+
64
+ ## Regressions and Recoveries
65
+
66
+ _Use the `diff` command against another run artifact to classify regressions and recoveries over time._
67
+
68
+ ## Full Capability Status Table
69
+
70
+ | Focus | Check | Status | Duration (ms) | Message |
71
+ | --- | --- | --- | --- | --- |
72
+ | healthy | conformance | pass | 0.54 | All 7 conformance checks passed. |
73
+ | healthy | schema-quality | pass | 0.23 | All 1 item(s) have good schema quality. |
74
+ | healthy | tools | pass | 0.43 | Advertised capability responded with the minimal expected shape (1 item). |
75
+ | review | runtime-profile | partial | 0.04 | Detected 0 potential egress target(s) and 4 potential state mutation(s) with high confidence. |
76
+ | confirm intent | prompts | unsupported | 0.00 | Prompts are not advertised by the target. |
77
+ | confirm intent | resources | unsupported | 0.00 | Resources are not advertised by the target. |
78
+ | act now | attack-sim | fail | 0.22 | Safe attack simulation found 1 finding(s): 1 high, 0 medium, 0 low. |
79
+ | act now | security | fail | 0.13 | Found 1 security finding(s): 1 high, 0 medium, 0 low. |
80
+ | act now | security-lite | fail | 0.01 | Found 1 security finding(s): 1 high, 0 medium, 0 low. |
81
+
82
+ ## Evidence Snippets
83
+
84
+ ### conformance — pass
85
+
86
+ Summary: All 7 conformance checks passed.
87
+
88
+ - Endpoint: `conformance/check`
89
+ - Advertised: `true`
90
+ - Responded: `true`
91
+ - Minimal shape present: `true`
92
+ - Item count: `7`
93
+ - Identifiers: none
94
+ - Diagnostics: [pass] capabilities-present: Server returned capabilities object., [pass] server-info: Server provided initialization info., [pass] tools-capability-match: tools/list returned 1 tool(s). (+4 more)
95
+
96
+ ### schema-quality — pass
97
+
98
+ Summary: All 1 item(s) have good schema quality.
99
+
100
+ - Endpoint: `schema-quality/scan`
101
+ - Advertised: `true`
102
+ - Responded: `true`
103
+ - Minimal shape present: `true`
104
+ - Item count: `0`
105
+ - Identifiers: none
106
+ - Diagnostics: none
107
+
108
+ ### tools — pass
109
+
110
+ Summary: Advertised capability responded with the minimal expected shape (1 item).
111
+
112
+ - Endpoint: `tools/list`
113
+ - Advertised: `true`
114
+ - Responded: `true`
115
+ - Minimal shape present: `true`
116
+ - Item count: `1`
117
+ - Identifiers: run_command
118
+ - Diagnostics: Warning: No allowed containers specified in ALLOWED_CONTAINERS environment variable, MCP Server Docker started, Default service: laravel_app (+1 more)
119
+
120
+ ### runtime-profile — partial
121
+
122
+ Summary: Detected 0 potential egress target(s) and 4 potential state mutation(s) with high confidence.
123
+
124
+ - Endpoint: `runtime-profile/analyze`
125
+ - Advertised: `true`
126
+ - Responded: `true`
127
+ - Minimal shape present: `true`
128
+ - Item count: `4`
129
+ - Identifiers: none
130
+ - Diagnostics: Egress entries: 0, State mutations: 4, Confidence: high
131
+
132
+ ### prompts — unsupported
133
+
134
+ Summary: Prompts are not advertised by the target.
135
+
136
+ - Endpoint: `prompts/list`
137
+ - Advertised: `false`
138
+ - Responded: `false`
139
+ - Minimal shape present: `false`
140
+ - Item count: `0`
141
+ - Identifiers: none
142
+ - Diagnostics: none
143
+
144
+ ### resources — unsupported
145
+
146
+ Summary: Resources are not advertised by the target.
147
+
148
+ - Endpoint: `resources/list | resources/templates/list`
149
+ - Advertised: `false`
150
+ - Responded: `false`
151
+ - Minimal shape present: `false`
152
+ - Item count: `0`
153
+ - Identifiers: none
154
+ - Diagnostics: none
155
+
156
+ ### attack-sim — fail
157
+
158
+ Summary: Safe attack simulation found 1 finding(s): 1 high, 0 medium, 0 low.
159
+
160
+ - Endpoint: `attack-sim/safe`
161
+ - Advertised: `true`
162
+ - Responded: `true`
163
+ - Minimal shape present: `true`
164
+ - Item count: `1`
165
+ - Identifiers: run_command
166
+ - Diagnostics: [high] Tool "run_command" combines broad parameters (command) with destructive or non-read-only behavior.
167
+
168
+ ### security — fail
169
+
170
+ Summary: Found 1 security finding(s): 1 high, 0 medium, 0 low.
171
+
172
+ - Endpoint: `security/scan`
173
+ - Advertised: `true`
174
+ - Responded: `true`
175
+ - Minimal shape present: `true`
176
+ - Item count: `1`
177
+ - Identifiers: run_command
178
+ - Diagnostics: [high] Tool "run_command" has parameter "command" which may allow arbitrary command execution.
179
+
180
+ ### security-lite — fail
181
+
182
+ Summary: Found 1 security finding(s): 1 high, 0 medium, 0 low.
183
+
184
+ - Endpoint: `security/scan-lite`
185
+ - Advertised: `true`
186
+ - Responded: `true`
187
+ - Minimal shape present: `true`
188
+ - Item count: `1`
189
+ - Identifiers: run_command
190
+ - Diagnostics: [high] Tool "run_command" has parameter "command" which may allow arbitrary command execution.
191
+
192
+ ## Reproduction Commands
193
+
194
+ ```bash
195
+ npm run cli -- run --target <path-to-target-config.json>
196
+ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
197
+ ```
198
+
199
+ ## Artifact Provenance
200
+
201
+ - Artifact type: `run`
202
+ - Schema version: `1.0.0`
203
+ - Run ID: `run_2026-07-12T234429245Z_f8164ad4`
204
+ - 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-06T194944859Z_dd0288c3",
6
- "createdAt": "2026-07-06T19:49:44.860Z",
7
- "toolVersion": "0.28.0",
5
+ "runId": "run_2026-07-12T234353421Z_9a98b63f",
6
+ "createdAt": "2026-07-12T23:43:53.422Z",
7
+ "toolVersion": "1.31.0",
8
8
  "target": {
9
9
  "targetId": "everything-server",
10
10
  "adapter": "local-process",
@@ -29,8 +29,8 @@
29
29
  "nodeVersion": "v22.22.1"
30
30
  },
31
31
  "summary": {
32
- "total": 8,
33
- "pass": 7,
32
+ "total": 9,
33
+ "pass": 8,
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": 6.7089169999999285,
46
+ "durationMs": 6.87154200000009,
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.6612079999999878,
266
+ "durationMs": 0.8323330000000624,
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.076082999999926,
291
+ "durationMs": 1.4902090000000499,
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.5017080000000078,
333
+ "durationMs": 0.5924159999999574,
334
334
  "message": "Found 2 security finding(s): 0 high, 0 medium, 2 low.",
335
335
  "evidence": [
336
336
  {
@@ -364,11 +364,82 @@
364
364
  }
365
365
  ]
366
366
  },
367
+ {
368
+ "id": "runtime-profile",
369
+ "capability": "runtime-profile",
370
+ "status": "pass",
371
+ "durationMs": 1.168333999999959,
372
+ "message": "Detected 1 potential egress target(s) and 7 potential state mutation(s) with low confidence.",
373
+ "evidence": [
374
+ {
375
+ "endpoint": "runtime-profile/analyze",
376
+ "advertised": true,
377
+ "responded": true,
378
+ "minimalShapePresent": true,
379
+ "itemCount": 8,
380
+ "diagnostics": [
381
+ "Egress entries: 1",
382
+ "State mutations: 7",
383
+ "Confidence: medium"
384
+ ],
385
+ "findings": [
386
+ {
387
+ "target": "URL or data URI of the file content to compress",
388
+ "protocol": "unknown",
389
+ "source": "description_analysis",
390
+ "confidence": "medium"
391
+ },
392
+ {
393
+ "resource": "filesystem",
394
+ "operation": "write",
395
+ "scope": "working_directory",
396
+ "source": "description_analysis"
397
+ },
398
+ {
399
+ "resource": "filesystem",
400
+ "operation": "write",
401
+ "scope": "working_directory",
402
+ "source": "description_analysis"
403
+ },
404
+ {
405
+ "resource": "filesystem",
406
+ "operation": "write",
407
+ "scope": "working_directory",
408
+ "source": "description_analysis"
409
+ },
410
+ {
411
+ "resource": "filesystem",
412
+ "operation": "write",
413
+ "scope": "working_directory",
414
+ "source": "description_analysis"
415
+ },
416
+ {
417
+ "resource": "filesystem",
418
+ "operation": "write",
419
+ "scope": "working_directory",
420
+ "source": "description_analysis"
421
+ },
422
+ {
423
+ "resource": "filesystem",
424
+ "operation": "write",
425
+ "scope": "working_directory",
426
+ "source": "description_analysis"
427
+ },
428
+ {
429
+ "resource": "filesystem",
430
+ "operation": "execute",
431
+ "scope": "working_directory",
432
+ "source": "description_analysis"
433
+ }
434
+ ]
435
+ }
436
+ ]
437
+ },
367
438
  {
368
439
  "id": "conformance",
369
440
  "capability": "conformance",
370
441
  "status": "pass",
371
- "durationMs": 3.4615420000000086,
442
+ "durationMs": 3.8792909999999665,
372
443
  "message": "All 7 conformance checks passed.",
373
444
  "evidence": [
374
445
  {
@@ -394,7 +465,7 @@
394
465
  "id": "schema-quality",
395
466
  "capability": "schema-quality",
396
467
  "status": "partial",
397
- "durationMs": 1.3427919999999176,
468
+ "durationMs": 1.3700000000001182,
398
469
  "message": "Found 6 quality finding(s) across 24 item(s): 0 warnings, 6 info.",
399
470
  "evidence": [
400
471
  {
@@ -463,7 +534,7 @@
463
534
  "id": "security",
464
535
  "capability": "security",
465
536
  "status": "pass",
466
- "durationMs": 0.8974590000000262,
537
+ "durationMs": 0.9176660000000538,
467
538
  "message": "Found 2 security finding(s): 0 high, 0 medium, 2 low.",
468
539
  "evidence": [
469
540
  {
@@ -501,7 +572,7 @@
501
572
  "id": "attack-sim",
502
573
  "capability": "attack-sim",
503
574
  "status": "pass",
504
- "durationMs": 2.646041999999852,
575
+ "durationMs": 2.7484170000000177,
505
576
  "message": "Safe attack simulation found no high-risk MCP attack-readiness findings.",
506
577
  "evidence": [
507
578
  {
@@ -560,16 +631,72 @@
560
631
  "weight": 0.1,
561
632
  "score": 100,
562
633
  "details": [
563
- "Connect: 891ms",
634
+ "Connect: 1018ms",
564
635
  "p95 latency: 7ms (3 operations)"
565
636
  ]
566
637
  }
567
638
  ]
568
639
  },
569
640
  "performanceMetrics": {
570
- "connectMs": 890.503833,
571
- "toolsListMs": 6.7089169999999285,
572
- "promptsListMs": 0.6612079999999878,
573
- "resourcesListMs": 1.076082999999926
641
+ "connectMs": 1018.1313339999999,
642
+ "toolsListMs": 6.87154200000009,
643
+ "promptsListMs": 0.8323330000000624,
644
+ "resourcesListMs": 1.4902090000000499
645
+ },
646
+ "runtimeProfile": {
647
+ "egress": [
648
+ {
649
+ "target": "URL or data URI of the file content to compress",
650
+ "protocol": "unknown",
651
+ "source": "description_analysis",
652
+ "confidence": "medium"
653
+ }
654
+ ],
655
+ "stateMutations": [
656
+ {
657
+ "resource": "filesystem",
658
+ "operation": "write",
659
+ "scope": "working_directory",
660
+ "source": "description_analysis"
661
+ },
662
+ {
663
+ "resource": "filesystem",
664
+ "operation": "write",
665
+ "scope": "working_directory",
666
+ "source": "description_analysis"
667
+ },
668
+ {
669
+ "resource": "filesystem",
670
+ "operation": "write",
671
+ "scope": "working_directory",
672
+ "source": "description_analysis"
673
+ },
674
+ {
675
+ "resource": "filesystem",
676
+ "operation": "write",
677
+ "scope": "working_directory",
678
+ "source": "description_analysis"
679
+ },
680
+ {
681
+ "resource": "filesystem",
682
+ "operation": "write",
683
+ "scope": "working_directory",
684
+ "source": "description_analysis"
685
+ },
686
+ {
687
+ "resource": "filesystem",
688
+ "operation": "write",
689
+ "scope": "working_directory",
690
+ "source": "description_analysis"
691
+ },
692
+ {
693
+ "resource": "filesystem",
694
+ "operation": "execute",
695
+ "scope": "working_directory",
696
+ "source": "description_analysis"
697
+ }
698
+ ],
699
+ "analyzedAt": "2026-07-12T23:43:54.455Z",
700
+ "confidence": "medium"
574
701
  }
575
702
  }
@@ -1,6 +1,6 @@
1
1
  # MCP Observatory Run Report
2
2
 
3
- Generated at 2026-07-06T19:49:44.860Z
3
+ Generated at 2026-07-12T23:43:53.422Z
4
4
 
5
5
  ## Target and Environment Metadata
6
6
 
@@ -25,7 +25,7 @@ Generated at 2026-07-06T19:49:44.860Z
25
25
 
26
26
  | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
27
  | --- | --- | --- | --- | --- | --- | --- | --- |
28
- | pass | 8 | 7 | 0 | 1 | 0 | 0 | 0 |
28
+ | pass | 9 | 8 | 0 | 1 | 0 | 0 | 0 |
29
29
 
30
30
  ## At a Glance
31
31
 
@@ -39,6 +39,38 @@ Generated at 2026-07-06T19:49:44.860Z
39
39
  - Suggested next step: Review the caveated checks next: schema-quality.
40
40
  - CI next step: `Add CI: npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y <server-package>"`
41
41
 
42
+ ## What Was Not Tested
43
+
44
+ - 🔒 network_egress: No outbound network calls were attempted during scan
45
+ - â„šī¸ credential_access: Credential scanning was performed (see security findings)
46
+ - â„šī¸ destructive_payloads: Destructive payloads were not attempted (safe-mode only)
47
+
48
+ ## Runtime Profile
49
+
50
+ ### Egress Manifest
51
+
52
+ The following targets were identified as potentially reachable by this server (confidence: **medium**):
53
+
54
+ | Target | Protocol | Source | Confidence |
55
+ | --- | --- | --- | --- |
56
+ | URL or data URI of the file content to compress | unknown | description_analysis | medium |
57
+
58
+ ### State Mutations
59
+
60
+ The following state-modifying operations were identified from tool schemas:
61
+
62
+ | Resource | Operation | Scope | Source |
63
+ | --- | --- | --- | --- |
64
+ | filesystem | write | working_directory | description_analysis |
65
+ | filesystem | write | working_directory | description_analysis |
66
+ | filesystem | write | working_directory | description_analysis |
67
+ | filesystem | write | working_directory | description_analysis |
68
+ | filesystem | write | working_directory | description_analysis |
69
+ | filesystem | write | working_directory | description_analysis |
70
+ | filesystem | execute | working_directory | description_analysis |
71
+
72
+ _Analyzed at 2026-07-12T23:43:54.455Z_
73
+
42
74
  ## Regressions and Recoveries
43
75
 
44
76
  _Use the `diff` command against another run artifact to classify regressions and recoveries over time._
@@ -47,14 +79,15 @@ _Use the `diff` command against another run artifact to classify regressions and
47
79
 
48
80
  | Focus | Check | Status | Duration (ms) | Message |
49
81
  | --- | --- | --- | --- | --- |
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. |
82
+ | healthy | attack-sim | pass | 2.75 | Safe attack simulation found no high-risk MCP attack-readiness findings. |
83
+ | healthy | conformance | pass | 3.88 | All 7 conformance checks passed. |
84
+ | healthy | prompts | pass | 0.83 | Advertised capability responded with the minimal expected shape (4 items). |
85
+ | healthy | resources | pass | 1.49 | Advertised capability responded with the minimal expected shape (9 items). |
86
+ | healthy | runtime-profile | pass | 1.17 | Detected 1 potential egress target(s) and 7 potential state mutation(s) with low confidence. |
87
+ | healthy | security | pass | 0.92 | Found 2 security finding(s): 0 high, 0 medium, 2 low. |
88
+ | healthy | security-lite | pass | 0.59 | Found 2 security finding(s): 0 high, 0 medium, 2 low. |
89
+ | healthy | tools | pass | 6.87 | Advertised capability responded with the minimal expected shape (13 items). |
90
+ | review | schema-quality | partial | 1.37 | Found 6 quality finding(s) across 24 item(s): 0 warnings, 6 info. |
58
91
 
59
92
  ## Evidence Snippets
60
93
 
@@ -113,6 +146,18 @@ Summary: Advertised capability responded with the minimal expected shape (9 item
113
146
  - Identifiers: demo://resource/dynamic/text/{resourceId}, demo://resource/dynamic/blob/{resourceId}
114
147
  - Diagnostics: Starting default (STDIO) server...
115
148
 
149
+ ### runtime-profile — pass
150
+
151
+ Summary: Detected 1 potential egress target(s) and 7 potential state mutation(s) with low confidence.
152
+
153
+ - Endpoint: `runtime-profile/analyze`
154
+ - Advertised: `true`
155
+ - Responded: `true`
156
+ - Minimal shape present: `true`
157
+ - Item count: `8`
158
+ - Identifiers: none
159
+ - Diagnostics: Egress entries: 1, State mutations: 7, Confidence: medium
160
+
116
161
  ### security — pass
117
162
 
118
163
  Summary: Found 2 security finding(s): 0 high, 0 medium, 2 low.
@@ -172,5 +217,5 @@ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
172
217
 
173
218
  - Artifact type: `run`
174
219
  - Schema version: `1.0.0`
175
- - Run ID: `run_2026-07-06T194944859Z_dd0288c3`
220
+ - Run ID: `run_2026-07-12T234353421Z_9a98b63f`
176
221
  - Gate: `pass`