@kryptosai/mcp-observatory 0.27.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/COMMERCIAL.md +6 -1
  2. package/CONTRIBUTORS.md +39 -0
  3. package/README.md +57 -18
  4. package/dist/src/adapters/http.js +1 -5
  5. package/dist/src/adapters/http.js.map +1 -1
  6. package/dist/src/cassette.js +3 -2
  7. package/dist/src/cassette.js.map +1 -1
  8. package/dist/src/checks/attack-sim.d.ts +18 -0
  9. package/dist/src/checks/attack-sim.js +304 -0
  10. package/dist/src/checks/attack-sim.js.map +1 -0
  11. package/dist/src/ci-issue.js +4 -3
  12. package/dist/src/ci-issue.js.map +1 -1
  13. package/dist/src/cli.js +17 -3
  14. package/dist/src/cli.js.map +1 -1
  15. package/dist/src/commands/attack-sim.d.ts +2 -0
  16. package/dist/src/commands/attack-sim.js +168 -0
  17. package/dist/src/commands/attack-sim.js.map +1 -0
  18. package/dist/src/commands/init-ci.d.ts +1 -0
  19. package/dist/src/commands/init-ci.js +8 -3
  20. package/dist/src/commands/init-ci.js.map +1 -1
  21. package/dist/src/commands/legacy.js +6 -1
  22. package/dist/src/commands/legacy.js.map +1 -1
  23. package/dist/src/commands/scan.js +7 -1
  24. package/dist/src/commands/scan.js.map +1 -1
  25. package/dist/src/commands/serve.js +9 -1
  26. package/dist/src/commands/serve.js.map +1 -1
  27. package/dist/src/commands/setup-ci-conversion.d.ts +1 -0
  28. package/dist/src/commands/setup-ci-conversion.js +1 -0
  29. package/dist/src/commands/setup-ci-conversion.js.map +1 -1
  30. package/dist/src/commands/telemetry.js +20 -14
  31. package/dist/src/commands/telemetry.js.map +1 -1
  32. package/dist/src/commands/test.js +13 -1
  33. package/dist/src/commands/test.js.map +1 -1
  34. package/dist/src/findings.js +41 -1
  35. package/dist/src/findings.js.map +1 -1
  36. package/dist/src/history.js +3 -2
  37. package/dist/src/history.js.map +1 -1
  38. package/dist/src/index.d.ts +2 -0
  39. package/dist/src/index.js +2 -0
  40. package/dist/src/index.js.map +1 -1
  41. package/dist/src/integrations/smithery.js +5 -1
  42. package/dist/src/integrations/smithery.js.map +1 -1
  43. package/dist/src/reporters/attack-sim.d.ts +2 -0
  44. package/dist/src/reporters/attack-sim.js +84 -0
  45. package/dist/src/reporters/attack-sim.js.map +1 -0
  46. package/dist/src/reporters/pr-comment.js +20 -6
  47. package/dist/src/reporters/pr-comment.js.map +1 -1
  48. package/dist/src/runner.d.ts +3 -0
  49. package/dist/src/runner.js +5 -0
  50. package/dist/src/runner.js.map +1 -1
  51. package/dist/src/score.js +1 -1
  52. package/dist/src/score.js.map +1 -1
  53. package/dist/src/storage.js +3 -2
  54. package/dist/src/storage.js.map +1 -1
  55. package/dist/src/telemetry.d.ts +3 -0
  56. package/dist/src/telemetry.js +17 -1
  57. package/dist/src/telemetry.js.map +1 -1
  58. package/dist/src/types.d.ts +1 -1
  59. package/dist/src/utils/files.d.ts +1 -0
  60. package/dist/src/utils/files.js +21 -0
  61. package/dist/src/utils/files.js.map +1 -0
  62. package/dist/src/utils/ids.js +18 -5
  63. package/dist/src/utils/ids.js.map +1 -1
  64. package/dist/src/utils/url.d.ts +2 -0
  65. package/dist/src/utils/url.js +15 -0
  66. package/dist/src/utils/url.js.map +1 -0
  67. package/dist/src/validate.js +1 -1
  68. package/dist/src/validate.js.map +1 -1
  69. package/docs/agent-ecosystem-promotion-plan.md +244 -0
  70. package/docs/agent-tasks.md +95 -0
  71. package/docs/automatic-ci-integration.md +33 -0
  72. package/docs/campaign-attribution.md +58 -0
  73. package/docs/code-scanning-demo.md +57 -0
  74. package/docs/contributor-proof-cards/README.md +33 -0
  75. package/docs/contributor-recognition.md +92 -0
  76. package/docs/feishu-lark-mcp.md +1 -1
  77. package/docs/github-code-scanning-for-mcp.md +1 -1
  78. package/docs/launch.md +64 -0
  79. package/docs/mcp-attack-simulator.md +57 -0
  80. package/docs/mcp-server-safety-index.md +18 -12
  81. package/docs/proof.md +5 -2
  82. package/docs/receipt-graph.md +54 -0
  83. package/docs/safety-index/artifacts/antv-chart-server.json +21 -21
  84. package/docs/safety-index/artifacts/antv-chart-server.md +10 -10
  85. package/docs/safety-index/artifacts/browsermcp-server.json +17 -17
  86. package/docs/safety-index/artifacts/browsermcp-server.md +10 -10
  87. package/docs/safety-index/artifacts/context7-server.json +17 -17
  88. package/docs/safety-index/artifacts/context7-server.md +10 -10
  89. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +2014 -0
  90. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +163 -0
  91. package/docs/safety-index/artifacts/everything-server.json +131 -56
  92. package/docs/safety-index/artifacts/everything-server.md +24 -24
  93. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +26 -18
  94. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +10 -10
  95. package/docs/safety-index/artifacts/filesystem-server.json +128 -20
  96. package/docs/safety-index/artifacts/filesystem-server.md +10 -10
  97. package/docs/safety-index/artifacts/kubernetes-server.attack.json +1559 -0
  98. package/docs/safety-index/artifacts/kubernetes-server.attack.md +43 -0
  99. package/docs/safety-index/artifacts/kubernetes-server.attack.sarif +2857 -0
  100. package/docs/safety-index/artifacts/kubernetes-server.json +1348 -0
  101. package/docs/safety-index/artifacts/kubernetes-server.md +150 -0
  102. package/docs/safety-index/artifacts/memory-server.json +75 -32
  103. package/docs/safety-index/artifacts/memory-server.md +35 -28
  104. package/docs/safety-index/artifacts/opentofu-server.json +25 -17
  105. package/docs/safety-index/artifacts/opentofu-server.md +11 -11
  106. package/docs/safety-index/artifacts/playwright-mcp-server.json +56 -20
  107. package/docs/safety-index/artifacts/playwright-mcp-server.md +12 -12
  108. package/docs/safety-index/artifacts/promptopia-server.json +28 -20
  109. package/docs/safety-index/artifacts/promptopia-server.md +11 -11
  110. package/docs/safety-index/artifacts/puppeteer-server.json +42 -30
  111. package/docs/safety-index/artifacts/puppeteer-server.md +28 -28
  112. package/docs/safety-index/artifacts/ref-tools-server.json +17 -17
  113. package/docs/safety-index/artifacts/ref-tools-server.md +9 -9
  114. package/docs/safety-index/artifacts/sequential-thinking-server.json +20 -21
  115. package/docs/safety-index/artifacts/sequential-thinking-server.md +10 -10
  116. package/docs/safety-index/targets.json +90 -14
  117. package/docs/setup-ci-doctor.md +2 -0
  118. package/docs/target-gallery.md +49 -0
  119. package/docs/target-registry.md +5 -1
  120. package/docs/tool-call-receipts.md +116 -0
  121. package/package.json +20 -2
  122. package/schemas/run-artifact.schema.json +1 -0
  123. package/scripts/postinstall.mjs +123 -0
@@ -0,0 +1,163 @@
1
+ # MCP Observatory Run Report
2
+
3
+ Generated at 2026-07-06T01:46:58.742Z
4
+
5
+ ## Target and Environment Metadata
6
+
7
+ - Target: `cyanheads-git-mcp-server`
8
+ - Adapter: `local-process`
9
+ - Command: `npx -y @cyanheads/git-mcp-server`
10
+ - Server: `@cyanheads/git-mcp-server 2.15.1`
11
+ - Platform: `darwin 24.0.0`
12
+ - Node: `v25.8.1`
13
+
14
+ ## Executive Summary
15
+
16
+ **Health Score: 84/100 (B)**
17
+
18
+ | Dimension | Score | Weight |
19
+ | --- | --- | --- |
20
+ | Protocol Compliance | 100/100 | 30% |
21
+ | Schema Quality | 60/100 | 20% |
22
+ | Security | 60/100 | 20% |
23
+ | Reliability | 100/100 | 20% |
24
+ | Performance | 100/100 | 10% |
25
+
26
+ | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
+ | --- | --- | --- | --- | --- | --- | --- | --- |
28
+ | pass | 7 | 4 | 0 | 3 | 0 | 0 | 0 |
29
+
30
+ ## At a Glance
31
+
32
+ - Safety verdict: **Needs review** — The server is usable, but caveated checks should be reviewed before agents depend on it.
33
+ - Top risks: schema-quality: Found 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.
34
+ - Regression/schema drift: Run `mcp-observatory diff <previous-run.json> <current-run.json>` to classify regressions and schema drift.
35
+ - Failing checks: none
36
+ - Partial or flaky checks: security-lite, schema-quality, security
37
+ - Skipped checks: none
38
+ - Unsupported checks: none
39
+ - Suggested next step: Review the caveated checks next: security-lite, schema-quality, security.
40
+ - CI next step: `Add CI: npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y <server-package>"`
41
+
42
+ ## Regressions and Recoveries
43
+
44
+ _Use the `diff` command against another run artifact to classify regressions and recoveries over time._
45
+
46
+ ## Full Capability Status Table
47
+
48
+ | Focus | Check | Status | Duration (ms) | Message |
49
+ | --- | --- | --- | --- | --- |
50
+ | healthy | conformance | pass | 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. |
57
+
58
+ ## Evidence Snippets
59
+
60
+ ### conformance — pass
61
+
62
+ Summary: All 7 conformance checks passed.
63
+
64
+ - Endpoint: `conformance/check`
65
+ - Advertised: `true`
66
+ - Responded: `true`
67
+ - Minimal shape present: `true`
68
+ - Item count: `7`
69
+ - Identifiers: none
70
+ - Diagnostics: [pass] capabilities-present: Server returned capabilities object., [pass] server-info: Server provided initialization info., [pass] tools-capability-match: tools/list returned 28 tool(s). (+4 more)
71
+
72
+ ### prompts — pass
73
+
74
+ Summary: Advertised capability responded with the minimal expected shape (1 item).
75
+
76
+ - Endpoint: `prompts/list`
77
+ - Advertised: `true`
78
+ - Responded: `true`
79
+ - Minimal shape present: `true`
80
+ - Item count: `1`
81
+ - 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
+
84
+ ### resources — pass
85
+
86
+ Summary: Advertised capability responded with the minimal expected shape (2 items).
87
+
88
+ - Endpoint: `resources/list`
89
+ - Advertised: `true`
90
+ - Responded: `true`
91
+ - Minimal shape present: `true`
92
+ - Item count: `1`
93
+ - 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
+ - Endpoint: `resources/templates/list`
96
+ - Advertised: `true`
97
+ - Responded: `true`
98
+ - Minimal shape present: `true`
99
+ - Item count: `1`
100
+ - 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
+
103
+ ### tools — pass
104
+
105
+ Summary: Advertised capability responded with the minimal expected shape (28 items).
106
+
107
+ - Endpoint: `tools/list`
108
+ - Advertised: `true`
109
+ - Responded: `true`
110
+ - Minimal shape present: `true`
111
+ - Item count: `28`
112
+ - Identifiers: git_add, git_blame, git_branch, git_changelog_analyze, git_checkout (+23 more)
113
+ - Diagnostics: none
114
+
115
+ ### schema-quality — partial
116
+
117
+ Summary: Found 17 quality finding(s) across 30 item(s): 0 warnings, 17 info.
118
+
119
+ - Endpoint: `schema-quality/scan`
120
+ - Advertised: `true`
121
+ - Responded: `true`
122
+ - Minimal shape present: `true`
123
+ - Item count: `17`
124
+ - Identifiers: git_add, git_branch, git_clean, git_diff, git_fetch (+12 more)
125
+ - Diagnostics: [info] tool "git_add": Has properties but no 'required' array declared, [info] tool "git_branch": Has properties but no 'required' array declared, [info] tool "git_clean": Has properties but no 'required' array declared (+14 more)
126
+
127
+ ### security — partial
128
+
129
+ Summary: Found 19 security finding(s): 0 high, 19 medium, 0 low.
130
+
131
+ - Endpoint: `security/scan`
132
+ - Advertised: `true`
133
+ - Responded: `true`
134
+ - Minimal shape present: `true`
135
+ - Item count: `19`
136
+ - Identifiers: git_add, git_branch, git_checkout, git_cherry_pick, git_clean (+14 more)
137
+ - Diagnostics: [medium] Tool "git_add" accepts filesystem paths and has destructive capabilities., [medium] Tool "git_branch" accepts filesystem paths and has destructive capabilities., [medium] Tool "git_checkout" accepts filesystem paths and has destructive capabilities. (+16 more)
138
+
139
+ ### security-lite — partial
140
+
141
+ Summary: Found 19 security finding(s): 0 high, 19 medium, 0 low.
142
+
143
+ - Endpoint: `security/scan-lite`
144
+ - Advertised: `true`
145
+ - Responded: `true`
146
+ - Minimal shape present: `true`
147
+ - Item count: `19`
148
+ - Identifiers: git_add, git_branch, git_checkout, git_cherry_pick, git_clean (+14 more)
149
+ - Diagnostics: [medium] Tool "git_add" accepts filesystem paths and has destructive capabilities., [medium] Tool "git_branch" accepts filesystem paths and has destructive capabilities., [medium] Tool "git_checkout" accepts filesystem paths and has destructive capabilities. (+16 more)
150
+
151
+ ## Reproduction Commands
152
+
153
+ ```bash
154
+ npm run cli -- run --target <path-to-target-config.json>
155
+ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
156
+ ```
157
+
158
+ ## Artifact Provenance
159
+
160
+ - Artifact type: `run`
161
+ - Schema version: `1.0.0`
162
+ - Run ID: `run_2026-07-06T014658742Z_9d713d02`
163
+ - Gate: `pass`
@@ -2,9 +2,9 @@
2
2
  "artifactType": "run",
3
3
  "schemaVersion": "1.0.0",
4
4
  "gate": "pass",
5
- "runId": "run_2026-06-24T020721281Z_c337e720",
6
- "createdAt": "2026-06-24T02:07:21.282Z",
7
- "toolVersion": "0.24.0",
5
+ "runId": "run_2026-07-06T014650996Z_273c0c65",
6
+ "createdAt": "2026-07-06T01:46:50.997Z",
7
+ "toolVersion": "0.26.1",
8
8
  "target": {
9
9
  "targetId": "everything-server",
10
10
  "adapter": "local-process",
@@ -25,8 +25,8 @@
25
25
  "serverVersion": "2.0.0"
26
26
  },
27
27
  "environment": {
28
- "platform": "darwin 25.5.0",
29
- "nodeVersion": "v22.22.1"
28
+ "platform": "darwin 24.0.0",
29
+ "nodeVersion": "v25.8.1"
30
30
  },
31
31
  "summary": {
32
32
  "total": 7,
@@ -43,7 +43,7 @@
43
43
  "id": "tools",
44
44
  "capability": "tools",
45
45
  "status": "pass",
46
- "durationMs": 7.354332999999997,
46
+ "durationMs": 7.431291999999985,
47
47
  "message": "Advertised capability responded with the minimal expected shape (13 items).",
48
48
  "evidence": [
49
49
  {
@@ -82,7 +82,6 @@
82
82
  "required": [
83
83
  "message"
84
84
  ],
85
- "additionalProperties": false,
86
85
  "$schema": "http://json-schema.org/draft-07/schema#"
87
86
  },
88
87
  "get-annotated-message": {
@@ -98,15 +97,14 @@
98
97
  "description": "Type of message to demonstrate different annotation patterns"
99
98
  },
100
99
  "includeImage": {
101
- "type": "boolean",
102
100
  "default": false,
103
- "description": "Whether to include an example image"
101
+ "description": "Whether to include an example image",
102
+ "type": "boolean"
104
103
  }
105
104
  },
106
105
  "required": [
107
106
  "messageType"
108
107
  ],
109
- "additionalProperties": false,
110
108
  "$schema": "http://json-schema.org/draft-07/schema#"
111
109
  },
112
110
  "get-env": {
@@ -118,34 +116,32 @@
118
116
  "type": "object",
119
117
  "properties": {
120
118
  "count": {
119
+ "default": 3,
120
+ "description": "Number of resource links to return (1-10)",
121
121
  "type": "number",
122
122
  "minimum": 1,
123
- "maximum": 10,
124
- "default": 3,
125
- "description": "Number of resource links to return (1-10)"
123
+ "maximum": 10
126
124
  }
127
125
  },
128
- "additionalProperties": false,
129
126
  "$schema": "http://json-schema.org/draft-07/schema#"
130
127
  },
131
128
  "get-resource-reference": {
132
129
  "type": "object",
133
130
  "properties": {
134
131
  "resourceType": {
132
+ "default": "Text",
135
133
  "type": "string",
136
134
  "enum": [
137
135
  "Text",
138
136
  "Blob"
139
- ],
140
- "default": "Text"
137
+ ]
141
138
  },
142
139
  "resourceId": {
143
- "type": "number",
144
140
  "default": 1,
145
- "description": "ID of the text resource to fetch"
141
+ "description": "ID of the text resource to fetch",
142
+ "type": "number"
146
143
  }
147
144
  },
148
- "additionalProperties": false,
149
145
  "$schema": "http://json-schema.org/draft-07/schema#"
150
146
  },
151
147
  "get-structured-content": {
@@ -164,7 +160,6 @@
164
160
  "required": [
165
161
  "location"
166
162
  ],
167
- "additionalProperties": false,
168
163
  "$schema": "http://json-schema.org/draft-07/schema#"
169
164
  },
170
165
  "get-sum": {
@@ -183,7 +178,6 @@
183
178
  "a",
184
179
  "b"
185
180
  ],
186
- "additionalProperties": false,
187
181
  "$schema": "http://json-schema.org/draft-07/schema#"
188
182
  },
189
183
  "get-tiny-image": {
@@ -195,27 +189,26 @@
195
189
  "type": "object",
196
190
  "properties": {
197
191
  "name": {
192
+ "default": "README.md.gz",
198
193
  "type": "string",
199
- "description": "Name of the output file",
200
- "default": "README.md.gz"
194
+ "description": "Name of the output file"
201
195
  },
202
196
  "data": {
197
+ "default": "https://raw.githubusercontent.com/modelcontextprotocol/servers/refs/heads/main/README.md",
203
198
  "type": "string",
204
199
  "format": "uri",
205
- "description": "URL or data URI of the file content to compress",
206
- "default": "https://raw.githubusercontent.com/modelcontextprotocol/servers/refs/heads/main/README.md"
200
+ "description": "URL or data URI of the file content to compress"
207
201
  },
208
202
  "outputType": {
203
+ "default": "resourceLink",
204
+ "description": "How the resulting gzipped file should be returned. 'resourceLink' returns a link to a resource that can be read later, 'resource' returns a full resource object.",
209
205
  "type": "string",
210
206
  "enum": [
211
207
  "resourceLink",
212
208
  "resource"
213
- ],
214
- "default": "resourceLink",
215
- "description": "How the resulting gzipped file should be returned. 'resourceLink' returns a link to a resource that can be read later, 'resource' returns a full resource object."
209
+ ]
216
210
  }
217
211
  },
218
- "additionalProperties": false,
219
212
  "$schema": "http://json-schema.org/draft-07/schema#"
220
213
  },
221
214
  "toggle-simulated-logging": {
@@ -232,17 +225,16 @@
232
225
  "type": "object",
233
226
  "properties": {
234
227
  "duration": {
235
- "type": "number",
236
228
  "default": 10,
237
- "description": "Duration of the operation in seconds"
229
+ "description": "Duration of the operation in seconds",
230
+ "type": "number"
238
231
  },
239
232
  "steps": {
240
- "type": "number",
241
233
  "default": 5,
242
- "description": "Number of steps in the operation"
234
+ "description": "Number of steps in the operation",
235
+ "type": "number"
243
236
  }
244
237
  },
245
- "additionalProperties": false,
246
238
  "$schema": "http://json-schema.org/draft-07/schema#"
247
239
  },
248
240
  "simulate-research-query": {
@@ -253,15 +245,14 @@
253
245
  "description": "The research topic to investigate"
254
246
  },
255
247
  "ambiguous": {
256
- "type": "boolean",
257
248
  "default": false,
258
- "description": "Simulate an ambiguous query that requires clarification (triggers input_required status)"
249
+ "description": "Simulate an ambiguous query that requires clarification (triggers input_required status)",
250
+ "type": "boolean"
259
251
  }
260
252
  },
261
253
  "required": [
262
254
  "topic"
263
255
  ],
264
- "additionalProperties": false,
265
256
  "$schema": "http://json-schema.org/draft-07/schema#"
266
257
  }
267
258
  }
@@ -272,7 +263,7 @@
272
263
  "id": "prompts",
273
264
  "capability": "prompts",
274
265
  "status": "pass",
275
- "durationMs": 0.74087499999996,
266
+ "durationMs": 0.8740839999999253,
276
267
  "message": "Advertised capability responded with the minimal expected shape (4 items).",
277
268
  "evidence": [
278
269
  {
@@ -297,7 +288,7 @@
297
288
  "id": "resources",
298
289
  "capability": "resources",
299
290
  "status": "pass",
300
- "durationMs": 1.0068340000000262,
291
+ "durationMs": 1.2153749999999945,
301
292
  "message": "Advertised capability responded with the minimal expected shape (9 items).",
302
293
  "evidence": [
303
294
  {
@@ -339,15 +330,37 @@
339
330
  "id": "security-lite",
340
331
  "capability": "security-lite",
341
332
  "status": "pass",
342
- "durationMs": 0.47954200000003766,
343
- "message": "No security issues detected (lightweight scan).",
333
+ "durationMs": 0.5052909999999429,
334
+ "message": "Found 2 security finding(s): 0 high, 0 medium, 2 low.",
344
335
  "evidence": [
345
336
  {
346
337
  "endpoint": "security/scan-lite",
347
338
  "advertised": true,
348
339
  "responded": true,
349
340
  "minimalShapePresent": true,
350
- "itemCount": 0
341
+ "itemCount": 2,
342
+ "identifiers": [
343
+ "toggle-simulated-logging",
344
+ "toggle-subscriber-updates"
345
+ ],
346
+ "diagnostics": [
347
+ "[low] Tool \"toggle-simulated-logging\" has an empty schema but is marked as destructive.",
348
+ "[low] Tool \"toggle-subscriber-updates\" has an empty schema but is marked as destructive."
349
+ ],
350
+ "findings": [
351
+ {
352
+ "ruleId": "permissive-schema",
353
+ "severity": "low",
354
+ "toolName": "toggle-simulated-logging",
355
+ "message": "Tool \"toggle-simulated-logging\" has an empty schema but is marked as destructive."
356
+ },
357
+ {
358
+ "ruleId": "permissive-schema",
359
+ "severity": "low",
360
+ "toolName": "toggle-subscriber-updates",
361
+ "message": "Tool \"toggle-subscriber-updates\" has an empty schema but is marked as destructive."
362
+ }
363
+ ]
351
364
  }
352
365
  ]
353
366
  },
@@ -355,7 +368,7 @@
355
368
  "id": "conformance",
356
369
  "capability": "conformance",
357
370
  "status": "pass",
358
- "durationMs": 3.849082999999837,
371
+ "durationMs": 5.802541000000019,
359
372
  "message": "All 7 conformance checks passed.",
360
373
  "evidence": [
361
374
  {
@@ -381,27 +394,67 @@
381
394
  "id": "schema-quality",
382
395
  "capability": "schema-quality",
383
396
  "status": "partial",
384
- "durationMs": 1.885542000000214,
385
- "message": "Found 5 quality finding(s) across 24 item(s): 0 warnings, 5 info.",
397
+ "durationMs": 4.454166999999984,
398
+ "message": "Found 6 quality finding(s) across 24 item(s): 0 warnings, 6 info.",
386
399
  "evidence": [
387
400
  {
388
401
  "endpoint": "schema-quality/scan",
389
402
  "advertised": true,
390
403
  "responded": true,
391
404
  "minimalShapePresent": true,
392
- "itemCount": 5,
405
+ "itemCount": 6,
393
406
  "identifiers": [
394
407
  "get-resource-links",
395
408
  "get-resource-reference",
396
409
  "gzip-file-as-resource",
397
- "trigger-long-running-operation"
410
+ "trigger-long-running-operation",
411
+ "args-prompt"
398
412
  ],
399
413
  "diagnostics": [
400
414
  "[info] tool \"get-resource-links\": Has properties but no 'required' array declared",
401
415
  "[info] tool \"get-resource-reference\": Has properties but no 'required' array declared",
402
416
  "[info] tool \"get-resource-reference\": Property 'resourceType' missing description",
403
417
  "[info] tool \"gzip-file-as-resource\": Has properties but no 'required' array declared",
404
- "[info] tool \"trigger-long-running-operation\": Has properties but no 'required' array declared"
418
+ "[info] tool \"trigger-long-running-operation\": Has properties but no 'required' array declared",
419
+ "[info] prompt \"args-prompt\": Argument 'state' missing description"
420
+ ],
421
+ "findings": [
422
+ {
423
+ "itemType": "tool",
424
+ "itemName": "get-resource-links",
425
+ "issue": "Has properties but no 'required' array declared",
426
+ "severity": "info"
427
+ },
428
+ {
429
+ "itemType": "tool",
430
+ "itemName": "get-resource-reference",
431
+ "issue": "Has properties but no 'required' array declared",
432
+ "severity": "info"
433
+ },
434
+ {
435
+ "itemType": "tool",
436
+ "itemName": "get-resource-reference",
437
+ "issue": "Property 'resourceType' missing description",
438
+ "severity": "info"
439
+ },
440
+ {
441
+ "itemType": "tool",
442
+ "itemName": "gzip-file-as-resource",
443
+ "issue": "Has properties but no 'required' array declared",
444
+ "severity": "info"
445
+ },
446
+ {
447
+ "itemType": "tool",
448
+ "itemName": "trigger-long-running-operation",
449
+ "issue": "Has properties but no 'required' array declared",
450
+ "severity": "info"
451
+ },
452
+ {
453
+ "itemType": "prompt",
454
+ "itemName": "args-prompt",
455
+ "issue": "Argument 'state' missing description",
456
+ "severity": "info"
457
+ }
405
458
  ]
406
459
  }
407
460
  ]
@@ -410,15 +463,37 @@
410
463
  "id": "security",
411
464
  "capability": "security",
412
465
  "status": "pass",
413
- "durationMs": 0.8814159999999447,
414
- "message": "No security issues detected.",
466
+ "durationMs": 1.5368330000000014,
467
+ "message": "Found 2 security finding(s): 0 high, 0 medium, 2 low.",
415
468
  "evidence": [
416
469
  {
417
470
  "endpoint": "security/scan",
418
471
  "advertised": true,
419
472
  "responded": true,
420
473
  "minimalShapePresent": true,
421
- "itemCount": 0
474
+ "itemCount": 2,
475
+ "identifiers": [
476
+ "toggle-simulated-logging",
477
+ "toggle-subscriber-updates"
478
+ ],
479
+ "diagnostics": [
480
+ "[low] Tool \"toggle-simulated-logging\" has an empty schema but is marked as destructive.",
481
+ "[low] Tool \"toggle-subscriber-updates\" has an empty schema but is marked as destructive."
482
+ ],
483
+ "findings": [
484
+ {
485
+ "ruleId": "permissive-schema",
486
+ "severity": "low",
487
+ "toolName": "toggle-simulated-logging",
488
+ "message": "Tool \"toggle-simulated-logging\" has an empty schema but is marked as destructive."
489
+ },
490
+ {
491
+ "ruleId": "permissive-schema",
492
+ "severity": "low",
493
+ "toolName": "toggle-subscriber-updates",
494
+ "message": "Tool \"toggle-subscriber-updates\" has an empty schema but is marked as destructive."
495
+ }
496
+ ]
422
497
  }
423
498
  ]
424
499
  }
@@ -467,16 +542,16 @@
467
542
  "weight": 0.1,
468
543
  "score": 100,
469
544
  "details": [
470
- "Connect: 846ms",
545
+ "Connect: 761ms",
471
546
  "p95 latency: 7ms (3 operations)"
472
547
  ]
473
548
  }
474
549
  ]
475
550
  },
476
551
  "performanceMetrics": {
477
- "connectMs": 845.9128340000001,
478
- "toolsListMs": 7.354332999999997,
479
- "promptsListMs": 0.74087499999996,
480
- "resourcesListMs": 1.0068340000000262
552
+ "connectMs": 760.63275,
553
+ "toolsListMs": 7.431291999999985,
554
+ "promptsListMs": 0.8740839999999253,
555
+ "resourcesListMs": 1.2153749999999945
481
556
  }
482
557
  }
@@ -1,6 +1,6 @@
1
1
  # MCP Observatory Run Report
2
2
 
3
- Generated at 2026-06-24T02:07:21.282Z
3
+ Generated at 2026-07-06T01:46:50.997Z
4
4
 
5
5
  ## Target and Environment Metadata
6
6
 
@@ -8,8 +8,8 @@ Generated at 2026-06-24T02:07:21.282Z
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 25.5.0`
12
- - Node: `v22.22.1`
11
+ - Platform: `darwin 24.0.0`
12
+ - Node: `v25.8.1`
13
13
 
14
14
  ## Executive Summary
15
15
 
@@ -30,7 +30,7 @@ Generated at 2026-06-24T02:07:21.282Z
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 5 quality finding(s) across 24 item(s): 0 warnings, 5 info.
33
+ - Top risks: schema-quality: Found 6 quality finding(s) across 24 item(s): 0 warnings, 6 info.
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
36
  - Partial or flaky checks: schema-quality
@@ -47,13 +47,13 @@ _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 | 3.85 | All 7 conformance checks passed. |
51
- | healthy | prompts | pass | 0.74 | Advertised capability responded with the minimal expected shape (4 items). |
52
- | healthy | resources | pass | 1.01 | Advertised capability responded with the minimal expected shape (9 items). |
53
- | healthy | security | pass | 0.88 | No security issues detected. |
54
- | healthy | security-lite | pass | 0.48 | No security issues detected (lightweight scan). |
55
- | healthy | tools | pass | 7.35 | Advertised capability responded with the minimal expected shape (13 items). |
56
- | review | schema-quality | partial | 1.89 | Found 5 quality finding(s) across 24 item(s): 0 warnings, 5 info. |
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. |
57
57
 
58
58
  ## Evidence Snippets
59
59
 
@@ -102,27 +102,27 @@ Summary: Advertised capability responded with the minimal expected shape (9 item
102
102
 
103
103
  ### security — pass
104
104
 
105
- Summary: No security issues detected.
105
+ Summary: Found 2 security finding(s): 0 high, 0 medium, 2 low.
106
106
 
107
107
  - Endpoint: `security/scan`
108
108
  - Advertised: `true`
109
109
  - Responded: `true`
110
110
  - Minimal shape present: `true`
111
- - Item count: `0`
112
- - Identifiers: none
113
- - Diagnostics: none
111
+ - Item count: `2`
112
+ - Identifiers: toggle-simulated-logging, toggle-subscriber-updates
113
+ - Diagnostics: [low] Tool "toggle-simulated-logging" has an empty schema but is marked as destructive., [low] Tool "toggle-subscriber-updates" has an empty schema but is marked as destructive.
114
114
 
115
115
  ### security-lite — pass
116
116
 
117
- Summary: No security issues detected (lightweight scan).
117
+ Summary: Found 2 security finding(s): 0 high, 0 medium, 2 low.
118
118
 
119
119
  - Endpoint: `security/scan-lite`
120
120
  - Advertised: `true`
121
121
  - Responded: `true`
122
122
  - Minimal shape present: `true`
123
- - Item count: `0`
124
- - Identifiers: none
125
- - Diagnostics: none
123
+ - Item count: `2`
124
+ - Identifiers: toggle-simulated-logging, toggle-subscriber-updates
125
+ - Diagnostics: [low] Tool "toggle-simulated-logging" has an empty schema but is marked as destructive., [low] Tool "toggle-subscriber-updates" has an empty schema but is marked as destructive.
126
126
 
127
127
  ### tools — pass
128
128
 
@@ -138,15 +138,15 @@ Summary: Advertised capability responded with the minimal expected shape (13 ite
138
138
 
139
139
  ### schema-quality — partial
140
140
 
141
- Summary: Found 5 quality finding(s) across 24 item(s): 0 warnings, 5 info.
141
+ Summary: Found 6 quality finding(s) across 24 item(s): 0 warnings, 6 info.
142
142
 
143
143
  - Endpoint: `schema-quality/scan`
144
144
  - Advertised: `true`
145
145
  - Responded: `true`
146
146
  - Minimal shape present: `true`
147
- - Item count: `5`
148
- - Identifiers: get-resource-links, get-resource-reference, gzip-file-as-resource, trigger-long-running-operation
149
- - Diagnostics: [info] tool "get-resource-links": Has properties but no 'required' array declared, [info] tool "get-resource-reference": Has properties but no 'required' array declared, [info] tool "get-resource-reference": Property 'resourceType' missing description (+2 more)
147
+ - Item count: `6`
148
+ - Identifiers: get-resource-links, get-resource-reference, gzip-file-as-resource, trigger-long-running-operation, args-prompt
149
+ - Diagnostics: [info] tool "get-resource-links": Has properties but no 'required' array declared, [info] tool "get-resource-reference": Has properties but no 'required' array declared, [info] tool "get-resource-reference": Property 'resourceType' missing description (+3 more)
150
150
 
151
151
  ## Reproduction Commands
152
152
 
@@ -159,5 +159,5 @@ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
159
159
 
160
160
  - Artifact type: `run`
161
161
  - Schema version: `1.0.0`
162
- - Run ID: `run_2026-06-24T020721281Z_c337e720`
162
+ - Run ID: `run_2026-07-06T014650996Z_273c0c65`
163
163
  - Gate: `pass`