@kryptosai/mcp-observatory 1.32.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.
- package/README.md +4 -10
- package/README.zh-CN.md +4 -10
- package/dist/src/cli.js +1 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/enforce.d.ts +2 -2
- package/dist/src/commands/enforce.js +5 -8
- package/dist/src/commands/enforce.js.map +1 -1
- package/dist/src/commands/scan.js.map +1 -1
- package/dist/src/commands/test.js +2 -2
- package/dist/src/commands/test.js.map +1 -1
- package/dist/src/telemetry.js +2 -1
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/validate.js +5 -6
- package/dist/src/validate.js.map +1 -1
- package/docs/mcp-server-safety-index.md +68 -8
- package/docs/safety-index/artifacts/antv-chart-server.json +1452 -19
- package/docs/safety-index/artifacts/antv-chart-server.md +156 -10
- package/docs/safety-index/artifacts/brave-search-server.json +341 -0
- package/docs/safety-index/artifacts/brave-search-server.md +201 -0
- package/docs/safety-index/artifacts/browsermcp-server.json +83 -18
- package/docs/safety-index/artifacts/browsermcp-server.md +46 -12
- package/docs/safety-index/artifacts/chrome-devtools-mcp-server.json +592 -21
- package/docs/safety-index/artifacts/chrome-devtools-mcp-server.md +96 -14
- package/docs/safety-index/artifacts/clay-server.json +66 -0
- package/docs/safety-index/artifacts/clay-server.md +106 -0
- package/docs/safety-index/artifacts/cloudflare-server.json +66 -0
- package/docs/safety-index/artifacts/cloudflare-server.md +106 -0
- package/docs/safety-index/artifacts/context7-server.json +85 -18
- package/docs/safety-index/artifacts/context7-server.md +52 -11
- package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +1565 -34
- package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +178 -17
- package/docs/safety-index/artifacts/docker-server.json +395 -0
- package/docs/safety-index/artifacts/docker-server.md +204 -0
- package/docs/safety-index/artifacts/everything-server.json +145 -18
- package/docs/safety-index/artifacts/everything-server.md +56 -11
- package/docs/safety-index/artifacts/exa-server.json +400 -0
- package/docs/safety-index/artifacts/exa-server.md +207 -0
- package/docs/safety-index/artifacts/executeautomation-playwright-server.json +625 -18
- package/docs/safety-index/artifacts/executeautomation-playwright-server.md +95 -11
- package/docs/safety-index/artifacts/fetch-server.json +66 -0
- package/docs/safety-index/artifacts/fetch-server.md +106 -0
- package/docs/safety-index/artifacts/figma-server.json +1766 -0
- package/docs/safety-index/artifacts/figma-server.md +256 -0
- package/docs/safety-index/artifacts/filesystem-mcp-server.json +428 -24
- package/docs/safety-index/artifacts/filesystem-mcp-server.md +75 -14
- package/docs/safety-index/artifacts/filesystem-server.json +426 -22
- package/docs/safety-index/artifacts/filesystem-server.md +73 -12
- package/docs/safety-index/artifacts/firecrawl-server.json +4056 -0
- package/docs/safety-index/artifacts/firecrawl-server.md +243 -0
- package/docs/safety-index/artifacts/github-mcp-server.json +374 -21
- package/docs/safety-index/artifacts/github-mcp-server.md +71 -15
- package/docs/safety-index/artifacts/gitlab-server.json +229 -0
- package/docs/safety-index/artifacts/gitlab-server.md +753 -0
- package/docs/safety-index/artifacts/gmail-server.json +66 -0
- package/docs/safety-index/artifacts/gmail-server.md +106 -0
- package/docs/safety-index/artifacts/google-calendar-server.json +66 -0
- package/docs/safety-index/artifacts/google-calendar-server.md +106 -0
- package/docs/safety-index/artifacts/google-drive-server.json +66 -0
- package/docs/safety-index/artifacts/google-drive-server.md +106 -0
- package/docs/safety-index/artifacts/google-sheets-server.json +66 -0
- package/docs/safety-index/artifacts/google-sheets-server.md +106 -0
- package/docs/safety-index/artifacts/google-tasks-server.json +66 -0
- package/docs/safety-index/artifacts/google-tasks-server.md +106 -0
- package/docs/safety-index/artifacts/huggingface-server.json +66 -0
- package/docs/safety-index/artifacts/huggingface-server.md +106 -0
- package/docs/safety-index/artifacts/jina-server.json +66 -0
- package/docs/safety-index/artifacts/jina-server.md +106 -0
- package/docs/safety-index/artifacts/kubernetes-server.json +1054 -27
- package/docs/safety-index/artifacts/kubernetes-server.md +137 -18
- package/docs/safety-index/artifacts/linear-server.json +1494 -0
- package/docs/safety-index/artifacts/linear-server.md +237 -0
- package/docs/safety-index/artifacts/memory-server.json +191 -18
- package/docs/safety-index/artifacts/memory-server.md +51 -9
- package/docs/safety-index/artifacts/mongodb-server.json +66 -0
- package/docs/safety-index/artifacts/mongodb-server.md +106 -0
- package/docs/safety-index/artifacts/neon-server.json +66 -0
- package/docs/safety-index/artifacts/neon-server.md +103 -0
- package/docs/safety-index/artifacts/notion-server.json +7151 -0
- package/docs/safety-index/artifacts/notion-server.md +236 -0
- package/docs/safety-index/artifacts/onesignal-server.json +66 -0
- package/docs/safety-index/artifacts/onesignal-server.md +106 -0
- package/docs/safety-index/artifacts/opentofu-server.json +31 -19
- package/docs/safety-index/artifacts/opentofu-server.md +28 -10
- package/docs/safety-index/artifacts/playwright-mcp-server.json +415 -24
- package/docs/safety-index/artifacts/playwright-mcp-server.md +84 -20
- package/docs/safety-index/artifacts/postgres-server.json +330 -0
- package/docs/safety-index/artifacts/postgres-server.md +208 -0
- package/docs/safety-index/artifacts/promptopia-server.json +96 -19
- package/docs/safety-index/artifacts/promptopia-server.md +43 -9
- package/docs/safety-index/artifacts/puppeteer-server.json +118 -29
- package/docs/safety-index/artifacts/puppeteer-server.md +61 -19
- package/docs/safety-index/artifacts/qdrant-server.json +66 -0
- package/docs/safety-index/artifacts/qdrant-server.md +106 -0
- package/docs/safety-index/artifacts/reddit-server.json +66 -0
- package/docs/safety-index/artifacts/reddit-server.md +106 -0
- package/docs/safety-index/artifacts/ref-tools-server.json +95 -18
- package/docs/safety-index/artifacts/ref-tools-server.md +45 -12
- package/docs/safety-index/artifacts/sentry-server.json +66 -0
- package/docs/safety-index/artifacts/sentry-server.md +106 -0
- package/docs/safety-index/artifacts/sequential-thinking-server.json +59 -18
- package/docs/safety-index/artifacts/sequential-thinking-server.md +41 -9
- package/docs/safety-index/artifacts/slack-server.json +66 -0
- package/docs/safety-index/artifacts/slack-server.md +102 -0
- package/docs/safety-index/artifacts/sqlite-server.json +67 -0
- package/docs/safety-index/artifacts/sqlite-server.md +106 -0
- package/docs/safety-index/artifacts/stripe-server.json +66 -0
- package/docs/safety-index/artifacts/stripe-server.md +106 -0
- package/docs/safety-index/artifacts/supabase-server.json +66 -0
- package/docs/safety-index/artifacts/supabase-server.md +102 -0
- package/docs/safety-index/artifacts/tavily-search-server.json +66 -0
- package/docs/safety-index/artifacts/tavily-search-server.md +106 -0
- package/docs/safety-index/artifacts/ui5-mcp-server.json +24 -24
- package/docs/safety-index/artifacts/ui5-mcp-server.md +13 -13
- package/docs/safety-index/artifacts/vercel-ai-server.json +66 -0
- package/docs/safety-index/artifacts/vercel-ai-server.md +106 -0
- package/docs/safety-index/targets.json +535 -0
- package/package.json +1 -1
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
{
|
|
2
|
+
"artifactType": "run",
|
|
3
|
+
"schemaVersion": "1.0.0",
|
|
4
|
+
"gate": "pass",
|
|
5
|
+
"runId": "run_2026-07-12T234425958Z_416e109a",
|
|
6
|
+
"createdAt": "2026-07-12T23:44:25.958Z",
|
|
7
|
+
"toolVersion": "1.31.0",
|
|
8
|
+
"target": {
|
|
9
|
+
"targetId": "exa-server",
|
|
10
|
+
"adapter": "local-process",
|
|
11
|
+
"command": "npx",
|
|
12
|
+
"args": [
|
|
13
|
+
"-y",
|
|
14
|
+
"exa-mcp-server"
|
|
15
|
+
],
|
|
16
|
+
"cwd": ".",
|
|
17
|
+
"metadata": {
|
|
18
|
+
"package": "exa-mcp-server",
|
|
19
|
+
"purpose": "mcp-safety-index",
|
|
20
|
+
"riskClass": "Untrusted content retrieval",
|
|
21
|
+
"failureClass": "Search result boundary",
|
|
22
|
+
"whyItMatters": "Exa MCP servers return web search and crawling results into agent context from untrusted sources."
|
|
23
|
+
},
|
|
24
|
+
"serverName": "exa-search-server",
|
|
25
|
+
"serverVersion": "3.2.1"
|
|
26
|
+
},
|
|
27
|
+
"environment": {
|
|
28
|
+
"platform": "darwin 25.5.0",
|
|
29
|
+
"nodeVersion": "v22.22.1"
|
|
30
|
+
},
|
|
31
|
+
"summary": {
|
|
32
|
+
"total": 9,
|
|
33
|
+
"pass": 8,
|
|
34
|
+
"fail": 0,
|
|
35
|
+
"partial": 1,
|
|
36
|
+
"unsupported": 0,
|
|
37
|
+
"flaky": 0,
|
|
38
|
+
"skipped": 0,
|
|
39
|
+
"gate": "pass"
|
|
40
|
+
},
|
|
41
|
+
"checks": [
|
|
42
|
+
{
|
|
43
|
+
"id": "tools",
|
|
44
|
+
"capability": "tools",
|
|
45
|
+
"status": "pass",
|
|
46
|
+
"durationMs": 1.6167910000003758,
|
|
47
|
+
"message": "Advertised capability responded with the minimal expected shape (2 items).",
|
|
48
|
+
"evidence": [
|
|
49
|
+
{
|
|
50
|
+
"endpoint": "tools/list",
|
|
51
|
+
"advertised": true,
|
|
52
|
+
"responded": true,
|
|
53
|
+
"minimalShapePresent": true,
|
|
54
|
+
"itemCount": 2,
|
|
55
|
+
"identifiers": [
|
|
56
|
+
"web_search_exa",
|
|
57
|
+
"web_fetch_exa"
|
|
58
|
+
],
|
|
59
|
+
"diagnostics": [
|
|
60
|
+
"[EXA-MCP-DEBUG] Server initialized with modern MCP SDK and Smithery CLI support",
|
|
61
|
+
"(node:26156) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.",
|
|
62
|
+
"(Use `node --trace-deprecation ...` to show where the warning was created)",
|
|
63
|
+
"[smithery] MCP server connected to stdio transport",
|
|
64
|
+
"[smithery] Configuration loaded: { debug: false }"
|
|
65
|
+
],
|
|
66
|
+
"schemas": {
|
|
67
|
+
"web_search_exa": {
|
|
68
|
+
"type": "object",
|
|
69
|
+
"properties": {
|
|
70
|
+
"query": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"description": "Natural language search query. Should be a semantically rich description of the ideal page, not just keywords. Optionally include category:<type> (company, people) to focus results — e.g. 'category:people John Doe software engineer'."
|
|
73
|
+
},
|
|
74
|
+
"numResults": {
|
|
75
|
+
"type": "number",
|
|
76
|
+
"minimum": 1,
|
|
77
|
+
"maximum": 100,
|
|
78
|
+
"description": "Number of search results to return (must be a number, default: 10)."
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"required": [
|
|
82
|
+
"query"
|
|
83
|
+
],
|
|
84
|
+
"additionalProperties": false,
|
|
85
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
86
|
+
},
|
|
87
|
+
"web_fetch_exa": {
|
|
88
|
+
"type": "object",
|
|
89
|
+
"properties": {
|
|
90
|
+
"urls": {
|
|
91
|
+
"type": "array",
|
|
92
|
+
"items": {
|
|
93
|
+
"type": "string"
|
|
94
|
+
},
|
|
95
|
+
"description": "URLs to read. Batch multiple URLs in one call."
|
|
96
|
+
},
|
|
97
|
+
"maxCharacters": {
|
|
98
|
+
"type": "number",
|
|
99
|
+
"minimum": 1,
|
|
100
|
+
"description": "Maximum characters to extract per page (must be a positive number, default: 3000)"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"required": [
|
|
104
|
+
"urls"
|
|
105
|
+
],
|
|
106
|
+
"additionalProperties": false,
|
|
107
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"id": "prompts",
|
|
115
|
+
"capability": "prompts",
|
|
116
|
+
"status": "pass",
|
|
117
|
+
"durationMs": 0.26758300000074087,
|
|
118
|
+
"message": "Advertised capability responded with the minimal expected shape (1 item).",
|
|
119
|
+
"evidence": [
|
|
120
|
+
{
|
|
121
|
+
"endpoint": "prompts/list",
|
|
122
|
+
"advertised": true,
|
|
123
|
+
"responded": true,
|
|
124
|
+
"minimalShapePresent": true,
|
|
125
|
+
"itemCount": 1,
|
|
126
|
+
"identifiers": [
|
|
127
|
+
"web_search_help"
|
|
128
|
+
],
|
|
129
|
+
"diagnostics": [
|
|
130
|
+
"[EXA-MCP-DEBUG] Server initialized with modern MCP SDK and Smithery CLI support",
|
|
131
|
+
"(node:26156) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.",
|
|
132
|
+
"(Use `node --trace-deprecation ...` to show where the warning was created)",
|
|
133
|
+
"[smithery] MCP server connected to stdio transport",
|
|
134
|
+
"[smithery] Configuration loaded: { debug: false }"
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"id": "resources",
|
|
141
|
+
"capability": "resources",
|
|
142
|
+
"status": "pass",
|
|
143
|
+
"durationMs": 0.675083000001905,
|
|
144
|
+
"message": "Advertised capability responded with the minimal expected shape (1 items).",
|
|
145
|
+
"evidence": [
|
|
146
|
+
{
|
|
147
|
+
"endpoint": "resources/list",
|
|
148
|
+
"advertised": true,
|
|
149
|
+
"responded": true,
|
|
150
|
+
"minimalShapePresent": true,
|
|
151
|
+
"itemCount": 1,
|
|
152
|
+
"identifiers": [
|
|
153
|
+
"exa://tools/list"
|
|
154
|
+
],
|
|
155
|
+
"diagnostics": [
|
|
156
|
+
"[EXA-MCP-DEBUG] Server initialized with modern MCP SDK and Smithery CLI support",
|
|
157
|
+
"(node:26156) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.",
|
|
158
|
+
"(Use `node --trace-deprecation ...` to show where the warning was created)",
|
|
159
|
+
"[smithery] MCP server connected to stdio transport",
|
|
160
|
+
"[smithery] Configuration loaded: { debug: false }"
|
|
161
|
+
]
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"endpoint": "resources/templates/list",
|
|
165
|
+
"advertised": true,
|
|
166
|
+
"responded": true,
|
|
167
|
+
"minimalShapePresent": true,
|
|
168
|
+
"itemCount": 0,
|
|
169
|
+
"identifiers": [],
|
|
170
|
+
"diagnostics": [
|
|
171
|
+
"[EXA-MCP-DEBUG] Server initialized with modern MCP SDK and Smithery CLI support",
|
|
172
|
+
"(node:26156) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.",
|
|
173
|
+
"(Use `node --trace-deprecation ...` to show where the warning was created)",
|
|
174
|
+
"[smithery] MCP server connected to stdio transport",
|
|
175
|
+
"[smithery] Configuration loaded: { debug: false }"
|
|
176
|
+
]
|
|
177
|
+
}
|
|
178
|
+
]
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"id": "security-lite",
|
|
182
|
+
"capability": "security-lite",
|
|
183
|
+
"status": "pass",
|
|
184
|
+
"durationMs": 0.018791000002238434,
|
|
185
|
+
"message": "No security issues detected (lightweight scan).",
|
|
186
|
+
"evidence": [
|
|
187
|
+
{
|
|
188
|
+
"endpoint": "security/scan-lite",
|
|
189
|
+
"advertised": true,
|
|
190
|
+
"responded": true,
|
|
191
|
+
"minimalShapePresent": true,
|
|
192
|
+
"itemCount": 0
|
|
193
|
+
}
|
|
194
|
+
]
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"id": "runtime-profile",
|
|
198
|
+
"capability": "runtime-profile",
|
|
199
|
+
"status": "pass",
|
|
200
|
+
"durationMs": 0.05749999999534339,
|
|
201
|
+
"message": "Detected 1 potential egress target(s) and 0 potential state mutation(s) with low confidence.",
|
|
202
|
+
"evidence": [
|
|
203
|
+
{
|
|
204
|
+
"endpoint": "runtime-profile/analyze",
|
|
205
|
+
"advertised": true,
|
|
206
|
+
"responded": true,
|
|
207
|
+
"minimalShapePresent": true,
|
|
208
|
+
"itemCount": 1,
|
|
209
|
+
"diagnostics": [
|
|
210
|
+
"Egress entries: 1",
|
|
211
|
+
"State mutations: 0",
|
|
212
|
+
"Confidence: medium"
|
|
213
|
+
],
|
|
214
|
+
"findings": [
|
|
215
|
+
{
|
|
216
|
+
"target": "web_fetch_exa",
|
|
217
|
+
"protocol": "unknown",
|
|
218
|
+
"source": "description_analysis",
|
|
219
|
+
"confidence": "low"
|
|
220
|
+
}
|
|
221
|
+
]
|
|
222
|
+
}
|
|
223
|
+
]
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"id": "conformance",
|
|
227
|
+
"capability": "conformance",
|
|
228
|
+
"status": "pass",
|
|
229
|
+
"durationMs": 0.8234580000062124,
|
|
230
|
+
"message": "All 7 conformance checks passed.",
|
|
231
|
+
"evidence": [
|
|
232
|
+
{
|
|
233
|
+
"endpoint": "conformance/check",
|
|
234
|
+
"advertised": true,
|
|
235
|
+
"responded": true,
|
|
236
|
+
"minimalShapePresent": true,
|
|
237
|
+
"itemCount": 7,
|
|
238
|
+
"identifiers": [],
|
|
239
|
+
"diagnostics": [
|
|
240
|
+
"[pass] capabilities-present: Server returned capabilities object.",
|
|
241
|
+
"[pass] server-info: Server provided initialization info.",
|
|
242
|
+
"[pass] tools-capability-match: tools/list returned 2 tool(s).",
|
|
243
|
+
"[pass] prompts-capability-match: prompts/list returned 1 prompt(s).",
|
|
244
|
+
"[pass] resources-capability-match: resources/list returned 1 resource(s).",
|
|
245
|
+
"[pass] tool-response-content: No safe tool to invoke — content validation skipped.",
|
|
246
|
+
"[pass] error-handling: Server returned proper error code -32601 for unknown method."
|
|
247
|
+
]
|
|
248
|
+
}
|
|
249
|
+
]
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"id": "schema-quality",
|
|
253
|
+
"capability": "schema-quality",
|
|
254
|
+
"status": "pass",
|
|
255
|
+
"durationMs": 0.7324589999989257,
|
|
256
|
+
"message": "All 4 item(s) have good schema quality.",
|
|
257
|
+
"evidence": [
|
|
258
|
+
{
|
|
259
|
+
"endpoint": "schema-quality/scan",
|
|
260
|
+
"advertised": true,
|
|
261
|
+
"responded": true,
|
|
262
|
+
"minimalShapePresent": true,
|
|
263
|
+
"itemCount": 0,
|
|
264
|
+
"identifiers": []
|
|
265
|
+
}
|
|
266
|
+
]
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"id": "security",
|
|
270
|
+
"capability": "security",
|
|
271
|
+
"status": "pass",
|
|
272
|
+
"durationMs": 0.20249999999941792,
|
|
273
|
+
"message": "No security issues detected.",
|
|
274
|
+
"evidence": [
|
|
275
|
+
{
|
|
276
|
+
"endpoint": "security/scan",
|
|
277
|
+
"advertised": true,
|
|
278
|
+
"responded": true,
|
|
279
|
+
"minimalShapePresent": true,
|
|
280
|
+
"itemCount": 0
|
|
281
|
+
}
|
|
282
|
+
]
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"id": "attack-sim",
|
|
286
|
+
"capability": "attack-sim",
|
|
287
|
+
"status": "partial",
|
|
288
|
+
"durationMs": 0.4944589999940945,
|
|
289
|
+
"message": "Safe attack simulation found 1 finding(s): 0 high, 1 medium, 0 low.",
|
|
290
|
+
"evidence": [
|
|
291
|
+
{
|
|
292
|
+
"endpoint": "attack-sim/safe",
|
|
293
|
+
"advertised": true,
|
|
294
|
+
"responded": true,
|
|
295
|
+
"minimalShapePresent": true,
|
|
296
|
+
"itemCount": 1,
|
|
297
|
+
"identifiers": [
|
|
298
|
+
"web_search_exa"
|
|
299
|
+
],
|
|
300
|
+
"diagnostics": [
|
|
301
|
+
"[medium] Tool \"web_search_exa\" combines broad parameters (query) with destructive or non-read-only behavior."
|
|
302
|
+
],
|
|
303
|
+
"findings": [
|
|
304
|
+
{
|
|
305
|
+
"ruleId": "attack-sim/permission-boundary/broad-destructive-tool",
|
|
306
|
+
"attackClass": "permission-boundary",
|
|
307
|
+
"severity": "medium",
|
|
308
|
+
"itemType": "tool",
|
|
309
|
+
"itemName": "web_search_exa",
|
|
310
|
+
"message": "Tool \"web_search_exa\" combines broad parameters (query) with destructive or non-read-only behavior.",
|
|
311
|
+
"evidence": {
|
|
312
|
+
"broadParams": [
|
|
313
|
+
"query"
|
|
314
|
+
],
|
|
315
|
+
"annotations": {
|
|
316
|
+
"readOnlyHint": true,
|
|
317
|
+
"destructiveHint": false,
|
|
318
|
+
"idempotentHint": true,
|
|
319
|
+
"openWorldHint": false
|
|
320
|
+
},
|
|
321
|
+
"description": "Search the web for any topic and get clean, ready-to-use content.\n\n Best for: Finding current information, news, facts, people, companies, or answering questions about any topic.\n Returns: Clean text content from top search results.\n\n Query tips: \n describe the ideal page, not keywords. \"blog post comparing React and Vue performance\" not \"React vs Vue\".\n Use category:people / category:company to search through Linkedin profiles / companies respectively.\n If highlights are insufficient, follow up with web_fetch_exa on the best URLs."
|
|
322
|
+
},
|
|
323
|
+
"recommendation": "Constrain this tool with typed inputs, allowlists, explicit read-only/destructive annotations, and a harmless CI fixture.",
|
|
324
|
+
"recommendedAction": "gate"
|
|
325
|
+
}
|
|
326
|
+
]
|
|
327
|
+
}
|
|
328
|
+
]
|
|
329
|
+
}
|
|
330
|
+
],
|
|
331
|
+
"healthScore": {
|
|
332
|
+
"overall": 97,
|
|
333
|
+
"grade": "A",
|
|
334
|
+
"dimensions": [
|
|
335
|
+
{
|
|
336
|
+
"name": "Protocol Compliance",
|
|
337
|
+
"weight": 0.3,
|
|
338
|
+
"score": 100,
|
|
339
|
+
"details": [
|
|
340
|
+
"conformance: pass (100/100)"
|
|
341
|
+
]
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"name": "Schema Quality",
|
|
345
|
+
"weight": 0.2,
|
|
346
|
+
"score": 100,
|
|
347
|
+
"details": [
|
|
348
|
+
"schema-quality: pass (100/100)"
|
|
349
|
+
]
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"name": "Security",
|
|
353
|
+
"weight": 0.2,
|
|
354
|
+
"score": 87,
|
|
355
|
+
"details": [
|
|
356
|
+
"security-lite: pass (100/100)",
|
|
357
|
+
"security: pass (100/100)",
|
|
358
|
+
"attack-sim: partial (60/100)"
|
|
359
|
+
]
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"name": "Reliability",
|
|
363
|
+
"weight": 0.2,
|
|
364
|
+
"score": 100,
|
|
365
|
+
"details": [
|
|
366
|
+
"tools: pass (100/100)",
|
|
367
|
+
"prompts: pass (100/100)",
|
|
368
|
+
"resources: pass (100/100)"
|
|
369
|
+
]
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"name": "Performance",
|
|
373
|
+
"weight": 0.1,
|
|
374
|
+
"score": 100,
|
|
375
|
+
"details": [
|
|
376
|
+
"Connect: 778ms",
|
|
377
|
+
"p95 latency: 2ms (3 operations)"
|
|
378
|
+
]
|
|
379
|
+
}
|
|
380
|
+
]
|
|
381
|
+
},
|
|
382
|
+
"performanceMetrics": {
|
|
383
|
+
"connectMs": 777.9551670000001,
|
|
384
|
+
"toolsListMs": 1.6167910000003758,
|
|
385
|
+
"promptsListMs": 0.26758300000074087,
|
|
386
|
+
"resourcesListMs": 0.675083000001905
|
|
387
|
+
},
|
|
388
|
+
"runtimeProfile": {
|
|
389
|
+
"egress": [
|
|
390
|
+
{
|
|
391
|
+
"target": "web_fetch_exa",
|
|
392
|
+
"protocol": "unknown",
|
|
393
|
+
"source": "description_analysis",
|
|
394
|
+
"confidence": "low"
|
|
395
|
+
}
|
|
396
|
+
],
|
|
397
|
+
"analyzedAt": "2026-07-12T23:44:26.739Z",
|
|
398
|
+
"confidence": "medium"
|
|
399
|
+
}
|
|
400
|
+
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# MCP Observatory Run Report
|
|
2
|
+
|
|
3
|
+
Generated at 2026-07-12T23:44:25.958Z
|
|
4
|
+
|
|
5
|
+
## Target and Environment Metadata
|
|
6
|
+
|
|
7
|
+
- Target: `exa-server`
|
|
8
|
+
- Adapter: `local-process`
|
|
9
|
+
- Command: `npx -y exa-mcp-server`
|
|
10
|
+
- Server: `exa-search-server 3.2.1`
|
|
11
|
+
- Platform: `darwin 25.5.0`
|
|
12
|
+
- Node: `v22.22.1`
|
|
13
|
+
|
|
14
|
+
## Executive Summary
|
|
15
|
+
|
|
16
|
+
**Health Score: 97/100 (A)**
|
|
17
|
+
|
|
18
|
+
| Dimension | Score | Weight |
|
|
19
|
+
| --- | --- | --- |
|
|
20
|
+
| Protocol Compliance | 100/100 | 30% |
|
|
21
|
+
| Schema Quality | 100/100 | 20% |
|
|
22
|
+
| Security | 87/100 | 20% |
|
|
23
|
+
| Reliability | 100/100 | 20% |
|
|
24
|
+
| Performance | 100/100 | 10% |
|
|
25
|
+
|
|
26
|
+
| Gate | Total | Pass | Fail | Partial | Unsupported | Flaky | Skipped |
|
|
27
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
28
|
+
| pass | 9 | 8 | 0 | 1 | 0 | 0 | 0 |
|
|
29
|
+
|
|
30
|
+
## At a Glance
|
|
31
|
+
|
|
32
|
+
- Safety verdict: **Needs review** — The server is usable, but caveated checks should be reviewed before agents depend on it.
|
|
33
|
+
- Top risks: attack-sim: Safe attack simulation found 1 finding(s): 0 high, 1 medium, 0 low.
|
|
34
|
+
- Regression/schema drift: Run `mcp-observatory diff <previous-run.json> <current-run.json>` to classify regressions and schema drift.
|
|
35
|
+
- Failing checks: none
|
|
36
|
+
- Partial or flaky checks: attack-sim
|
|
37
|
+
- Skipped checks: none
|
|
38
|
+
- Unsupported checks: none
|
|
39
|
+
- Suggested next step: Review the caveated checks next: attack-sim.
|
|
40
|
+
- CI next step: `Add CI: npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y <server-package>"`
|
|
41
|
+
|
|
42
|
+
## What Was Not Tested
|
|
43
|
+
|
|
44
|
+
- 🔒 filesystem_mutation: Filesystem write operations were not exercised
|
|
45
|
+
- ℹ️ credential_access: Credential scanning was performed (see security findings)
|
|
46
|
+
- ℹ️ destructive_payloads: Destructive payloads were not attempted (safe-mode only)
|
|
47
|
+
|
|
48
|
+
## Runtime Profile
|
|
49
|
+
|
|
50
|
+
### Egress Manifest
|
|
51
|
+
|
|
52
|
+
The following targets were identified as potentially reachable by this server (confidence: **medium**):
|
|
53
|
+
|
|
54
|
+
| Target | Protocol | Source | Confidence |
|
|
55
|
+
| --- | --- | --- | --- |
|
|
56
|
+
| web_fetch_exa | unknown | description_analysis | low |
|
|
57
|
+
|
|
58
|
+
_Analyzed at 2026-07-12T23:44:26.739Z_
|
|
59
|
+
|
|
60
|
+
## Regressions and Recoveries
|
|
61
|
+
|
|
62
|
+
_Use the `diff` command against another run artifact to classify regressions and recoveries over time._
|
|
63
|
+
|
|
64
|
+
## Full Capability Status Table
|
|
65
|
+
|
|
66
|
+
| Focus | Check | Status | Duration (ms) | Message |
|
|
67
|
+
| --- | --- | --- | --- | --- |
|
|
68
|
+
| healthy | conformance | pass | 0.82 | All 7 conformance checks passed. |
|
|
69
|
+
| healthy | prompts | pass | 0.27 | Advertised capability responded with the minimal expected shape (1 item). |
|
|
70
|
+
| healthy | resources | pass | 0.68 | Advertised capability responded with the minimal expected shape (1 items). |
|
|
71
|
+
| healthy | runtime-profile | pass | 0.06 | Detected 1 potential egress target(s) and 0 potential state mutation(s) with low confidence. |
|
|
72
|
+
| healthy | schema-quality | pass | 0.73 | All 4 item(s) have good schema quality. |
|
|
73
|
+
| healthy | security | pass | 0.20 | No security issues detected. |
|
|
74
|
+
| healthy | security-lite | pass | 0.02 | No security issues detected (lightweight scan). |
|
|
75
|
+
| healthy | tools | pass | 1.62 | Advertised capability responded with the minimal expected shape (2 items). |
|
|
76
|
+
| review | attack-sim | partial | 0.49 | Safe attack simulation found 1 finding(s): 0 high, 1 medium, 0 low. |
|
|
77
|
+
|
|
78
|
+
## Evidence Snippets
|
|
79
|
+
|
|
80
|
+
### conformance — pass
|
|
81
|
+
|
|
82
|
+
Summary: All 7 conformance checks passed.
|
|
83
|
+
|
|
84
|
+
- Endpoint: `conformance/check`
|
|
85
|
+
- Advertised: `true`
|
|
86
|
+
- Responded: `true`
|
|
87
|
+
- Minimal shape present: `true`
|
|
88
|
+
- Item count: `7`
|
|
89
|
+
- Identifiers: none
|
|
90
|
+
- Diagnostics: [pass] capabilities-present: Server returned capabilities object., [pass] server-info: Server provided initialization info., [pass] tools-capability-match: tools/list returned 2 tool(s). (+4 more)
|
|
91
|
+
|
|
92
|
+
### prompts — pass
|
|
93
|
+
|
|
94
|
+
Summary: Advertised capability responded with the minimal expected shape (1 item).
|
|
95
|
+
|
|
96
|
+
- Endpoint: `prompts/list`
|
|
97
|
+
- Advertised: `true`
|
|
98
|
+
- Responded: `true`
|
|
99
|
+
- Minimal shape present: `true`
|
|
100
|
+
- Item count: `1`
|
|
101
|
+
- Identifiers: web_search_help
|
|
102
|
+
- Diagnostics: [EXA-MCP-DEBUG] Server initialized with modern MCP SDK and Smithery CLI support, (node:26156) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead., (Use `node --trace-deprecation ...` to show where the warning was created) (+2 more)
|
|
103
|
+
|
|
104
|
+
### resources — pass
|
|
105
|
+
|
|
106
|
+
Summary: Advertised capability responded with the minimal expected shape (1 items).
|
|
107
|
+
|
|
108
|
+
- Endpoint: `resources/list`
|
|
109
|
+
- Advertised: `true`
|
|
110
|
+
- Responded: `true`
|
|
111
|
+
- Minimal shape present: `true`
|
|
112
|
+
- Item count: `1`
|
|
113
|
+
- Identifiers: exa://tools/list
|
|
114
|
+
- Diagnostics: [EXA-MCP-DEBUG] Server initialized with modern MCP SDK and Smithery CLI support, (node:26156) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead., (Use `node --trace-deprecation ...` to show where the warning was created) (+2 more)
|
|
115
|
+
- Endpoint: `resources/templates/list`
|
|
116
|
+
- Advertised: `true`
|
|
117
|
+
- Responded: `true`
|
|
118
|
+
- Minimal shape present: `true`
|
|
119
|
+
- Item count: `0`
|
|
120
|
+
- Identifiers: none
|
|
121
|
+
- Diagnostics: [EXA-MCP-DEBUG] Server initialized with modern MCP SDK and Smithery CLI support, (node:26156) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead., (Use `node --trace-deprecation ...` to show where the warning was created) (+2 more)
|
|
122
|
+
|
|
123
|
+
### runtime-profile — pass
|
|
124
|
+
|
|
125
|
+
Summary: Detected 1 potential egress target(s) and 0 potential state mutation(s) with low confidence.
|
|
126
|
+
|
|
127
|
+
- Endpoint: `runtime-profile/analyze`
|
|
128
|
+
- Advertised: `true`
|
|
129
|
+
- Responded: `true`
|
|
130
|
+
- Minimal shape present: `true`
|
|
131
|
+
- Item count: `1`
|
|
132
|
+
- Identifiers: none
|
|
133
|
+
- Diagnostics: Egress entries: 1, State mutations: 0, Confidence: medium
|
|
134
|
+
|
|
135
|
+
### schema-quality — pass
|
|
136
|
+
|
|
137
|
+
Summary: All 4 item(s) have good schema quality.
|
|
138
|
+
|
|
139
|
+
- Endpoint: `schema-quality/scan`
|
|
140
|
+
- Advertised: `true`
|
|
141
|
+
- Responded: `true`
|
|
142
|
+
- Minimal shape present: `true`
|
|
143
|
+
- Item count: `0`
|
|
144
|
+
- Identifiers: none
|
|
145
|
+
- Diagnostics: none
|
|
146
|
+
|
|
147
|
+
### security — pass
|
|
148
|
+
|
|
149
|
+
Summary: No security issues detected.
|
|
150
|
+
|
|
151
|
+
- Endpoint: `security/scan`
|
|
152
|
+
- Advertised: `true`
|
|
153
|
+
- Responded: `true`
|
|
154
|
+
- Minimal shape present: `true`
|
|
155
|
+
- Item count: `0`
|
|
156
|
+
- Identifiers: none
|
|
157
|
+
- Diagnostics: none
|
|
158
|
+
|
|
159
|
+
### security-lite — pass
|
|
160
|
+
|
|
161
|
+
Summary: No security issues detected (lightweight scan).
|
|
162
|
+
|
|
163
|
+
- Endpoint: `security/scan-lite`
|
|
164
|
+
- Advertised: `true`
|
|
165
|
+
- Responded: `true`
|
|
166
|
+
- Minimal shape present: `true`
|
|
167
|
+
- Item count: `0`
|
|
168
|
+
- Identifiers: none
|
|
169
|
+
- Diagnostics: none
|
|
170
|
+
|
|
171
|
+
### tools — pass
|
|
172
|
+
|
|
173
|
+
Summary: Advertised capability responded with the minimal expected shape (2 items).
|
|
174
|
+
|
|
175
|
+
- Endpoint: `tools/list`
|
|
176
|
+
- Advertised: `true`
|
|
177
|
+
- Responded: `true`
|
|
178
|
+
- Minimal shape present: `true`
|
|
179
|
+
- Item count: `2`
|
|
180
|
+
- Identifiers: web_search_exa, web_fetch_exa
|
|
181
|
+
- Diagnostics: [EXA-MCP-DEBUG] Server initialized with modern MCP SDK and Smithery CLI support, (node:26156) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead., (Use `node --trace-deprecation ...` to show where the warning was created) (+2 more)
|
|
182
|
+
|
|
183
|
+
### attack-sim — partial
|
|
184
|
+
|
|
185
|
+
Summary: Safe attack simulation found 1 finding(s): 0 high, 1 medium, 0 low.
|
|
186
|
+
|
|
187
|
+
- Endpoint: `attack-sim/safe`
|
|
188
|
+
- Advertised: `true`
|
|
189
|
+
- Responded: `true`
|
|
190
|
+
- Minimal shape present: `true`
|
|
191
|
+
- Item count: `1`
|
|
192
|
+
- Identifiers: web_search_exa
|
|
193
|
+
- Diagnostics: [medium] Tool "web_search_exa" combines broad parameters (query) with destructive or non-read-only behavior.
|
|
194
|
+
|
|
195
|
+
## Reproduction Commands
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
npm run cli -- run --target <path-to-target-config.json>
|
|
199
|
+
npm run cli -- report --run <path-to-run-artifact.json> --format markdown
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Artifact Provenance
|
|
203
|
+
|
|
204
|
+
- Artifact type: `run`
|
|
205
|
+
- Schema version: `1.0.0`
|
|
206
|
+
- Run ID: `run_2026-07-12T234425958Z_416e109a`
|
|
207
|
+
- Gate: `pass`
|