@kryptosai/mcp-observatory 1.31.0 → 1.32.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/PRIVACY.md +16 -0
  2. package/README.md +5 -11
  3. package/README.zh-CN.md +4 -10
  4. package/dist/src/cli.js +4 -2
  5. package/dist/src/cli.js.map +1 -1
  6. package/dist/src/commands/diff.js +24 -2
  7. package/dist/src/commands/diff.js.map +1 -1
  8. package/dist/src/commands/enforce.d.ts +2 -2
  9. package/dist/src/commands/enforce.js +5 -8
  10. package/dist/src/commands/enforce.js.map +1 -1
  11. package/dist/src/commands/scan.js.map +1 -1
  12. package/dist/src/commands/telemetry.js +41 -1
  13. package/dist/src/commands/telemetry.js.map +1 -1
  14. package/dist/src/commands/test.js +2 -2
  15. package/dist/src/commands/test.js.map +1 -1
  16. package/dist/src/diff.d.ts +5 -2
  17. package/dist/src/diff.js +23 -2
  18. package/dist/src/diff.js.map +1 -1
  19. package/dist/src/index.d.ts +1 -0
  20. package/dist/src/index.js +1 -0
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/permission-delta.d.ts +2 -0
  23. package/dist/src/permission-delta.js +99 -0
  24. package/dist/src/permission-delta.js.map +1 -0
  25. package/dist/src/reporters/common.d.ts +1 -0
  26. package/dist/src/reporters/common.js +3 -1
  27. package/dist/src/reporters/common.js.map +1 -1
  28. package/dist/src/reporters/html.js +30 -1
  29. package/dist/src/reporters/html.js.map +1 -1
  30. package/dist/src/reporters/markdown.js +21 -2
  31. package/dist/src/reporters/markdown.js.map +1 -1
  32. package/dist/src/reporters/pr-comment.js +1 -1
  33. package/dist/src/reporters/pr-comment.js.map +1 -1
  34. package/dist/src/reporters/terminal.js +9 -3
  35. package/dist/src/reporters/terminal.js.map +1 -1
  36. package/dist/src/risk-taxonomy.d.ts +16 -0
  37. package/dist/src/risk-taxonomy.js +95 -0
  38. package/dist/src/risk-taxonomy.js.map +1 -0
  39. package/dist/src/schema-diff.d.ts +2 -1
  40. package/dist/src/schema-diff.js +28 -3
  41. package/dist/src/schema-diff.js.map +1 -1
  42. package/dist/src/telemetry.d.ts +17 -0
  43. package/dist/src/telemetry.js +70 -2
  44. package/dist/src/telemetry.js.map +1 -1
  45. package/dist/src/types.d.ts +15 -0
  46. package/dist/src/validate.js +44 -2
  47. package/dist/src/validate.js.map +1 -1
  48. package/docs/mcp-server-safety-index.md +77 -15
  49. package/docs/safety-index/artifacts/antv-chart-server.json +1452 -19
  50. package/docs/safety-index/artifacts/antv-chart-server.md +156 -10
  51. package/docs/safety-index/artifacts/brave-search-server.json +341 -0
  52. package/docs/safety-index/artifacts/brave-search-server.md +201 -0
  53. package/docs/safety-index/artifacts/browsermcp-server.json +83 -18
  54. package/docs/safety-index/artifacts/browsermcp-server.md +46 -12
  55. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.json +592 -21
  56. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.md +96 -14
  57. package/docs/safety-index/artifacts/clay-server.json +66 -0
  58. package/docs/safety-index/artifacts/clay-server.md +106 -0
  59. package/docs/safety-index/artifacts/cloudflare-server.json +66 -0
  60. package/docs/safety-index/artifacts/cloudflare-server.md +106 -0
  61. package/docs/safety-index/artifacts/context7-server.json +85 -18
  62. package/docs/safety-index/artifacts/context7-server.md +52 -11
  63. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +1565 -34
  64. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +178 -17
  65. package/docs/safety-index/artifacts/docker-server.json +395 -0
  66. package/docs/safety-index/artifacts/docker-server.md +204 -0
  67. package/docs/safety-index/artifacts/everything-server.json +145 -18
  68. package/docs/safety-index/artifacts/everything-server.md +56 -11
  69. package/docs/safety-index/artifacts/exa-server.json +400 -0
  70. package/docs/safety-index/artifacts/exa-server.md +207 -0
  71. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +625 -18
  72. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +95 -11
  73. package/docs/safety-index/artifacts/fetch-server.json +66 -0
  74. package/docs/safety-index/artifacts/fetch-server.md +106 -0
  75. package/docs/safety-index/artifacts/figma-server.json +1766 -0
  76. package/docs/safety-index/artifacts/figma-server.md +256 -0
  77. package/docs/safety-index/artifacts/filesystem-mcp-server.json +428 -24
  78. package/docs/safety-index/artifacts/filesystem-mcp-server.md +75 -14
  79. package/docs/safety-index/artifacts/filesystem-server.json +426 -22
  80. package/docs/safety-index/artifacts/filesystem-server.md +73 -12
  81. package/docs/safety-index/artifacts/firecrawl-server.json +4056 -0
  82. package/docs/safety-index/artifacts/firecrawl-server.md +243 -0
  83. package/docs/safety-index/artifacts/github-mcp-server.json +374 -21
  84. package/docs/safety-index/artifacts/github-mcp-server.md +71 -15
  85. package/docs/safety-index/artifacts/gitlab-server.json +229 -0
  86. package/docs/safety-index/artifacts/gitlab-server.md +753 -0
  87. package/docs/safety-index/artifacts/gmail-server.json +66 -0
  88. package/docs/safety-index/artifacts/gmail-server.md +106 -0
  89. package/docs/safety-index/artifacts/google-calendar-server.json +66 -0
  90. package/docs/safety-index/artifacts/google-calendar-server.md +106 -0
  91. package/docs/safety-index/artifacts/google-drive-server.json +66 -0
  92. package/docs/safety-index/artifacts/google-drive-server.md +106 -0
  93. package/docs/safety-index/artifacts/google-sheets-server.json +66 -0
  94. package/docs/safety-index/artifacts/google-sheets-server.md +106 -0
  95. package/docs/safety-index/artifacts/google-tasks-server.json +66 -0
  96. package/docs/safety-index/artifacts/google-tasks-server.md +106 -0
  97. package/docs/safety-index/artifacts/huggingface-server.json +66 -0
  98. package/docs/safety-index/artifacts/huggingface-server.md +106 -0
  99. package/docs/safety-index/artifacts/jina-server.json +66 -0
  100. package/docs/safety-index/artifacts/jina-server.md +106 -0
  101. package/docs/safety-index/artifacts/kubernetes-server.json +1054 -27
  102. package/docs/safety-index/artifacts/kubernetes-server.md +137 -18
  103. package/docs/safety-index/artifacts/linear-server.json +1494 -0
  104. package/docs/safety-index/artifacts/linear-server.md +237 -0
  105. package/docs/safety-index/artifacts/memory-server.json +191 -18
  106. package/docs/safety-index/artifacts/memory-server.md +51 -9
  107. package/docs/safety-index/artifacts/mongodb-server.json +66 -0
  108. package/docs/safety-index/artifacts/mongodb-server.md +106 -0
  109. package/docs/safety-index/artifacts/neon-server.json +66 -0
  110. package/docs/safety-index/artifacts/neon-server.md +103 -0
  111. package/docs/safety-index/artifacts/notion-server.json +7151 -0
  112. package/docs/safety-index/artifacts/notion-server.md +236 -0
  113. package/docs/safety-index/artifacts/onesignal-server.json +66 -0
  114. package/docs/safety-index/artifacts/onesignal-server.md +106 -0
  115. package/docs/safety-index/artifacts/opentofu-server.json +31 -19
  116. package/docs/safety-index/artifacts/opentofu-server.md +28 -10
  117. package/docs/safety-index/artifacts/playwright-mcp-server.json +415 -24
  118. package/docs/safety-index/artifacts/playwright-mcp-server.md +84 -20
  119. package/docs/safety-index/artifacts/postgres-server.json +330 -0
  120. package/docs/safety-index/artifacts/postgres-server.md +208 -0
  121. package/docs/safety-index/artifacts/promptopia-server.json +96 -19
  122. package/docs/safety-index/artifacts/promptopia-server.md +43 -9
  123. package/docs/safety-index/artifacts/puppeteer-server.json +118 -29
  124. package/docs/safety-index/artifacts/puppeteer-server.md +61 -19
  125. package/docs/safety-index/artifacts/qdrant-server.json +66 -0
  126. package/docs/safety-index/artifacts/qdrant-server.md +106 -0
  127. package/docs/safety-index/artifacts/reddit-server.json +66 -0
  128. package/docs/safety-index/artifacts/reddit-server.md +106 -0
  129. package/docs/safety-index/artifacts/ref-tools-server.json +95 -18
  130. package/docs/safety-index/artifacts/ref-tools-server.md +45 -12
  131. package/docs/safety-index/artifacts/sentry-server.json +66 -0
  132. package/docs/safety-index/artifacts/sentry-server.md +106 -0
  133. package/docs/safety-index/artifacts/sequential-thinking-server.json +59 -18
  134. package/docs/safety-index/artifacts/sequential-thinking-server.md +41 -9
  135. package/docs/safety-index/artifacts/slack-server.json +66 -0
  136. package/docs/safety-index/artifacts/slack-server.md +102 -0
  137. package/docs/safety-index/artifacts/sqlite-server.json +67 -0
  138. package/docs/safety-index/artifacts/sqlite-server.md +106 -0
  139. package/docs/safety-index/artifacts/stripe-server.json +66 -0
  140. package/docs/safety-index/artifacts/stripe-server.md +106 -0
  141. package/docs/safety-index/artifacts/supabase-server.json +66 -0
  142. package/docs/safety-index/artifacts/supabase-server.md +102 -0
  143. package/docs/safety-index/artifacts/tavily-search-server.json +66 -0
  144. package/docs/safety-index/artifacts/tavily-search-server.md +106 -0
  145. package/docs/safety-index/artifacts/ui5-mcp-server.json +842 -0
  146. package/docs/safety-index/artifacts/ui5-mcp-server.md +232 -0
  147. package/docs/safety-index/artifacts/vercel-ai-server.json +66 -0
  148. package/docs/safety-index/artifacts/vercel-ai-server.md +106 -0
  149. package/docs/safety-index/targets.json +552 -0
  150. package/package.json +1 -1
  151. package/schemas/run-artifact.schema.json +56 -1
@@ -2,9 +2,9 @@
2
2
  "artifactType": "run",
3
3
  "schemaVersion": "1.0.0",
4
4
  "gate": "pass",
5
- "runId": "run_2026-07-06T194948132Z_cb0c4915",
6
- "createdAt": "2026-07-06T19:49:48.132Z",
7
- "toolVersion": "0.28.0",
5
+ "runId": "run_2026-07-12T234358225Z_413de3e9",
6
+ "createdAt": "2026-07-12T23:43:58.225Z",
7
+ "toolVersion": "1.31.0",
8
8
  "target": {
9
9
  "targetId": "context7-server",
10
10
  "adapter": "local-process",
@@ -29,8 +29,8 @@
29
29
  "nodeVersion": "v22.22.1"
30
30
  },
31
31
  "summary": {
32
- "total": 8,
33
- "pass": 7,
32
+ "total": 9,
33
+ "pass": 8,
34
34
  "fail": 0,
35
35
  "partial": 1,
36
36
  "unsupported": 0,
@@ -43,7 +43,7 @@
43
43
  "id": "tools",
44
44
  "capability": "tools",
45
45
  "status": "pass",
46
- "durationMs": 1.788749999999709,
46
+ "durationMs": 2.009208000000399,
47
47
  "message": "Advertised capability responded with the minimal expected shape (2 items).",
48
48
  "evidence": [
49
49
  {
@@ -104,7 +104,7 @@
104
104
  "id": "prompts",
105
105
  "capability": "prompts",
106
106
  "status": "pass",
107
- "durationMs": 0.2839160000003176,
107
+ "durationMs": 0.3101249999999709,
108
108
  "message": "Advertised capability responded with the minimal expected shape (0 items).",
109
109
  "evidence": [
110
110
  {
@@ -124,7 +124,7 @@
124
124
  "id": "resources",
125
125
  "capability": "resources",
126
126
  "status": "pass",
127
- "durationMs": 0.4017499999999927,
127
+ "durationMs": 0.4524590000000899,
128
128
  "message": "Advertised capability responded with the minimal expected shape (0 items).",
129
129
  "evidence": [
130
130
  {
@@ -155,7 +155,7 @@
155
155
  "id": "security-lite",
156
156
  "capability": "security-lite",
157
157
  "status": "pass",
158
- "durationMs": 0.02495900000030815,
158
+ "durationMs": 0.05579200000011042,
159
159
  "message": "No security issues detected (lightweight scan).",
160
160
  "evidence": [
161
161
  {
@@ -167,11 +167,52 @@
167
167
  }
168
168
  ]
169
169
  },
170
+ {
171
+ "id": "runtime-profile",
172
+ "capability": "runtime-profile",
173
+ "status": "pass",
174
+ "durationMs": 0.4583330000004935,
175
+ "message": "Detected 2 potential egress target(s) and 1 potential state mutation(s) with low confidence.",
176
+ "evidence": [
177
+ {
178
+ "endpoint": "runtime-profile/analyze",
179
+ "advertised": true,
180
+ "responded": true,
181
+ "minimalShapePresent": true,
182
+ "itemCount": 3,
183
+ "diagnostics": [
184
+ "Egress entries: 2",
185
+ "State mutations: 1",
186
+ "Confidence: medium"
187
+ ],
188
+ "findings": [
189
+ {
190
+ "target": "The question or task you need help with. This is used to rank library results by relevance to what the user is trying to accomplish. The query is sent to the Context7 API for processing. Do not include any sensitive or confidential information such as API keys, passwords, credentials, personal data, or proprietary code in your query.",
191
+ "protocol": "unknown",
192
+ "source": "description_analysis",
193
+ "confidence": "medium"
194
+ },
195
+ {
196
+ "target": "The question or task you need help with, scoped to a single concept. Be specific and include relevant details, but keep each query to one topic — if the user's question spans multiple distinct concepts, make a separate call per concept instead of combining them, unless the question is about how the concepts interact. Good: 'How to set up authentication with JWT in Express.js' or 'React useEffect cleanup function examples'. Bad (too vague): 'auth' or 'hooks'. Bad (too broad): 'routing and auth and caching in Next.js'. The query is sent to the Context7 API for processing. Do not include any sensitive or confidential information such as API keys, passwords, credentials, personal data, or proprietary code in your query.",
197
+ "protocol": "unknown",
198
+ "source": "description_analysis",
199
+ "confidence": "medium"
200
+ },
201
+ {
202
+ "resource": "filesystem",
203
+ "operation": "write",
204
+ "scope": "working_directory",
205
+ "source": "description_analysis"
206
+ }
207
+ ]
208
+ }
209
+ ]
210
+ },
170
211
  {
171
212
  "id": "conformance",
172
213
  "capability": "conformance",
173
214
  "status": "pass",
174
- "durationMs": 1.094916000000012,
215
+ "durationMs": 2.025666999999885,
175
216
  "message": "All 7 conformance checks passed.",
176
217
  "evidence": [
177
218
  {
@@ -197,7 +238,7 @@
197
238
  "id": "schema-quality",
198
239
  "capability": "schema-quality",
199
240
  "status": "pass",
200
- "durationMs": 0.5149579999997513,
241
+ "durationMs": 1.3580830000000788,
201
242
  "message": "All 2 item(s) have good schema quality.",
202
243
  "evidence": [
203
244
  {
@@ -214,7 +255,7 @@
214
255
  "id": "security",
215
256
  "capability": "security",
216
257
  "status": "pass",
217
- "durationMs": 0.20175000000017462,
258
+ "durationMs": 0.5446659999997792,
218
259
  "message": "No security issues detected.",
219
260
  "evidence": [
220
261
  {
@@ -230,7 +271,7 @@
230
271
  "id": "attack-sim",
231
272
  "capability": "attack-sim",
232
273
  "status": "partial",
233
- "durationMs": 1.0464579999998023,
274
+ "durationMs": 2.064624999999978,
234
275
  "message": "Safe attack simulation found 2 finding(s): 0 high, 2 medium, 0 low.",
235
276
  "evidence": [
236
277
  {
@@ -328,16 +369,42 @@
328
369
  "weight": 0.1,
329
370
  "score": 100,
330
371
  "details": [
331
- "Connect: 753ms",
372
+ "Connect: 1035ms",
332
373
  "p95 latency: 2ms (3 operations)"
333
374
  ]
334
375
  }
335
376
  ]
336
377
  },
337
378
  "performanceMetrics": {
338
- "connectMs": 753.3337500000002,
339
- "toolsListMs": 1.788749999999709,
340
- "promptsListMs": 0.2839160000003176,
341
- "resourcesListMs": 0.4017499999999927
379
+ "connectMs": 1034.5410000000002,
380
+ "toolsListMs": 2.009208000000399,
381
+ "promptsListMs": 0.3101249999999709,
382
+ "resourcesListMs": 0.4524590000000899
383
+ },
384
+ "runtimeProfile": {
385
+ "egress": [
386
+ {
387
+ "target": "The question or task you need help with. This is used to rank library results by relevance to what the user is trying to accomplish. The query is sent to the Context7 API for processing. Do not include any sensitive or confidential information such as API keys, passwords, credentials, personal data, or proprietary code in your query.",
388
+ "protocol": "unknown",
389
+ "source": "description_analysis",
390
+ "confidence": "medium"
391
+ },
392
+ {
393
+ "target": "The question or task you need help with, scoped to a single concept. Be specific and include relevant details, but keep each query to one topic — if the user's question spans multiple distinct concepts, make a separate call per concept instead of combining them, unless the question is about how the concepts interact. Good: 'How to set up authentication with JWT in Express.js' or 'React useEffect cleanup function examples'. Bad (too vague): 'auth' or 'hooks'. Bad (too broad): 'routing and auth and caching in Next.js'. The query is sent to the Context7 API for processing. Do not include any sensitive or confidential information such as API keys, passwords, credentials, personal data, or proprietary code in your query.",
394
+ "protocol": "unknown",
395
+ "source": "description_analysis",
396
+ "confidence": "medium"
397
+ }
398
+ ],
399
+ "stateMutations": [
400
+ {
401
+ "resource": "filesystem",
402
+ "operation": "write",
403
+ "scope": "working_directory",
404
+ "source": "description_analysis"
405
+ }
406
+ ],
407
+ "analyzedAt": "2026-07-12T23:43:59.263Z",
408
+ "confidence": "medium"
342
409
  }
343
410
  }
@@ -1,6 +1,6 @@
1
1
  # MCP Observatory Run Report
2
2
 
3
- Generated at 2026-07-06T19:49:48.132Z
3
+ Generated at 2026-07-12T23:43:58.225Z
4
4
 
5
5
  ## Target and Environment Metadata
6
6
 
@@ -25,7 +25,7 @@ Generated at 2026-07-06T19:49:48.132Z
25
25
 
26
26
  | Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
27
27
  | --- | --- | --- | --- | --- | --- | --- | --- |
28
- | pass | 8 | 7 | 0 | 1 | 0 | 0 | 0 |
28
+ | pass | 9 | 8 | 0 | 1 | 0 | 0 | 0 |
29
29
 
30
30
  ## At a Glance
31
31
 
@@ -39,6 +39,34 @@ Generated at 2026-07-06T19:49:48.132Z
39
39
  - Suggested next step: Review the caveated checks next: attack-sim.
40
40
  - CI next step: `Add CI: npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y <server-package>"`
41
41
 
42
+ ## What Was Not Tested
43
+
44
+ - 🔒 network_egress: No outbound network calls were attempted during scan
45
+ - 🔒 filesystem_mutation: Filesystem write operations were not exercised
46
+ - â„šī¸ credential_access: Credential scanning was performed (see security findings)
47
+ - â„šī¸ destructive_payloads: Destructive payloads were not attempted (safe-mode only)
48
+
49
+ ## Runtime Profile
50
+
51
+ ### Egress Manifest
52
+
53
+ The following targets were identified as potentially reachable by this server (confidence: **medium**):
54
+
55
+ | Target | Protocol | Source | Confidence |
56
+ | --- | --- | --- | --- |
57
+ | The question or task you need help with. This is used to rank library results by relevance to what the user is trying to accomplish. The query is sent to the Context7 API for processing. Do not include any sensitive or confidential information such as API keys, passwords, credentials, personal data, or proprietary code in your query. | unknown | description_analysis | medium |
58
+ | The question or task you need help with, scoped to a single concept. Be specific and include relevant details, but keep each query to one topic — if the user's question spans multiple distinct concepts, make a separate call per concept instead of combining them, unless the question is about how the concepts interact. Good: 'How to set up authentication with JWT in Express.js' or 'React useEffect cleanup function examples'. Bad (too vague): 'auth' or 'hooks'. Bad (too broad): 'routing and auth and caching in Next.js'. The query is sent to the Context7 API for processing. Do not include any sensitive or confidential information such as API keys, passwords, credentials, personal data, or proprietary code in your query. | unknown | description_analysis | medium |
59
+
60
+ ### State Mutations
61
+
62
+ The following state-modifying operations were identified from tool schemas:
63
+
64
+ | Resource | Operation | Scope | Source |
65
+ | --- | --- | --- | --- |
66
+ | filesystem | write | working_directory | description_analysis |
67
+
68
+ _Analyzed at 2026-07-12T23:43:59.263Z_
69
+
42
70
  ## Regressions and Recoveries
43
71
 
44
72
  _Use the `diff` command against another run artifact to classify regressions and recoveries over time._
@@ -47,14 +75,15 @@ _Use the `diff` command against another run artifact to classify regressions and
47
75
 
48
76
  | Focus | Check | Status | Duration (ms) | Message |
49
77
  | --- | --- | --- | --- | --- |
50
- | healthy | conformance | pass | 1.09 | All 7 conformance checks passed. |
51
- | healthy | prompts | pass | 0.28 | Advertised capability responded with the minimal expected shape (0 items). |
52
- | healthy | resources | pass | 0.40 | Advertised capability responded with the minimal expected shape (0 items). |
53
- | healthy | schema-quality | pass | 0.51 | All 2 item(s) have good schema quality. |
54
- | healthy | security | pass | 0.20 | No security issues detected. |
55
- | healthy | security-lite | pass | 0.02 | No security issues detected (lightweight scan). |
56
- | healthy | tools | pass | 1.79 | Advertised capability responded with the minimal expected shape (2 items). |
57
- | review | attack-sim | partial | 1.05 | Safe attack simulation found 2 finding(s): 0 high, 2 medium, 0 low. |
78
+ | healthy | conformance | pass | 2.03 | All 7 conformance checks passed. |
79
+ | healthy | prompts | pass | 0.31 | Advertised capability responded with the minimal expected shape (0 items). |
80
+ | healthy | resources | pass | 0.45 | Advertised capability responded with the minimal expected shape (0 items). |
81
+ | healthy | runtime-profile | pass | 0.46 | Detected 2 potential egress target(s) and 1 potential state mutation(s) with low confidence. |
82
+ | healthy | schema-quality | pass | 1.36 | All 2 item(s) have good schema quality. |
83
+ | healthy | security | pass | 0.54 | No security issues detected. |
84
+ | healthy | security-lite | pass | 0.06 | No security issues detected (lightweight scan). |
85
+ | healthy | tools | pass | 2.01 | Advertised capability responded with the minimal expected shape (2 items). |
86
+ | review | attack-sim | partial | 2.06 | Safe attack simulation found 2 finding(s): 0 high, 2 medium, 0 low. |
58
87
 
59
88
  ## Evidence Snippets
60
89
 
@@ -101,6 +130,18 @@ Summary: Advertised capability responded with the minimal expected shape (0 item
101
130
  - Identifiers: none
102
131
  - Diagnostics: Context7 Documentation MCP Server v3.2.3 running on stdio
103
132
 
133
+ ### runtime-profile — pass
134
+
135
+ Summary: Detected 2 potential egress target(s) and 1 potential state mutation(s) with low confidence.
136
+
137
+ - Endpoint: `runtime-profile/analyze`
138
+ - Advertised: `true`
139
+ - Responded: `true`
140
+ - Minimal shape present: `true`
141
+ - Item count: `3`
142
+ - Identifiers: none
143
+ - Diagnostics: Egress entries: 2, State mutations: 1, Confidence: medium
144
+
104
145
  ### schema-quality — pass
105
146
 
106
147
  Summary: All 2 item(s) have good schema quality.
@@ -172,5 +213,5 @@ npm run cli -- report --run <path-to-run-artifact.json> --format markdown
172
213
 
173
214
  - Artifact type: `run`
174
215
  - Schema version: `1.0.0`
175
- - Run ID: `run_2026-07-06T194948132Z_cb0c4915`
216
+ - Run ID: `run_2026-07-12T234358225Z_413de3e9`
176
217
  - Gate: `pass`