@kryptosai/mcp-observatory 0.27.0 → 1.28.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/COMMERCIAL.md +28 -2
  2. package/CONTRIBUTORS.md +39 -0
  3. package/README.md +114 -22
  4. package/dist/src/action-receipt.d.ts +20 -0
  5. package/dist/src/action-receipt.js +85 -0
  6. package/dist/src/action-receipt.js.map +1 -0
  7. package/dist/src/adapters/http.js +1 -5
  8. package/dist/src/adapters/http.js.map +1 -1
  9. package/dist/src/audit.d.ts +64 -0
  10. package/dist/src/audit.js +359 -0
  11. package/dist/src/audit.js.map +1 -0
  12. package/dist/src/cassette.js +3 -2
  13. package/dist/src/cassette.js.map +1 -1
  14. package/dist/src/checks/attack-sim.d.ts +20 -0
  15. package/dist/src/checks/attack-sim.js +316 -0
  16. package/dist/src/checks/attack-sim.js.map +1 -0
  17. package/dist/src/ci-issue.js +4 -3
  18. package/dist/src/ci-issue.js.map +1 -1
  19. package/dist/src/cli.js +25 -4
  20. package/dist/src/cli.js.map +1 -1
  21. package/dist/src/commands/attack-sim.d.ts +2 -0
  22. package/dist/src/commands/attack-sim.js +220 -0
  23. package/dist/src/commands/attack-sim.js.map +1 -0
  24. package/dist/src/commands/audit.d.ts +2 -0
  25. package/dist/src/commands/audit.js +132 -0
  26. package/dist/src/commands/audit.js.map +1 -0
  27. package/dist/src/commands/init-ci.d.ts +3 -0
  28. package/dist/src/commands/init-ci.js +78 -13
  29. package/dist/src/commands/init-ci.js.map +1 -1
  30. package/dist/src/commands/legacy.js +8 -1
  31. package/dist/src/commands/legacy.js.map +1 -1
  32. package/dist/src/commands/receipt.d.ts +2 -0
  33. package/dist/src/commands/receipt.js +113 -0
  34. package/dist/src/commands/receipt.js.map +1 -0
  35. package/dist/src/commands/scan.js +30 -6
  36. package/dist/src/commands/scan.js.map +1 -1
  37. package/dist/src/commands/score.js +63 -0
  38. package/dist/src/commands/score.js.map +1 -1
  39. package/dist/src/commands/serve.js +9 -1
  40. package/dist/src/commands/serve.js.map +1 -1
  41. package/dist/src/commands/setup-ci-conversion.d.ts +3 -1
  42. package/dist/src/commands/setup-ci-conversion.js +23 -8
  43. package/dist/src/commands/setup-ci-conversion.js.map +1 -1
  44. package/dist/src/commands/telemetry.js +20 -14
  45. package/dist/src/commands/telemetry.js.map +1 -1
  46. package/dist/src/commands/test.js +31 -2
  47. package/dist/src/commands/test.js.map +1 -1
  48. package/dist/src/findings.d.ts +1 -0
  49. package/dist/src/findings.js +42 -1
  50. package/dist/src/findings.js.map +1 -1
  51. package/dist/src/history.js +3 -2
  52. package/dist/src/history.js.map +1 -1
  53. package/dist/src/index.d.ts +4 -0
  54. package/dist/src/index.js +4 -0
  55. package/dist/src/index.js.map +1 -1
  56. package/dist/src/integrations/smithery.js +5 -1
  57. package/dist/src/integrations/smithery.js.map +1 -1
  58. package/dist/src/receipt.d.ts +100 -0
  59. package/dist/src/receipt.js +375 -0
  60. package/dist/src/receipt.js.map +1 -0
  61. package/dist/src/reporters/attack-sim.d.ts +2 -0
  62. package/dist/src/reporters/attack-sim.js +89 -0
  63. package/dist/src/reporters/attack-sim.js.map +1 -0
  64. package/dist/src/reporters/pr-comment.js +20 -6
  65. package/dist/src/reporters/pr-comment.js.map +1 -1
  66. package/dist/src/reporters/sarif.js +11 -1
  67. package/dist/src/reporters/sarif.js.map +1 -1
  68. package/dist/src/runner.d.ts +3 -0
  69. package/dist/src/runner.js +5 -0
  70. package/dist/src/runner.js.map +1 -1
  71. package/dist/src/score.js +1 -1
  72. package/dist/src/score.js.map +1 -1
  73. package/dist/src/security-profiles.d.ts +13 -0
  74. package/dist/src/security-profiles.js +59 -0
  75. package/dist/src/security-profiles.js.map +1 -0
  76. package/dist/src/storage.js +3 -2
  77. package/dist/src/storage.js.map +1 -1
  78. package/dist/src/telemetry.d.ts +10 -0
  79. package/dist/src/telemetry.js +17 -1
  80. package/dist/src/telemetry.js.map +1 -1
  81. package/dist/src/types.d.ts +1 -1
  82. package/dist/src/utils/files.d.ts +1 -0
  83. package/dist/src/utils/files.js +21 -0
  84. package/dist/src/utils/files.js.map +1 -0
  85. package/dist/src/utils/ids.js +18 -5
  86. package/dist/src/utils/ids.js.map +1 -1
  87. package/dist/src/utils/url.d.ts +2 -0
  88. package/dist/src/utils/url.js +15 -0
  89. package/dist/src/utils/url.js.map +1 -0
  90. package/dist/src/validate.js +1 -1
  91. package/dist/src/validate.js.map +1 -1
  92. package/docs/10x-agentic-growth-sprint.md +47 -0
  93. package/docs/agent-ecosystem-promotion-plan.md +244 -0
  94. package/docs/agent-tasks.md +95 -0
  95. package/docs/agentic-contributor-outreach.md +52 -0
  96. package/docs/automatic-ci-integration.md +33 -0
  97. package/docs/campaign-attribution.md +58 -0
  98. package/docs/code-scanning-demo.md +57 -0
  99. package/docs/commercial-boundary.md +83 -0
  100. package/docs/contributor-proof-cards/README.md +33 -0
  101. package/docs/contributor-recognition.md +92 -0
  102. package/docs/examples/nsa-mcp-audit-report.md +372 -0
  103. package/docs/examples/nsa-mcp-results.sarif +930 -0
  104. package/docs/examples/nsa-mcp-score.json +13 -0
  105. package/docs/feishu-lark-mcp.md +1 -1
  106. package/docs/github-code-scanning-for-mcp.md +1 -1
  107. package/docs/government-enterprise-pilot.md +93 -0
  108. package/docs/launch.md +64 -0
  109. package/docs/mcp-attack-simulator.md +57 -0
  110. package/docs/mcp-receipts.md +109 -0
  111. package/docs/mcp-server-safety-index.md +29 -22
  112. package/docs/nsa-mcp-audit-ci.md +88 -0
  113. package/docs/procurement-one-pager.md +74 -0
  114. package/docs/proof.md +5 -2
  115. package/docs/public-guidance-crosswalk.md +48 -0
  116. package/docs/receipt-graph.md +54 -0
  117. package/docs/safety-index/artifacts/antv-chart-server.json +40 -22
  118. package/docs/safety-index/artifacts/antv-chart-server.md +22 -9
  119. package/docs/safety-index/artifacts/browsermcp-server.json +36 -18
  120. package/docs/safety-index/artifacts/browsermcp-server.md +22 -9
  121. package/docs/safety-index/artifacts/context7-server.json +83 -26
  122. package/docs/safety-index/artifacts/context7-server.md +33 -20
  123. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +2438 -0
  124. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +176 -0
  125. package/docs/safety-index/artifacts/everything-server.json +150 -57
  126. package/docs/safety-index/artifacts/everything-server.md +36 -23
  127. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +162 -19
  128. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +25 -12
  129. package/docs/safety-index/artifacts/filesystem-server.json +221 -19
  130. package/docs/safety-index/artifacts/filesystem-server.md +24 -11
  131. package/docs/safety-index/artifacts/kubernetes-server.attack.json +1559 -0
  132. package/docs/safety-index/artifacts/kubernetes-server.attack.md +43 -0
  133. package/docs/safety-index/artifacts/kubernetes-server.attack.sarif +2857 -0
  134. package/docs/safety-index/artifacts/kubernetes-server.json +1573 -0
  135. package/docs/safety-index/artifacts/kubernetes-server.md +176 -0
  136. package/docs/safety-index/artifacts/memory-server.json +93 -32
  137. package/docs/safety-index/artifacts/memory-server.md +45 -25
  138. package/docs/safety-index/artifacts/opentofu-server.json +44 -18
  139. package/docs/safety-index/artifacts/opentofu-server.md +23 -10
  140. package/docs/safety-index/artifacts/playwright-mcp-server.json +177 -21
  141. package/docs/safety-index/artifacts/playwright-mcp-server.md +27 -14
  142. package/docs/safety-index/artifacts/promptopia-server.json +45 -19
  143. package/docs/safety-index/artifacts/promptopia-server.md +21 -8
  144. package/docs/safety-index/artifacts/puppeteer-server.json +77 -22
  145. package/docs/safety-index/artifacts/puppeteer-server.md +28 -15
  146. package/docs/safety-index/artifacts/ref-tools-server.json +36 -18
  147. package/docs/safety-index/artifacts/ref-tools-server.md +21 -8
  148. package/docs/safety-index/artifacts/sequential-thinking-server.json +38 -21
  149. package/docs/safety-index/artifacts/sequential-thinking-server.md +22 -9
  150. package/docs/safety-index/targets.json +90 -14
  151. package/docs/security-due-diligence.md +87 -0
  152. package/docs/setup-ci-doctor.md +13 -1
  153. package/docs/target-gallery.md +49 -0
  154. package/docs/target-registry.md +5 -1
  155. package/docs/tool-call-receipts.md +115 -0
  156. package/examples/insecure-mcp-server/mcp-observatory.target.json +13 -0
  157. package/examples/insecure-mcp-server/server.mjs +62 -0
  158. package/package.json +31 -2
  159. package/schemas/run-artifact.schema.json +1 -0
  160. package/scripts/postinstall.mjs +138 -0
@@ -0,0 +1,2857 @@
1
+ {
2
+ "$schema": "https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/schemas/sarif-schema-2.1.0.json",
3
+ "version": "2.1.0",
4
+ "runs": [
5
+ {
6
+ "tool": {
7
+ "driver": {
8
+ "name": "mcp-observatory",
9
+ "version": "0.28.0",
10
+ "informationUri": "https://github.com/KryptosAI/mcp-observatory",
11
+ "rules": [
12
+ {
13
+ "id": "mcp-observatory/tools/diagnostic",
14
+ "name": "tools: diagnostic",
15
+ "shortDescription": {
16
+ "text": "tools: diagnostic"
17
+ },
18
+ "defaultConfiguration": {
19
+ "level": "note"
20
+ },
21
+ "help": {
22
+ "text": "Review the check output and update the MCP server or target configuration before release."
23
+ },
24
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
25
+ "properties": {
26
+ "category": "tools",
27
+ "checkId": "tools",
28
+ "controlRefs": [
29
+ "mcp-observatory:tools"
30
+ ],
31
+ "tags": [
32
+ "mcp",
33
+ "mcp-observatory",
34
+ "tools",
35
+ "mcp-observatory:tools"
36
+ ]
37
+ }
38
+ },
39
+ {
40
+ "id": "mcp-observatory/prompts/diagnostic",
41
+ "name": "prompts: diagnostic",
42
+ "shortDescription": {
43
+ "text": "prompts: diagnostic"
44
+ },
45
+ "defaultConfiguration": {
46
+ "level": "note"
47
+ },
48
+ "help": {
49
+ "text": "Review the check output and update the MCP server or target configuration before release."
50
+ },
51
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
52
+ "properties": {
53
+ "category": "prompts",
54
+ "checkId": "prompts",
55
+ "controlRefs": [
56
+ "mcp-observatory:prompts"
57
+ ],
58
+ "tags": [
59
+ "mcp",
60
+ "mcp-observatory",
61
+ "prompts",
62
+ "mcp-observatory:prompts"
63
+ ]
64
+ }
65
+ },
66
+ {
67
+ "id": "mcp-observatory/resources/diagnostic",
68
+ "name": "resources: diagnostic",
69
+ "shortDescription": {
70
+ "text": "resources: diagnostic"
71
+ },
72
+ "defaultConfiguration": {
73
+ "level": "note"
74
+ },
75
+ "help": {
76
+ "text": "Review the check output and update the MCP server or target configuration before release."
77
+ },
78
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
79
+ "properties": {
80
+ "category": "resources",
81
+ "checkId": "resources",
82
+ "controlRefs": [
83
+ "mcp-observatory:resources"
84
+ ],
85
+ "tags": [
86
+ "mcp",
87
+ "mcp-observatory",
88
+ "resources",
89
+ "mcp-observatory:resources"
90
+ ]
91
+ }
92
+ },
93
+ {
94
+ "id": "mcp-observatory/security/permissive-schema",
95
+ "name": "Security: permissive-schema",
96
+ "shortDescription": {
97
+ "text": "Security: permissive-schema"
98
+ },
99
+ "defaultConfiguration": {
100
+ "level": "note"
101
+ },
102
+ "help": {
103
+ "text": "Use a strict input schema and avoid accepting arbitrary properties for destructive tools."
104
+ },
105
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
106
+ "properties": {
107
+ "category": "security",
108
+ "checkId": "security-lite",
109
+ "controlRefs": [
110
+ "mcp-observatory:schema-quality",
111
+ "mcp-observatory:least-privilege"
112
+ ],
113
+ "tags": [
114
+ "mcp",
115
+ "mcp-observatory",
116
+ "security",
117
+ "mcp-observatory:schema-quality",
118
+ "mcp-observatory:least-privilege"
119
+ ]
120
+ }
121
+ },
122
+ {
123
+ "id": "mcp-observatory/security/broad-filesystem",
124
+ "name": "Security: broad-filesystem",
125
+ "shortDescription": {
126
+ "text": "Security: broad-filesystem"
127
+ },
128
+ "defaultConfiguration": {
129
+ "level": "warning"
130
+ },
131
+ "help": {
132
+ "text": "Narrow filesystem scope, prefer read-only access, and document destructive behavior explicitly."
133
+ },
134
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
135
+ "properties": {
136
+ "category": "security",
137
+ "checkId": "security-lite",
138
+ "controlRefs": [
139
+ "mcp-observatory:tool-safety",
140
+ "mcp-observatory:filesystem-access"
141
+ ],
142
+ "tags": [
143
+ "mcp",
144
+ "mcp-observatory",
145
+ "security",
146
+ "mcp-observatory:tool-safety",
147
+ "mcp-observatory:filesystem-access"
148
+ ]
149
+ }
150
+ },
151
+ {
152
+ "id": "mcp-observatory/security/shell-injection",
153
+ "name": "Security: shell-injection",
154
+ "shortDescription": {
155
+ "text": "Security: shell-injection"
156
+ },
157
+ "defaultConfiguration": {
158
+ "level": "error"
159
+ },
160
+ "help": {
161
+ "text": "Constrain command execution tools with strict allowlists, typed inputs, and clear destructive annotations."
162
+ },
163
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
164
+ "properties": {
165
+ "category": "security",
166
+ "checkId": "security-lite",
167
+ "controlRefs": [
168
+ "mcp-observatory:tool-safety",
169
+ "mcp-observatory:command-execution"
170
+ ],
171
+ "tags": [
172
+ "mcp",
173
+ "mcp-observatory",
174
+ "security",
175
+ "mcp-observatory:tool-safety",
176
+ "mcp-observatory:command-execution"
177
+ ]
178
+ }
179
+ },
180
+ {
181
+ "id": "mcp-observatory/conformance/diagnostic",
182
+ "name": "conformance: diagnostic",
183
+ "shortDescription": {
184
+ "text": "conformance: diagnostic"
185
+ },
186
+ "defaultConfiguration": {
187
+ "level": "note"
188
+ },
189
+ "help": {
190
+ "text": "Review the check output and update the MCP server or target configuration before release."
191
+ },
192
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
193
+ "properties": {
194
+ "category": "conformance",
195
+ "checkId": "conformance",
196
+ "controlRefs": [
197
+ "mcp-observatory:conformance"
198
+ ],
199
+ "tags": [
200
+ "mcp",
201
+ "mcp-observatory",
202
+ "conformance",
203
+ "mcp-observatory:conformance"
204
+ ]
205
+ }
206
+ },
207
+ {
208
+ "id": "mcp-observatory/schema-quality/schema-property-resourcetype-missing-description",
209
+ "name": "Schema quality: Property 'resourceType' missing description",
210
+ "shortDescription": {
211
+ "text": "Schema quality: Property 'resourceType' missing description"
212
+ },
213
+ "defaultConfiguration": {
214
+ "level": "note"
215
+ },
216
+ "help": {
217
+ "text": "Add clear names, descriptions, and strict JSON schema metadata so agents can call the MCP server safely."
218
+ },
219
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
220
+ "properties": {
221
+ "category": "schema-quality",
222
+ "checkId": "schema-quality",
223
+ "controlRefs": [
224
+ "mcp-observatory:schema-quality",
225
+ "mcp-observatory:agent-readiness"
226
+ ],
227
+ "tags": [
228
+ "mcp",
229
+ "mcp-observatory",
230
+ "schema-quality",
231
+ "mcp-observatory:schema-quality",
232
+ "mcp-observatory:agent-readiness"
233
+ ]
234
+ }
235
+ },
236
+ {
237
+ "id": "mcp-observatory/schema-quality/schema-property-resourcename-missing-description",
238
+ "name": "Schema quality: Property 'resourceName' missing description",
239
+ "shortDescription": {
240
+ "text": "Schema quality: Property 'resourceName' missing description"
241
+ },
242
+ "defaultConfiguration": {
243
+ "level": "note"
244
+ },
245
+ "help": {
246
+ "text": "Add clear names, descriptions, and strict JSON schema metadata so agents can call the MCP server safely."
247
+ },
248
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
249
+ "properties": {
250
+ "category": "schema-quality",
251
+ "checkId": "schema-quality",
252
+ "controlRefs": [
253
+ "mcp-observatory:schema-quality",
254
+ "mcp-observatory:agent-readiness"
255
+ ],
256
+ "tags": [
257
+ "mcp",
258
+ "mcp-observatory",
259
+ "schema-quality",
260
+ "mcp-observatory:schema-quality",
261
+ "mcp-observatory:agent-readiness"
262
+ ]
263
+ }
264
+ },
265
+ {
266
+ "id": "mcp-observatory/schema-quality/schema-property-localport-missing-description",
267
+ "name": "Schema quality: Property 'localPort' missing description",
268
+ "shortDescription": {
269
+ "text": "Schema quality: Property 'localPort' missing description"
270
+ },
271
+ "defaultConfiguration": {
272
+ "level": "note"
273
+ },
274
+ "help": {
275
+ "text": "Add clear names, descriptions, and strict JSON schema metadata so agents can call the MCP server safely."
276
+ },
277
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
278
+ "properties": {
279
+ "category": "schema-quality",
280
+ "checkId": "schema-quality",
281
+ "controlRefs": [
282
+ "mcp-observatory:schema-quality",
283
+ "mcp-observatory:agent-readiness"
284
+ ],
285
+ "tags": [
286
+ "mcp",
287
+ "mcp-observatory",
288
+ "schema-quality",
289
+ "mcp-observatory:schema-quality",
290
+ "mcp-observatory:agent-readiness"
291
+ ]
292
+ }
293
+ },
294
+ {
295
+ "id": "mcp-observatory/schema-quality/schema-property-targetport-missing-description",
296
+ "name": "Schema quality: Property 'targetPort' missing description",
297
+ "shortDescription": {
298
+ "text": "Schema quality: Property 'targetPort' missing description"
299
+ },
300
+ "defaultConfiguration": {
301
+ "level": "note"
302
+ },
303
+ "help": {
304
+ "text": "Add clear names, descriptions, and strict JSON schema metadata so agents can call the MCP server safely."
305
+ },
306
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
307
+ "properties": {
308
+ "category": "schema-quality",
309
+ "checkId": "schema-quality",
310
+ "controlRefs": [
311
+ "mcp-observatory:schema-quality",
312
+ "mcp-observatory:agent-readiness"
313
+ ],
314
+ "tags": [
315
+ "mcp",
316
+ "mcp-observatory",
317
+ "schema-quality",
318
+ "mcp-observatory:schema-quality",
319
+ "mcp-observatory:agent-readiness"
320
+ ]
321
+ }
322
+ },
323
+ {
324
+ "id": "mcp-observatory/schema-quality/schema-property-namespace-missing-description",
325
+ "name": "Schema quality: Property 'namespace' missing description",
326
+ "shortDescription": {
327
+ "text": "Schema quality: Property 'namespace' missing description"
328
+ },
329
+ "defaultConfiguration": {
330
+ "level": "note"
331
+ },
332
+ "help": {
333
+ "text": "Add clear names, descriptions, and strict JSON schema metadata so agents can call the MCP server safely."
334
+ },
335
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
336
+ "properties": {
337
+ "category": "schema-quality",
338
+ "checkId": "schema-quality",
339
+ "controlRefs": [
340
+ "mcp-observatory:schema-quality",
341
+ "mcp-observatory:agent-readiness"
342
+ ],
343
+ "tags": [
344
+ "mcp",
345
+ "mcp-observatory",
346
+ "schema-quality",
347
+ "mcp-observatory:schema-quality",
348
+ "mcp-observatory:agent-readiness"
349
+ ]
350
+ }
351
+ },
352
+ {
353
+ "id": "mcp-observatory/schema-quality/schema-property-id-missing-description",
354
+ "name": "Schema quality: Property 'id' missing description",
355
+ "shortDescription": {
356
+ "text": "Schema quality: Property 'id' missing description"
357
+ },
358
+ "defaultConfiguration": {
359
+ "level": "note"
360
+ },
361
+ "help": {
362
+ "text": "Add clear names, descriptions, and strict JSON schema metadata so agents can call the MCP server safely."
363
+ },
364
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
365
+ "properties": {
366
+ "category": "schema-quality",
367
+ "checkId": "schema-quality",
368
+ "controlRefs": [
369
+ "mcp-observatory:schema-quality",
370
+ "mcp-observatory:agent-readiness"
371
+ ],
372
+ "tags": [
373
+ "mcp",
374
+ "mcp-observatory",
375
+ "schema-quality",
376
+ "mcp-observatory:schema-quality",
377
+ "mcp-observatory:agent-readiness"
378
+ ]
379
+ }
380
+ },
381
+ {
382
+ "id": "mcp-observatory/schema-quality/schema-has-properties-but-no-required-array-declared",
383
+ "name": "Schema quality: Has properties but no 'required' array declared",
384
+ "shortDescription": {
385
+ "text": "Schema quality: Has properties but no 'required' array declared"
386
+ },
387
+ "defaultConfiguration": {
388
+ "level": "note"
389
+ },
390
+ "help": {
391
+ "text": "Add clear names, descriptions, and strict JSON schema metadata so agents can call the MCP server safely."
392
+ },
393
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
394
+ "properties": {
395
+ "category": "schema-quality",
396
+ "checkId": "schema-quality",
397
+ "controlRefs": [
398
+ "mcp-observatory:schema-quality",
399
+ "mcp-observatory:agent-readiness"
400
+ ],
401
+ "tags": [
402
+ "mcp",
403
+ "mcp-observatory",
404
+ "schema-quality",
405
+ "mcp-observatory:schema-quality",
406
+ "mcp-observatory:agent-readiness"
407
+ ]
408
+ }
409
+ },
410
+ {
411
+ "id": "mcp-observatory/attack-sim/permission-boundary/broad-destructive-tool",
412
+ "name": "Attack simulation: permission-boundary",
413
+ "shortDescription": {
414
+ "text": "Attack simulation: permission-boundary"
415
+ },
416
+ "defaultConfiguration": {
417
+ "level": "warning"
418
+ },
419
+ "help": {
420
+ "text": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture."
421
+ },
422
+ "helpUri": "https://github.com/KryptosAI/mcp-observatory/tree/main/docs",
423
+ "properties": {
424
+ "category": "attack-sim",
425
+ "checkId": "attack-sim",
426
+ "controlRefs": [
427
+ "mcp-observatory:tool-safety",
428
+ "mcp-observatory:least-privilege"
429
+ ],
430
+ "tags": [
431
+ "mcp",
432
+ "mcp-observatory",
433
+ "attack-sim",
434
+ "mcp-observatory:tool-safety",
435
+ "mcp-observatory:least-privilege"
436
+ ]
437
+ }
438
+ }
439
+ ]
440
+ }
441
+ },
442
+ "automationDetails": {
443
+ "id": "mcp-observatory/mcp-server-kubernetes"
444
+ },
445
+ "results": [
446
+ {
447
+ "ruleId": "mcp-observatory/tools/diagnostic",
448
+ "level": "note",
449
+ "message": {
450
+ "text": "npm warn deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me"
451
+ },
452
+ "locations": [
453
+ {
454
+ "physicalLocation": {
455
+ "artifactLocation": {
456
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
457
+ },
458
+ "region": {
459
+ "startLine": 1
460
+ }
461
+ }
462
+ }
463
+ ],
464
+ "partialFingerprints": {
465
+ "mcp-observatory/finding-id": "mcp-observatory/tools/diagnostic/fa01cab3"
466
+ },
467
+ "properties": {
468
+ "id": "mcp-observatory/tools/diagnostic/fa01cab3",
469
+ "category": "tools",
470
+ "checkId": "tools",
471
+ "targetId": "mcp-server-kubernetes",
472
+ "subject": {
473
+ "type": "check",
474
+ "name": "tools"
475
+ },
476
+ "severity": "info",
477
+ "controlRefs": [
478
+ "mcp-observatory:tools"
479
+ ],
480
+ "tags": [
481
+ "mcp",
482
+ "mcp-observatory",
483
+ "tools",
484
+ "mcp-observatory:tools"
485
+ ]
486
+ }
487
+ },
488
+ {
489
+ "ruleId": "mcp-observatory/tools/diagnostic",
490
+ "level": "note",
491
+ "message": {
492
+ "text": "Starting Kubernetes MCP server v3.9.2, handling commands..."
493
+ },
494
+ "locations": [
495
+ {
496
+ "physicalLocation": {
497
+ "artifactLocation": {
498
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
499
+ },
500
+ "region": {
501
+ "startLine": 1
502
+ }
503
+ }
504
+ }
505
+ ],
506
+ "partialFingerprints": {
507
+ "mcp-observatory/finding-id": "mcp-observatory/tools/diagnostic/ca24c12d"
508
+ },
509
+ "properties": {
510
+ "id": "mcp-observatory/tools/diagnostic/ca24c12d",
511
+ "category": "tools",
512
+ "checkId": "tools",
513
+ "targetId": "mcp-server-kubernetes",
514
+ "subject": {
515
+ "type": "check",
516
+ "name": "tools"
517
+ },
518
+ "severity": "info",
519
+ "controlRefs": [
520
+ "mcp-observatory:tools"
521
+ ],
522
+ "tags": [
523
+ "mcp",
524
+ "mcp-observatory",
525
+ "tools",
526
+ "mcp-observatory:tools"
527
+ ]
528
+ }
529
+ },
530
+ {
531
+ "ruleId": "mcp-observatory/tools/diagnostic",
532
+ "level": "note",
533
+ "message": {
534
+ "text": "Telemetry: Disabled"
535
+ },
536
+ "locations": [
537
+ {
538
+ "physicalLocation": {
539
+ "artifactLocation": {
540
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
541
+ },
542
+ "region": {
543
+ "startLine": 1
544
+ }
545
+ }
546
+ }
547
+ ],
548
+ "partialFingerprints": {
549
+ "mcp-observatory/finding-id": "mcp-observatory/tools/diagnostic/7ed3134b"
550
+ },
551
+ "properties": {
552
+ "id": "mcp-observatory/tools/diagnostic/7ed3134b",
553
+ "category": "tools",
554
+ "checkId": "tools",
555
+ "targetId": "mcp-server-kubernetes",
556
+ "subject": {
557
+ "type": "check",
558
+ "name": "tools"
559
+ },
560
+ "severity": "info",
561
+ "controlRefs": [
562
+ "mcp-observatory:tools"
563
+ ],
564
+ "tags": [
565
+ "mcp",
566
+ "mcp-observatory",
567
+ "tools",
568
+ "mcp-observatory:tools"
569
+ ]
570
+ }
571
+ },
572
+ {
573
+ "ruleId": "mcp-observatory/tools/diagnostic",
574
+ "level": "note",
575
+ "message": {
576
+ "text": "(node:51681) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead."
577
+ },
578
+ "locations": [
579
+ {
580
+ "physicalLocation": {
581
+ "artifactLocation": {
582
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
583
+ },
584
+ "region": {
585
+ "startLine": 1
586
+ }
587
+ }
588
+ }
589
+ ],
590
+ "partialFingerprints": {
591
+ "mcp-observatory/finding-id": "mcp-observatory/tools/diagnostic/f9b8fd22"
592
+ },
593
+ "properties": {
594
+ "id": "mcp-observatory/tools/diagnostic/f9b8fd22",
595
+ "category": "tools",
596
+ "checkId": "tools",
597
+ "targetId": "mcp-server-kubernetes",
598
+ "subject": {
599
+ "type": "check",
600
+ "name": "tools"
601
+ },
602
+ "severity": "info",
603
+ "controlRefs": [
604
+ "mcp-observatory:tools"
605
+ ],
606
+ "tags": [
607
+ "mcp",
608
+ "mcp-observatory",
609
+ "tools",
610
+ "mcp-observatory:tools"
611
+ ]
612
+ }
613
+ },
614
+ {
615
+ "ruleId": "mcp-observatory/tools/diagnostic",
616
+ "level": "note",
617
+ "message": {
618
+ "text": "(Use `node --trace-deprecation ...` to show where the warning was created)"
619
+ },
620
+ "locations": [
621
+ {
622
+ "physicalLocation": {
623
+ "artifactLocation": {
624
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
625
+ },
626
+ "region": {
627
+ "startLine": 1
628
+ }
629
+ }
630
+ }
631
+ ],
632
+ "partialFingerprints": {
633
+ "mcp-observatory/finding-id": "mcp-observatory/tools/diagnostic/8942ceaf"
634
+ },
635
+ "properties": {
636
+ "id": "mcp-observatory/tools/diagnostic/8942ceaf",
637
+ "category": "tools",
638
+ "checkId": "tools",
639
+ "targetId": "mcp-server-kubernetes",
640
+ "subject": {
641
+ "type": "check",
642
+ "name": "tools"
643
+ },
644
+ "severity": "info",
645
+ "controlRefs": [
646
+ "mcp-observatory:tools"
647
+ ],
648
+ "tags": [
649
+ "mcp",
650
+ "mcp-observatory",
651
+ "tools",
652
+ "mcp-observatory:tools"
653
+ ]
654
+ }
655
+ },
656
+ {
657
+ "ruleId": "mcp-observatory/prompts/diagnostic",
658
+ "level": "note",
659
+ "message": {
660
+ "text": "npm warn deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me"
661
+ },
662
+ "locations": [
663
+ {
664
+ "physicalLocation": {
665
+ "artifactLocation": {
666
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
667
+ },
668
+ "region": {
669
+ "startLine": 1
670
+ }
671
+ }
672
+ }
673
+ ],
674
+ "partialFingerprints": {
675
+ "mcp-observatory/finding-id": "mcp-observatory/prompts/diagnostic/4a48a3d7"
676
+ },
677
+ "properties": {
678
+ "id": "mcp-observatory/prompts/diagnostic/4a48a3d7",
679
+ "category": "prompts",
680
+ "checkId": "prompts",
681
+ "targetId": "mcp-server-kubernetes",
682
+ "subject": {
683
+ "type": "check",
684
+ "name": "prompts"
685
+ },
686
+ "severity": "info",
687
+ "controlRefs": [
688
+ "mcp-observatory:prompts"
689
+ ],
690
+ "tags": [
691
+ "mcp",
692
+ "mcp-observatory",
693
+ "prompts",
694
+ "mcp-observatory:prompts"
695
+ ]
696
+ }
697
+ },
698
+ {
699
+ "ruleId": "mcp-observatory/prompts/diagnostic",
700
+ "level": "note",
701
+ "message": {
702
+ "text": "Starting Kubernetes MCP server v3.9.2, handling commands..."
703
+ },
704
+ "locations": [
705
+ {
706
+ "physicalLocation": {
707
+ "artifactLocation": {
708
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
709
+ },
710
+ "region": {
711
+ "startLine": 1
712
+ }
713
+ }
714
+ }
715
+ ],
716
+ "partialFingerprints": {
717
+ "mcp-observatory/finding-id": "mcp-observatory/prompts/diagnostic/d0b9cac9"
718
+ },
719
+ "properties": {
720
+ "id": "mcp-observatory/prompts/diagnostic/d0b9cac9",
721
+ "category": "prompts",
722
+ "checkId": "prompts",
723
+ "targetId": "mcp-server-kubernetes",
724
+ "subject": {
725
+ "type": "check",
726
+ "name": "prompts"
727
+ },
728
+ "severity": "info",
729
+ "controlRefs": [
730
+ "mcp-observatory:prompts"
731
+ ],
732
+ "tags": [
733
+ "mcp",
734
+ "mcp-observatory",
735
+ "prompts",
736
+ "mcp-observatory:prompts"
737
+ ]
738
+ }
739
+ },
740
+ {
741
+ "ruleId": "mcp-observatory/prompts/diagnostic",
742
+ "level": "note",
743
+ "message": {
744
+ "text": "Telemetry: Disabled"
745
+ },
746
+ "locations": [
747
+ {
748
+ "physicalLocation": {
749
+ "artifactLocation": {
750
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
751
+ },
752
+ "region": {
753
+ "startLine": 1
754
+ }
755
+ }
756
+ }
757
+ ],
758
+ "partialFingerprints": {
759
+ "mcp-observatory/finding-id": "mcp-observatory/prompts/diagnostic/f355d4d7"
760
+ },
761
+ "properties": {
762
+ "id": "mcp-observatory/prompts/diagnostic/f355d4d7",
763
+ "category": "prompts",
764
+ "checkId": "prompts",
765
+ "targetId": "mcp-server-kubernetes",
766
+ "subject": {
767
+ "type": "check",
768
+ "name": "prompts"
769
+ },
770
+ "severity": "info",
771
+ "controlRefs": [
772
+ "mcp-observatory:prompts"
773
+ ],
774
+ "tags": [
775
+ "mcp",
776
+ "mcp-observatory",
777
+ "prompts",
778
+ "mcp-observatory:prompts"
779
+ ]
780
+ }
781
+ },
782
+ {
783
+ "ruleId": "mcp-observatory/prompts/diagnostic",
784
+ "level": "note",
785
+ "message": {
786
+ "text": "(node:51681) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead."
787
+ },
788
+ "locations": [
789
+ {
790
+ "physicalLocation": {
791
+ "artifactLocation": {
792
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
793
+ },
794
+ "region": {
795
+ "startLine": 1
796
+ }
797
+ }
798
+ }
799
+ ],
800
+ "partialFingerprints": {
801
+ "mcp-observatory/finding-id": "mcp-observatory/prompts/diagnostic/a6df9e4e"
802
+ },
803
+ "properties": {
804
+ "id": "mcp-observatory/prompts/diagnostic/a6df9e4e",
805
+ "category": "prompts",
806
+ "checkId": "prompts",
807
+ "targetId": "mcp-server-kubernetes",
808
+ "subject": {
809
+ "type": "check",
810
+ "name": "prompts"
811
+ },
812
+ "severity": "info",
813
+ "controlRefs": [
814
+ "mcp-observatory:prompts"
815
+ ],
816
+ "tags": [
817
+ "mcp",
818
+ "mcp-observatory",
819
+ "prompts",
820
+ "mcp-observatory:prompts"
821
+ ]
822
+ }
823
+ },
824
+ {
825
+ "ruleId": "mcp-observatory/prompts/diagnostic",
826
+ "level": "note",
827
+ "message": {
828
+ "text": "(Use `node --trace-deprecation ...` to show where the warning was created)"
829
+ },
830
+ "locations": [
831
+ {
832
+ "physicalLocation": {
833
+ "artifactLocation": {
834
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
835
+ },
836
+ "region": {
837
+ "startLine": 1
838
+ }
839
+ }
840
+ }
841
+ ],
842
+ "partialFingerprints": {
843
+ "mcp-observatory/finding-id": "mcp-observatory/prompts/diagnostic/f8dea713"
844
+ },
845
+ "properties": {
846
+ "id": "mcp-observatory/prompts/diagnostic/f8dea713",
847
+ "category": "prompts",
848
+ "checkId": "prompts",
849
+ "targetId": "mcp-server-kubernetes",
850
+ "subject": {
851
+ "type": "check",
852
+ "name": "prompts"
853
+ },
854
+ "severity": "info",
855
+ "controlRefs": [
856
+ "mcp-observatory:prompts"
857
+ ],
858
+ "tags": [
859
+ "mcp",
860
+ "mcp-observatory",
861
+ "prompts",
862
+ "mcp-observatory:prompts"
863
+ ]
864
+ }
865
+ },
866
+ {
867
+ "ruleId": "mcp-observatory/resources/diagnostic",
868
+ "level": "note",
869
+ "message": {
870
+ "text": "npm warn deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me"
871
+ },
872
+ "locations": [
873
+ {
874
+ "physicalLocation": {
875
+ "artifactLocation": {
876
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
877
+ },
878
+ "region": {
879
+ "startLine": 1
880
+ }
881
+ }
882
+ }
883
+ ],
884
+ "partialFingerprints": {
885
+ "mcp-observatory/finding-id": "mcp-observatory/resources/diagnostic/ed3ded95"
886
+ },
887
+ "properties": {
888
+ "id": "mcp-observatory/resources/diagnostic/ed3ded95",
889
+ "category": "resources",
890
+ "checkId": "resources",
891
+ "targetId": "mcp-server-kubernetes",
892
+ "subject": {
893
+ "type": "check",
894
+ "name": "resources"
895
+ },
896
+ "severity": "info",
897
+ "controlRefs": [
898
+ "mcp-observatory:resources"
899
+ ],
900
+ "tags": [
901
+ "mcp",
902
+ "mcp-observatory",
903
+ "resources",
904
+ "mcp-observatory:resources"
905
+ ]
906
+ }
907
+ },
908
+ {
909
+ "ruleId": "mcp-observatory/resources/diagnostic",
910
+ "level": "note",
911
+ "message": {
912
+ "text": "Starting Kubernetes MCP server v3.9.2, handling commands..."
913
+ },
914
+ "locations": [
915
+ {
916
+ "physicalLocation": {
917
+ "artifactLocation": {
918
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
919
+ },
920
+ "region": {
921
+ "startLine": 1
922
+ }
923
+ }
924
+ }
925
+ ],
926
+ "partialFingerprints": {
927
+ "mcp-observatory/finding-id": "mcp-observatory/resources/diagnostic/0ba59cdb"
928
+ },
929
+ "properties": {
930
+ "id": "mcp-observatory/resources/diagnostic/0ba59cdb",
931
+ "category": "resources",
932
+ "checkId": "resources",
933
+ "targetId": "mcp-server-kubernetes",
934
+ "subject": {
935
+ "type": "check",
936
+ "name": "resources"
937
+ },
938
+ "severity": "info",
939
+ "controlRefs": [
940
+ "mcp-observatory:resources"
941
+ ],
942
+ "tags": [
943
+ "mcp",
944
+ "mcp-observatory",
945
+ "resources",
946
+ "mcp-observatory:resources"
947
+ ]
948
+ }
949
+ },
950
+ {
951
+ "ruleId": "mcp-observatory/resources/diagnostic",
952
+ "level": "note",
953
+ "message": {
954
+ "text": "Telemetry: Disabled"
955
+ },
956
+ "locations": [
957
+ {
958
+ "physicalLocation": {
959
+ "artifactLocation": {
960
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
961
+ },
962
+ "region": {
963
+ "startLine": 1
964
+ }
965
+ }
966
+ }
967
+ ],
968
+ "partialFingerprints": {
969
+ "mcp-observatory/finding-id": "mcp-observatory/resources/diagnostic/e5a88999"
970
+ },
971
+ "properties": {
972
+ "id": "mcp-observatory/resources/diagnostic/e5a88999",
973
+ "category": "resources",
974
+ "checkId": "resources",
975
+ "targetId": "mcp-server-kubernetes",
976
+ "subject": {
977
+ "type": "check",
978
+ "name": "resources"
979
+ },
980
+ "severity": "info",
981
+ "controlRefs": [
982
+ "mcp-observatory:resources"
983
+ ],
984
+ "tags": [
985
+ "mcp",
986
+ "mcp-observatory",
987
+ "resources",
988
+ "mcp-observatory:resources"
989
+ ]
990
+ }
991
+ },
992
+ {
993
+ "ruleId": "mcp-observatory/resources/diagnostic",
994
+ "level": "note",
995
+ "message": {
996
+ "text": "(node:51681) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead."
997
+ },
998
+ "locations": [
999
+ {
1000
+ "physicalLocation": {
1001
+ "artifactLocation": {
1002
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1003
+ },
1004
+ "region": {
1005
+ "startLine": 1
1006
+ }
1007
+ }
1008
+ }
1009
+ ],
1010
+ "partialFingerprints": {
1011
+ "mcp-observatory/finding-id": "mcp-observatory/resources/diagnostic/9c185fe4"
1012
+ },
1013
+ "properties": {
1014
+ "id": "mcp-observatory/resources/diagnostic/9c185fe4",
1015
+ "category": "resources",
1016
+ "checkId": "resources",
1017
+ "targetId": "mcp-server-kubernetes",
1018
+ "subject": {
1019
+ "type": "check",
1020
+ "name": "resources"
1021
+ },
1022
+ "severity": "info",
1023
+ "controlRefs": [
1024
+ "mcp-observatory:resources"
1025
+ ],
1026
+ "tags": [
1027
+ "mcp",
1028
+ "mcp-observatory",
1029
+ "resources",
1030
+ "mcp-observatory:resources"
1031
+ ]
1032
+ }
1033
+ },
1034
+ {
1035
+ "ruleId": "mcp-observatory/resources/diagnostic",
1036
+ "level": "note",
1037
+ "message": {
1038
+ "text": "(Use `node --trace-deprecation ...` to show where the warning was created)"
1039
+ },
1040
+ "locations": [
1041
+ {
1042
+ "physicalLocation": {
1043
+ "artifactLocation": {
1044
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1045
+ },
1046
+ "region": {
1047
+ "startLine": 1
1048
+ }
1049
+ }
1050
+ }
1051
+ ],
1052
+ "partialFingerprints": {
1053
+ "mcp-observatory/finding-id": "mcp-observatory/resources/diagnostic/51efdc19"
1054
+ },
1055
+ "properties": {
1056
+ "id": "mcp-observatory/resources/diagnostic/51efdc19",
1057
+ "category": "resources",
1058
+ "checkId": "resources",
1059
+ "targetId": "mcp-server-kubernetes",
1060
+ "subject": {
1061
+ "type": "check",
1062
+ "name": "resources"
1063
+ },
1064
+ "severity": "info",
1065
+ "controlRefs": [
1066
+ "mcp-observatory:resources"
1067
+ ],
1068
+ "tags": [
1069
+ "mcp",
1070
+ "mcp-observatory",
1071
+ "resources",
1072
+ "mcp-observatory:resources"
1073
+ ]
1074
+ }
1075
+ },
1076
+ {
1077
+ "ruleId": "mcp-observatory/resources/diagnostic",
1078
+ "level": "note",
1079
+ "message": {
1080
+ "text": "MCP error -32601: Method not found"
1081
+ },
1082
+ "locations": [
1083
+ {
1084
+ "physicalLocation": {
1085
+ "artifactLocation": {
1086
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1087
+ },
1088
+ "region": {
1089
+ "startLine": 1
1090
+ }
1091
+ }
1092
+ }
1093
+ ],
1094
+ "partialFingerprints": {
1095
+ "mcp-observatory/finding-id": "mcp-observatory/resources/diagnostic/ce159f1e"
1096
+ },
1097
+ "properties": {
1098
+ "id": "mcp-observatory/resources/diagnostic/ce159f1e",
1099
+ "category": "resources",
1100
+ "checkId": "resources",
1101
+ "targetId": "mcp-server-kubernetes",
1102
+ "subject": {
1103
+ "type": "check",
1104
+ "name": "resources"
1105
+ },
1106
+ "severity": "info",
1107
+ "controlRefs": [
1108
+ "mcp-observatory:resources"
1109
+ ],
1110
+ "tags": [
1111
+ "mcp",
1112
+ "mcp-observatory",
1113
+ "resources",
1114
+ "mcp-observatory:resources"
1115
+ ]
1116
+ }
1117
+ },
1118
+ {
1119
+ "ruleId": "mcp-observatory/resources/diagnostic",
1120
+ "level": "note",
1121
+ "message": {
1122
+ "text": "npm warn deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me"
1123
+ },
1124
+ "locations": [
1125
+ {
1126
+ "physicalLocation": {
1127
+ "artifactLocation": {
1128
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1129
+ },
1130
+ "region": {
1131
+ "startLine": 1
1132
+ }
1133
+ }
1134
+ }
1135
+ ],
1136
+ "partialFingerprints": {
1137
+ "mcp-observatory/finding-id": "mcp-observatory/resources/diagnostic/e73de423"
1138
+ },
1139
+ "properties": {
1140
+ "id": "mcp-observatory/resources/diagnostic/e73de423",
1141
+ "category": "resources",
1142
+ "checkId": "resources",
1143
+ "targetId": "mcp-server-kubernetes",
1144
+ "subject": {
1145
+ "type": "check",
1146
+ "name": "resources"
1147
+ },
1148
+ "severity": "info",
1149
+ "controlRefs": [
1150
+ "mcp-observatory:resources"
1151
+ ],
1152
+ "tags": [
1153
+ "mcp",
1154
+ "mcp-observatory",
1155
+ "resources",
1156
+ "mcp-observatory:resources"
1157
+ ]
1158
+ }
1159
+ },
1160
+ {
1161
+ "ruleId": "mcp-observatory/resources/diagnostic",
1162
+ "level": "note",
1163
+ "message": {
1164
+ "text": "Starting Kubernetes MCP server v3.9.2, handling commands..."
1165
+ },
1166
+ "locations": [
1167
+ {
1168
+ "physicalLocation": {
1169
+ "artifactLocation": {
1170
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1171
+ },
1172
+ "region": {
1173
+ "startLine": 1
1174
+ }
1175
+ }
1176
+ }
1177
+ ],
1178
+ "partialFingerprints": {
1179
+ "mcp-observatory/finding-id": "mcp-observatory/resources/diagnostic/11a5a64d"
1180
+ },
1181
+ "properties": {
1182
+ "id": "mcp-observatory/resources/diagnostic/11a5a64d",
1183
+ "category": "resources",
1184
+ "checkId": "resources",
1185
+ "targetId": "mcp-server-kubernetes",
1186
+ "subject": {
1187
+ "type": "check",
1188
+ "name": "resources"
1189
+ },
1190
+ "severity": "info",
1191
+ "controlRefs": [
1192
+ "mcp-observatory:resources"
1193
+ ],
1194
+ "tags": [
1195
+ "mcp",
1196
+ "mcp-observatory",
1197
+ "resources",
1198
+ "mcp-observatory:resources"
1199
+ ]
1200
+ }
1201
+ },
1202
+ {
1203
+ "ruleId": "mcp-observatory/resources/diagnostic",
1204
+ "level": "note",
1205
+ "message": {
1206
+ "text": "Telemetry: Disabled"
1207
+ },
1208
+ "locations": [
1209
+ {
1210
+ "physicalLocation": {
1211
+ "artifactLocation": {
1212
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1213
+ },
1214
+ "region": {
1215
+ "startLine": 1
1216
+ }
1217
+ }
1218
+ }
1219
+ ],
1220
+ "partialFingerprints": {
1221
+ "mcp-observatory/finding-id": "mcp-observatory/resources/diagnostic/eba8930b"
1222
+ },
1223
+ "properties": {
1224
+ "id": "mcp-observatory/resources/diagnostic/eba8930b",
1225
+ "category": "resources",
1226
+ "checkId": "resources",
1227
+ "targetId": "mcp-server-kubernetes",
1228
+ "subject": {
1229
+ "type": "check",
1230
+ "name": "resources"
1231
+ },
1232
+ "severity": "info",
1233
+ "controlRefs": [
1234
+ "mcp-observatory:resources"
1235
+ ],
1236
+ "tags": [
1237
+ "mcp",
1238
+ "mcp-observatory",
1239
+ "resources",
1240
+ "mcp-observatory:resources"
1241
+ ]
1242
+ }
1243
+ },
1244
+ {
1245
+ "ruleId": "mcp-observatory/resources/diagnostic",
1246
+ "level": "note",
1247
+ "message": {
1248
+ "text": "(node:51681) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead."
1249
+ },
1250
+ "locations": [
1251
+ {
1252
+ "physicalLocation": {
1253
+ "artifactLocation": {
1254
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1255
+ },
1256
+ "region": {
1257
+ "startLine": 1
1258
+ }
1259
+ }
1260
+ }
1261
+ ],
1262
+ "partialFingerprints": {
1263
+ "mcp-observatory/finding-id": "mcp-observatory/resources/diagnostic/96185672"
1264
+ },
1265
+ "properties": {
1266
+ "id": "mcp-observatory/resources/diagnostic/96185672",
1267
+ "category": "resources",
1268
+ "checkId": "resources",
1269
+ "targetId": "mcp-server-kubernetes",
1270
+ "subject": {
1271
+ "type": "check",
1272
+ "name": "resources"
1273
+ },
1274
+ "severity": "info",
1275
+ "controlRefs": [
1276
+ "mcp-observatory:resources"
1277
+ ],
1278
+ "tags": [
1279
+ "mcp",
1280
+ "mcp-observatory",
1281
+ "resources",
1282
+ "mcp-observatory:resources"
1283
+ ]
1284
+ }
1285
+ },
1286
+ {
1287
+ "ruleId": "mcp-observatory/resources/diagnostic",
1288
+ "level": "note",
1289
+ "message": {
1290
+ "text": "(Use `node --trace-deprecation ...` to show where the warning was created)"
1291
+ },
1292
+ "locations": [
1293
+ {
1294
+ "physicalLocation": {
1295
+ "artifactLocation": {
1296
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1297
+ },
1298
+ "region": {
1299
+ "startLine": 1
1300
+ }
1301
+ }
1302
+ }
1303
+ ],
1304
+ "partialFingerprints": {
1305
+ "mcp-observatory/finding-id": "mcp-observatory/resources/diagnostic/979f03c6"
1306
+ },
1307
+ "properties": {
1308
+ "id": "mcp-observatory/resources/diagnostic/979f03c6",
1309
+ "category": "resources",
1310
+ "checkId": "resources",
1311
+ "targetId": "mcp-server-kubernetes",
1312
+ "subject": {
1313
+ "type": "check",
1314
+ "name": "resources"
1315
+ },
1316
+ "severity": "info",
1317
+ "controlRefs": [
1318
+ "mcp-observatory:resources"
1319
+ ],
1320
+ "tags": [
1321
+ "mcp",
1322
+ "mcp-observatory",
1323
+ "resources",
1324
+ "mcp-observatory:resources"
1325
+ ]
1326
+ }
1327
+ },
1328
+ {
1329
+ "ruleId": "mcp-observatory/security/permissive-schema",
1330
+ "level": "note",
1331
+ "message": {
1332
+ "text": "Tool \"cleanup\" has an empty schema but is marked as destructive."
1333
+ },
1334
+ "locations": [
1335
+ {
1336
+ "physicalLocation": {
1337
+ "artifactLocation": {
1338
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1339
+ },
1340
+ "region": {
1341
+ "startLine": 1
1342
+ }
1343
+ }
1344
+ }
1345
+ ],
1346
+ "partialFingerprints": {
1347
+ "mcp-observatory/finding-id": "mcp-observatory/security-lite/permissive-schema/8a100770"
1348
+ },
1349
+ "properties": {
1350
+ "id": "mcp-observatory/security-lite/permissive-schema/8a100770",
1351
+ "category": "security",
1352
+ "checkId": "security-lite",
1353
+ "targetId": "mcp-server-kubernetes",
1354
+ "subject": {
1355
+ "type": "tool",
1356
+ "name": "cleanup"
1357
+ },
1358
+ "severity": "low",
1359
+ "controlRefs": [
1360
+ "mcp-observatory:schema-quality",
1361
+ "mcp-observatory:least-privilege"
1362
+ ],
1363
+ "tags": [
1364
+ "mcp",
1365
+ "mcp-observatory",
1366
+ "security",
1367
+ "mcp-observatory:schema-quality",
1368
+ "mcp-observatory:least-privilege"
1369
+ ]
1370
+ }
1371
+ },
1372
+ {
1373
+ "ruleId": "mcp-observatory/security/broad-filesystem",
1374
+ "level": "warning",
1375
+ "message": {
1376
+ "text": "Tool \"kubectl_apply\" accepts filesystem paths and has destructive capabilities."
1377
+ },
1378
+ "locations": [
1379
+ {
1380
+ "physicalLocation": {
1381
+ "artifactLocation": {
1382
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1383
+ },
1384
+ "region": {
1385
+ "startLine": 1
1386
+ }
1387
+ }
1388
+ }
1389
+ ],
1390
+ "partialFingerprints": {
1391
+ "mcp-observatory/finding-id": "mcp-observatory/security-lite/broad-filesystem/520aaff5"
1392
+ },
1393
+ "properties": {
1394
+ "id": "mcp-observatory/security-lite/broad-filesystem/520aaff5",
1395
+ "category": "security",
1396
+ "checkId": "security-lite",
1397
+ "targetId": "mcp-server-kubernetes",
1398
+ "subject": {
1399
+ "type": "tool",
1400
+ "name": "kubectl_apply"
1401
+ },
1402
+ "severity": "medium",
1403
+ "controlRefs": [
1404
+ "mcp-observatory:tool-safety",
1405
+ "mcp-observatory:filesystem-access"
1406
+ ],
1407
+ "tags": [
1408
+ "mcp",
1409
+ "mcp-observatory",
1410
+ "security",
1411
+ "mcp-observatory:tool-safety",
1412
+ "mcp-observatory:filesystem-access"
1413
+ ]
1414
+ }
1415
+ },
1416
+ {
1417
+ "ruleId": "mcp-observatory/security/broad-filesystem",
1418
+ "level": "warning",
1419
+ "message": {
1420
+ "text": "Tool \"kubectl_delete\" accepts filesystem paths and has destructive capabilities."
1421
+ },
1422
+ "locations": [
1423
+ {
1424
+ "physicalLocation": {
1425
+ "artifactLocation": {
1426
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1427
+ },
1428
+ "region": {
1429
+ "startLine": 1
1430
+ }
1431
+ }
1432
+ }
1433
+ ],
1434
+ "partialFingerprints": {
1435
+ "mcp-observatory/finding-id": "mcp-observatory/security-lite/broad-filesystem/689270a4"
1436
+ },
1437
+ "properties": {
1438
+ "id": "mcp-observatory/security-lite/broad-filesystem/689270a4",
1439
+ "category": "security",
1440
+ "checkId": "security-lite",
1441
+ "targetId": "mcp-server-kubernetes",
1442
+ "subject": {
1443
+ "type": "tool",
1444
+ "name": "kubectl_delete"
1445
+ },
1446
+ "severity": "medium",
1447
+ "controlRefs": [
1448
+ "mcp-observatory:tool-safety",
1449
+ "mcp-observatory:filesystem-access"
1450
+ ],
1451
+ "tags": [
1452
+ "mcp",
1453
+ "mcp-observatory",
1454
+ "security",
1455
+ "mcp-observatory:tool-safety",
1456
+ "mcp-observatory:filesystem-access"
1457
+ ]
1458
+ }
1459
+ },
1460
+ {
1461
+ "ruleId": "mcp-observatory/security/shell-injection",
1462
+ "level": "error",
1463
+ "message": {
1464
+ "text": "Tool \"kubectl_create\" has parameter \"command\" which may allow arbitrary command execution."
1465
+ },
1466
+ "locations": [
1467
+ {
1468
+ "physicalLocation": {
1469
+ "artifactLocation": {
1470
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1471
+ },
1472
+ "region": {
1473
+ "startLine": 1
1474
+ }
1475
+ }
1476
+ }
1477
+ ],
1478
+ "partialFingerprints": {
1479
+ "mcp-observatory/finding-id": "mcp-observatory/security-lite/shell-injection/f8301eba"
1480
+ },
1481
+ "properties": {
1482
+ "id": "mcp-observatory/security-lite/shell-injection/f8301eba",
1483
+ "category": "security",
1484
+ "checkId": "security-lite",
1485
+ "targetId": "mcp-server-kubernetes",
1486
+ "subject": {
1487
+ "type": "tool",
1488
+ "name": "kubectl_create"
1489
+ },
1490
+ "severity": "high",
1491
+ "controlRefs": [
1492
+ "mcp-observatory:tool-safety",
1493
+ "mcp-observatory:command-execution"
1494
+ ],
1495
+ "tags": [
1496
+ "mcp",
1497
+ "mcp-observatory",
1498
+ "security",
1499
+ "mcp-observatory:tool-safety",
1500
+ "mcp-observatory:command-execution"
1501
+ ]
1502
+ }
1503
+ },
1504
+ {
1505
+ "ruleId": "mcp-observatory/security/broad-filesystem",
1506
+ "level": "warning",
1507
+ "message": {
1508
+ "text": "Tool \"kubectl_create\" accepts filesystem paths and has destructive capabilities."
1509
+ },
1510
+ "locations": [
1511
+ {
1512
+ "physicalLocation": {
1513
+ "artifactLocation": {
1514
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1515
+ },
1516
+ "region": {
1517
+ "startLine": 1
1518
+ }
1519
+ }
1520
+ }
1521
+ ],
1522
+ "partialFingerprints": {
1523
+ "mcp-observatory/finding-id": "mcp-observatory/security-lite/broad-filesystem/f5f6d78c"
1524
+ },
1525
+ "properties": {
1526
+ "id": "mcp-observatory/security-lite/broad-filesystem/f5f6d78c",
1527
+ "category": "security",
1528
+ "checkId": "security-lite",
1529
+ "targetId": "mcp-server-kubernetes",
1530
+ "subject": {
1531
+ "type": "tool",
1532
+ "name": "kubectl_create"
1533
+ },
1534
+ "severity": "medium",
1535
+ "controlRefs": [
1536
+ "mcp-observatory:tool-safety",
1537
+ "mcp-observatory:filesystem-access"
1538
+ ],
1539
+ "tags": [
1540
+ "mcp",
1541
+ "mcp-observatory",
1542
+ "security",
1543
+ "mcp-observatory:tool-safety",
1544
+ "mcp-observatory:filesystem-access"
1545
+ ]
1546
+ }
1547
+ },
1548
+ {
1549
+ "ruleId": "mcp-observatory/security/permissive-schema",
1550
+ "level": "note",
1551
+ "message": {
1552
+ "text": "Tool \"kubectl_reconnect\" has an empty schema but is marked as destructive."
1553
+ },
1554
+ "locations": [
1555
+ {
1556
+ "physicalLocation": {
1557
+ "artifactLocation": {
1558
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1559
+ },
1560
+ "region": {
1561
+ "startLine": 1
1562
+ }
1563
+ }
1564
+ }
1565
+ ],
1566
+ "partialFingerprints": {
1567
+ "mcp-observatory/finding-id": "mcp-observatory/security-lite/permissive-schema/8351871f"
1568
+ },
1569
+ "properties": {
1570
+ "id": "mcp-observatory/security-lite/permissive-schema/8351871f",
1571
+ "category": "security",
1572
+ "checkId": "security-lite",
1573
+ "targetId": "mcp-server-kubernetes",
1574
+ "subject": {
1575
+ "type": "tool",
1576
+ "name": "kubectl_reconnect"
1577
+ },
1578
+ "severity": "low",
1579
+ "controlRefs": [
1580
+ "mcp-observatory:schema-quality",
1581
+ "mcp-observatory:least-privilege"
1582
+ ],
1583
+ "tags": [
1584
+ "mcp",
1585
+ "mcp-observatory",
1586
+ "security",
1587
+ "mcp-observatory:schema-quality",
1588
+ "mcp-observatory:least-privilege"
1589
+ ]
1590
+ }
1591
+ },
1592
+ {
1593
+ "ruleId": "mcp-observatory/security/shell-injection",
1594
+ "level": "error",
1595
+ "message": {
1596
+ "text": "Tool \"exec_in_pod\" has parameter \"command\" which may allow arbitrary command execution."
1597
+ },
1598
+ "locations": [
1599
+ {
1600
+ "physicalLocation": {
1601
+ "artifactLocation": {
1602
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1603
+ },
1604
+ "region": {
1605
+ "startLine": 1
1606
+ }
1607
+ }
1608
+ }
1609
+ ],
1610
+ "partialFingerprints": {
1611
+ "mcp-observatory/finding-id": "mcp-observatory/security-lite/shell-injection/980e1623"
1612
+ },
1613
+ "properties": {
1614
+ "id": "mcp-observatory/security-lite/shell-injection/980e1623",
1615
+ "category": "security",
1616
+ "checkId": "security-lite",
1617
+ "targetId": "mcp-server-kubernetes",
1618
+ "subject": {
1619
+ "type": "tool",
1620
+ "name": "exec_in_pod"
1621
+ },
1622
+ "severity": "high",
1623
+ "controlRefs": [
1624
+ "mcp-observatory:tool-safety",
1625
+ "mcp-observatory:command-execution"
1626
+ ],
1627
+ "tags": [
1628
+ "mcp",
1629
+ "mcp-observatory",
1630
+ "security",
1631
+ "mcp-observatory:tool-safety",
1632
+ "mcp-observatory:command-execution"
1633
+ ]
1634
+ }
1635
+ },
1636
+ {
1637
+ "ruleId": "mcp-observatory/security/shell-injection",
1638
+ "level": "error",
1639
+ "message": {
1640
+ "text": "Tool \"kubectl_generic\" has parameter \"command\" which may allow arbitrary command execution."
1641
+ },
1642
+ "locations": [
1643
+ {
1644
+ "physicalLocation": {
1645
+ "artifactLocation": {
1646
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1647
+ },
1648
+ "region": {
1649
+ "startLine": 1
1650
+ }
1651
+ }
1652
+ }
1653
+ ],
1654
+ "partialFingerprints": {
1655
+ "mcp-observatory/finding-id": "mcp-observatory/security-lite/shell-injection/6f931430"
1656
+ },
1657
+ "properties": {
1658
+ "id": "mcp-observatory/security-lite/shell-injection/6f931430",
1659
+ "category": "security",
1660
+ "checkId": "security-lite",
1661
+ "targetId": "mcp-server-kubernetes",
1662
+ "subject": {
1663
+ "type": "tool",
1664
+ "name": "kubectl_generic"
1665
+ },
1666
+ "severity": "high",
1667
+ "controlRefs": [
1668
+ "mcp-observatory:tool-safety",
1669
+ "mcp-observatory:command-execution"
1670
+ ],
1671
+ "tags": [
1672
+ "mcp",
1673
+ "mcp-observatory",
1674
+ "security",
1675
+ "mcp-observatory:tool-safety",
1676
+ "mcp-observatory:command-execution"
1677
+ ]
1678
+ }
1679
+ },
1680
+ {
1681
+ "ruleId": "mcp-observatory/conformance/diagnostic",
1682
+ "level": "note",
1683
+ "message": {
1684
+ "text": "[pass] capabilities-present: Server returned capabilities object."
1685
+ },
1686
+ "locations": [
1687
+ {
1688
+ "physicalLocation": {
1689
+ "artifactLocation": {
1690
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1691
+ },
1692
+ "region": {
1693
+ "startLine": 1
1694
+ }
1695
+ }
1696
+ }
1697
+ ],
1698
+ "partialFingerprints": {
1699
+ "mcp-observatory/finding-id": "mcp-observatory/conformance/diagnostic/88d0914e"
1700
+ },
1701
+ "properties": {
1702
+ "id": "mcp-observatory/conformance/diagnostic/88d0914e",
1703
+ "category": "conformance",
1704
+ "checkId": "conformance",
1705
+ "targetId": "mcp-server-kubernetes",
1706
+ "subject": {
1707
+ "type": "check",
1708
+ "name": "conformance"
1709
+ },
1710
+ "severity": "info",
1711
+ "controlRefs": [
1712
+ "mcp-observatory:conformance"
1713
+ ],
1714
+ "tags": [
1715
+ "mcp",
1716
+ "mcp-observatory",
1717
+ "conformance",
1718
+ "mcp-observatory:conformance"
1719
+ ]
1720
+ }
1721
+ },
1722
+ {
1723
+ "ruleId": "mcp-observatory/conformance/diagnostic",
1724
+ "level": "note",
1725
+ "message": {
1726
+ "text": "[pass] server-info: Server provided initialization info."
1727
+ },
1728
+ "locations": [
1729
+ {
1730
+ "physicalLocation": {
1731
+ "artifactLocation": {
1732
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1733
+ },
1734
+ "region": {
1735
+ "startLine": 1
1736
+ }
1737
+ }
1738
+ }
1739
+ ],
1740
+ "partialFingerprints": {
1741
+ "mcp-observatory/finding-id": "mcp-observatory/conformance/diagnostic/ae05997e"
1742
+ },
1743
+ "properties": {
1744
+ "id": "mcp-observatory/conformance/diagnostic/ae05997e",
1745
+ "category": "conformance",
1746
+ "checkId": "conformance",
1747
+ "targetId": "mcp-server-kubernetes",
1748
+ "subject": {
1749
+ "type": "check",
1750
+ "name": "conformance"
1751
+ },
1752
+ "severity": "info",
1753
+ "controlRefs": [
1754
+ "mcp-observatory:conformance"
1755
+ ],
1756
+ "tags": [
1757
+ "mcp",
1758
+ "mcp-observatory",
1759
+ "conformance",
1760
+ "mcp-observatory:conformance"
1761
+ ]
1762
+ }
1763
+ },
1764
+ {
1765
+ "ruleId": "mcp-observatory/conformance/diagnostic",
1766
+ "level": "note",
1767
+ "message": {
1768
+ "text": "[pass] tools-capability-match: tools/list returned 23 tool(s)."
1769
+ },
1770
+ "locations": [
1771
+ {
1772
+ "physicalLocation": {
1773
+ "artifactLocation": {
1774
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1775
+ },
1776
+ "region": {
1777
+ "startLine": 1
1778
+ }
1779
+ }
1780
+ }
1781
+ ],
1782
+ "partialFingerprints": {
1783
+ "mcp-observatory/finding-id": "mcp-observatory/conformance/diagnostic/42b5ebfb"
1784
+ },
1785
+ "properties": {
1786
+ "id": "mcp-observatory/conformance/diagnostic/42b5ebfb",
1787
+ "category": "conformance",
1788
+ "checkId": "conformance",
1789
+ "targetId": "mcp-server-kubernetes",
1790
+ "subject": {
1791
+ "type": "check",
1792
+ "name": "conformance"
1793
+ },
1794
+ "severity": "info",
1795
+ "controlRefs": [
1796
+ "mcp-observatory:conformance"
1797
+ ],
1798
+ "tags": [
1799
+ "mcp",
1800
+ "mcp-observatory",
1801
+ "conformance",
1802
+ "mcp-observatory:conformance"
1803
+ ]
1804
+ }
1805
+ },
1806
+ {
1807
+ "ruleId": "mcp-observatory/conformance/diagnostic",
1808
+ "level": "note",
1809
+ "message": {
1810
+ "text": "[pass] prompts-capability-match: prompts/list returned 1 prompt(s)."
1811
+ },
1812
+ "locations": [
1813
+ {
1814
+ "physicalLocation": {
1815
+ "artifactLocation": {
1816
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1817
+ },
1818
+ "region": {
1819
+ "startLine": 1
1820
+ }
1821
+ }
1822
+ }
1823
+ ],
1824
+ "partialFingerprints": {
1825
+ "mcp-observatory/finding-id": "mcp-observatory/conformance/diagnostic/4d41ef14"
1826
+ },
1827
+ "properties": {
1828
+ "id": "mcp-observatory/conformance/diagnostic/4d41ef14",
1829
+ "category": "conformance",
1830
+ "checkId": "conformance",
1831
+ "targetId": "mcp-server-kubernetes",
1832
+ "subject": {
1833
+ "type": "check",
1834
+ "name": "conformance"
1835
+ },
1836
+ "severity": "info",
1837
+ "controlRefs": [
1838
+ "mcp-observatory:conformance"
1839
+ ],
1840
+ "tags": [
1841
+ "mcp",
1842
+ "mcp-observatory",
1843
+ "conformance",
1844
+ "mcp-observatory:conformance"
1845
+ ]
1846
+ }
1847
+ },
1848
+ {
1849
+ "ruleId": "mcp-observatory/conformance/diagnostic",
1850
+ "level": "note",
1851
+ "message": {
1852
+ "text": "[pass] resources-capability-match: resources/list returned 5 resource(s)."
1853
+ },
1854
+ "locations": [
1855
+ {
1856
+ "physicalLocation": {
1857
+ "artifactLocation": {
1858
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1859
+ },
1860
+ "region": {
1861
+ "startLine": 1
1862
+ }
1863
+ }
1864
+ }
1865
+ ],
1866
+ "partialFingerprints": {
1867
+ "mcp-observatory/finding-id": "mcp-observatory/conformance/diagnostic/8f3585af"
1868
+ },
1869
+ "properties": {
1870
+ "id": "mcp-observatory/conformance/diagnostic/8f3585af",
1871
+ "category": "conformance",
1872
+ "checkId": "conformance",
1873
+ "targetId": "mcp-server-kubernetes",
1874
+ "subject": {
1875
+ "type": "check",
1876
+ "name": "conformance"
1877
+ },
1878
+ "severity": "info",
1879
+ "controlRefs": [
1880
+ "mcp-observatory:conformance"
1881
+ ],
1882
+ "tags": [
1883
+ "mcp",
1884
+ "mcp-observatory",
1885
+ "conformance",
1886
+ "mcp-observatory:conformance"
1887
+ ]
1888
+ }
1889
+ },
1890
+ {
1891
+ "ruleId": "mcp-observatory/conformance/diagnostic",
1892
+ "level": "note",
1893
+ "message": {
1894
+ "text": "[pass] tool-response-content: Tool \"cleanup\" response has valid content array."
1895
+ },
1896
+ "locations": [
1897
+ {
1898
+ "physicalLocation": {
1899
+ "artifactLocation": {
1900
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1901
+ },
1902
+ "region": {
1903
+ "startLine": 1
1904
+ }
1905
+ }
1906
+ }
1907
+ ],
1908
+ "partialFingerprints": {
1909
+ "mcp-observatory/finding-id": "mcp-observatory/conformance/diagnostic/75c4ce09"
1910
+ },
1911
+ "properties": {
1912
+ "id": "mcp-observatory/conformance/diagnostic/75c4ce09",
1913
+ "category": "conformance",
1914
+ "checkId": "conformance",
1915
+ "targetId": "mcp-server-kubernetes",
1916
+ "subject": {
1917
+ "type": "check",
1918
+ "name": "conformance"
1919
+ },
1920
+ "severity": "info",
1921
+ "controlRefs": [
1922
+ "mcp-observatory:conformance"
1923
+ ],
1924
+ "tags": [
1925
+ "mcp",
1926
+ "mcp-observatory",
1927
+ "conformance",
1928
+ "mcp-observatory:conformance"
1929
+ ]
1930
+ }
1931
+ },
1932
+ {
1933
+ "ruleId": "mcp-observatory/conformance/diagnostic",
1934
+ "level": "note",
1935
+ "message": {
1936
+ "text": "[pass] error-handling: Server returned proper error code -32601 for unknown method."
1937
+ },
1938
+ "locations": [
1939
+ {
1940
+ "physicalLocation": {
1941
+ "artifactLocation": {
1942
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1943
+ },
1944
+ "region": {
1945
+ "startLine": 1
1946
+ }
1947
+ }
1948
+ }
1949
+ ],
1950
+ "partialFingerprints": {
1951
+ "mcp-observatory/finding-id": "mcp-observatory/conformance/diagnostic/df9339b5"
1952
+ },
1953
+ "properties": {
1954
+ "id": "mcp-observatory/conformance/diagnostic/df9339b5",
1955
+ "category": "conformance",
1956
+ "checkId": "conformance",
1957
+ "targetId": "mcp-server-kubernetes",
1958
+ "subject": {
1959
+ "type": "check",
1960
+ "name": "conformance"
1961
+ },
1962
+ "severity": "info",
1963
+ "controlRefs": [
1964
+ "mcp-observatory:conformance"
1965
+ ],
1966
+ "tags": [
1967
+ "mcp",
1968
+ "mcp-observatory",
1969
+ "conformance",
1970
+ "mcp-observatory:conformance"
1971
+ ]
1972
+ }
1973
+ },
1974
+ {
1975
+ "ruleId": "mcp-observatory/schema-quality/schema-property-resourcetype-missing-description",
1976
+ "level": "note",
1977
+ "message": {
1978
+ "text": "tool \"port_forward\": Property 'resourceType' missing description"
1979
+ },
1980
+ "locations": [
1981
+ {
1982
+ "physicalLocation": {
1983
+ "artifactLocation": {
1984
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
1985
+ },
1986
+ "region": {
1987
+ "startLine": 1
1988
+ }
1989
+ }
1990
+ }
1991
+ ],
1992
+ "partialFingerprints": {
1993
+ "mcp-observatory/finding-id": "mcp-observatory/schema-quality/schema-property-resourcetype-missing-description/7605745e"
1994
+ },
1995
+ "properties": {
1996
+ "id": "mcp-observatory/schema-quality/schema-property-resourcetype-missing-description/7605745e",
1997
+ "category": "schema-quality",
1998
+ "checkId": "schema-quality",
1999
+ "targetId": "mcp-server-kubernetes",
2000
+ "subject": {
2001
+ "type": "tool",
2002
+ "name": "port_forward"
2003
+ },
2004
+ "severity": "info",
2005
+ "controlRefs": [
2006
+ "mcp-observatory:schema-quality",
2007
+ "mcp-observatory:agent-readiness"
2008
+ ],
2009
+ "tags": [
2010
+ "mcp",
2011
+ "mcp-observatory",
2012
+ "schema-quality",
2013
+ "mcp-observatory:schema-quality",
2014
+ "mcp-observatory:agent-readiness"
2015
+ ]
2016
+ }
2017
+ },
2018
+ {
2019
+ "ruleId": "mcp-observatory/schema-quality/schema-property-resourcename-missing-description",
2020
+ "level": "note",
2021
+ "message": {
2022
+ "text": "tool \"port_forward\": Property 'resourceName' missing description"
2023
+ },
2024
+ "locations": [
2025
+ {
2026
+ "physicalLocation": {
2027
+ "artifactLocation": {
2028
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2029
+ },
2030
+ "region": {
2031
+ "startLine": 1
2032
+ }
2033
+ }
2034
+ }
2035
+ ],
2036
+ "partialFingerprints": {
2037
+ "mcp-observatory/finding-id": "mcp-observatory/schema-quality/schema-property-resourcename-missing-description/eab850a7"
2038
+ },
2039
+ "properties": {
2040
+ "id": "mcp-observatory/schema-quality/schema-property-resourcename-missing-description/eab850a7",
2041
+ "category": "schema-quality",
2042
+ "checkId": "schema-quality",
2043
+ "targetId": "mcp-server-kubernetes",
2044
+ "subject": {
2045
+ "type": "tool",
2046
+ "name": "port_forward"
2047
+ },
2048
+ "severity": "info",
2049
+ "controlRefs": [
2050
+ "mcp-observatory:schema-quality",
2051
+ "mcp-observatory:agent-readiness"
2052
+ ],
2053
+ "tags": [
2054
+ "mcp",
2055
+ "mcp-observatory",
2056
+ "schema-quality",
2057
+ "mcp-observatory:schema-quality",
2058
+ "mcp-observatory:agent-readiness"
2059
+ ]
2060
+ }
2061
+ },
2062
+ {
2063
+ "ruleId": "mcp-observatory/schema-quality/schema-property-localport-missing-description",
2064
+ "level": "note",
2065
+ "message": {
2066
+ "text": "tool \"port_forward\": Property 'localPort' missing description"
2067
+ },
2068
+ "locations": [
2069
+ {
2070
+ "physicalLocation": {
2071
+ "artifactLocation": {
2072
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2073
+ },
2074
+ "region": {
2075
+ "startLine": 1
2076
+ }
2077
+ }
2078
+ }
2079
+ ],
2080
+ "partialFingerprints": {
2081
+ "mcp-observatory/finding-id": "mcp-observatory/schema-quality/schema-property-localport-missing-description/ca1b1a8c"
2082
+ },
2083
+ "properties": {
2084
+ "id": "mcp-observatory/schema-quality/schema-property-localport-missing-description/ca1b1a8c",
2085
+ "category": "schema-quality",
2086
+ "checkId": "schema-quality",
2087
+ "targetId": "mcp-server-kubernetes",
2088
+ "subject": {
2089
+ "type": "tool",
2090
+ "name": "port_forward"
2091
+ },
2092
+ "severity": "info",
2093
+ "controlRefs": [
2094
+ "mcp-observatory:schema-quality",
2095
+ "mcp-observatory:agent-readiness"
2096
+ ],
2097
+ "tags": [
2098
+ "mcp",
2099
+ "mcp-observatory",
2100
+ "schema-quality",
2101
+ "mcp-observatory:schema-quality",
2102
+ "mcp-observatory:agent-readiness"
2103
+ ]
2104
+ }
2105
+ },
2106
+ {
2107
+ "ruleId": "mcp-observatory/schema-quality/schema-property-targetport-missing-description",
2108
+ "level": "note",
2109
+ "message": {
2110
+ "text": "tool \"port_forward\": Property 'targetPort' missing description"
2111
+ },
2112
+ "locations": [
2113
+ {
2114
+ "physicalLocation": {
2115
+ "artifactLocation": {
2116
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2117
+ },
2118
+ "region": {
2119
+ "startLine": 1
2120
+ }
2121
+ }
2122
+ }
2123
+ ],
2124
+ "partialFingerprints": {
2125
+ "mcp-observatory/finding-id": "mcp-observatory/schema-quality/schema-property-targetport-missing-description/26623fef"
2126
+ },
2127
+ "properties": {
2128
+ "id": "mcp-observatory/schema-quality/schema-property-targetport-missing-description/26623fef",
2129
+ "category": "schema-quality",
2130
+ "checkId": "schema-quality",
2131
+ "targetId": "mcp-server-kubernetes",
2132
+ "subject": {
2133
+ "type": "tool",
2134
+ "name": "port_forward"
2135
+ },
2136
+ "severity": "info",
2137
+ "controlRefs": [
2138
+ "mcp-observatory:schema-quality",
2139
+ "mcp-observatory:agent-readiness"
2140
+ ],
2141
+ "tags": [
2142
+ "mcp",
2143
+ "mcp-observatory",
2144
+ "schema-quality",
2145
+ "mcp-observatory:schema-quality",
2146
+ "mcp-observatory:agent-readiness"
2147
+ ]
2148
+ }
2149
+ },
2150
+ {
2151
+ "ruleId": "mcp-observatory/schema-quality/schema-property-namespace-missing-description",
2152
+ "level": "note",
2153
+ "message": {
2154
+ "text": "tool \"port_forward\": Property 'namespace' missing description"
2155
+ },
2156
+ "locations": [
2157
+ {
2158
+ "physicalLocation": {
2159
+ "artifactLocation": {
2160
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2161
+ },
2162
+ "region": {
2163
+ "startLine": 1
2164
+ }
2165
+ }
2166
+ }
2167
+ ],
2168
+ "partialFingerprints": {
2169
+ "mcp-observatory/finding-id": "mcp-observatory/schema-quality/schema-property-namespace-missing-description/91c0a2de"
2170
+ },
2171
+ "properties": {
2172
+ "id": "mcp-observatory/schema-quality/schema-property-namespace-missing-description/91c0a2de",
2173
+ "category": "schema-quality",
2174
+ "checkId": "schema-quality",
2175
+ "targetId": "mcp-server-kubernetes",
2176
+ "subject": {
2177
+ "type": "tool",
2178
+ "name": "port_forward"
2179
+ },
2180
+ "severity": "info",
2181
+ "controlRefs": [
2182
+ "mcp-observatory:schema-quality",
2183
+ "mcp-observatory:agent-readiness"
2184
+ ],
2185
+ "tags": [
2186
+ "mcp",
2187
+ "mcp-observatory",
2188
+ "schema-quality",
2189
+ "mcp-observatory:schema-quality",
2190
+ "mcp-observatory:agent-readiness"
2191
+ ]
2192
+ }
2193
+ },
2194
+ {
2195
+ "ruleId": "mcp-observatory/schema-quality/schema-property-id-missing-description",
2196
+ "level": "note",
2197
+ "message": {
2198
+ "text": "tool \"stop_port_forward\": Property 'id' missing description"
2199
+ },
2200
+ "locations": [
2201
+ {
2202
+ "physicalLocation": {
2203
+ "artifactLocation": {
2204
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2205
+ },
2206
+ "region": {
2207
+ "startLine": 1
2208
+ }
2209
+ }
2210
+ }
2211
+ ],
2212
+ "partialFingerprints": {
2213
+ "mcp-observatory/finding-id": "mcp-observatory/schema-quality/schema-property-id-missing-description/8258354d"
2214
+ },
2215
+ "properties": {
2216
+ "id": "mcp-observatory/schema-quality/schema-property-id-missing-description/8258354d",
2217
+ "category": "schema-quality",
2218
+ "checkId": "schema-quality",
2219
+ "targetId": "mcp-server-kubernetes",
2220
+ "subject": {
2221
+ "type": "tool",
2222
+ "name": "stop_port_forward"
2223
+ },
2224
+ "severity": "info",
2225
+ "controlRefs": [
2226
+ "mcp-observatory:schema-quality",
2227
+ "mcp-observatory:agent-readiness"
2228
+ ],
2229
+ "tags": [
2230
+ "mcp",
2231
+ "mcp-observatory",
2232
+ "schema-quality",
2233
+ "mcp-observatory:schema-quality",
2234
+ "mcp-observatory:agent-readiness"
2235
+ ]
2236
+ }
2237
+ },
2238
+ {
2239
+ "ruleId": "mcp-observatory/schema-quality/schema-has-properties-but-no-required-array-declared",
2240
+ "level": "note",
2241
+ "message": {
2242
+ "text": "tool \"list_api_resources\": Has properties but no 'required' array declared"
2243
+ },
2244
+ "locations": [
2245
+ {
2246
+ "physicalLocation": {
2247
+ "artifactLocation": {
2248
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2249
+ },
2250
+ "region": {
2251
+ "startLine": 1
2252
+ }
2253
+ }
2254
+ }
2255
+ ],
2256
+ "partialFingerprints": {
2257
+ "mcp-observatory/finding-id": "mcp-observatory/schema-quality/schema-has-properties-but-no-required-array-declared/a965b929"
2258
+ },
2259
+ "properties": {
2260
+ "id": "mcp-observatory/schema-quality/schema-has-properties-but-no-required-array-declared/a965b929",
2261
+ "category": "schema-quality",
2262
+ "checkId": "schema-quality",
2263
+ "targetId": "mcp-server-kubernetes",
2264
+ "subject": {
2265
+ "type": "tool",
2266
+ "name": "list_api_resources"
2267
+ },
2268
+ "severity": "info",
2269
+ "controlRefs": [
2270
+ "mcp-observatory:schema-quality",
2271
+ "mcp-observatory:agent-readiness"
2272
+ ],
2273
+ "tags": [
2274
+ "mcp",
2275
+ "mcp-observatory",
2276
+ "schema-quality",
2277
+ "mcp-observatory:schema-quality",
2278
+ "mcp-observatory:agent-readiness"
2279
+ ]
2280
+ }
2281
+ },
2282
+ {
2283
+ "ruleId": "mcp-observatory/security/permissive-schema",
2284
+ "level": "note",
2285
+ "message": {
2286
+ "text": "Tool \"cleanup\" has an empty schema but is marked as destructive."
2287
+ },
2288
+ "locations": [
2289
+ {
2290
+ "physicalLocation": {
2291
+ "artifactLocation": {
2292
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2293
+ },
2294
+ "region": {
2295
+ "startLine": 1
2296
+ }
2297
+ }
2298
+ }
2299
+ ],
2300
+ "partialFingerprints": {
2301
+ "mcp-observatory/finding-id": "mcp-observatory/security/permissive-schema/2f34c639"
2302
+ },
2303
+ "properties": {
2304
+ "id": "mcp-observatory/security/permissive-schema/2f34c639",
2305
+ "category": "security",
2306
+ "checkId": "security",
2307
+ "targetId": "mcp-server-kubernetes",
2308
+ "subject": {
2309
+ "type": "tool",
2310
+ "name": "cleanup"
2311
+ },
2312
+ "severity": "low",
2313
+ "controlRefs": [
2314
+ "mcp-observatory:schema-quality",
2315
+ "mcp-observatory:least-privilege"
2316
+ ],
2317
+ "tags": [
2318
+ "mcp",
2319
+ "mcp-observatory",
2320
+ "security",
2321
+ "mcp-observatory:schema-quality",
2322
+ "mcp-observatory:least-privilege"
2323
+ ]
2324
+ }
2325
+ },
2326
+ {
2327
+ "ruleId": "mcp-observatory/security/broad-filesystem",
2328
+ "level": "warning",
2329
+ "message": {
2330
+ "text": "Tool \"kubectl_apply\" accepts filesystem paths and has destructive capabilities."
2331
+ },
2332
+ "locations": [
2333
+ {
2334
+ "physicalLocation": {
2335
+ "artifactLocation": {
2336
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2337
+ },
2338
+ "region": {
2339
+ "startLine": 1
2340
+ }
2341
+ }
2342
+ }
2343
+ ],
2344
+ "partialFingerprints": {
2345
+ "mcp-observatory/finding-id": "mcp-observatory/security/broad-filesystem/97ff4c78"
2346
+ },
2347
+ "properties": {
2348
+ "id": "mcp-observatory/security/broad-filesystem/97ff4c78",
2349
+ "category": "security",
2350
+ "checkId": "security",
2351
+ "targetId": "mcp-server-kubernetes",
2352
+ "subject": {
2353
+ "type": "tool",
2354
+ "name": "kubectl_apply"
2355
+ },
2356
+ "severity": "medium",
2357
+ "controlRefs": [
2358
+ "mcp-observatory:tool-safety",
2359
+ "mcp-observatory:filesystem-access"
2360
+ ],
2361
+ "tags": [
2362
+ "mcp",
2363
+ "mcp-observatory",
2364
+ "security",
2365
+ "mcp-observatory:tool-safety",
2366
+ "mcp-observatory:filesystem-access"
2367
+ ]
2368
+ }
2369
+ },
2370
+ {
2371
+ "ruleId": "mcp-observatory/security/broad-filesystem",
2372
+ "level": "warning",
2373
+ "message": {
2374
+ "text": "Tool \"kubectl_delete\" accepts filesystem paths and has destructive capabilities."
2375
+ },
2376
+ "locations": [
2377
+ {
2378
+ "physicalLocation": {
2379
+ "artifactLocation": {
2380
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2381
+ },
2382
+ "region": {
2383
+ "startLine": 1
2384
+ }
2385
+ }
2386
+ }
2387
+ ],
2388
+ "partialFingerprints": {
2389
+ "mcp-observatory/finding-id": "mcp-observatory/security/broad-filesystem/e1d59bf1"
2390
+ },
2391
+ "properties": {
2392
+ "id": "mcp-observatory/security/broad-filesystem/e1d59bf1",
2393
+ "category": "security",
2394
+ "checkId": "security",
2395
+ "targetId": "mcp-server-kubernetes",
2396
+ "subject": {
2397
+ "type": "tool",
2398
+ "name": "kubectl_delete"
2399
+ },
2400
+ "severity": "medium",
2401
+ "controlRefs": [
2402
+ "mcp-observatory:tool-safety",
2403
+ "mcp-observatory:filesystem-access"
2404
+ ],
2405
+ "tags": [
2406
+ "mcp",
2407
+ "mcp-observatory",
2408
+ "security",
2409
+ "mcp-observatory:tool-safety",
2410
+ "mcp-observatory:filesystem-access"
2411
+ ]
2412
+ }
2413
+ },
2414
+ {
2415
+ "ruleId": "mcp-observatory/security/shell-injection",
2416
+ "level": "error",
2417
+ "message": {
2418
+ "text": "Tool \"kubectl_create\" has parameter \"command\" which may allow arbitrary command execution."
2419
+ },
2420
+ "locations": [
2421
+ {
2422
+ "physicalLocation": {
2423
+ "artifactLocation": {
2424
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2425
+ },
2426
+ "region": {
2427
+ "startLine": 1
2428
+ }
2429
+ }
2430
+ }
2431
+ ],
2432
+ "partialFingerprints": {
2433
+ "mcp-observatory/finding-id": "mcp-observatory/security/shell-injection/7d649295"
2434
+ },
2435
+ "properties": {
2436
+ "id": "mcp-observatory/security/shell-injection/7d649295",
2437
+ "category": "security",
2438
+ "checkId": "security",
2439
+ "targetId": "mcp-server-kubernetes",
2440
+ "subject": {
2441
+ "type": "tool",
2442
+ "name": "kubectl_create"
2443
+ },
2444
+ "severity": "high",
2445
+ "controlRefs": [
2446
+ "mcp-observatory:tool-safety",
2447
+ "mcp-observatory:command-execution"
2448
+ ],
2449
+ "tags": [
2450
+ "mcp",
2451
+ "mcp-observatory",
2452
+ "security",
2453
+ "mcp-observatory:tool-safety",
2454
+ "mcp-observatory:command-execution"
2455
+ ]
2456
+ }
2457
+ },
2458
+ {
2459
+ "ruleId": "mcp-observatory/security/broad-filesystem",
2460
+ "level": "warning",
2461
+ "message": {
2462
+ "text": "Tool \"kubectl_create\" accepts filesystem paths and has destructive capabilities."
2463
+ },
2464
+ "locations": [
2465
+ {
2466
+ "physicalLocation": {
2467
+ "artifactLocation": {
2468
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2469
+ },
2470
+ "region": {
2471
+ "startLine": 1
2472
+ }
2473
+ }
2474
+ }
2475
+ ],
2476
+ "partialFingerprints": {
2477
+ "mcp-observatory/finding-id": "mcp-observatory/security/broad-filesystem/d395cbe9"
2478
+ },
2479
+ "properties": {
2480
+ "id": "mcp-observatory/security/broad-filesystem/d395cbe9",
2481
+ "category": "security",
2482
+ "checkId": "security",
2483
+ "targetId": "mcp-server-kubernetes",
2484
+ "subject": {
2485
+ "type": "tool",
2486
+ "name": "kubectl_create"
2487
+ },
2488
+ "severity": "medium",
2489
+ "controlRefs": [
2490
+ "mcp-observatory:tool-safety",
2491
+ "mcp-observatory:filesystem-access"
2492
+ ],
2493
+ "tags": [
2494
+ "mcp",
2495
+ "mcp-observatory",
2496
+ "security",
2497
+ "mcp-observatory:tool-safety",
2498
+ "mcp-observatory:filesystem-access"
2499
+ ]
2500
+ }
2501
+ },
2502
+ {
2503
+ "ruleId": "mcp-observatory/security/permissive-schema",
2504
+ "level": "note",
2505
+ "message": {
2506
+ "text": "Tool \"kubectl_reconnect\" has an empty schema but is marked as destructive."
2507
+ },
2508
+ "locations": [
2509
+ {
2510
+ "physicalLocation": {
2511
+ "artifactLocation": {
2512
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2513
+ },
2514
+ "region": {
2515
+ "startLine": 1
2516
+ }
2517
+ }
2518
+ }
2519
+ ],
2520
+ "partialFingerprints": {
2521
+ "mcp-observatory/finding-id": "mcp-observatory/security/permissive-schema/686b00da"
2522
+ },
2523
+ "properties": {
2524
+ "id": "mcp-observatory/security/permissive-schema/686b00da",
2525
+ "category": "security",
2526
+ "checkId": "security",
2527
+ "targetId": "mcp-server-kubernetes",
2528
+ "subject": {
2529
+ "type": "tool",
2530
+ "name": "kubectl_reconnect"
2531
+ },
2532
+ "severity": "low",
2533
+ "controlRefs": [
2534
+ "mcp-observatory:schema-quality",
2535
+ "mcp-observatory:least-privilege"
2536
+ ],
2537
+ "tags": [
2538
+ "mcp",
2539
+ "mcp-observatory",
2540
+ "security",
2541
+ "mcp-observatory:schema-quality",
2542
+ "mcp-observatory:least-privilege"
2543
+ ]
2544
+ }
2545
+ },
2546
+ {
2547
+ "ruleId": "mcp-observatory/security/shell-injection",
2548
+ "level": "error",
2549
+ "message": {
2550
+ "text": "Tool \"exec_in_pod\" has parameter \"command\" which may allow arbitrary command execution."
2551
+ },
2552
+ "locations": [
2553
+ {
2554
+ "physicalLocation": {
2555
+ "artifactLocation": {
2556
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2557
+ },
2558
+ "region": {
2559
+ "startLine": 1
2560
+ }
2561
+ }
2562
+ }
2563
+ ],
2564
+ "partialFingerprints": {
2565
+ "mcp-observatory/finding-id": "mcp-observatory/security/shell-injection/d2191014"
2566
+ },
2567
+ "properties": {
2568
+ "id": "mcp-observatory/security/shell-injection/d2191014",
2569
+ "category": "security",
2570
+ "checkId": "security",
2571
+ "targetId": "mcp-server-kubernetes",
2572
+ "subject": {
2573
+ "type": "tool",
2574
+ "name": "exec_in_pod"
2575
+ },
2576
+ "severity": "high",
2577
+ "controlRefs": [
2578
+ "mcp-observatory:tool-safety",
2579
+ "mcp-observatory:command-execution"
2580
+ ],
2581
+ "tags": [
2582
+ "mcp",
2583
+ "mcp-observatory",
2584
+ "security",
2585
+ "mcp-observatory:tool-safety",
2586
+ "mcp-observatory:command-execution"
2587
+ ]
2588
+ }
2589
+ },
2590
+ {
2591
+ "ruleId": "mcp-observatory/security/shell-injection",
2592
+ "level": "error",
2593
+ "message": {
2594
+ "text": "Tool \"kubectl_generic\" has parameter \"command\" which may allow arbitrary command execution."
2595
+ },
2596
+ "locations": [
2597
+ {
2598
+ "physicalLocation": {
2599
+ "artifactLocation": {
2600
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2601
+ },
2602
+ "region": {
2603
+ "startLine": 1
2604
+ }
2605
+ }
2606
+ }
2607
+ ],
2608
+ "partialFingerprints": {
2609
+ "mcp-observatory/finding-id": "mcp-observatory/security/shell-injection/255143ff"
2610
+ },
2611
+ "properties": {
2612
+ "id": "mcp-observatory/security/shell-injection/255143ff",
2613
+ "category": "security",
2614
+ "checkId": "security",
2615
+ "targetId": "mcp-server-kubernetes",
2616
+ "subject": {
2617
+ "type": "tool",
2618
+ "name": "kubectl_generic"
2619
+ },
2620
+ "severity": "high",
2621
+ "controlRefs": [
2622
+ "mcp-observatory:tool-safety",
2623
+ "mcp-observatory:command-execution"
2624
+ ],
2625
+ "tags": [
2626
+ "mcp",
2627
+ "mcp-observatory",
2628
+ "security",
2629
+ "mcp-observatory:tool-safety",
2630
+ "mcp-observatory:command-execution"
2631
+ ]
2632
+ }
2633
+ },
2634
+ {
2635
+ "ruleId": "mcp-observatory/attack-sim/permission-boundary/broad-destructive-tool",
2636
+ "level": "warning",
2637
+ "message": {
2638
+ "text": "Tool \"kubectl_apply\" combines broad parameters (filename) with destructive or non-read-only behavior."
2639
+ },
2640
+ "locations": [
2641
+ {
2642
+ "physicalLocation": {
2643
+ "artifactLocation": {
2644
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2645
+ },
2646
+ "region": {
2647
+ "startLine": 1
2648
+ }
2649
+ }
2650
+ }
2651
+ ],
2652
+ "partialFingerprints": {
2653
+ "mcp-observatory/finding-id": "mcp-observatory/attack-sim/attack-sim/permission-boundary/broad-destructive-tool/61e89efa"
2654
+ },
2655
+ "properties": {
2656
+ "id": "mcp-observatory/attack-sim/attack-sim/permission-boundary/broad-destructive-tool/61e89efa",
2657
+ "category": "attack-sim",
2658
+ "checkId": "attack-sim",
2659
+ "targetId": "mcp-server-kubernetes",
2660
+ "subject": {
2661
+ "type": "tool",
2662
+ "name": "kubectl_apply"
2663
+ },
2664
+ "severity": "medium",
2665
+ "controlRefs": [
2666
+ "mcp-observatory:tool-safety",
2667
+ "mcp-observatory:least-privilege"
2668
+ ],
2669
+ "tags": [
2670
+ "mcp",
2671
+ "mcp-observatory",
2672
+ "attack-sim",
2673
+ "mcp-observatory:tool-safety",
2674
+ "mcp-observatory:least-privilege"
2675
+ ]
2676
+ }
2677
+ },
2678
+ {
2679
+ "ruleId": "mcp-observatory/attack-sim/permission-boundary/broad-destructive-tool",
2680
+ "level": "warning",
2681
+ "message": {
2682
+ "text": "Tool \"kubectl_delete\" combines broad parameters (filename) with destructive or non-read-only behavior."
2683
+ },
2684
+ "locations": [
2685
+ {
2686
+ "physicalLocation": {
2687
+ "artifactLocation": {
2688
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2689
+ },
2690
+ "region": {
2691
+ "startLine": 1
2692
+ }
2693
+ }
2694
+ }
2695
+ ],
2696
+ "partialFingerprints": {
2697
+ "mcp-observatory/finding-id": "mcp-observatory/attack-sim/attack-sim/permission-boundary/broad-destructive-tool/ff6d490d"
2698
+ },
2699
+ "properties": {
2700
+ "id": "mcp-observatory/attack-sim/attack-sim/permission-boundary/broad-destructive-tool/ff6d490d",
2701
+ "category": "attack-sim",
2702
+ "checkId": "attack-sim",
2703
+ "targetId": "mcp-server-kubernetes",
2704
+ "subject": {
2705
+ "type": "tool",
2706
+ "name": "kubectl_delete"
2707
+ },
2708
+ "severity": "medium",
2709
+ "controlRefs": [
2710
+ "mcp-observatory:tool-safety",
2711
+ "mcp-observatory:least-privilege"
2712
+ ],
2713
+ "tags": [
2714
+ "mcp",
2715
+ "mcp-observatory",
2716
+ "attack-sim",
2717
+ "mcp-observatory:tool-safety",
2718
+ "mcp-observatory:least-privilege"
2719
+ ]
2720
+ }
2721
+ },
2722
+ {
2723
+ "ruleId": "mcp-observatory/attack-sim/permission-boundary/broad-destructive-tool",
2724
+ "level": "error",
2725
+ "message": {
2726
+ "text": "Tool \"kubectl_create\" combines broad parameters (filename, command) with destructive or non-read-only behavior."
2727
+ },
2728
+ "locations": [
2729
+ {
2730
+ "physicalLocation": {
2731
+ "artifactLocation": {
2732
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2733
+ },
2734
+ "region": {
2735
+ "startLine": 1
2736
+ }
2737
+ }
2738
+ }
2739
+ ],
2740
+ "partialFingerprints": {
2741
+ "mcp-observatory/finding-id": "mcp-observatory/attack-sim/attack-sim/permission-boundary/broad-destructive-tool/3287b0b7"
2742
+ },
2743
+ "properties": {
2744
+ "id": "mcp-observatory/attack-sim/attack-sim/permission-boundary/broad-destructive-tool/3287b0b7",
2745
+ "category": "attack-sim",
2746
+ "checkId": "attack-sim",
2747
+ "targetId": "mcp-server-kubernetes",
2748
+ "subject": {
2749
+ "type": "tool",
2750
+ "name": "kubectl_create"
2751
+ },
2752
+ "severity": "high",
2753
+ "controlRefs": [
2754
+ "mcp-observatory:tool-safety",
2755
+ "mcp-observatory:least-privilege"
2756
+ ],
2757
+ "tags": [
2758
+ "mcp",
2759
+ "mcp-observatory",
2760
+ "attack-sim",
2761
+ "mcp-observatory:tool-safety",
2762
+ "mcp-observatory:least-privilege"
2763
+ ]
2764
+ }
2765
+ },
2766
+ {
2767
+ "ruleId": "mcp-observatory/attack-sim/permission-boundary/broad-destructive-tool",
2768
+ "level": "error",
2769
+ "message": {
2770
+ "text": "Tool \"exec_in_pod\" combines broad parameters (command) with destructive or non-read-only behavior."
2771
+ },
2772
+ "locations": [
2773
+ {
2774
+ "physicalLocation": {
2775
+ "artifactLocation": {
2776
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2777
+ },
2778
+ "region": {
2779
+ "startLine": 1
2780
+ }
2781
+ }
2782
+ }
2783
+ ],
2784
+ "partialFingerprints": {
2785
+ "mcp-observatory/finding-id": "mcp-observatory/attack-sim/attack-sim/permission-boundary/broad-destructive-tool/a5b5a3d7"
2786
+ },
2787
+ "properties": {
2788
+ "id": "mcp-observatory/attack-sim/attack-sim/permission-boundary/broad-destructive-tool/a5b5a3d7",
2789
+ "category": "attack-sim",
2790
+ "checkId": "attack-sim",
2791
+ "targetId": "mcp-server-kubernetes",
2792
+ "subject": {
2793
+ "type": "tool",
2794
+ "name": "exec_in_pod"
2795
+ },
2796
+ "severity": "high",
2797
+ "controlRefs": [
2798
+ "mcp-observatory:tool-safety",
2799
+ "mcp-observatory:least-privilege"
2800
+ ],
2801
+ "tags": [
2802
+ "mcp",
2803
+ "mcp-observatory",
2804
+ "attack-sim",
2805
+ "mcp-observatory:tool-safety",
2806
+ "mcp-observatory:least-privilege"
2807
+ ]
2808
+ }
2809
+ },
2810
+ {
2811
+ "ruleId": "mcp-observatory/attack-sim/permission-boundary/broad-destructive-tool",
2812
+ "level": "error",
2813
+ "message": {
2814
+ "text": "Tool \"kubectl_generic\" combines broad parameters (command) with destructive or non-read-only behavior."
2815
+ },
2816
+ "locations": [
2817
+ {
2818
+ "physicalLocation": {
2819
+ "artifactLocation": {
2820
+ "uri": "reports/moltbook-receipts/kubernetes/attack-artifact.json"
2821
+ },
2822
+ "region": {
2823
+ "startLine": 1
2824
+ }
2825
+ }
2826
+ }
2827
+ ],
2828
+ "partialFingerprints": {
2829
+ "mcp-observatory/finding-id": "mcp-observatory/attack-sim/attack-sim/permission-boundary/broad-destructive-tool/2663a1ee"
2830
+ },
2831
+ "properties": {
2832
+ "id": "mcp-observatory/attack-sim/attack-sim/permission-boundary/broad-destructive-tool/2663a1ee",
2833
+ "category": "attack-sim",
2834
+ "checkId": "attack-sim",
2835
+ "targetId": "mcp-server-kubernetes",
2836
+ "subject": {
2837
+ "type": "tool",
2838
+ "name": "kubectl_generic"
2839
+ },
2840
+ "severity": "high",
2841
+ "controlRefs": [
2842
+ "mcp-observatory:tool-safety",
2843
+ "mcp-observatory:least-privilege"
2844
+ ],
2845
+ "tags": [
2846
+ "mcp",
2847
+ "mcp-observatory",
2848
+ "attack-sim",
2849
+ "mcp-observatory:tool-safety",
2850
+ "mcp-observatory:least-privilege"
2851
+ ]
2852
+ }
2853
+ }
2854
+ ]
2855
+ }
2856
+ ]
2857
+ }