@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.
Files changed (117) hide show
  1. package/README.md +4 -10
  2. package/README.zh-CN.md +4 -10
  3. package/dist/src/cli.js +1 -1
  4. package/dist/src/cli.js.map +1 -1
  5. package/dist/src/commands/enforce.d.ts +2 -2
  6. package/dist/src/commands/enforce.js +5 -8
  7. package/dist/src/commands/enforce.js.map +1 -1
  8. package/dist/src/commands/scan.js.map +1 -1
  9. package/dist/src/commands/test.js +2 -2
  10. package/dist/src/commands/test.js.map +1 -1
  11. package/dist/src/telemetry.js +2 -1
  12. package/dist/src/telemetry.js.map +1 -1
  13. package/dist/src/validate.js +5 -6
  14. package/dist/src/validate.js.map +1 -1
  15. package/docs/mcp-server-safety-index.md +68 -8
  16. package/docs/safety-index/artifacts/antv-chart-server.json +1452 -19
  17. package/docs/safety-index/artifacts/antv-chart-server.md +156 -10
  18. package/docs/safety-index/artifacts/brave-search-server.json +341 -0
  19. package/docs/safety-index/artifacts/brave-search-server.md +201 -0
  20. package/docs/safety-index/artifacts/browsermcp-server.json +83 -18
  21. package/docs/safety-index/artifacts/browsermcp-server.md +46 -12
  22. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.json +592 -21
  23. package/docs/safety-index/artifacts/chrome-devtools-mcp-server.md +96 -14
  24. package/docs/safety-index/artifacts/clay-server.json +66 -0
  25. package/docs/safety-index/artifacts/clay-server.md +106 -0
  26. package/docs/safety-index/artifacts/cloudflare-server.json +66 -0
  27. package/docs/safety-index/artifacts/cloudflare-server.md +106 -0
  28. package/docs/safety-index/artifacts/context7-server.json +85 -18
  29. package/docs/safety-index/artifacts/context7-server.md +52 -11
  30. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.json +1565 -34
  31. package/docs/safety-index/artifacts/cyanheads-git-mcp-server.md +178 -17
  32. package/docs/safety-index/artifacts/docker-server.json +395 -0
  33. package/docs/safety-index/artifacts/docker-server.md +204 -0
  34. package/docs/safety-index/artifacts/everything-server.json +145 -18
  35. package/docs/safety-index/artifacts/everything-server.md +56 -11
  36. package/docs/safety-index/artifacts/exa-server.json +400 -0
  37. package/docs/safety-index/artifacts/exa-server.md +207 -0
  38. package/docs/safety-index/artifacts/executeautomation-playwright-server.json +625 -18
  39. package/docs/safety-index/artifacts/executeautomation-playwright-server.md +95 -11
  40. package/docs/safety-index/artifacts/fetch-server.json +66 -0
  41. package/docs/safety-index/artifacts/fetch-server.md +106 -0
  42. package/docs/safety-index/artifacts/figma-server.json +1766 -0
  43. package/docs/safety-index/artifacts/figma-server.md +256 -0
  44. package/docs/safety-index/artifacts/filesystem-mcp-server.json +428 -24
  45. package/docs/safety-index/artifacts/filesystem-mcp-server.md +75 -14
  46. package/docs/safety-index/artifacts/filesystem-server.json +426 -22
  47. package/docs/safety-index/artifacts/filesystem-server.md +73 -12
  48. package/docs/safety-index/artifacts/firecrawl-server.json +4056 -0
  49. package/docs/safety-index/artifacts/firecrawl-server.md +243 -0
  50. package/docs/safety-index/artifacts/github-mcp-server.json +374 -21
  51. package/docs/safety-index/artifacts/github-mcp-server.md +71 -15
  52. package/docs/safety-index/artifacts/gitlab-server.json +229 -0
  53. package/docs/safety-index/artifacts/gitlab-server.md +753 -0
  54. package/docs/safety-index/artifacts/gmail-server.json +66 -0
  55. package/docs/safety-index/artifacts/gmail-server.md +106 -0
  56. package/docs/safety-index/artifacts/google-calendar-server.json +66 -0
  57. package/docs/safety-index/artifacts/google-calendar-server.md +106 -0
  58. package/docs/safety-index/artifacts/google-drive-server.json +66 -0
  59. package/docs/safety-index/artifacts/google-drive-server.md +106 -0
  60. package/docs/safety-index/artifacts/google-sheets-server.json +66 -0
  61. package/docs/safety-index/artifacts/google-sheets-server.md +106 -0
  62. package/docs/safety-index/artifacts/google-tasks-server.json +66 -0
  63. package/docs/safety-index/artifacts/google-tasks-server.md +106 -0
  64. package/docs/safety-index/artifacts/huggingface-server.json +66 -0
  65. package/docs/safety-index/artifacts/huggingface-server.md +106 -0
  66. package/docs/safety-index/artifacts/jina-server.json +66 -0
  67. package/docs/safety-index/artifacts/jina-server.md +106 -0
  68. package/docs/safety-index/artifacts/kubernetes-server.json +1054 -27
  69. package/docs/safety-index/artifacts/kubernetes-server.md +137 -18
  70. package/docs/safety-index/artifacts/linear-server.json +1494 -0
  71. package/docs/safety-index/artifacts/linear-server.md +237 -0
  72. package/docs/safety-index/artifacts/memory-server.json +191 -18
  73. package/docs/safety-index/artifacts/memory-server.md +51 -9
  74. package/docs/safety-index/artifacts/mongodb-server.json +66 -0
  75. package/docs/safety-index/artifacts/mongodb-server.md +106 -0
  76. package/docs/safety-index/artifacts/neon-server.json +66 -0
  77. package/docs/safety-index/artifacts/neon-server.md +103 -0
  78. package/docs/safety-index/artifacts/notion-server.json +7151 -0
  79. package/docs/safety-index/artifacts/notion-server.md +236 -0
  80. package/docs/safety-index/artifacts/onesignal-server.json +66 -0
  81. package/docs/safety-index/artifacts/onesignal-server.md +106 -0
  82. package/docs/safety-index/artifacts/opentofu-server.json +31 -19
  83. package/docs/safety-index/artifacts/opentofu-server.md +28 -10
  84. package/docs/safety-index/artifacts/playwright-mcp-server.json +415 -24
  85. package/docs/safety-index/artifacts/playwright-mcp-server.md +84 -20
  86. package/docs/safety-index/artifacts/postgres-server.json +330 -0
  87. package/docs/safety-index/artifacts/postgres-server.md +208 -0
  88. package/docs/safety-index/artifacts/promptopia-server.json +96 -19
  89. package/docs/safety-index/artifacts/promptopia-server.md +43 -9
  90. package/docs/safety-index/artifacts/puppeteer-server.json +118 -29
  91. package/docs/safety-index/artifacts/puppeteer-server.md +61 -19
  92. package/docs/safety-index/artifacts/qdrant-server.json +66 -0
  93. package/docs/safety-index/artifacts/qdrant-server.md +106 -0
  94. package/docs/safety-index/artifacts/reddit-server.json +66 -0
  95. package/docs/safety-index/artifacts/reddit-server.md +106 -0
  96. package/docs/safety-index/artifacts/ref-tools-server.json +95 -18
  97. package/docs/safety-index/artifacts/ref-tools-server.md +45 -12
  98. package/docs/safety-index/artifacts/sentry-server.json +66 -0
  99. package/docs/safety-index/artifacts/sentry-server.md +106 -0
  100. package/docs/safety-index/artifacts/sequential-thinking-server.json +59 -18
  101. package/docs/safety-index/artifacts/sequential-thinking-server.md +41 -9
  102. package/docs/safety-index/artifacts/slack-server.json +66 -0
  103. package/docs/safety-index/artifacts/slack-server.md +102 -0
  104. package/docs/safety-index/artifacts/sqlite-server.json +67 -0
  105. package/docs/safety-index/artifacts/sqlite-server.md +106 -0
  106. package/docs/safety-index/artifacts/stripe-server.json +66 -0
  107. package/docs/safety-index/artifacts/stripe-server.md +106 -0
  108. package/docs/safety-index/artifacts/supabase-server.json +66 -0
  109. package/docs/safety-index/artifacts/supabase-server.md +102 -0
  110. package/docs/safety-index/artifacts/tavily-search-server.json +66 -0
  111. package/docs/safety-index/artifacts/tavily-search-server.md +106 -0
  112. package/docs/safety-index/artifacts/ui5-mcp-server.json +24 -24
  113. package/docs/safety-index/artifacts/ui5-mcp-server.md +13 -13
  114. package/docs/safety-index/artifacts/vercel-ai-server.json +66 -0
  115. package/docs/safety-index/artifacts/vercel-ai-server.md +106 -0
  116. package/docs/safety-index/targets.json +535 -0
  117. package/package.json +1 -1
@@ -0,0 +1,1494 @@
1
+ {
2
+ "artifactType": "run",
3
+ "schemaVersion": "1.0.0",
4
+ "gate": "fail",
5
+ "runId": "run_2026-07-12T234423094Z_34be3205",
6
+ "createdAt": "2026-07-12T23:44:23.094Z",
7
+ "toolVersion": "1.31.0",
8
+ "target": {
9
+ "targetId": "linear-server",
10
+ "adapter": "local-process",
11
+ "command": "npx",
12
+ "args": [
13
+ "-y",
14
+ "mcp-server-linear"
15
+ ],
16
+ "cwd": ".",
17
+ "metadata": {
18
+ "package": "mcp-server-linear",
19
+ "purpose": "mcp-safety-index",
20
+ "riskClass": "Issue tracking mutation",
21
+ "failureClass": "Issue/project boundary",
22
+ "whyItMatters": "Linear MCP servers expose issue creation, team management, and cycle tracking to agents."
23
+ },
24
+ "serverName": "linear-server",
25
+ "serverVersion": "0.1.0"
26
+ },
27
+ "environment": {
28
+ "platform": "darwin 25.5.0",
29
+ "nodeVersion": "v22.22.1"
30
+ },
31
+ "summary": {
32
+ "total": 9,
33
+ "pass": 3,
34
+ "fail": 2,
35
+ "partial": 2,
36
+ "unsupported": 2,
37
+ "flaky": 0,
38
+ "skipped": 0,
39
+ "gate": "fail"
40
+ },
41
+ "checks": [
42
+ {
43
+ "id": "tools",
44
+ "capability": "tools",
45
+ "status": "pass",
46
+ "durationMs": 1.0836249999993015,
47
+ "message": "Advertised capability responded with the minimal expected shape (24 items).",
48
+ "evidence": [
49
+ {
50
+ "endpoint": "tools/list",
51
+ "advertised": true,
52
+ "responded": true,
53
+ "minimalShapePresent": true,
54
+ "itemCount": 24,
55
+ "identifiers": [
56
+ "linear_auth_callback",
57
+ "linear_create_issue",
58
+ "linear_create_project_with_issues",
59
+ "linear_bulk_update_issues",
60
+ "linear_edit_issue",
61
+ "linear_search_issues",
62
+ "linear_search_issues_by_identifier",
63
+ "linear_get_issue",
64
+ "linear_get_teams",
65
+ "linear_get_user",
66
+ "linear_delete_issue",
67
+ "linear_get_project",
68
+ "linear_list_projects",
69
+ "linear_create_issues",
70
+ "linear_create_comment",
71
+ "linear_update_comment",
72
+ "linear_delete_comment",
73
+ "linear_resolve_comment",
74
+ "linear_unresolve_comment",
75
+ "linear_create_customer_need_from_attachment",
76
+ "linear_get_project_milestones",
77
+ "linear_create_project_milestone",
78
+ "linear_update_project_milestone",
79
+ "linear_delete_project_milestone"
80
+ ],
81
+ "diagnostics": [
82
+ "Linear MCP server running on stdio"
83
+ ],
84
+ "schemas": {
85
+ "linear_auth_callback": {
86
+ "type": "object",
87
+ "properties": {
88
+ "code": {
89
+ "type": "string",
90
+ "description": "OAuth authorization code"
91
+ }
92
+ },
93
+ "required": [
94
+ "code"
95
+ ]
96
+ },
97
+ "linear_create_issue": {
98
+ "type": "object",
99
+ "properties": {
100
+ "title": {
101
+ "type": "string",
102
+ "description": "Issue title"
103
+ },
104
+ "description": {
105
+ "type": "string",
106
+ "description": "Issue description"
107
+ },
108
+ "teamId": {
109
+ "type": "string",
110
+ "description": "Team ID (UUID)"
111
+ },
112
+ "parentId": {
113
+ "type": "string",
114
+ "description": "Parent issue ID (UUID, not issue identifier)",
115
+ "optional": true
116
+ },
117
+ "labelIds": {
118
+ "type": "array",
119
+ "items": {
120
+ "type": "string"
121
+ },
122
+ "description": "Label UUIDs to apply, eg ['a1eb5aed-7425-4ea5-98ec-dfab52381e0e']",
123
+ "optional": true
124
+ },
125
+ "assigneeId": {
126
+ "type": "string",
127
+ "description": "Assignee user ID (UUID)",
128
+ "optional": true
129
+ },
130
+ "priority": {
131
+ "type": "number",
132
+ "description": "Issue priority (0-4)",
133
+ "optional": true
134
+ },
135
+ "createAsUser": {
136
+ "type": "string",
137
+ "description": "Name to display for the created issue",
138
+ "optional": true
139
+ },
140
+ "displayIconUrl": {
141
+ "type": "string",
142
+ "description": "URL of the avatar to display",
143
+ "optional": true
144
+ }
145
+ },
146
+ "required": [
147
+ "title",
148
+ "description",
149
+ "teamId"
150
+ ]
151
+ },
152
+ "linear_create_project_with_issues": {
153
+ "type": "object",
154
+ "properties": {
155
+ "project": {
156
+ "type": "object",
157
+ "properties": {
158
+ "name": {
159
+ "type": "string",
160
+ "description": "Project name"
161
+ },
162
+ "description": {
163
+ "type": "string",
164
+ "description": "Project description (optional)"
165
+ },
166
+ "teamIds": {
167
+ "type": "array",
168
+ "items": {
169
+ "type": "string"
170
+ },
171
+ "description": "Array of team IDs this project belongs to (Required). Use linear_get_teams to get available team IDs.",
172
+ "minItems": 1
173
+ }
174
+ },
175
+ "required": [
176
+ "name",
177
+ "teamIds"
178
+ ]
179
+ },
180
+ "issues": {
181
+ "type": "array",
182
+ "items": {
183
+ "type": "object",
184
+ "properties": {
185
+ "title": {
186
+ "type": "string",
187
+ "description": "Issue title"
188
+ },
189
+ "description": {
190
+ "type": "string",
191
+ "description": "Issue description"
192
+ },
193
+ "teamId": {
194
+ "type": "string",
195
+ "description": "Team ID (must match one of the project teamIds)"
196
+ }
197
+ },
198
+ "required": [
199
+ "title",
200
+ "description",
201
+ "teamId"
202
+ ]
203
+ },
204
+ "description": "List of issues to create with this project"
205
+ }
206
+ },
207
+ "required": [
208
+ "project",
209
+ "issues"
210
+ ]
211
+ },
212
+ "linear_bulk_update_issues": {
213
+ "type": "object",
214
+ "properties": {
215
+ "issueIds": {
216
+ "type": "array",
217
+ "items": {
218
+ "type": "string"
219
+ },
220
+ "description": "List of issue UUIDs to update (not issue identifiers like 'ENG-123')"
221
+ },
222
+ "update": {
223
+ "type": "object",
224
+ "properties": {
225
+ "stateId": {
226
+ "type": "string",
227
+ "description": "New state ID",
228
+ "optional": true
229
+ },
230
+ "assigneeId": {
231
+ "type": "string",
232
+ "description": "New assignee ID",
233
+ "optional": true
234
+ },
235
+ "priority": {
236
+ "type": "number",
237
+ "description": "New priority (0-4)",
238
+ "optional": true
239
+ }
240
+ }
241
+ }
242
+ },
243
+ "required": [
244
+ "issueIds",
245
+ "update"
246
+ ]
247
+ },
248
+ "linear_edit_issue": {
249
+ "type": "object",
250
+ "properties": {
251
+ "issueId": {
252
+ "type": "string",
253
+ "description": "Required: The UUID of the issue to update"
254
+ },
255
+ "title": {
256
+ "type": "string",
257
+ "description": "The issue title",
258
+ "optional": true
259
+ },
260
+ "description": {
261
+ "type": "string",
262
+ "description": "The issue description in markdown format",
263
+ "optional": true
264
+ },
265
+ "stateId": {
266
+ "type": "string",
267
+ "description": "UUID of the target state",
268
+ "optional": true
269
+ },
270
+ "priority": {
271
+ "type": "number",
272
+ "description": "Issue priority (0=No priority, 1=Urgent, 2=High, 3=Normal, 4=Low)",
273
+ "optional": true
274
+ },
275
+ "assigneeId": {
276
+ "type": "string",
277
+ "description": "UUID of the user to assign the issue to",
278
+ "optional": true
279
+ },
280
+ "labelIds": {
281
+ "type": "array",
282
+ "items": {
283
+ "type": "string"
284
+ },
285
+ "description": "Array of label UUIDs (replaces existing labels)",
286
+ "optional": true
287
+ },
288
+ "projectId": {
289
+ "type": "string",
290
+ "description": "UUID of the project to associate with the issue",
291
+ "optional": true
292
+ },
293
+ "projectMilestoneId": {
294
+ "type": "string",
295
+ "description": "UUID of the project milestone to associate with the issue. Note: Requires projectId to be set when using this field",
296
+ "optional": true
297
+ },
298
+ "estimate": {
299
+ "type": "number",
300
+ "description": "The estimated complexity points for the issue",
301
+ "optional": true
302
+ },
303
+ "dueDate": {
304
+ "type": "string",
305
+ "description": "The due date in YYYY-MM-DD format",
306
+ "optional": true
307
+ },
308
+ "parentId": {
309
+ "type": "string",
310
+ "description": "UUID of the parent issue",
311
+ "optional": true
312
+ },
313
+ "sortOrder": {
314
+ "type": "number",
315
+ "description": "Position of the issue relative to other issues",
316
+ "optional": true
317
+ }
318
+ },
319
+ "required": [
320
+ "issueId"
321
+ ]
322
+ },
323
+ "linear_search_issues": {
324
+ "type": "object",
325
+ "properties": {
326
+ "query": {
327
+ "type": "string",
328
+ "description": "Search query string",
329
+ "optional": true
330
+ },
331
+ "teamIds": {
332
+ "type": "array",
333
+ "items": {
334
+ "type": "string"
335
+ },
336
+ "description": "Filter by team IDs",
337
+ "optional": true
338
+ },
339
+ "assigneeIds": {
340
+ "type": "array",
341
+ "items": {
342
+ "type": "string"
343
+ },
344
+ "description": "Filter by assignee IDs",
345
+ "optional": true
346
+ },
347
+ "states": {
348
+ "type": "array",
349
+ "items": {
350
+ "type": "string"
351
+ },
352
+ "description": "Filter by state names",
353
+ "optional": true
354
+ },
355
+ "priority": {
356
+ "type": "number",
357
+ "description": "Filter by priority (0-4)",
358
+ "optional": true
359
+ },
360
+ "first": {
361
+ "type": "number",
362
+ "description": "Number of issues to return (default: 50)",
363
+ "optional": true
364
+ },
365
+ "after": {
366
+ "type": "string",
367
+ "description": "Cursor for pagination",
368
+ "optional": true
369
+ },
370
+ "orderBy": {
371
+ "type": "string",
372
+ "description": "Field to order by (default: updatedAt)",
373
+ "optional": true
374
+ }
375
+ }
376
+ },
377
+ "linear_search_issues_by_identifier": {
378
+ "type": "object",
379
+ "properties": {
380
+ "identifiers": {
381
+ "type": "array",
382
+ "items": {
383
+ "type": "string"
384
+ },
385
+ "description": "Array of issue identifiers to search for"
386
+ }
387
+ },
388
+ "required": [
389
+ "identifiers"
390
+ ]
391
+ },
392
+ "linear_get_issue": {
393
+ "type": "object",
394
+ "properties": {
395
+ "identifier": {
396
+ "type": "string",
397
+ "description": "Issue identifier (e.g., 'ENG-123')"
398
+ }
399
+ },
400
+ "required": [
401
+ "identifier"
402
+ ]
403
+ },
404
+ "linear_get_teams": {
405
+ "type": "object",
406
+ "properties": {}
407
+ },
408
+ "linear_get_user": {
409
+ "type": "object",
410
+ "properties": {}
411
+ },
412
+ "linear_delete_issue": {
413
+ "type": "object",
414
+ "properties": {
415
+ "id": {
416
+ "type": "string",
417
+ "description": "Issue UUID (not issue identifier like 'ENG-123')"
418
+ }
419
+ },
420
+ "required": [
421
+ "id"
422
+ ]
423
+ },
424
+ "linear_get_project": {
425
+ "type": "object",
426
+ "properties": {
427
+ "id": {
428
+ "type": "string",
429
+ "description": "Project identifier"
430
+ }
431
+ },
432
+ "required": [
433
+ "id"
434
+ ]
435
+ },
436
+ "linear_list_projects": {
437
+ "type": "object",
438
+ "properties": {
439
+ "filter": {
440
+ "type": "object",
441
+ "properties": {
442
+ "status": {
443
+ "type": "object",
444
+ "properties": {
445
+ "eq": {
446
+ "type": "string",
447
+ "description": "Equal to"
448
+ },
449
+ "in": {
450
+ "type": "array",
451
+ "items": {
452
+ "type": "string"
453
+ },
454
+ "description": "In array of values"
455
+ },
456
+ "neq": {
457
+ "type": "string",
458
+ "description": "Not equal to"
459
+ },
460
+ "nin": {
461
+ "type": "array",
462
+ "items": {
463
+ "type": "string"
464
+ },
465
+ "description": "Not in array of values"
466
+ }
467
+ },
468
+ "description": "Filter by project status"
469
+ },
470
+ "projectMilestones": {
471
+ "type": "object",
472
+ "description": "Filter by project milestones"
473
+ },
474
+ "projectUpdates": {
475
+ "type": "object",
476
+ "description": "Filter by project updates"
477
+ },
478
+ "nextProjectMilestone": {
479
+ "type": "object",
480
+ "description": "Filter by next project milestone"
481
+ },
482
+ "completedProjectMilestones": {
483
+ "type": "object",
484
+ "description": "Filter by completed project milestones"
485
+ }
486
+ },
487
+ "description": "Optional filter criteria for projects"
488
+ }
489
+ }
490
+ },
491
+ "linear_create_issues": {
492
+ "type": "object",
493
+ "properties": {
494
+ "issues": {
495
+ "type": "array",
496
+ "items": {
497
+ "type": "object",
498
+ "properties": {
499
+ "title": {
500
+ "type": "string",
501
+ "description": "Issue title"
502
+ },
503
+ "description": {
504
+ "type": "string",
505
+ "description": "Issue description"
506
+ },
507
+ "teamId": {
508
+ "type": "string",
509
+ "description": "Team ID (UUID)"
510
+ },
511
+ "parentId": {
512
+ "type": "string",
513
+ "description": "Parent issue ID (UUID, not issue identifier)",
514
+ "optional": true
515
+ },
516
+ "labelIds": {
517
+ "type": "array",
518
+ "items": {
519
+ "type": "string"
520
+ },
521
+ "description": "Label UUIDs to apply, eg ['a1eb5aed-7425-4ea5-98ec-dfab52381e0e']",
522
+ "optional": true
523
+ },
524
+ "assigneeId": {
525
+ "type": "string",
526
+ "description": "Assignee user ID (UUID)",
527
+ "optional": true
528
+ },
529
+ "priority": {
530
+ "type": "number",
531
+ "description": "Issue priority (0-4)",
532
+ "optional": true
533
+ },
534
+ "projectId": {
535
+ "type": "string",
536
+ "description": "Project ID",
537
+ "optional": true
538
+ },
539
+ "createAsUser": {
540
+ "type": "string",
541
+ "description": "Name to display for the created issue",
542
+ "optional": true
543
+ },
544
+ "displayIconUrl": {
545
+ "type": "string",
546
+ "description": "URL of the avatar to display",
547
+ "optional": true
548
+ }
549
+ },
550
+ "required": [
551
+ "title",
552
+ "description",
553
+ "teamId"
554
+ ]
555
+ },
556
+ "description": "List of issues to create"
557
+ }
558
+ },
559
+ "required": [
560
+ "issues"
561
+ ]
562
+ },
563
+ "linear_create_comment": {
564
+ "type": "object",
565
+ "properties": {
566
+ "body": {
567
+ "type": "string",
568
+ "description": "Comment text content"
569
+ },
570
+ "issueId": {
571
+ "type": "string",
572
+ "description": "ID of the issue to comment on"
573
+ }
574
+ },
575
+ "required": [
576
+ "body",
577
+ "issueId"
578
+ ]
579
+ },
580
+ "linear_update_comment": {
581
+ "type": "object",
582
+ "properties": {
583
+ "id": {
584
+ "type": "string",
585
+ "description": "Comment ID"
586
+ },
587
+ "input": {
588
+ "type": "object",
589
+ "properties": {
590
+ "body": {
591
+ "type": "string",
592
+ "description": "Updated comment text"
593
+ }
594
+ },
595
+ "required": [
596
+ "body"
597
+ ]
598
+ }
599
+ },
600
+ "required": [
601
+ "id",
602
+ "input"
603
+ ]
604
+ },
605
+ "linear_delete_comment": {
606
+ "type": "object",
607
+ "properties": {
608
+ "id": {
609
+ "type": "string",
610
+ "description": "Comment ID to delete"
611
+ }
612
+ },
613
+ "required": [
614
+ "id"
615
+ ]
616
+ },
617
+ "linear_resolve_comment": {
618
+ "type": "object",
619
+ "properties": {
620
+ "id": {
621
+ "type": "string",
622
+ "description": "Comment ID to resolve"
623
+ },
624
+ "resolvingCommentId": {
625
+ "type": "string",
626
+ "description": "Optional ID of a resolving comment",
627
+ "optional": true
628
+ }
629
+ },
630
+ "required": [
631
+ "id"
632
+ ]
633
+ },
634
+ "linear_unresolve_comment": {
635
+ "type": "object",
636
+ "properties": {
637
+ "id": {
638
+ "type": "string",
639
+ "description": "Comment ID to unresolve"
640
+ }
641
+ },
642
+ "required": [
643
+ "id"
644
+ ]
645
+ },
646
+ "linear_create_customer_need_from_attachment": {
647
+ "type": "object",
648
+ "properties": {
649
+ "attachmentId": {
650
+ "type": "string",
651
+ "description": "ID of the attachment"
652
+ },
653
+ "title": {
654
+ "type": "string",
655
+ "description": "Title for the customer need",
656
+ "optional": true
657
+ },
658
+ "description": {
659
+ "type": "string",
660
+ "description": "Description for the customer need",
661
+ "optional": true
662
+ },
663
+ "teamId": {
664
+ "type": "string",
665
+ "description": "Team ID for the customer need",
666
+ "optional": true
667
+ }
668
+ },
669
+ "required": [
670
+ "attachmentId"
671
+ ]
672
+ },
673
+ "linear_get_project_milestones": {
674
+ "type": "object",
675
+ "properties": {
676
+ "projectId": {
677
+ "type": "string",
678
+ "description": "Project ID to get milestones for"
679
+ },
680
+ "filter": {
681
+ "type": "object",
682
+ "properties": {
683
+ "name": {
684
+ "type": "object",
685
+ "properties": {
686
+ "eq": {
687
+ "type": "string",
688
+ "description": "Equal to"
689
+ },
690
+ "contains": {
691
+ "type": "string",
692
+ "description": "Contains string"
693
+ }
694
+ },
695
+ "description": "Filter by milestone name"
696
+ },
697
+ "targetDate": {
698
+ "type": "object",
699
+ "properties": {
700
+ "lt": {
701
+ "type": "string",
702
+ "description": "Less than date"
703
+ },
704
+ "gt": {
705
+ "type": "string",
706
+ "description": "Greater than date"
707
+ }
708
+ },
709
+ "description": "Filter by target date"
710
+ },
711
+ "completed": {
712
+ "type": "boolean",
713
+ "description": "Filter by completion status"
714
+ }
715
+ },
716
+ "description": "Optional filter criteria",
717
+ "optional": true
718
+ },
719
+ "first": {
720
+ "type": "number",
721
+ "description": "Number of items to return (used with after)",
722
+ "optional": true
723
+ },
724
+ "after": {
725
+ "type": "string",
726
+ "description": "Cursor for forward pagination",
727
+ "optional": true
728
+ },
729
+ "last": {
730
+ "type": "number",
731
+ "description": "Number of items to return (used with before)",
732
+ "optional": true
733
+ },
734
+ "before": {
735
+ "type": "string",
736
+ "description": "Cursor for backward pagination",
737
+ "optional": true
738
+ },
739
+ "includeArchived": {
740
+ "type": "boolean",
741
+ "description": "Include archived milestones",
742
+ "optional": true
743
+ },
744
+ "orderBy": {
745
+ "type": "string",
746
+ "description": "Field to order by (createdAt or updatedAt)",
747
+ "optional": true
748
+ }
749
+ },
750
+ "required": [
751
+ "projectId"
752
+ ]
753
+ },
754
+ "linear_create_project_milestone": {
755
+ "type": "object",
756
+ "properties": {
757
+ "projectId": {
758
+ "type": "string",
759
+ "description": "Project ID to create milestone for"
760
+ },
761
+ "name": {
762
+ "type": "string",
763
+ "description": "Milestone name"
764
+ },
765
+ "description": {
766
+ "type": "string",
767
+ "description": "Milestone description",
768
+ "optional": true
769
+ },
770
+ "targetDate": {
771
+ "type": "string",
772
+ "description": "Target completion date (ISO format)",
773
+ "optional": true
774
+ },
775
+ "sortOrder": {
776
+ "type": "number",
777
+ "description": "Sort order for the milestone",
778
+ "optional": true
779
+ }
780
+ },
781
+ "required": [
782
+ "projectId",
783
+ "name"
784
+ ]
785
+ },
786
+ "linear_update_project_milestone": {
787
+ "type": "object",
788
+ "properties": {
789
+ "id": {
790
+ "type": "string",
791
+ "description": "Milestone ID to update"
792
+ },
793
+ "name": {
794
+ "type": "string",
795
+ "description": "New milestone name",
796
+ "optional": true
797
+ },
798
+ "description": {
799
+ "type": "string",
800
+ "description": "New milestone description",
801
+ "optional": true
802
+ },
803
+ "targetDate": {
804
+ "type": "string",
805
+ "description": "New target completion date (ISO format)",
806
+ "optional": true
807
+ },
808
+ "sortOrder": {
809
+ "type": "number",
810
+ "description": "New sort order",
811
+ "optional": true
812
+ }
813
+ },
814
+ "required": [
815
+ "id"
816
+ ]
817
+ },
818
+ "linear_delete_project_milestone": {
819
+ "type": "object",
820
+ "properties": {
821
+ "id": {
822
+ "type": "string",
823
+ "description": "Milestone ID to delete"
824
+ }
825
+ },
826
+ "required": [
827
+ "id"
828
+ ]
829
+ }
830
+ }
831
+ }
832
+ ]
833
+ },
834
+ {
835
+ "id": "prompts",
836
+ "capability": "prompts",
837
+ "status": "unsupported",
838
+ "durationMs": 0.000875000001542503,
839
+ "message": "Prompts are not advertised by the target.",
840
+ "evidence": [
841
+ {
842
+ "endpoint": "prompts/list",
843
+ "advertised": false,
844
+ "responded": false,
845
+ "minimalShapePresent": false,
846
+ "diagnostics": []
847
+ }
848
+ ]
849
+ },
850
+ {
851
+ "id": "resources",
852
+ "capability": "resources",
853
+ "status": "unsupported",
854
+ "durationMs": 0.0003749999996216502,
855
+ "message": "Resources are not advertised by the target.",
856
+ "evidence": [
857
+ {
858
+ "endpoint": "resources/list | resources/templates/list",
859
+ "advertised": false,
860
+ "responded": false,
861
+ "minimalShapePresent": false,
862
+ "diagnostics": []
863
+ }
864
+ ]
865
+ },
866
+ {
867
+ "id": "security-lite",
868
+ "capability": "security-lite",
869
+ "status": "fail",
870
+ "durationMs": 0.05120900000110851,
871
+ "message": "Found 1 security finding(s): 1 high, 0 medium, 0 low.",
872
+ "evidence": [
873
+ {
874
+ "endpoint": "security/scan-lite",
875
+ "advertised": true,
876
+ "responded": true,
877
+ "minimalShapePresent": true,
878
+ "itemCount": 1,
879
+ "identifiers": [
880
+ "linear_auth_callback"
881
+ ],
882
+ "diagnostics": [
883
+ "[high] Tool \"linear_auth_callback\" has parameter \"code\" which may allow arbitrary command execution."
884
+ ],
885
+ "findings": [
886
+ {
887
+ "ruleId": "shell-injection",
888
+ "severity": "high",
889
+ "toolName": "linear_auth_callback",
890
+ "message": "Tool \"linear_auth_callback\" has parameter \"code\" which may allow arbitrary command execution."
891
+ }
892
+ ]
893
+ }
894
+ ]
895
+ },
896
+ {
897
+ "id": "runtime-profile",
898
+ "capability": "runtime-profile",
899
+ "status": "pass",
900
+ "durationMs": 0.17287500000020373,
901
+ "message": "Detected 1 potential egress target(s) and 30 potential state mutation(s) with low confidence.",
902
+ "evidence": [
903
+ {
904
+ "endpoint": "runtime-profile/analyze",
905
+ "advertised": true,
906
+ "responded": true,
907
+ "minimalShapePresent": true,
908
+ "itemCount": 31,
909
+ "diagnostics": [
910
+ "Egress entries: 1",
911
+ "State mutations: 30",
912
+ "Confidence: medium"
913
+ ],
914
+ "findings": [
915
+ {
916
+ "target": "URL of the avatar to display",
917
+ "protocol": "unknown",
918
+ "source": "description_analysis",
919
+ "confidence": "medium"
920
+ },
921
+ {
922
+ "resource": "filesystem",
923
+ "operation": "write",
924
+ "scope": "working_directory",
925
+ "source": "description_analysis"
926
+ },
927
+ {
928
+ "resource": "filesystem",
929
+ "operation": "write",
930
+ "scope": "working_directory",
931
+ "source": "description_analysis"
932
+ },
933
+ {
934
+ "resource": "filesystem",
935
+ "operation": "write",
936
+ "scope": "working_directory",
937
+ "source": "description_analysis"
938
+ },
939
+ {
940
+ "resource": "filesystem",
941
+ "operation": "write",
942
+ "scope": "working_directory",
943
+ "source": "description_analysis"
944
+ },
945
+ {
946
+ "resource": "filesystem",
947
+ "operation": "write",
948
+ "scope": "working_directory",
949
+ "source": "description_analysis"
950
+ },
951
+ {
952
+ "resource": "filesystem",
953
+ "operation": "write",
954
+ "scope": "working_directory",
955
+ "source": "description_analysis"
956
+ },
957
+ {
958
+ "resource": "filesystem",
959
+ "operation": "write",
960
+ "scope": "working_directory",
961
+ "source": "description_analysis"
962
+ },
963
+ {
964
+ "resource": "filesystem",
965
+ "operation": "write",
966
+ "scope": "working_directory",
967
+ "source": "description_analysis"
968
+ },
969
+ {
970
+ "resource": "filesystem",
971
+ "operation": "write",
972
+ "scope": "working_directory",
973
+ "source": "description_analysis"
974
+ },
975
+ {
976
+ "resource": "filesystem",
977
+ "operation": "write",
978
+ "scope": "working_directory",
979
+ "source": "description_analysis"
980
+ },
981
+ {
982
+ "resource": "filesystem",
983
+ "operation": "write",
984
+ "scope": "working_directory",
985
+ "source": "description_analysis"
986
+ },
987
+ {
988
+ "resource": "filesystem",
989
+ "operation": "write",
990
+ "scope": "working_directory",
991
+ "source": "description_analysis"
992
+ },
993
+ {
994
+ "resource": "filesystem",
995
+ "operation": "write",
996
+ "scope": "working_directory",
997
+ "source": "description_analysis"
998
+ },
999
+ {
1000
+ "resource": "filesystem",
1001
+ "operation": "write",
1002
+ "scope": "working_directory",
1003
+ "source": "description_analysis"
1004
+ },
1005
+ {
1006
+ "resource": "filesystem",
1007
+ "operation": "write",
1008
+ "scope": "working_directory",
1009
+ "source": "description_analysis"
1010
+ },
1011
+ {
1012
+ "resource": "filesystem",
1013
+ "operation": "write",
1014
+ "scope": "working_directory",
1015
+ "source": "description_analysis"
1016
+ },
1017
+ {
1018
+ "resource": "filesystem",
1019
+ "operation": "write",
1020
+ "scope": "working_directory",
1021
+ "source": "description_analysis"
1022
+ },
1023
+ {
1024
+ "resource": "filesystem",
1025
+ "operation": "write",
1026
+ "scope": "working_directory",
1027
+ "source": "description_analysis"
1028
+ },
1029
+ {
1030
+ "resource": "filesystem",
1031
+ "operation": "write",
1032
+ "scope": "working_directory",
1033
+ "source": "description_analysis"
1034
+ },
1035
+ {
1036
+ "resource": "filesystem",
1037
+ "operation": "write",
1038
+ "scope": "working_directory",
1039
+ "source": "description_analysis"
1040
+ },
1041
+ {
1042
+ "resource": "filesystem",
1043
+ "operation": "write",
1044
+ "scope": "working_directory",
1045
+ "source": "description_analysis"
1046
+ },
1047
+ {
1048
+ "resource": "filesystem",
1049
+ "operation": "write",
1050
+ "scope": "working_directory",
1051
+ "source": "description_analysis"
1052
+ },
1053
+ {
1054
+ "resource": "filesystem",
1055
+ "operation": "write",
1056
+ "scope": "working_directory",
1057
+ "source": "description_analysis"
1058
+ },
1059
+ {
1060
+ "resource": "filesystem",
1061
+ "operation": "write",
1062
+ "scope": "working_directory",
1063
+ "source": "description_analysis"
1064
+ },
1065
+ {
1066
+ "resource": "filesystem",
1067
+ "operation": "write",
1068
+ "scope": "working_directory",
1069
+ "source": "description_analysis"
1070
+ },
1071
+ {
1072
+ "resource": "filesystem",
1073
+ "operation": "write",
1074
+ "scope": "working_directory",
1075
+ "source": "description_analysis"
1076
+ },
1077
+ {
1078
+ "resource": "filesystem",
1079
+ "operation": "write",
1080
+ "scope": "working_directory",
1081
+ "source": "description_analysis"
1082
+ },
1083
+ {
1084
+ "resource": "filesystem",
1085
+ "operation": "write",
1086
+ "scope": "working_directory",
1087
+ "source": "description_analysis"
1088
+ },
1089
+ {
1090
+ "resource": "filesystem",
1091
+ "operation": "write",
1092
+ "scope": "working_directory",
1093
+ "source": "description_analysis"
1094
+ },
1095
+ {
1096
+ "resource": "filesystem",
1097
+ "operation": "write",
1098
+ "scope": "working_directory",
1099
+ "source": "description_analysis"
1100
+ }
1101
+ ]
1102
+ }
1103
+ ]
1104
+ },
1105
+ {
1106
+ "id": "conformance",
1107
+ "capability": "conformance",
1108
+ "status": "partial",
1109
+ "durationMs": 1.4247079999986454,
1110
+ "message": "6/7 conformance checks passed, 1 failed.",
1111
+ "evidence": [
1112
+ {
1113
+ "endpoint": "conformance/check",
1114
+ "advertised": true,
1115
+ "responded": true,
1116
+ "minimalShapePresent": false,
1117
+ "itemCount": 7,
1118
+ "identifiers": [
1119
+ "tool-response-content"
1120
+ ],
1121
+ "diagnostics": [
1122
+ "[pass] capabilities-present: Server returned capabilities object.",
1123
+ "[pass] server-info: Server provided initialization info.",
1124
+ "[pass] tools-capability-match: tools/list returned 24 tool(s).",
1125
+ "[pass] prompts-capability-match: Prompts not advertised — endpoint check skipped.",
1126
+ "[pass] resources-capability-match: Resources not advertised — endpoint check skipped.",
1127
+ "[FAIL] tool-response-content: Tool response content check failed: MCP error -32603: MCP error -32603: Failed to search issues: MCP error -32600: Not authenticated. Call linear_auth first.",
1128
+ "[pass] error-handling: Server returned proper error code -32601 for unknown method."
1129
+ ]
1130
+ }
1131
+ ]
1132
+ },
1133
+ {
1134
+ "id": "schema-quality",
1135
+ "capability": "schema-quality",
1136
+ "status": "partial",
1137
+ "durationMs": 0.5057500000002619,
1138
+ "message": "Found 5 quality finding(s) across 24 item(s): 0 warnings, 5 info.",
1139
+ "evidence": [
1140
+ {
1141
+ "endpoint": "schema-quality/scan",
1142
+ "advertised": true,
1143
+ "responded": true,
1144
+ "minimalShapePresent": true,
1145
+ "itemCount": 5,
1146
+ "identifiers": [
1147
+ "linear_create_project_with_issues",
1148
+ "linear_bulk_update_issues",
1149
+ "linear_search_issues",
1150
+ "linear_list_projects",
1151
+ "linear_update_comment"
1152
+ ],
1153
+ "diagnostics": [
1154
+ "[info] tool \"linear_create_project_with_issues\": Property 'project' missing description",
1155
+ "[info] tool \"linear_bulk_update_issues\": Property 'update' missing description",
1156
+ "[info] tool \"linear_search_issues\": Has properties but no 'required' array declared",
1157
+ "[info] tool \"linear_list_projects\": Has properties but no 'required' array declared",
1158
+ "[info] tool \"linear_update_comment\": Property 'input' missing description"
1159
+ ],
1160
+ "findings": [
1161
+ {
1162
+ "itemType": "tool",
1163
+ "itemName": "linear_create_project_with_issues",
1164
+ "issue": "Property 'project' missing description",
1165
+ "severity": "info"
1166
+ },
1167
+ {
1168
+ "itemType": "tool",
1169
+ "itemName": "linear_bulk_update_issues",
1170
+ "issue": "Property 'update' missing description",
1171
+ "severity": "info"
1172
+ },
1173
+ {
1174
+ "itemType": "tool",
1175
+ "itemName": "linear_search_issues",
1176
+ "issue": "Has properties but no 'required' array declared",
1177
+ "severity": "info"
1178
+ },
1179
+ {
1180
+ "itemType": "tool",
1181
+ "itemName": "linear_list_projects",
1182
+ "issue": "Has properties but no 'required' array declared",
1183
+ "severity": "info"
1184
+ },
1185
+ {
1186
+ "itemType": "tool",
1187
+ "itemName": "linear_update_comment",
1188
+ "issue": "Property 'input' missing description",
1189
+ "severity": "info"
1190
+ }
1191
+ ]
1192
+ }
1193
+ ]
1194
+ },
1195
+ {
1196
+ "id": "security",
1197
+ "capability": "security",
1198
+ "status": "fail",
1199
+ "durationMs": 0.4398330000003625,
1200
+ "message": "Found 1 security finding(s): 1 high, 0 medium, 0 low.",
1201
+ "evidence": [
1202
+ {
1203
+ "endpoint": "security/scan",
1204
+ "advertised": true,
1205
+ "responded": true,
1206
+ "minimalShapePresent": true,
1207
+ "itemCount": 1,
1208
+ "identifiers": [
1209
+ "linear_auth_callback"
1210
+ ],
1211
+ "diagnostics": [
1212
+ "[high] Tool \"linear_auth_callback\" has parameter \"code\" which may allow arbitrary command execution."
1213
+ ],
1214
+ "findings": [
1215
+ {
1216
+ "ruleId": "shell-injection",
1217
+ "severity": "high",
1218
+ "toolName": "linear_auth_callback",
1219
+ "message": "Tool \"linear_auth_callback\" has parameter \"code\" which may allow arbitrary command execution."
1220
+ }
1221
+ ]
1222
+ }
1223
+ ]
1224
+ },
1225
+ {
1226
+ "id": "attack-sim",
1227
+ "capability": "attack-sim",
1228
+ "status": "pass",
1229
+ "durationMs": 0.5147499999984575,
1230
+ "message": "Safe attack simulation found no high-risk MCP attack-readiness findings.",
1231
+ "evidence": [
1232
+ {
1233
+ "endpoint": "attack-sim/safe",
1234
+ "advertised": true,
1235
+ "responded": true,
1236
+ "minimalShapePresent": true,
1237
+ "itemCount": 0,
1238
+ "identifiers": []
1239
+ }
1240
+ ]
1241
+ }
1242
+ ],
1243
+ "healthScore": {
1244
+ "overall": 60,
1245
+ "grade": "D",
1246
+ "dimensions": [
1247
+ {
1248
+ "name": "Protocol Compliance",
1249
+ "weight": 0.3,
1250
+ "score": 60,
1251
+ "details": [
1252
+ "conformance: partial (60/100)"
1253
+ ]
1254
+ },
1255
+ {
1256
+ "name": "Schema Quality",
1257
+ "weight": 0.2,
1258
+ "score": 60,
1259
+ "details": [
1260
+ "schema-quality: partial (60/100)"
1261
+ ]
1262
+ },
1263
+ {
1264
+ "name": "Security",
1265
+ "weight": 0.2,
1266
+ "score": 33,
1267
+ "details": [
1268
+ "security-lite: fail (0/100)",
1269
+ "security: fail (0/100)",
1270
+ "attack-sim: pass (100/100)"
1271
+ ]
1272
+ },
1273
+ {
1274
+ "name": "Reliability",
1275
+ "weight": 0.2,
1276
+ "score": 67,
1277
+ "details": [
1278
+ "tools: pass (100/100)",
1279
+ "prompts: unsupported (50/100)",
1280
+ "resources: unsupported (50/100)"
1281
+ ]
1282
+ },
1283
+ {
1284
+ "name": "Performance",
1285
+ "weight": 0.1,
1286
+ "score": 100,
1287
+ "details": [
1288
+ "Connect: 930ms",
1289
+ "p95 latency: 1ms (3 operations)"
1290
+ ]
1291
+ }
1292
+ ]
1293
+ },
1294
+ "performanceMetrics": {
1295
+ "connectMs": 930.1890420000018,
1296
+ "toolsListMs": 1.0836249999993015,
1297
+ "promptsListMs": 0.000875000001542503,
1298
+ "resourcesListMs": 0.0003749999996216502
1299
+ },
1300
+ "runtimeProfile": {
1301
+ "egress": [
1302
+ {
1303
+ "target": "URL of the avatar to display",
1304
+ "protocol": "unknown",
1305
+ "source": "description_analysis",
1306
+ "confidence": "medium"
1307
+ }
1308
+ ],
1309
+ "stateMutations": [
1310
+ {
1311
+ "resource": "filesystem",
1312
+ "operation": "write",
1313
+ "scope": "working_directory",
1314
+ "source": "description_analysis"
1315
+ },
1316
+ {
1317
+ "resource": "filesystem",
1318
+ "operation": "write",
1319
+ "scope": "working_directory",
1320
+ "source": "description_analysis"
1321
+ },
1322
+ {
1323
+ "resource": "filesystem",
1324
+ "operation": "write",
1325
+ "scope": "working_directory",
1326
+ "source": "description_analysis"
1327
+ },
1328
+ {
1329
+ "resource": "filesystem",
1330
+ "operation": "write",
1331
+ "scope": "working_directory",
1332
+ "source": "description_analysis"
1333
+ },
1334
+ {
1335
+ "resource": "filesystem",
1336
+ "operation": "write",
1337
+ "scope": "working_directory",
1338
+ "source": "description_analysis"
1339
+ },
1340
+ {
1341
+ "resource": "filesystem",
1342
+ "operation": "write",
1343
+ "scope": "working_directory",
1344
+ "source": "description_analysis"
1345
+ },
1346
+ {
1347
+ "resource": "filesystem",
1348
+ "operation": "write",
1349
+ "scope": "working_directory",
1350
+ "source": "description_analysis"
1351
+ },
1352
+ {
1353
+ "resource": "filesystem",
1354
+ "operation": "write",
1355
+ "scope": "working_directory",
1356
+ "source": "description_analysis"
1357
+ },
1358
+ {
1359
+ "resource": "filesystem",
1360
+ "operation": "write",
1361
+ "scope": "working_directory",
1362
+ "source": "description_analysis"
1363
+ },
1364
+ {
1365
+ "resource": "filesystem",
1366
+ "operation": "write",
1367
+ "scope": "working_directory",
1368
+ "source": "description_analysis"
1369
+ },
1370
+ {
1371
+ "resource": "filesystem",
1372
+ "operation": "write",
1373
+ "scope": "working_directory",
1374
+ "source": "description_analysis"
1375
+ },
1376
+ {
1377
+ "resource": "filesystem",
1378
+ "operation": "write",
1379
+ "scope": "working_directory",
1380
+ "source": "description_analysis"
1381
+ },
1382
+ {
1383
+ "resource": "filesystem",
1384
+ "operation": "write",
1385
+ "scope": "working_directory",
1386
+ "source": "description_analysis"
1387
+ },
1388
+ {
1389
+ "resource": "filesystem",
1390
+ "operation": "write",
1391
+ "scope": "working_directory",
1392
+ "source": "description_analysis"
1393
+ },
1394
+ {
1395
+ "resource": "filesystem",
1396
+ "operation": "write",
1397
+ "scope": "working_directory",
1398
+ "source": "description_analysis"
1399
+ },
1400
+ {
1401
+ "resource": "filesystem",
1402
+ "operation": "write",
1403
+ "scope": "working_directory",
1404
+ "source": "description_analysis"
1405
+ },
1406
+ {
1407
+ "resource": "filesystem",
1408
+ "operation": "write",
1409
+ "scope": "working_directory",
1410
+ "source": "description_analysis"
1411
+ },
1412
+ {
1413
+ "resource": "filesystem",
1414
+ "operation": "write",
1415
+ "scope": "working_directory",
1416
+ "source": "description_analysis"
1417
+ },
1418
+ {
1419
+ "resource": "filesystem",
1420
+ "operation": "write",
1421
+ "scope": "working_directory",
1422
+ "source": "description_analysis"
1423
+ },
1424
+ {
1425
+ "resource": "filesystem",
1426
+ "operation": "write",
1427
+ "scope": "working_directory",
1428
+ "source": "description_analysis"
1429
+ },
1430
+ {
1431
+ "resource": "filesystem",
1432
+ "operation": "write",
1433
+ "scope": "working_directory",
1434
+ "source": "description_analysis"
1435
+ },
1436
+ {
1437
+ "resource": "filesystem",
1438
+ "operation": "write",
1439
+ "scope": "working_directory",
1440
+ "source": "description_analysis"
1441
+ },
1442
+ {
1443
+ "resource": "filesystem",
1444
+ "operation": "write",
1445
+ "scope": "working_directory",
1446
+ "source": "description_analysis"
1447
+ },
1448
+ {
1449
+ "resource": "filesystem",
1450
+ "operation": "write",
1451
+ "scope": "working_directory",
1452
+ "source": "description_analysis"
1453
+ },
1454
+ {
1455
+ "resource": "filesystem",
1456
+ "operation": "write",
1457
+ "scope": "working_directory",
1458
+ "source": "description_analysis"
1459
+ },
1460
+ {
1461
+ "resource": "filesystem",
1462
+ "operation": "write",
1463
+ "scope": "working_directory",
1464
+ "source": "description_analysis"
1465
+ },
1466
+ {
1467
+ "resource": "filesystem",
1468
+ "operation": "write",
1469
+ "scope": "working_directory",
1470
+ "source": "description_analysis"
1471
+ },
1472
+ {
1473
+ "resource": "filesystem",
1474
+ "operation": "write",
1475
+ "scope": "working_directory",
1476
+ "source": "description_analysis"
1477
+ },
1478
+ {
1479
+ "resource": "filesystem",
1480
+ "operation": "write",
1481
+ "scope": "working_directory",
1482
+ "source": "description_analysis"
1483
+ },
1484
+ {
1485
+ "resource": "filesystem",
1486
+ "operation": "write",
1487
+ "scope": "working_directory",
1488
+ "source": "description_analysis"
1489
+ }
1490
+ ],
1491
+ "analyzedAt": "2026-07-12T23:44:24.026Z",
1492
+ "confidence": "medium"
1493
+ }
1494
+ }