iflow-mcp-m507_ai-soc-agent 1.0.0__py3-none-any.whl

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 (85) hide show
  1. iflow_mcp_m507_ai_soc_agent-1.0.0.dist-info/METADATA +410 -0
  2. iflow_mcp_m507_ai_soc_agent-1.0.0.dist-info/RECORD +85 -0
  3. iflow_mcp_m507_ai_soc_agent-1.0.0.dist-info/WHEEL +5 -0
  4. iflow_mcp_m507_ai_soc_agent-1.0.0.dist-info/entry_points.txt +2 -0
  5. iflow_mcp_m507_ai_soc_agent-1.0.0.dist-info/licenses/LICENSE +21 -0
  6. iflow_mcp_m507_ai_soc_agent-1.0.0.dist-info/top_level.txt +1 -0
  7. src/__init__.py +8 -0
  8. src/ai_controller/README.md +139 -0
  9. src/ai_controller/__init__.py +12 -0
  10. src/ai_controller/agent_executor.py +596 -0
  11. src/ai_controller/cli/__init__.py +2 -0
  12. src/ai_controller/cli/main.py +243 -0
  13. src/ai_controller/session_manager.py +409 -0
  14. src/ai_controller/web/__init__.py +2 -0
  15. src/ai_controller/web/server.py +1181 -0
  16. src/ai_controller/web/static/css/README.md +102 -0
  17. src/api/__init__.py +13 -0
  18. src/api/case_management.py +271 -0
  19. src/api/edr.py +187 -0
  20. src/api/kb.py +136 -0
  21. src/api/siem.py +308 -0
  22. src/core/__init__.py +10 -0
  23. src/core/config.py +242 -0
  24. src/core/config_storage.py +684 -0
  25. src/core/dto.py +50 -0
  26. src/core/errors.py +36 -0
  27. src/core/logging.py +128 -0
  28. src/integrations/__init__.py +8 -0
  29. src/integrations/case_management/__init__.py +5 -0
  30. src/integrations/case_management/iris/__init__.py +11 -0
  31. src/integrations/case_management/iris/iris_client.py +885 -0
  32. src/integrations/case_management/iris/iris_http.py +274 -0
  33. src/integrations/case_management/iris/iris_mapper.py +263 -0
  34. src/integrations/case_management/iris/iris_models.py +128 -0
  35. src/integrations/case_management/thehive/__init__.py +8 -0
  36. src/integrations/case_management/thehive/thehive_client.py +193 -0
  37. src/integrations/case_management/thehive/thehive_http.py +147 -0
  38. src/integrations/case_management/thehive/thehive_mapper.py +190 -0
  39. src/integrations/case_management/thehive/thehive_models.py +125 -0
  40. src/integrations/cti/__init__.py +6 -0
  41. src/integrations/cti/local_tip/__init__.py +10 -0
  42. src/integrations/cti/local_tip/local_tip_client.py +90 -0
  43. src/integrations/cti/local_tip/local_tip_http.py +110 -0
  44. src/integrations/cti/opencti/__init__.py +10 -0
  45. src/integrations/cti/opencti/opencti_client.py +101 -0
  46. src/integrations/cti/opencti/opencti_http.py +418 -0
  47. src/integrations/edr/__init__.py +6 -0
  48. src/integrations/edr/elastic_defend/__init__.py +6 -0
  49. src/integrations/edr/elastic_defend/elastic_defend_client.py +351 -0
  50. src/integrations/edr/elastic_defend/elastic_defend_http.py +162 -0
  51. src/integrations/eng/__init__.py +10 -0
  52. src/integrations/eng/clickup/__init__.py +8 -0
  53. src/integrations/eng/clickup/clickup_client.py +513 -0
  54. src/integrations/eng/clickup/clickup_http.py +156 -0
  55. src/integrations/eng/github/__init__.py +8 -0
  56. src/integrations/eng/github/github_client.py +169 -0
  57. src/integrations/eng/github/github_http.py +158 -0
  58. src/integrations/eng/trello/__init__.py +8 -0
  59. src/integrations/eng/trello/trello_client.py +207 -0
  60. src/integrations/eng/trello/trello_http.py +162 -0
  61. src/integrations/kb/__init__.py +12 -0
  62. src/integrations/kb/fs_kb_client.py +313 -0
  63. src/integrations/siem/__init__.py +6 -0
  64. src/integrations/siem/elastic/__init__.py +6 -0
  65. src/integrations/siem/elastic/elastic_client.py +3319 -0
  66. src/integrations/siem/elastic/elastic_http.py +165 -0
  67. src/mcp/README.md +183 -0
  68. src/mcp/TOOLS.md +2827 -0
  69. src/mcp/__init__.py +13 -0
  70. src/mcp/__main__.py +18 -0
  71. src/mcp/agent_profiles.py +408 -0
  72. src/mcp/flow_agent_profiles.py +424 -0
  73. src/mcp/mcp_server.py +4086 -0
  74. src/mcp/rules_engine.py +487 -0
  75. src/mcp/runbook_manager.py +264 -0
  76. src/orchestrator/__init__.py +11 -0
  77. src/orchestrator/incident_workflow.py +244 -0
  78. src/orchestrator/tools_case.py +1085 -0
  79. src/orchestrator/tools_cti.py +359 -0
  80. src/orchestrator/tools_edr.py +315 -0
  81. src/orchestrator/tools_eng.py +378 -0
  82. src/orchestrator/tools_kb.py +156 -0
  83. src/orchestrator/tools_siem.py +1709 -0
  84. src/web/__init__.py +8 -0
  85. src/web/config_server.py +511 -0
src/mcp/TOOLS.md ADDED
@@ -0,0 +1,2827 @@
1
+ # SamiGPT MCP Tools Documentation
2
+
3
+ This document provides comprehensive documentation for all tools available in the SamiGPT MCP server. These tools enable AI assistants and automation systems to interact with case management systems, SIEM platforms, and EDR solutions for security incident response and investigation.
4
+
5
+ ## Naming Conventions
6
+
7
+ **Important:** Tool names follow strict naming conventions for clarity and consistency:
8
+
9
+ - **Case Management Tools**: All case management-related tools **must** contain the word `case` in their name (e.g., `review_case`, `list_cases`, `add_case_comment`).
10
+ - **Alert Tools**: All alert-related tools **must** be in the SIEM category and contain the word `alert` in their name (e.g., `get_security_alerts`, `get_security_alert_by_id`).
11
+
12
+ This ensures clear distinction between case management operations and SIEM alert operations.
13
+
14
+ ## Table of Contents
15
+
16
+ - [Case Management Tools](#case-management-tools)
17
+ - [SIEM Tools](#siem-tools)
18
+ - [CTI Tools](#cti-tools)
19
+ - [EDR Tools](#edr-tools)
20
+ - [Engineering Tools](#engineering-tools)
21
+ - [Rules Engine Tools](#rules-engine-tools)
22
+
23
+ ---
24
+
25
+ ## Case Management Tools
26
+
27
+ Case management tools allow you to create, review, update, and manage security incidents and cases in your case management system (TheHive, IRIS, etc.).
28
+
29
+ **Naming Convention:** All case management tools contain the word `case` in their name (e.g., `review_case`, `list_cases`, `add_case_comment`).
30
+
31
+ ### `create_case`
32
+
33
+ Create a new case for investigation. Follows the case standard format defined in standards/case_standard.md. Use this when triaging an alert and no case exists yet.
34
+
35
+ **Parameters:**
36
+ - `title` (string, required): Case title following format: `[Alert Type] - [Primary Entity] - [Date/Time]`. Example: `'Malware Detection - 10.10.1.2 - 2025-11-18'`
37
+ - `description` (string, required): Comprehensive case description including alert details, initial assessment, key entities, and severity justification
38
+ - `priority` (string, optional): Case priority based on severity, impact, and IOC matches. Valid values: `low`, `medium`, `high`, `critical`. Default: `medium`
39
+ - `status` (string, optional): Case status. Valid values: `open`, `in_progress`, `closed`. New cases should start as `open`. Default: `open`
40
+ - `tags` (array, optional): Tags for categorization (e.g., `['malware', 'suspicious-login', 'ioc-match', 'soc1-triage']`)
41
+ - `alert_id` (string, optional): Associated alert ID if case is created from an alert
42
+
43
+ **Returns:**
44
+ - `success` (boolean): Whether the operation succeeded
45
+ - `case_id` (string): The ID of the created case
46
+ - `case` (object): Created case details including:
47
+ - `id` (string): Case identifier
48
+ - `title` (string): Case title
49
+ - `description` (string): Case description
50
+ - `status` (string): Current status
51
+ - `priority` (string): Priority level
52
+ - `tags` (array): Case tags
53
+ - `created_at` (string): ISO timestamp of creation
54
+ - `updated_at` (string): ISO timestamp of last update
55
+
56
+ **Usage Example:**
57
+ ```json
58
+ {
59
+ "name": "create_case",
60
+ "arguments": {
61
+ "title": "Malware Detection - 10.10.1.2 - 2025-11-18",
62
+ "description": "Alert triggered for suspicious file execution on endpoint 10.10.1.2. File hash matches known malware indicators. Endpoint isolated pending investigation.",
63
+ "priority": "high",
64
+ "status": "open",
65
+ "tags": ["malware", "endpoint", "soc1-triage"],
66
+ "alert_id": "alert-12345"
67
+ }
68
+ }
69
+ ```
70
+
71
+ **Use Cases:**
72
+ - Create a new case when triaging an alert that requires investigation
73
+ - Escalate alerts to case management for tracking
74
+ - Document security incidents for investigation workflow
75
+ - Link cases to source alerts for traceability
76
+
77
+ ---
78
+
79
+ ### `review_case`
80
+
81
+ Retrieve and review the full details of a case including title, description, status, priority, observables, and comments.
82
+
83
+ **Parameters:**
84
+ - `case_id` (string, required): The ID of the case to review
85
+
86
+ **Returns:**
87
+ - `success` (boolean): Whether the operation succeeded
88
+ - `case` (object): Complete case details including:
89
+ - `id` (string): Case identifier
90
+ - `title` (string): Case title
91
+ - `description` (string): Case description
92
+ - `status` (string): Current status (open, in_progress, closed)
93
+ - `priority` (string): Priority level (low, medium, high, critical)
94
+ - `assignee` (string): Assigned analyst
95
+ - `tags` (array): Case tags
96
+ - `observables` (array): List of observables attached to the case
97
+ - `created_at` (string): ISO timestamp of creation
98
+ - `updated_at` (string): ISO timestamp of last update
99
+ - `timeline` (array): Chronological list of comments and events
100
+
101
+ **Usage Example:**
102
+ ```json
103
+ {
104
+ "name": "review_case",
105
+ "arguments": {
106
+ "case_id": "CASE-2024-001"
107
+ }
108
+ }
109
+ ```
110
+
111
+ **Use Cases:**
112
+ - Get complete context about a security incident
113
+ - Review case history and timeline
114
+ - Check attached observables and IOCs
115
+ - Understand case status and assignment
116
+
117
+ ---
118
+
119
+ ### `list_cases`
120
+
121
+ List cases from the case management system, optionally filtered by status.
122
+
123
+ **Parameters:**
124
+ - `status` (string, optional): Filter by status. Valid values: `open`, `in_progress`, `closed`
125
+ - `limit` (integer, optional): Maximum number of cases to return (default: 50)
126
+
127
+ **Returns:**
128
+ - `success` (boolean): Whether the operation succeeded
129
+ - `count` (integer): Number of cases returned
130
+ - `cases` (array): List of case summaries, each containing:
131
+ - `id` (string): Case identifier
132
+ - `title` (string): Case title
133
+ - `status` (string): Current status
134
+ - `priority` (string): Priority level
135
+ - `assignee` (string): Assigned analyst
136
+ - `created_at` (string): ISO timestamp of creation
137
+
138
+ **Usage Example:**
139
+ ```json
140
+ {
141
+ "name": "list_cases",
142
+ "arguments": {
143
+ "status": "open",
144
+ "limit": 20
145
+ }
146
+ }
147
+ ```
148
+
149
+ **Use Cases:**
150
+ - Get overview of all open incidents
151
+ - Monitor case workload
152
+ - Find cases needing attention
153
+ - Generate case reports
154
+
155
+ ---
156
+
157
+ ### `search_cases`
158
+
159
+ Search for cases using text search, status, priority, tags, or assignee filters.
160
+
161
+ **Parameters:**
162
+ - `text` (string, optional): Text to search for in case title/description
163
+ - `status` (string, optional): Filter by status (`open`, `in_progress`, `closed`)
164
+ - `priority` (string, optional): Filter by priority (`low`, `medium`, `high`, `critical`)
165
+ - `tags` (array, optional): Array of tags to filter by
166
+ - `assignee` (string, optional): Filter by assignee username
167
+ - `limit` (integer, optional): Maximum results (default: 50)
168
+
169
+ **Returns:**
170
+ - `success` (boolean): Whether the operation succeeded
171
+ - `count` (integer): Number of matching cases
172
+ - `cases` (array): List of matching case summaries
173
+
174
+ **Usage Example:**
175
+ ```json
176
+ {
177
+ "name": "search_cases",
178
+ "arguments": {
179
+ "text": "malware",
180
+ "priority": "high",
181
+ "status": "open",
182
+ "limit": 10
183
+ }
184
+ }
185
+ ```
186
+
187
+ **Use Cases:**
188
+ - Find cases related to specific threats
189
+ - Search by keywords or tags
190
+ - Filter cases by analyst
191
+ - Identify high-priority incidents
192
+
193
+ ---
194
+
195
+ ### `add_case_comment`
196
+
197
+ Add a comment or note to a case.
198
+
199
+ **Parameters:**
200
+ - `case_id` (string, required): The ID of the case
201
+ - `content` (string, required): The comment content
202
+ - `author` (string, optional): The author of the comment
203
+
204
+ **Returns:**
205
+ - `success` (boolean): Whether the operation succeeded
206
+ - `comment` (object): Comment details including:
207
+ - `id` (string): Comment identifier
208
+ - `case_id` (string): Associated case ID
209
+ - `author` (string): Comment author
210
+ - `content` (string): Comment text
211
+ - `created_at` (string): ISO timestamp of creation
212
+
213
+ **Usage Example:**
214
+ ```json
215
+ {
216
+ "name": "add_case_comment",
217
+ "arguments": {
218
+ "case_id": "CASE-2024-001",
219
+ "content": "Investigation completed. No threats detected after analysis.",
220
+ "author": "analyst@example.com"
221
+ }
222
+ }
223
+ ```
224
+
225
+ **Use Cases:**
226
+ - Document investigation findings
227
+ - Add analysis notes
228
+ - Record remediation steps
229
+ - Update case status with context
230
+
231
+ ---
232
+
233
+ ### `attach_observable_to_case`
234
+
235
+ Attach an observable such as an IP address, file hash, domain, or URL to a case for tracking and analysis.
236
+
237
+ **Parameters:**
238
+ - `case_id` (string, required): The ID of the case
239
+ - `observable_type` (string, required): Type of observable. Common types:
240
+ - `ip`: IP address
241
+ - `hash`: File hash (MD5, SHA256, etc.)
242
+ - `domain`: Domain name
243
+ - `url`: URL
244
+ - `email`: Email address
245
+ - `filename`: Filename
246
+ - `registry`: Registry key
247
+ - `user-agent`: User agent string
248
+ - `observable_value` (string, required): The value of the observable
249
+ - `description` (string, optional): Description of the observable
250
+ - `tags` (array, optional): Tags for the observable
251
+
252
+ **Returns:**
253
+ - `success` (boolean): Whether the operation succeeded
254
+ - `observable` (object): Observable details including:
255
+ - `type` (string): Observable type
256
+ - `value` (string): Observable value
257
+ - `description` (string): Description
258
+ - `tags` (array): Tags
259
+
260
+ **Usage Example:**
261
+ ```json
262
+ {
263
+ "name": "attach_observable_to_case",
264
+ "arguments": {
265
+ "case_id": "CASE-2024-001",
266
+ "observable_type": "ip",
267
+ "observable_value": "192.168.1.100",
268
+ "description": "Suspicious IP address from firewall logs",
269
+ "tags": ["malicious", "external"]
270
+ }
271
+ }
272
+ ```
273
+
274
+ **Use Cases:**
275
+ - Track IOCs (Indicators of Compromise)
276
+ - Document suspicious entities
277
+ - Link related observables to cases
278
+ - Enable automated enrichment
279
+
280
+ ---
281
+
282
+ ### `update_case_status`
283
+
284
+ Update the status of a case.
285
+
286
+ **Parameters:**
287
+ - `case_id` (string, required): The ID of the case
288
+ - `status` (string, required): New status. Valid values:
289
+ - `open`: Case is newly opened
290
+ - `in_progress`: Case is being actively worked on
291
+ - `closed`: Case is resolved and closed
292
+
293
+ **Returns:**
294
+ - `success` (boolean): Whether the operation succeeded
295
+ - `case` (object): Updated case details including:
296
+ - `id` (string): Case identifier
297
+ - `title` (string): Case title
298
+ - `status` (string): New status
299
+
300
+ **Usage Example:**
301
+ ```json
302
+ {
303
+ "name": "update_case_status",
304
+ "arguments": {
305
+ "case_id": "CASE-2024-001",
306
+ "status": "closed"
307
+ }
308
+ }
309
+ ```
310
+
311
+ **Use Cases:**
312
+ - Mark cases as resolved
313
+ - Update case workflow status
314
+ - Close completed investigations
315
+ - Track case lifecycle
316
+
317
+ ---
318
+
319
+ ### `assign_case`
320
+
321
+ Assign a case to a specific user or analyst.
322
+
323
+ **Parameters:**
324
+ - `case_id` (string, required): The ID of the case
325
+ - `assignee` (string, required): The username or ID of the assignee
326
+
327
+ **Returns:**
328
+ - `success` (boolean): Whether the operation succeeded
329
+ - `assignment` (object): Assignment details including:
330
+ - `case_id` (string): Case identifier
331
+ - `assignee` (string): Assigned analyst
332
+ - `assigned_at` (string): ISO timestamp of assignment
333
+
334
+ **Usage Example:**
335
+ ```json
336
+ {
337
+ "name": "assign_case",
338
+ "arguments": {
339
+ "case_id": "CASE-2024-001",
340
+ "assignee": "analyst@example.com"
341
+ }
342
+ }
343
+ ```
344
+
345
+ **Use Cases:**
346
+ - Distribute workload among analysts
347
+ - Assign cases based on expertise
348
+ - Escalate to senior analysts
349
+ - Reassign cases
350
+
351
+ ---
352
+
353
+ ### `get_case_timeline`
354
+
355
+ Retrieve the timeline of comments and events for a case, ordered chronologically.
356
+
357
+ **Parameters:**
358
+ - `case_id` (string, required): The ID of the case
359
+
360
+ **Returns:**
361
+ - `success` (boolean): Whether the operation succeeded
362
+ - `case_id` (string): Case identifier
363
+ - `count` (integer): Number of timeline events
364
+ - `timeline` (array): Chronological list of events, each containing:
365
+ - `author` (string): Event author
366
+ - `content` (string): Event content
367
+ - `created_at` (string): ISO timestamp
368
+
369
+ **Usage Example:**
370
+ ```json
371
+ {
372
+ "name": "get_case_timeline",
373
+ "arguments": {
374
+ "case_id": "CASE-2024-001"
375
+ }
376
+ }
377
+ ```
378
+
379
+ **Use Cases:**
380
+ - Review case history
381
+ - Understand investigation progression
382
+ - Audit case activities
383
+ - Generate case reports
384
+
385
+ ---
386
+
387
+ ### `update_case`
388
+
389
+ Update a case with new information (title, description, priority, status, tags, assignee).
390
+
391
+ **Parameters:**
392
+ - `case_id` (string, required): The ID of the case to update
393
+ - `title` (string, optional): New case title
394
+ - `description` (string, optional): New case description
395
+ - `priority` (string, optional): New priority (low, medium, high, critical)
396
+ - `status` (string, optional): New status (open, in_progress, closed)
397
+ - `tags` (array, optional): New tags list
398
+ - `assignee` (string, optional): New assignee
399
+
400
+ **Returns:**
401
+ - `success` (boolean): Whether the operation succeeded
402
+ - `case` (object): Updated case details
403
+
404
+ **Usage Example:**
405
+ ```json
406
+ {
407
+ "name": "update_case",
408
+ "arguments": {
409
+ "case_id": "CASE-2024-001",
410
+ "priority": "high",
411
+ "status": "in_progress",
412
+ "tags": ["malware", "investigation"]
413
+ }
414
+ }
415
+ ```
416
+
417
+ **Use Cases:**
418
+ - Update case priority based on investigation findings
419
+ - Change case status as investigation progresses
420
+ - Add or modify case tags
421
+ - Update case description with new findings
422
+ - Reassign cases to different analysts
423
+
424
+ ---
425
+
426
+ ### `link_cases`
427
+
428
+ Link two cases together to indicate a relationship (e.g., duplicate, related, escalated from).
429
+
430
+ **Parameters:**
431
+ - `source_case_id` (string, required): The ID of the source case
432
+ - `target_case_id` (string, required): The ID of the target case to link to
433
+ - `link_type` (string, optional): Type of link. Valid values:
434
+ - `related_to`: Cases are related
435
+ - `duplicate_of`: Source case is a duplicate of target
436
+ - `escalated_from`: Source case was escalated from target
437
+ - `child_of`: Source case is a child of target
438
+ - `blocked_by`: Source case is blocked by target
439
+ Default: `related_to`
440
+
441
+ **Returns:**
442
+ - `success` (boolean): Whether the operation succeeded
443
+ - `source_case_id` (string): Source case identifier
444
+ - `target_case_id` (string): Target case identifier
445
+ - `link_type` (string): Type of link created
446
+ - `message` (string): Success message
447
+
448
+ **Usage Example:**
449
+ ```json
450
+ {
451
+ "name": "link_cases",
452
+ "arguments": {
453
+ "source_case_id": "CASE-2024-001",
454
+ "target_case_id": "CASE-2024-002",
455
+ "link_type": "related_to"
456
+ }
457
+ }
458
+ ```
459
+
460
+ **Use Cases:**
461
+ - Link related security incidents
462
+ - Mark duplicate cases
463
+ - Track case escalation relationships
464
+ - Build case hierarchies
465
+ - Document case dependencies
466
+
467
+ ---
468
+
469
+ ### `add_case_timeline_event`
470
+
471
+ Add an event to a case timeline for tracking investigation activities and milestones.
472
+
473
+ **Parameters:**
474
+ - `case_id` (string, required): The ID of the case
475
+ - `title` (string, required): Event title
476
+ - `content` (string, required): Event content/description
477
+ - `source` (string, optional): Event source (e.g., "SamiGPT", "SIEM", "EDR")
478
+ - `category_id` (integer, optional): Event category ID
479
+ - `tags` (array, optional): Event tags
480
+ - `color` (string, optional): Event color (hex format, e.g., "#1572E899")
481
+ - `event_date` (string, optional): Event date in ISO format (defaults to current time)
482
+ - `include_in_summary` (boolean, optional): Include event in case summary (default: true)
483
+ - `include_in_graph` (boolean, optional): Include event in case graph (default: true)
484
+ - `sync_iocs_assets` (boolean, optional): Sync with IOCs and assets (default: true)
485
+ - `asset_ids` (array, optional): Related asset IDs
486
+ - `ioc_ids` (array, optional): Related IOC IDs
487
+ - `custom_attributes` (object, optional): Custom attributes
488
+ - `raw` (string, optional): Raw event data
489
+ - `tz` (string, optional): Timezone (default: "+00:00")
490
+
491
+ **Returns:**
492
+ - `success` (boolean): Whether the operation succeeded
493
+ - `case_id` (string): Case identifier
494
+ - `event` (object): Created event details
495
+ - `message` (string): Success message
496
+
497
+ **Usage Example:**
498
+ ```json
499
+ {
500
+ "name": "add_case_timeline_event",
501
+ "arguments": {
502
+ "case_id": "CASE-2024-001",
503
+ "title": "Endpoint Isolated",
504
+ "content": "Endpoint 10.10.1.2 was isolated from the network due to malware detection",
505
+ "source": "SamiGPT",
506
+ "tags": ["containment", "response"]
507
+ }
508
+ }
509
+ ```
510
+
511
+ **Use Cases:**
512
+ - Track investigation milestones
513
+ - Document response actions
514
+ - Record containment activities
515
+ - Log forensic collection events
516
+ - Build chronological investigation timeline
517
+
518
+ ---
519
+
520
+ ### `list_case_timeline_events`
521
+
522
+ List all timeline events associated with a case.
523
+
524
+ **Parameters:**
525
+ - `case_id` (string, required): The ID of the case
526
+
527
+ **Returns:**
528
+ - `success` (boolean): Whether the operation succeeded
529
+ - `case_id` (string): Case identifier
530
+ - `count` (integer): Number of timeline events
531
+ - `events` (array): List of timeline events, each containing:
532
+ - Event details (title, content, source, timestamp, etc.)
533
+
534
+ **Usage Example:**
535
+ ```json
536
+ {
537
+ "name": "list_case_timeline_events",
538
+ "arguments": {
539
+ "case_id": "CASE-2024-001"
540
+ }
541
+ }
542
+ ```
543
+
544
+ **Use Cases:**
545
+ - Review case investigation history
546
+ - Audit case activities
547
+ - Generate case timeline reports
548
+ - Understand investigation progression
549
+ - Track response actions
550
+
551
+ ---
552
+
553
+ ### `add_case_task`
554
+
555
+ Add a task to a case. Tasks represent actionable items for investigation and response, typically assigned to SOC2 or SOC3 tiers.
556
+
557
+ **Parameters:**
558
+ - `case_id` (string, required): The ID of the case
559
+ - `title` (string, required): Task title
560
+ - `description` (string, required): Task description
561
+ - `assignee` (string, optional): Assignee ID or SOC tier (e.g., "SOC2", "SOC3")
562
+ - `priority` (string, optional): Task priority (low, medium, high, critical). Default: medium
563
+ - `status` (string, optional): Task status (pending, in_progress, completed, blocked). Default: pending
564
+
565
+ **Returns:**
566
+ - `success` (boolean): Whether the operation succeeded
567
+ - `case_id` (string): Case identifier
568
+ - `task` (object): Created task details
569
+ - `message` (string): Success message
570
+
571
+ **Usage Example:**
572
+ ```json
573
+ {
574
+ "name": "add_case_task",
575
+ "arguments": {
576
+ "case_id": "CASE-2024-001",
577
+ "title": "Collect forensic artifacts from endpoint",
578
+ "description": "Collect process list, network connections, and file system artifacts from endpoint 10.10.1.2",
579
+ "assignee": "SOC3",
580
+ "priority": "high",
581
+ "status": "pending"
582
+ }
583
+ }
584
+ ```
585
+
586
+ **Use Cases:**
587
+ - Create investigation tasks
588
+ - Assign work to SOC tiers
589
+ - Track investigation progress
590
+ - Manage response workflows
591
+ - Document actionable items
592
+
593
+ ---
594
+
595
+ ### `list_case_tasks`
596
+
597
+ List all tasks associated with a case.
598
+
599
+ **Parameters:**
600
+ - `case_id` (string, required): The ID of the case
601
+
602
+ **Returns:**
603
+ - `success` (boolean): Whether the operation succeeded
604
+ - `case_id` (string): Case identifier
605
+ - `count` (integer): Number of tasks
606
+ - `tasks` (array): List of tasks
607
+
608
+ **Usage Example:**
609
+ ```json
610
+ {
611
+ "name": "list_case_tasks",
612
+ "arguments": {
613
+ "case_id": "CASE-2024-001"
614
+ }
615
+ }
616
+ ```
617
+
618
+ **Use Cases:**
619
+ - Review case task list
620
+ - Check task status
621
+ - Monitor investigation progress
622
+ - Track assigned work
623
+ - Generate task reports
624
+
625
+ ---
626
+
627
+ ### `update_case_task_status`
628
+
629
+ Update the status of a task associated with a case. Use this to mark tasks as in-progress when starting work and completed when finishing.
630
+
631
+ **Parameters:**
632
+ - `case_id` (string, required): The ID of the case
633
+ - `task_id` (string, required): The ID of the task to update
634
+ - `status` (string, required): New task status. Valid values:
635
+ - `pending`: Task is pending and not yet started
636
+ - `in_progress`: Task is currently being worked on
637
+ - `completed`: Task has been finished
638
+ - `blocked`: Task is blocked and cannot proceed
639
+
640
+ **Returns:**
641
+ - `success` (boolean): Whether the operation succeeded
642
+ - `case_id` (string): Case identifier
643
+ - `task_id` (string): Task identifier
644
+ - `task` (object): Updated task details
645
+ - `message` (string): Success message
646
+
647
+ **Usage Example:**
648
+ ```json
649
+ {
650
+ "name": "update_case_task_status",
651
+ "arguments": {
652
+ "case_id": "CASE-2024-001",
653
+ "task_id": "task-123",
654
+ "status": "completed"
655
+ }
656
+ }
657
+ ```
658
+
659
+ **Use Cases:**
660
+ - Mark tasks as in-progress when starting work
661
+ - Update task status to completed when finished
662
+ - Mark tasks as blocked when dependencies prevent progress
663
+ - Track task workflow and progress
664
+ - Update task status during investigation
665
+
666
+ ---
667
+
668
+ ### `add_case_asset`
669
+
670
+ Add an asset (endpoint, server, network, user account, application) to a case.
671
+
672
+ **Parameters:**
673
+ - `case_id` (string, required): The ID of the case
674
+ - `asset_name` (string, required): Asset name/identifier
675
+ - `asset_type` (string, required): Asset type. Valid values:
676
+ - `endpoint`: Endpoint device
677
+ - `server`: Server
678
+ - `network`: Network segment
679
+ - `user_account`: User account
680
+ - `application`: Application
681
+ - `description` (string, optional): Asset description
682
+ - `ip_address` (string, optional): IP address if applicable
683
+ - `hostname` (string, optional): Hostname if applicable
684
+ - `tags` (array, optional): Tags for the asset
685
+
686
+ **Returns:**
687
+ - `success` (boolean): Whether the operation succeeded
688
+ - `case_id` (string): Case identifier
689
+ - `asset` (object): Created asset details
690
+ - `message` (string): Success message
691
+
692
+ **Usage Example:**
693
+ ```json
694
+ {
695
+ "name": "add_case_asset",
696
+ "arguments": {
697
+ "case_id": "CASE-2024-001",
698
+ "asset_name": "workstation-01",
699
+ "asset_type": "endpoint",
700
+ "ip_address": "10.10.1.2",
701
+ "hostname": "workstation-01.example.com",
702
+ "tags": ["compromised", "isolated"]
703
+ }
704
+ }
705
+ ```
706
+
707
+ **Use Cases:**
708
+ - Track affected assets
709
+ - Document compromised systems
710
+ - Link assets to investigations
711
+ - Manage asset inventory
712
+ - Support asset-based analysis
713
+
714
+ ---
715
+
716
+ ### `list_case_assets`
717
+
718
+ List all assets associated with a case.
719
+
720
+ **Parameters:**
721
+ - `case_id` (string, required): The ID of the case
722
+
723
+ **Returns:**
724
+ - `success` (boolean): Whether the operation succeeded
725
+ - `case_id` (string): Case identifier
726
+ - `count` (integer): Number of assets
727
+ - `assets` (array): List of assets
728
+
729
+ **Usage Example:**
730
+ ```json
731
+ {
732
+ "name": "list_case_assets",
733
+ "arguments": {
734
+ "case_id": "CASE-2024-001"
735
+ }
736
+ }
737
+ ```
738
+
739
+ **Use Cases:**
740
+ - Review case assets
741
+ - Check affected systems
742
+ - Generate asset reports
743
+ - Track asset status
744
+ - Support asset management
745
+
746
+ ---
747
+
748
+ ### `add_case_evidence`
749
+
750
+ Upload and attach evidence (file, log, screenshot, network capture, etc.) to a case.
751
+
752
+ **Parameters:**
753
+ - `case_id` (string, required): The ID of the case
754
+ - `file_path` (string, required): Path to the evidence file
755
+ - `description` (string, optional): Description of the evidence
756
+ - `evidence_type` (string, optional): Type of evidence. Common types:
757
+ - `file`: General file
758
+ - `screenshot`: Screenshot image
759
+ - `log`: Log file
760
+ - `network_capture`: Network packet capture
761
+ - `memory_dump`: Memory dump file
762
+ - `registry`: Registry export
763
+ - `other`: Other evidence type
764
+
765
+ **Returns:**
766
+ - `success` (boolean): Whether the operation succeeded
767
+ - `case_id` (string): Case identifier
768
+ - `evidence` (object): Created evidence details
769
+ - `message` (string): Success message
770
+
771
+ **Usage Example:**
772
+ ```json
773
+ {
774
+ "name": "add_case_evidence",
775
+ "arguments": {
776
+ "case_id": "CASE-2024-001",
777
+ "file_path": "/path/to/forensic_artifacts.zip",
778
+ "description": "Forensic artifacts collected from endpoint 10.10.1.2",
779
+ "evidence_type": "file"
780
+ }
781
+ }
782
+ ```
783
+
784
+ **Use Cases:**
785
+ - Attach forensic evidence
786
+ - Upload investigation files
787
+ - Store log files
788
+ - Preserve network captures
789
+ - Document investigation artifacts
790
+
791
+ ---
792
+
793
+ ### `list_case_evidence`
794
+
795
+ List all evidence files associated with a case.
796
+
797
+ **Parameters:**
798
+ - `case_id` (string, required): The ID of the case
799
+
800
+ **Returns:**
801
+ - `success` (boolean): Whether the operation succeeded
802
+ - `case_id` (string): Case identifier
803
+ - `count` (integer): Number of evidence files
804
+ - `evidence` (array): List of evidence files
805
+
806
+ **Usage Example:**
807
+ ```json
808
+ {
809
+ "name": "list_case_evidence",
810
+ "arguments": {
811
+ "case_id": "CASE-2024-001"
812
+ }
813
+ }
814
+ ```
815
+
816
+ **Use Cases:**
817
+ - Review case evidence
818
+ - Check attached files
819
+ - Generate evidence reports
820
+ - Audit evidence collection
821
+ - Support forensic analysis
822
+
823
+ ---
824
+
825
+ ## SIEM Tools
826
+
827
+ SIEM tools enable searching and analyzing security events, logs, and indicators across your security information and event management platform. These tools are essential for Security Operations Center (SOC) and Incident Response (IR) investigations.
828
+
829
+ **Naming Convention:** All alert-related tools in the SIEM category contain the word `alert` in their name (e.g., `get_security_alerts`, `get_security_alert_by_id`). This distinguishes SIEM alerts from case management cases.
830
+
831
+ ### Implementation Status
832
+
833
+ The following checklist shows which SIEM tools are currently implemented:
834
+
835
+ **Core Search & Analysis Tools:**
836
+ - [x] `search_security_events`
837
+ - [x] `get_file_report`
838
+ - [x] `get_file_behavior_summary`
839
+ - [x] `get_entities_related_to_file`
840
+ - [x] `get_ip_address_report`
841
+ - [x] `search_user_activity`
842
+ - [x] `pivot_on_indicator`
843
+ - [x] `search_kql_query`
844
+
845
+ **Alert Management Tools:**
846
+ - [x] `get_security_alerts`
847
+ - [x] `get_security_alert_by_id`
848
+ - [x] `get_recent_alerts`
849
+ - [x] `close_alert`
850
+ - [x] `update_alert_verdict`
851
+ - [x] `tag_alert`
852
+ - [x] `add_alert_note`
853
+
854
+ **Event Management Tools:**
855
+ - [x] `get_siem_event_by_id`
856
+
857
+ **Entity & Intelligence Tools:**
858
+ - [x] `lookup_entity`
859
+ - [x] `get_ioc_matches`
860
+ - [x] `get_threat_intel`
861
+
862
+ **Detection Rule Management:**
863
+ - [x] `list_security_rules`
864
+ - [x] `search_security_rules`
865
+ - [x] `get_rule_detections`
866
+ - [x] `list_rule_errors`
867
+
868
+ ### Essential Investigation Tools
869
+
870
+ The following tools are critical for effective security investigations, ordered by importance:
871
+
872
+ 1. **Event Search & Query** - Search and filter security events across all data sources
873
+ 2. **Time Range Analysis** - Analyze events within specific time windows
874
+ 3. **Correlation & Pivoting** - Connect related events and indicators
875
+ 4. **Alert Management** - View, triage, and manage security alerts
876
+ 5. **Threat Intelligence Lookup** - Enrich events with threat intelligence
877
+ 6. **User Behavior Analytics** - Analyze user activity patterns
878
+ 7. **Network Traffic Analysis** - Examine network connections and flows
879
+ 8. **File Analysis** - Investigate files, hashes, and executables
880
+ 9. **Endpoint Activity** - Review endpoint logs and activities
881
+ 10. **Authentication Analysis** - Analyze login and authentication events
882
+ 11. **DNS Analysis** - Investigate DNS queries and resolutions
883
+ 12. **Process Analysis** - Examine process execution and relationships
884
+ 13. **Registry Analysis** - Review Windows registry modifications
885
+ 14. **Email Analysis** - Investigate email-related security events
886
+ 15. **Web Proxy Analysis** - Analyze web browsing and proxy logs
887
+ 16. **Firewall Analysis** - Review firewall rules and blocked connections
888
+ 17. **Vulnerability Correlation** - Match events with known vulnerabilities
889
+ 18. **Compliance Reporting** - Generate compliance and audit reports
890
+ 19. **Baseline Comparison** - Compare current activity to baselines
891
+
892
+ ### `search_security_events`
893
+
894
+ Search security events and logs across all environments using a query string.
895
+
896
+ **Parameters:**
897
+ - `query` (string, required): Search query in vendor-specific query language (e.g., KQL for Elastic, SPL for Splunk)
898
+ - `limit` (integer, optional): Maximum number of events to return (default: 100)
899
+
900
+ **Returns:**
901
+ - `success` (boolean): Whether the operation succeeded
902
+ - `query` (string): The query that was executed
903
+ - `total_count` (integer): Total number of matching events
904
+ - `returned_count` (integer): Number of events returned
905
+ - `events` (array): List of security events, each containing:
906
+ - `id` (string): Event identifier
907
+ - `timestamp` (string): ISO timestamp of the event
908
+ - `source_type` (string): Event source type
909
+ - `message` (string): Event message/log entry
910
+ - `host` (string): Hostname where event occurred
911
+ - `username` (string): Username associated with event
912
+ - `ip` (string): IP address
913
+ - `process_name` (string): Process name
914
+ - `file_hash` (string): File hash if applicable
915
+
916
+ **Usage Example:**
917
+ ```json
918
+ {
919
+ "name": "search_security_events",
920
+ "arguments": {
921
+ "query": "source_ip:192.168.1.100 AND event_type:malware",
922
+ "limit": 50
923
+ }
924
+ }
925
+ ```
926
+
927
+ **Use Cases:**
928
+ - Investigate security incidents
929
+ - Search for specific attack patterns
930
+ - Correlate events across systems
931
+ - Hunt for threats
932
+
933
+ ---
934
+
935
+ ### `get_file_report`
936
+
937
+ Retrieve an aggregated report about a file identified by its hash.
938
+
939
+ **Parameters:**
940
+ - `file_hash` (string, required): The file hash (MD5, SHA256, etc.)
941
+
942
+ **Returns:**
943
+ - `success` (boolean): Whether the operation succeeded
944
+ - `file_hash` (string): The file hash
945
+ - `first_seen` (string): ISO timestamp when file was first seen
946
+ - `last_seen` (string): ISO timestamp when file was last seen
947
+ - `detection_count` (integer): Number of detections
948
+ - `affected_hosts` (array): List of hostnames where file was seen
949
+
950
+ **Usage Example:**
951
+ ```json
952
+ {
953
+ "name": "get_file_report",
954
+ "arguments": {
955
+ "file_hash": "a1b2c3d4e5f6789012345678901234567890abcd"
956
+ }
957
+ }
958
+ ```
959
+
960
+ **Use Cases:**
961
+ - Analyze suspicious files
962
+ - Track file prevalence
963
+ - Identify affected systems
964
+ - Determine file reputation
965
+
966
+ ---
967
+
968
+ ### `get_file_behavior_summary`
969
+
970
+ Retrieve a high-level behavior summary for a file, including process trees, network activity, and persistence mechanisms.
971
+
972
+ **Parameters:**
973
+ - `file_hash` (string, required): The file hash
974
+
975
+ **Returns:**
976
+ - `success` (boolean): Whether the operation succeeded
977
+ - `file_hash` (string): The file hash
978
+ - `process_trees` (array): Process execution trees
979
+ - `network_activity` (array): Network connections made
980
+ - `persistence_mechanisms` (array): Persistence techniques used
981
+ - `notes` (string): Additional analysis notes
982
+
983
+ **Usage Example:**
984
+ ```json
985
+ {
986
+ "name": "get_file_behavior_summary",
987
+ "arguments": {
988
+ "file_hash": "a1b2c3d4e5f6789012345678901234567890abcd"
989
+ }
990
+ }
991
+ ```
992
+
993
+ **Use Cases:**
994
+ - Understand malware behavior
995
+ - Analyze file execution patterns
996
+ - Identify persistence mechanisms
997
+ - Document attack techniques
998
+
999
+ ---
1000
+
1001
+ ### `get_entities_related_to_file`
1002
+
1003
+ Retrieve entities related to a file hash, such as hosts where it was seen, users who executed it, related processes, and alerts.
1004
+
1005
+ **Parameters:**
1006
+ - `file_hash` (string, required): The file hash
1007
+
1008
+ **Returns:**
1009
+ - `success` (boolean): Whether the operation succeeded
1010
+ - `indicator` (string): The file hash
1011
+ - `hosts` (array): List of hostnames
1012
+ - `users` (array): List of usernames
1013
+ - `processes` (array): List of related processes
1014
+ - `alerts` (array): List of related security alerts
1015
+
1016
+ **Usage Example:**
1017
+ ```json
1018
+ {
1019
+ "name": "get_entities_related_to_file",
1020
+ "arguments": {
1021
+ "file_hash": "a1b2c3d4e5f6789012345678901234567890abcd"
1022
+ }
1023
+ }
1024
+ ```
1025
+
1026
+ **Use Cases:**
1027
+ - Identify all systems affected by a file
1028
+ - Find users who executed suspicious files
1029
+ - Correlate files with alerts
1030
+ - Map attack scope
1031
+
1032
+ ---
1033
+
1034
+ ### `get_ip_address_report`
1035
+
1036
+ Retrieve an aggregated report about an IP address, including reputation, geolocation, and related alerts.
1037
+
1038
+ **Parameters:**
1039
+ - `ip` (string, required): The IP address
1040
+
1041
+ **Returns:**
1042
+ - `success` (boolean): Whether the operation succeeded
1043
+ - `ip` (string): The IP address
1044
+ - `reputation` (string): Reputation score/status
1045
+ - `geo` (object): Geolocation information
1046
+ - `related_alerts` (array): List of related security alerts
1047
+
1048
+ **Usage Example:**
1049
+ ```json
1050
+ {
1051
+ "name": "get_ip_address_report",
1052
+ "arguments": {
1053
+ "ip": "192.168.1.100"
1054
+ }
1055
+ }
1056
+ ```
1057
+
1058
+ **Use Cases:**
1059
+ - Check IP reputation
1060
+ - Investigate suspicious IPs
1061
+ - Correlate IPs with alerts
1062
+ - Geographic threat intelligence
1063
+
1064
+ ---
1065
+
1066
+ ### `search_user_activity`
1067
+
1068
+ Search for security events related to a specific user, including authentication events, file access, and other activities.
1069
+
1070
+ **Parameters:**
1071
+ - `username` (string, required): The username to search for
1072
+ - `limit` (integer, optional): Maximum number of events to return (default: 100)
1073
+
1074
+ **Returns:**
1075
+ - `success` (boolean): Whether the operation succeeded
1076
+ - `username` (string): The username searched
1077
+ - `total_count` (integer): Total number of matching events
1078
+ - `returned_count` (integer): Number of events returned
1079
+ - `events` (array): List of user-related security events
1080
+
1081
+ **Usage Example:**
1082
+ ```json
1083
+ {
1084
+ "name": "search_user_activity",
1085
+ "arguments": {
1086
+ "username": "jdoe",
1087
+ "limit": 50
1088
+ }
1089
+ }
1090
+ ```
1091
+
1092
+ **Use Cases:**
1093
+ - Investigate user behavior
1094
+ - Audit user activities
1095
+ - Detect account compromise
1096
+ - Track user actions
1097
+
1098
+ ---
1099
+
1100
+ ### `pivot_on_indicator`
1101
+
1102
+ Given an IOC (file hash, IP address, domain, etc.), search for all related security events across environments for further investigation.
1103
+
1104
+ **Parameters:**
1105
+ - `indicator` (string, required): The IOC (hash, IP, domain, etc.)
1106
+ - `limit` (integer, optional): Maximum number of events to return (default: 200)
1107
+
1108
+ **Returns:**
1109
+ - `success` (boolean): Whether the operation succeeded
1110
+ - `indicator` (string): The IOC searched
1111
+ - `query` (string): The query that was executed
1112
+ - `total_count` (integer): Total number of matching events
1113
+ - `returned_count` (integer): Number of events returned
1114
+ - `events` (array): List of related security events
1115
+
1116
+ **Usage Example:**
1117
+ ```json
1118
+ {
1119
+ "name": "pivot_on_indicator",
1120
+ "arguments": {
1121
+ "indicator": "192.168.1.100",
1122
+ "limit": 100
1123
+ }
1124
+ }
1125
+ ```
1126
+
1127
+ **Use Cases:**
1128
+ - Expand investigation scope
1129
+ - Find all occurrences of an IOC
1130
+ - Correlate indicators across systems
1131
+ - Threat hunting
1132
+
1133
+ ---
1134
+
1135
+ ### `search_kql_query`
1136
+
1137
+ Execute a KQL (Kusto Query Language) or advanced query for deeper investigations. This tool enables complex queries including advanced filtering, aggregations, time-based analysis, cross-index searches, and complex joins. Supports both KQL syntax and vendor-specific query DSL (e.g., Elasticsearch Query DSL).
1138
+
1139
+ **Note:** This tool is designed for SOC 2 and SOC 3 analysts who need to perform deeper investigations with complex queries. For simpler searches, use `search_security_events` instead.
1140
+
1141
+ **Parameters:**
1142
+ - `kql_query` (string, required): KQL query string or advanced query DSL (JSON for Elasticsearch)
1143
+ - `limit` (integer, optional): Maximum number of events to return (default: 500)
1144
+ - `hours_back` (integer, optional): Optional time window in hours to limit the search
1145
+
1146
+ **Returns:**
1147
+ - `success` (boolean): Whether the operation succeeded
1148
+ - `query` (string): The query that was executed
1149
+ - `total_count` (integer): Total number of matching events
1150
+ - `returned_count` (integer): Number of events returned
1151
+ - `events` (array): List of security events, each containing:
1152
+ - `id` (string): Event identifier
1153
+ - `timestamp` (string): ISO timestamp of the event
1154
+ - `source_type` (string): Event source type
1155
+ - `message` (string): Event message/log entry
1156
+ - `host` (string): Hostname where event occurred
1157
+ - `username` (string): Username associated with event
1158
+ - `ip` (string): IP address
1159
+ - `process_name` (string): Process name
1160
+ - `file_hash` (string): File hash if applicable
1161
+
1162
+ **Usage Example 1: KQL-like Query**
1163
+ ```json
1164
+ {
1165
+ "name": "search_kql_query",
1166
+ "arguments": {
1167
+ "kql_query": "host == \"server01\" and process contains \"powershell\" | where timestamp > ago(24h)",
1168
+ "limit": 500,
1169
+ "hours_back": 24
1170
+ }
1171
+ }
1172
+ ```
1173
+
1174
+ **Usage Example 2: Elasticsearch Query DSL**
1175
+ ```json
1176
+ {
1177
+ "name": "search_kql_query",
1178
+ "arguments": {
1179
+ "kql_query": "{\"query\": {\"bool\": {\"must\": [{\"match\": {\"process.name\": \"powershell\"}}, {\"range\": {\"@timestamp\": {\"gte\": \"now-24h\"}}}]}}, \"size\": 500}",
1180
+ "limit": 500
1181
+ }
1182
+ }
1183
+ ```
1184
+
1185
+ **Use Cases:**
1186
+ - Perform complex multi-field searches
1187
+ - Execute advanced aggregations and statistical analysis
1188
+ - Cross-index correlation searches
1189
+ - Time-based pattern analysis
1190
+ - Deep threat hunting investigations
1191
+ - Complex join operations across data sources
1192
+ - Advanced filtering with multiple conditions
1193
+ - Custom investigation queries beyond standard search capabilities
1194
+
1195
+ **Supported Query Formats:**
1196
+ - **KQL-like syntax**: Basic KQL patterns (field == value, field != value, field contains "value", time ranges with ago())
1197
+ - **Elasticsearch Query DSL**: Full JSON query DSL for Elasticsearch
1198
+ - **Vendor-specific**: Other SIEM query languages as supported by the backend
1199
+
1200
+ **Best Practices:**
1201
+ - Use `hours_back` parameter to limit time range for better performance
1202
+ - Start with smaller `limit` values for initial queries
1203
+ - For Elasticsearch, use Query DSL for maximum flexibility
1204
+ - Combine with other tools like `pivot_on_indicator` for comprehensive investigations
1205
+
1206
+ ---
1207
+
1208
+ ### `get_security_alerts`
1209
+
1210
+ Get security alerts directly from the SIEM platform. This tool retrieves active alerts that require investigation and triage.
1211
+
1212
+ **Note:** This tool operates on SIEM alerts (not cases). For case management operations, use the case management tools (e.g., `list_cases`, `review_case`).
1213
+
1214
+ **Parameters:**
1215
+ - `hours_back` (integer, optional): How many hours to look back for alerts (default: 24)
1216
+ - `max_alerts` (integer, optional): Maximum number of alerts to return (default: 10)
1217
+ - `status_filter` (string, optional): Query string to filter alerts by status (default: excludes closed alerts)
1218
+ - `severity` (string, optional): Filter by severity level (low, medium, high, critical)
1219
+
1220
+ **Returns:**
1221
+ - `success` (boolean): Whether the operation succeeded
1222
+ - `count` (integer): Number of alerts returned
1223
+ - `alerts` (array): List of security alerts, each containing:
1224
+ - `id` (string): Alert identifier
1225
+ - `title` (string): Alert title/name
1226
+ - `severity` (string): Severity level
1227
+ - `status` (string): Alert status (open, in_progress, closed, etc.)
1228
+ - `created_at` (string): ISO timestamp of alert creation
1229
+ - `description` (string): Alert description
1230
+ - `source` (string): Source system that generated the alert
1231
+ - `related_entities` (array): Related IPs, domains, hashes, etc.
1232
+
1233
+ **Usage Example:**
1234
+ ```json
1235
+ {
1236
+ "name": "get_security_alerts",
1237
+ "arguments": {
1238
+ "hours_back": 48,
1239
+ "max_alerts": 20,
1240
+ "severity": "high"
1241
+ }
1242
+ }
1243
+ ```
1244
+
1245
+ **Use Cases:**
1246
+ - Monitor active security alerts
1247
+ - Triage incoming threats
1248
+ - Prioritize investigation work
1249
+ - Review alert backlog
1250
+ - Generate alert summaries
1251
+
1252
+ ---
1253
+
1254
+ ### `get_security_alert_by_id`
1255
+
1256
+ Get detailed information about a specific security alert by its ID.
1257
+
1258
+ **Note:** This tool operates on SIEM alerts (not cases). For case management operations, use `review_case` instead.
1259
+
1260
+ **Parameters:**
1261
+ - `alert_id` (string, required): The ID of the alert to retrieve
1262
+ - `include_detections` (boolean, optional): Whether to include detection details (default: true)
1263
+
1264
+ **Returns:**
1265
+ - `success` (boolean): Whether the operation succeeded
1266
+ - `alert` (object): Complete alert details including:
1267
+ - `id` (string): Alert identifier
1268
+ - `title` (string): Alert title
1269
+ - `severity` (string): Severity level
1270
+ - `status` (string): Current status
1271
+ - `priority` (string): Priority level
1272
+ - `verdict` (string): Analyst verdict (if assigned)
1273
+ - `description` (string): Detailed description
1274
+ - `created_at` (string): ISO timestamp of creation
1275
+ - `updated_at` (string): ISO timestamp of last update
1276
+ - `detections` (array): List of detections that triggered the alert (if included)
1277
+ - `related_entities` (array): Related indicators and entities
1278
+ - `comments` (array): Analyst comments and notes
1279
+
1280
+ **Usage Example:**
1281
+ ```json
1282
+ {
1283
+ "name": "get_security_alert_by_id",
1284
+ "arguments": {
1285
+ "alert_id": "alert-12345",
1286
+ "include_detections": true
1287
+ }
1288
+ }
1289
+ ```
1290
+
1291
+ **Use Cases:**
1292
+ - Get complete alert context
1293
+ - Review alert details for investigation
1294
+ - Check alert status and assignment
1295
+ - Review detection details
1296
+ - Understand alert root cause
1297
+
1298
+ ---
1299
+
1300
+ ### `get_siem_event_by_id`
1301
+
1302
+ Retrieve a specific security event by its unique identifier (event ID). This tool allows you to get the exact event details when you know the event ID.
1303
+
1304
+ **Note:** This tool operates on SIEM events (not alerts or cases). Events are individual log entries or security events. For alerts, use `get_security_alert_by_id`. For case management, use `review_case`.
1305
+
1306
+ **Parameters:**
1307
+ - `event_id` (string, required): The unique identifier of the event to retrieve
1308
+
1309
+ **Returns:**
1310
+ - `success` (boolean): Whether the operation succeeded
1311
+ - `event` (object): Complete event details including:
1312
+ - `id` (string): Event identifier
1313
+ - `timestamp` (string): ISO timestamp of the event
1314
+ - `source_type` (string): Event source type (endpoint, network, auth, cloud, other)
1315
+ - `message` (string): Event message/log entry
1316
+ - `host` (string): Hostname where event occurred
1317
+ - `username` (string): Username associated with event
1318
+ - `ip` (string): IP address
1319
+ - `process_name` (string): Process name
1320
+ - `file_hash` (string): File hash if applicable
1321
+ - `raw` (object): Raw event data from the SIEM
1322
+
1323
+ **Usage Example:**
1324
+ ```json
1325
+ {
1326
+ "name": "get_siem_event_by_id",
1327
+ "arguments": {
1328
+ "event_id": "abc123def456"
1329
+ }
1330
+ }
1331
+ ```
1332
+
1333
+ **Use Cases:**
1334
+ - Retrieve exact event details by ID
1335
+ - Get full context of a specific security event
1336
+ - Access raw event data for deep analysis
1337
+ - Verify event details during investigation
1338
+ - Cross-reference events with known IDs
1339
+
1340
+ ---
1341
+
1342
+ ### `lookup_entity`
1343
+
1344
+ Look up an entity (IP address, domain, hash, user, etc.) in the SIEM for enrichment and context. This provides comprehensive information about an indicator.
1345
+
1346
+ **Parameters:**
1347
+ - `entity_value` (string, required): Value to look up (e.g., IP address, domain name, file hash, username)
1348
+ - `entity_type` (string, optional): Type of entity (ip, domain, hash, user, etc.). If not provided, will be auto-detected
1349
+ - `hours_back` (integer, optional): How many hours of historical data to consider (default: 24)
1350
+
1351
+ **Returns:**
1352
+ - `success` (boolean): Whether the operation succeeded
1353
+ - `entity_value` (string): The entity that was looked up
1354
+ - `entity_type` (string): Detected or specified entity type
1355
+ - `summary` (string): Formatted summary of entity information
1356
+ - `first_seen` (string): ISO timestamp when entity was first seen
1357
+ - `last_seen` (string): ISO timestamp when entity was last seen
1358
+ - `event_count` (integer): Number of events associated with entity
1359
+ - `reputation` (string): Reputation score or status
1360
+ - `related_alerts` (array): List of related security alerts
1361
+ - `related_entities` (array): Other entities related to this one
1362
+
1363
+ **Usage Example:**
1364
+ ```json
1365
+ {
1366
+ "name": "lookup_entity",
1367
+ "arguments": {
1368
+ "entity_value": "192.168.1.100",
1369
+ "entity_type": "ip",
1370
+ "hours_back": 72
1371
+ }
1372
+ }
1373
+ ```
1374
+
1375
+ **Use Cases:**
1376
+ - Enrich indicators with context
1377
+ - Check entity reputation
1378
+ - Find related events and alerts
1379
+ - Investigate suspicious entities
1380
+ - Build entity profiles
1381
+ - Threat intelligence lookup
1382
+
1383
+ ---
1384
+
1385
+ ### `list_security_rules`
1386
+
1387
+ List all security detection rules configured in the SIEM platform. These are the rules that generate alerts and detections.
1388
+
1389
+ **Parameters:**
1390
+ - `enabled_only` (boolean, optional): Only return enabled rules (default: false)
1391
+ - `limit` (integer, optional): Maximum number of rules to return (default: 100)
1392
+
1393
+ **Returns:**
1394
+ - `success` (boolean): Whether the operation succeeded
1395
+ - `count` (integer): Number of rules returned
1396
+ - `rules` (array): List of detection rules, each containing:
1397
+ - `id` (string): Rule identifier
1398
+ - `name` (string): Rule name
1399
+ - `description` (string): Rule description
1400
+ - `enabled` (boolean): Whether rule is enabled
1401
+ - `severity` (string): Default severity level
1402
+ - `category` (string): Rule category
1403
+ - `created_at` (string): ISO timestamp of creation
1404
+ - `updated_at` (string): ISO timestamp of last update
1405
+
1406
+ **Usage Example:**
1407
+ ```json
1408
+ {
1409
+ "name": "list_security_rules",
1410
+ "arguments": {
1411
+ "enabled_only": true,
1412
+ "limit": 50
1413
+ }
1414
+ }
1415
+ ```
1416
+
1417
+ **Use Cases:**
1418
+ - Review detection rule inventory
1419
+ - Check rule status
1420
+ - Audit detection coverage
1421
+ - Identify rule categories
1422
+ - Plan rule improvements
1423
+
1424
+ ---
1425
+
1426
+ ### `search_security_rules`
1427
+
1428
+ Search for security detection rules by name, description, or other criteria.
1429
+
1430
+ **Parameters:**
1431
+ - `query` (string, required): Search query (supports regex patterns)
1432
+ - `category` (string, optional): Filter by rule category
1433
+ - `enabled_only` (boolean, optional): Only search enabled rules (default: false)
1434
+
1435
+ **Returns:**
1436
+ - `success` (boolean): Whether the operation succeeded
1437
+ - `count` (integer): Number of matching rules
1438
+ - `rules` (array): List of matching detection rules
1439
+
1440
+ **Usage Example:**
1441
+ ```json
1442
+ {
1443
+ "name": "search_security_rules",
1444
+ "arguments": {
1445
+ "query": "malware.*ransomware",
1446
+ "category": "malware"
1447
+ }
1448
+ }
1449
+ ```
1450
+
1451
+ **Use Cases:**
1452
+ - Find specific detection rules
1453
+ - Search rules by keywords
1454
+ - Filter rules by category
1455
+ - Review rule coverage for specific threats
1456
+ - Identify duplicate or similar rules
1457
+
1458
+ ---
1459
+
1460
+ ### `get_rule_detections`
1461
+
1462
+ Retrieve historical detections generated by a specific security detection rule. This helps understand rule effectiveness and review past alerts.
1463
+
1464
+ **Parameters:**
1465
+ - `rule_id` (string, required): Unique ID of the rule to list detections for
1466
+ - `alert_state` (string, optional): Filter by alert state (open, closed, etc.)
1467
+ - `hours_back` (integer, optional): How many hours back to look (default: 24)
1468
+ - `limit` (integer, optional): Maximum number of detections to return (default: 50)
1469
+
1470
+ **Returns:**
1471
+ - `success` (boolean): Whether the operation succeeded
1472
+ - `rule_id` (string): The rule ID queried
1473
+ - `count` (integer): Number of detections returned
1474
+ - `detections` (array): List of detections, each containing:
1475
+ - `id` (string): Detection identifier
1476
+ - `alert_id` (string): Associated alert ID
1477
+ - `timestamp` (string): ISO timestamp of detection
1478
+ - `severity` (string): Severity level
1479
+ - `status` (string): Detection status
1480
+ - `description` (string): Detection description
1481
+
1482
+ **Usage Example:**
1483
+ ```json
1484
+ {
1485
+ "name": "get_rule_detections",
1486
+ "arguments": {
1487
+ "rule_id": "rule-abc123",
1488
+ "hours_back": 168,
1489
+ "limit": 100
1490
+ }
1491
+ }
1492
+ ```
1493
+
1494
+ **Use Cases:**
1495
+ - Review rule performance
1496
+ - Analyze detection history
1497
+ - Tune rule thresholds
1498
+ - Identify false positives
1499
+ - Measure rule effectiveness
1500
+ - Audit rule behavior
1501
+
1502
+ ---
1503
+
1504
+ ### `list_rule_errors`
1505
+
1506
+ List execution errors for a specific security detection rule. This helps identify and troubleshoot rule issues.
1507
+
1508
+ **Parameters:**
1509
+ - `rule_id` (string, required): Unique ID of the rule to list errors for
1510
+ - `hours_back` (integer, optional): How many hours back to look for errors (default: 24)
1511
+
1512
+ **Returns:**
1513
+ - `success` (boolean): Whether the operation succeeded
1514
+ - `rule_id` (string): The rule ID queried
1515
+ - `error_count` (integer): Number of errors found
1516
+ - `errors` (array): List of rule execution errors, each containing:
1517
+ - `timestamp` (string): ISO timestamp when error occurred
1518
+ - `error_type` (string): Type of error
1519
+ - `error_message` (string): Detailed error message
1520
+ - `severity` (string): Error severity
1521
+
1522
+ **Usage Example:**
1523
+ ```json
1524
+ {
1525
+ "name": "list_rule_errors",
1526
+ "arguments": {
1527
+ "rule_id": "rule-abc123",
1528
+ "hours_back": 48
1529
+ }
1530
+ }
1531
+ ```
1532
+
1533
+ **Use Cases:**
1534
+ - Troubleshoot rule failures
1535
+ - Identify rule configuration issues
1536
+ - Monitor rule health
1537
+ - Fix broken rules
1538
+ - Ensure detection coverage
1539
+
1540
+ ---
1541
+
1542
+ ### `get_ioc_matches`
1543
+
1544
+ Get Indicators of Compromise (IoC) matches from the SIEM. This identifies when known malicious indicators appear in your environment.
1545
+
1546
+ **Parameters:**
1547
+ - `hours_back` (integer, optional): How many hours back to look for IoC matches (default: 24)
1548
+ - `max_matches` (integer, optional): Maximum number of matches to return (default: 20)
1549
+ - `ioc_type` (string, optional): Filter by IoC type (ip, domain, hash, url, etc.)
1550
+ - `severity` (string, optional): Filter by severity level
1551
+
1552
+ **Returns:**
1553
+ - `success` (boolean): Whether the operation succeeded
1554
+ - `count` (integer): Number of IoC matches found
1555
+ - `matches` (array): List of IoC matches, each containing:
1556
+ - `indicator` (string): The IoC value
1557
+ - `ioc_type` (string): Type of indicator
1558
+ - `first_seen` (string): ISO timestamp when first seen
1559
+ - `last_seen` (string): ISO timestamp when last seen
1560
+ - `match_count` (integer): Number of times matched
1561
+ - `severity` (string): Severity level
1562
+ - `source` (string): Threat intelligence source
1563
+ - `affected_hosts` (array): Hosts where IoC was seen
1564
+
1565
+ **Usage Example:**
1566
+ ```json
1567
+ {
1568
+ "name": "get_ioc_matches",
1569
+ "arguments": {
1570
+ "hours_back": 48,
1571
+ "max_matches": 50,
1572
+ "ioc_type": "ip"
1573
+ }
1574
+ }
1575
+ ```
1576
+
1577
+ **Use Cases:**
1578
+ - Monitor IoC matches in environment
1579
+ - Identify active threats
1580
+ - Track known malicious indicators
1581
+ - Correlate with threat intelligence
1582
+ - Prioritize incident response
1583
+ - Measure threat exposure
1584
+
1585
+ ---
1586
+
1587
+ ### `get_threat_intel`
1588
+
1589
+ Get answers to security questions using integrated threat intelligence and AI models. This provides contextual threat information and analysis.
1590
+
1591
+ **Parameters:**
1592
+ - `query` (string, required): The security or threat intelligence question to ask
1593
+ - `context` (object, optional): Additional context (indicators, events, etc.) to provide for better answers
1594
+
1595
+ **Returns:**
1596
+ - `success` (boolean): Whether the operation succeeded
1597
+ - `query` (string): The question that was asked
1598
+ - `answer` (string): Formatted answer with threat intelligence information
1599
+ - `sources` (array): List of sources used for the answer
1600
+ - `confidence` (string): Confidence level of the answer
1601
+
1602
+ **Usage Example:**
1603
+ ```json
1604
+ {
1605
+ "name": "get_threat_intel",
1606
+ "arguments": {
1607
+ "query": "What is the threat profile of IP address 192.168.1.100?",
1608
+ "context": {
1609
+ "ip": "192.168.1.100"
1610
+ }
1611
+ }
1612
+ }
1613
+ ```
1614
+
1615
+ **Use Cases:**
1616
+ - Get threat intelligence context
1617
+ - Understand threat actor TTPs
1618
+ - Research malware families
1619
+ - Get security recommendations
1620
+ - Enrich investigation findings
1621
+ - Answer security questions
1622
+
1623
+ ---
1624
+
1625
+ ### Additional SIEM Investigation Capabilities
1626
+
1627
+ While the core tools above provide essential functionality, here are additional SIEM capabilities that enhance investigations:
1628
+
1629
+ #### Time-Based Analysis
1630
+ - **Time Range Queries**: Filter events by specific time windows (last hour, day, week, custom ranges)
1631
+ - **Timeline Visualization**: View events chronologically to understand attack progression
1632
+ - **Time Correlation**: Identify events that occurred within specific time windows of each other
1633
+ - **Historical Comparison**: Compare current activity to historical baselines
1634
+
1635
+ #### Advanced Search & Filtering
1636
+ - **Field-Specific Queries**: Search within specific log fields (source IP, destination IP, user, process, etc.)
1637
+ - **Boolean Logic**: Combine multiple conditions with AND, OR, NOT operators
1638
+ - **Regex Support**: Use regular expressions for pattern matching
1639
+ - **Wildcard Queries**: Search with wildcards for partial matches
1640
+ - **Nested Queries**: Create complex nested query structures
1641
+
1642
+ #### Alert & Detection Management
1643
+ - **Alert Triage**: Review and prioritize security alerts
1644
+ - **False Positive Management**: Mark and suppress false positives
1645
+ - **Alert Correlation**: Group related alerts into incidents
1646
+ - **Alert Enrichment**: Add context and threat intelligence to alerts
1647
+ - **Alert Escalation**: Escalate critical alerts to appropriate teams
1648
+
1649
+ #### Threat Intelligence Integration
1650
+ - **IOC Lookup**: Check indicators against threat intelligence feeds
1651
+ - **Threat Actor Attribution**: Identify known threat actor TTPs
1652
+ - **Malware Family Identification**: Classify malware based on behavior
1653
+ - **Reputation Scoring**: Get reputation scores for IPs, domains, hashes
1654
+ - **Threat Feed Correlation**: Match events against threat intelligence feeds
1655
+
1656
+ #### User & Entity Behavior Analytics (UEBA)
1657
+ - **User Activity Timeline**: View complete user activity history
1658
+ - **Anomalous User Behavior**: Detect unusual user activity patterns
1659
+ - **Account Compromise Detection**: Identify potentially compromised accounts
1660
+ - **Privilege Escalation Detection**: Detect unauthorized privilege changes
1661
+ - **Lateral Movement Tracking**: Track user movement across systems
1662
+
1663
+ #### Network Analysis
1664
+ - **Network Flow Analysis**: Analyze network traffic flows and connections
1665
+ - **Port Analysis**: Identify unusual port usage and connections
1666
+ - **Protocol Analysis**: Examine specific network protocols
1667
+ - **Geographic Analysis**: Map network connections by geography
1668
+ - **Bandwidth Analysis**: Identify unusual bandwidth consumption
1669
+ - **Connection Duration**: Analyze connection lifetimes and patterns
1670
+
1671
+ #### File & Hash Analysis
1672
+ - **Hash Reputation**: Check file hashes against reputation databases
1673
+ - **File Prevalence**: Determine how widespread a file is
1674
+ - **File Execution Chain**: Track file execution relationships
1675
+ - **File Modification Tracking**: Monitor file system changes
1676
+ - **Malware Detection**: Identify known malware signatures
1677
+ - **File Metadata Analysis**: Extract and analyze file metadata
1678
+
1679
+ #### Endpoint Analysis
1680
+ - **Endpoint Inventory**: List and manage endpoints
1681
+ - **Endpoint Health Status**: Check endpoint security status
1682
+ - **Process Execution**: Track process execution across endpoints
1683
+ - **Registry Monitoring**: Monitor Windows registry changes
1684
+ - **Memory Analysis**: Analyze memory dumps and processes
1685
+ - **System Log Analysis**: Review system-level logs
1686
+
1687
+ #### Authentication & Access Analysis
1688
+ - **Failed Login Analysis**: Identify brute force and credential stuffing
1689
+ - **Multi-Factor Authentication Events**: Track MFA usage and failures
1690
+ - **Account Lockout Analysis**: Review account lockout events
1691
+ - **Privileged Access Monitoring**: Monitor administrative access
1692
+ - **Session Analysis**: Analyze user session patterns
1693
+ - **Access Pattern Anomalies**: Detect unusual access patterns
1694
+
1695
+ #### DNS & Domain Analysis
1696
+ - **DNS Query Analysis**: Review DNS queries and resolutions
1697
+ - **Domain Reputation**: Check domain reputation and categorization
1698
+ - **DNS Tunneling Detection**: Identify potential DNS tunneling
1699
+ - **Domain Generation Algorithm (DGA) Detection**: Detect DGA domains
1700
+ - **Subdomain Enumeration**: Track subdomain access patterns
1701
+ - **DNS Response Analysis**: Analyze DNS response patterns
1702
+
1703
+ #### Email Security Analysis
1704
+ - **Email Header Analysis**: Examine email headers for anomalies
1705
+ - **Attachment Analysis**: Analyze email attachments and hashes
1706
+ - **Phishing Detection**: Identify phishing attempts
1707
+ - **Email Flow Analysis**: Track email delivery paths
1708
+ - **SPF/DKIM/DMARC Analysis**: Review email authentication records
1709
+ - **Email Threat Correlation**: Correlate emails with other security events
1710
+
1711
+ #### Web & Proxy Analysis
1712
+ - **URL Analysis**: Examine accessed URLs and domains
1713
+ - **Web Category Analysis**: Review web browsing categories
1714
+ - **Proxy Log Analysis**: Analyze proxy server logs
1715
+ - **User-Agent Analysis**: Identify suspicious user agents
1716
+ - **Download Tracking**: Monitor file downloads
1717
+ - **Web Application Firewall (WAF) Events**: Review WAF blocks and alerts
1718
+
1719
+ #### Compliance & Reporting
1720
+ - **Compliance Dashboards**: Generate compliance status reports
1721
+ - **Audit Trail Generation**: Create detailed audit trails
1722
+ - **Regulatory Reporting**: Generate reports for compliance requirements (PCI-DSS, HIPAA, GDPR, etc.)
1723
+ - **Security Metrics**: Calculate security metrics and KPIs
1724
+ - **Trend Analysis**: Identify security trends over time
1725
+ - **Executive Reporting**: Create high-level executive summaries
1726
+
1727
+ #### Advanced Correlation
1728
+ - **Multi-Event Correlation**: Correlate events across multiple sources
1729
+ - **Attack Chain Reconstruction**: Reconstruct complete attack chains
1730
+ - **Kill Chain Analysis**: Map events to MITRE ATT&CK framework
1731
+ - **TTP Mapping**: Identify Tactics, Techniques, and Procedures
1732
+ - **Campaign Detection**: Identify related attacks as campaigns
1733
+ - **Cross-System Correlation**: Correlate events across different security tools
1734
+
1735
+ #### Investigation Workflow Support
1736
+ - **Investigation Playbooks**: Execute predefined investigation workflows
1737
+ - **Case Linking**: Link SIEM events to case management systems
1738
+ - **Evidence Collection**: Collect and preserve investigation evidence
1739
+ - **Investigation Notes**: Document investigation findings
1740
+ - **Collaboration Tools**: Share findings with team members
1741
+ - **Investigation Timeline**: Build chronological investigation timelines
1742
+
1743
+ #### Performance & Optimization
1744
+ - **Query Performance**: Optimize search queries for performance
1745
+ - **Index Management**: Manage log indices and retention
1746
+ - **Data Archival**: Archive old logs for compliance
1747
+ - **Search Optimization**: Use efficient search patterns
1748
+ - **Result Caching**: Cache frequently accessed results
1749
+ - **Batch Operations**: Perform bulk operations efficiently
1750
+
1751
+ ---
1752
+
1753
+ ## CTI Tools
1754
+
1755
+ CTI (Cyber Threat Intelligence) tools enable lookup of indicators in threat intelligence platforms to enrich security investigations with threat context.
1756
+
1757
+ ### Supported CTI Platforms
1758
+
1759
+ The CTI integration supports multiple threat intelligence platforms:
1760
+
1761
+ - **Local TIP** (`local_tip`): A local threat intelligence platform for hash lookups
1762
+ - **OpenCTI** (`opencti`): Open Cyber Threat Intelligence Platform with comprehensive threat intelligence data
1763
+
1764
+ The same tools work with both platforms - the platform is selected via configuration in `config.json`.
1765
+
1766
+ ### CTI Capabilities
1767
+
1768
+ The following capabilities are available through the CTI integration:
1769
+
1770
+ 1. **Hash Lookup** (`lookup_hash_ti`) - Look up file hashes (MD5, SHA1, SHA256, SHA512) in threat intelligence platforms to get threat context, reputation, and analysis results
1771
+ - Supports multiple hash algorithms (MD5, SHA1, SHA256, SHA512)
1772
+ - Works with both Local TIP and OpenCTI platforms
1773
+ - Returns threat intelligence data including:
1774
+ - Hash classification and metadata
1775
+ - Threat scores and reputation
1776
+ - Analysis results from multiple sources
1777
+ - Related indicators and context
1778
+ - Historical threat intelligence data
1779
+
1780
+ ### `lookup_hash_ti`
1781
+
1782
+ Look up a file hash in the threat intelligence platform to get threat intelligence information. This tool works with both Local TIP and OpenCTI platforms - **it uses ONE platform at a time** based on your `config.json` configuration. The response format varies based on which platform is configured.
1783
+
1784
+ **How It Works:**
1785
+ 1. At startup, the MCP server reads `config.json` and initializes the CTI client based on `cti.cti_type`
1786
+ 2. If `cti_type` is `"local_tip"`, it initializes a Local TIP client
1787
+ 3. If `cti_type` is `"opencti"`, it initializes an OpenCTI client
1788
+ 4. When `lookup_hash_ti` is called, it uses the configured client to query the appropriate platform
1789
+ 5. Results are returned in a format specific to that platform
1790
+
1791
+ **Parameters:**
1792
+ - `hash_value` (string, required): The hash value to look up (MD5, SHA1, SHA256, SHA512)
1793
+
1794
+ **Returns:**
1795
+ - `success` (boolean): Whether the operation succeeded
1796
+ - `hash_value` (string): The hash that was looked up
1797
+ - `threat_intelligence` (object): Threat intelligence information about the hash (format depends on platform)
1798
+
1799
+ **Response Format - Local TIP:**
1800
+ When using Local TIP, the `threat_intelligence` object contains:
1801
+ - `value` (string): The hash value
1802
+ - `type` (string): Hash algorithm type (MD5, SHA1, SHA256, SHA512)
1803
+ - `threat_score` (integer): Threat score (0-100)
1804
+ - `classification` (string): Threat classification (e.g., "malicious", "suspicious", "benign")
1805
+
1806
+ **Example Response - Local TIP:**
1807
+ ```json
1808
+ {
1809
+ "success": true,
1810
+ "hash_value": "a1b2c3d4e5f6789012345678901234567890abcd",
1811
+ "threat_intelligence": {
1812
+ "value": "a1b2c3d4e5f6789012345678901234567890abcd",
1813
+ "type": "sha256",
1814
+ "threat_score": 85,
1815
+ "classification": "malicious"
1816
+ }
1817
+ }
1818
+ ```
1819
+
1820
+ **Response Format - OpenCTI:**
1821
+ When using OpenCTI, the `threat_intelligence` object contains:
1822
+ - `value` (string): The hash value
1823
+ - `algorithm` (string): Hash algorithm (MD5, SHA1, SHA256, SHA512)
1824
+ - `id` (string): OpenCTI hash identifier
1825
+ - `found` (boolean): Whether the hash was found in OpenCTI
1826
+ - `indicators` (array): List of related threat indicators, each containing:
1827
+ - `id` (string): Indicator identifier
1828
+ - `pattern` (string): STIX pattern
1829
+ - `pattern_type` (string): Pattern type
1830
+ - `valid_from` (string): ISO timestamp when indicator becomes valid
1831
+ - `valid_until` (string): ISO timestamp when indicator expires (null if permanent)
1832
+ - `score` (integer): Threat score (x_opencti_score)
1833
+ - `detection` (boolean): Whether detection is enabled
1834
+ - `created_at` (string): ISO timestamp of creation
1835
+ - `updated_at` (string): ISO timestamp of last update
1836
+ - `labels` (array): List of threat labels
1837
+ - `kill_chain_phases` (array): MITRE ATT&CK kill chain phases, each containing:
1838
+ - `kill_chain_name` (string): Kill chain name (e.g., "mitre-attack")
1839
+ - `phase_name` (string): Phase name (e.g., "initial-access", "execution")
1840
+
1841
+ **Example Response - OpenCTI (Hash Found):**
1842
+ ```json
1843
+ {
1844
+ "success": true,
1845
+ "hash_value": "a1b2c3d4e5f6789012345678901234567890abcd",
1846
+ "threat_intelligence": {
1847
+ "value": "a1b2c3d4e5f6789012345678901234567890abcd",
1848
+ "algorithm": "SHA256",
1849
+ "id": "hash-uuid-12345",
1850
+ "found": true,
1851
+ "indicators": [
1852
+ {
1853
+ "id": "indicator-uuid-67890",
1854
+ "pattern": "[file:hashes.'SHA-256' = 'a1b2c3d4e5f6789012345678901234567890abcd']",
1855
+ "pattern_type": "stix",
1856
+ "valid_from": "2024-01-01T00:00:00Z",
1857
+ "valid_until": null,
1858
+ "score": 85,
1859
+ "detection": true,
1860
+ "created_at": "2024-01-01T00:00:00Z",
1861
+ "updated_at": "2024-01-15T10:30:00Z",
1862
+ "labels": ["malware", "trojan"],
1863
+ "kill_chain_phases": [
1864
+ {
1865
+ "kill_chain_name": "mitre-attack",
1866
+ "phase_name": "execution"
1867
+ },
1868
+ {
1869
+ "kill_chain_name": "mitre-attack",
1870
+ "phase_name": "persistence"
1871
+ }
1872
+ ]
1873
+ }
1874
+ ]
1875
+ }
1876
+ }
1877
+ ```
1878
+
1879
+ **Example Response - OpenCTI (Hash Not Found):**
1880
+ ```json
1881
+ {
1882
+ "success": true,
1883
+ "hash_value": "nonexistent-hash-value",
1884
+ "threat_intelligence": {
1885
+ "value": "nonexistent-hash-value",
1886
+ "found": false,
1887
+ "indicators": []
1888
+ }
1889
+ }
1890
+ ```
1891
+
1892
+ **Usage Example:**
1893
+ ```json
1894
+ {
1895
+ "name": "lookup_hash_ti",
1896
+ "arguments": {
1897
+ "hash_value": "a1b2c3d4e5f6789012345678901234567890abcd"
1898
+ }
1899
+ }
1900
+ ```
1901
+
1902
+ **Use Cases:**
1903
+ - Check file hash reputation
1904
+ - Enrich file analysis with threat intelligence
1905
+ - Identify known malicious files
1906
+ - Correlate hashes with threat intelligence feeds
1907
+ - Support incident investigation with threat context
1908
+ - Map indicators to MITRE ATT&CK framework (OpenCTI)
1909
+ - Access comprehensive threat intelligence data (OpenCTI)
1910
+
1911
+ **Platform Selection:**
1912
+ The CTI platform is configured in `config.json`:
1913
+ - For Local TIP: Set `cti_type` to `"local_tip"` and provide `base_url`
1914
+ - For OpenCTI: Set `cti_type` to `"opencti"`, provide `base_url` and `api_key`
1915
+
1916
+ **Note:** This is the same tool for both platforms - no conflicts exist. The tool automatically uses the configured CTI platform backend.
1917
+
1918
+ ---
1919
+
1920
+ ## EDR Tools
1921
+
1922
+ EDR (Endpoint Detection and Response) tools enable interaction with endpoint security platforms to investigate and respond to threats on endpoints.
1923
+
1924
+ ### `get_endpoint_summary`
1925
+
1926
+ Retrieve summary information about an endpoint including hostname, platform, last seen time, primary user, and isolation status.
1927
+
1928
+ **Parameters:**
1929
+ - `endpoint_id` (string, required): The endpoint ID
1930
+
1931
+ **Returns:**
1932
+ - `success` (boolean): Whether the operation succeeded
1933
+ - `endpoint` (object): Endpoint details including:
1934
+ - `id` (string): Endpoint identifier
1935
+ - `hostname` (string): Hostname
1936
+ - `platform` (string): Operating system platform
1937
+ - `last_seen` (string): ISO timestamp of last seen
1938
+ - `primary_user` (string): Primary user account
1939
+ - `is_isolated` (boolean): Whether endpoint is isolated
1940
+
1941
+ **Usage Example:**
1942
+ ```json
1943
+ {
1944
+ "name": "get_endpoint_summary",
1945
+ "arguments": {
1946
+ "endpoint_id": "endpoint-12345"
1947
+ }
1948
+ }
1949
+ ```
1950
+
1951
+ **Use Cases:**
1952
+ - Get endpoint overview
1953
+ - Check isolation status
1954
+ - Verify endpoint details
1955
+ - Monitor endpoint health
1956
+
1957
+ ---
1958
+
1959
+ ### `get_detection_details`
1960
+
1961
+ Retrieve detailed information about a specific detection including type, severity, description, associated file hash, and process.
1962
+
1963
+ **Parameters:**
1964
+ - `detection_id` (string, required): The detection ID
1965
+
1966
+ **Returns:**
1967
+ - `success` (boolean): Whether the operation succeeded
1968
+ - `detection` (object): Detection details including:
1969
+ - `id` (string): Detection identifier
1970
+ - `endpoint_id` (string): Associated endpoint
1971
+ - `created_at` (string): ISO timestamp of detection
1972
+ - `detection_type` (string): Type of detection
1973
+ - `severity` (string): Severity level
1974
+ - `description` (string): Detection description
1975
+ - `file_hash` (string): Associated file hash
1976
+ - `process` (object): Process details (if available)
1977
+
1978
+ **Usage Example:**
1979
+ ```json
1980
+ {
1981
+ "name": "get_detection_details",
1982
+ "arguments": {
1983
+ "detection_id": "detection-67890"
1984
+ }
1985
+ }
1986
+ ```
1987
+
1988
+ **Use Cases:**
1989
+ - Analyze detection details
1990
+ - Understand threat context
1991
+ - Review detection metadata
1992
+ - Investigate alerts
1993
+
1994
+ ---
1995
+
1996
+ ### `isolate_endpoint`
1997
+
1998
+ Isolate an endpoint from the network to prevent further compromise or lateral movement. **This is a critical response action.**
1999
+
2000
+ **Parameters:**
2001
+ - `endpoint_id` (string, required): The endpoint ID to isolate
2002
+
2003
+ **Returns:**
2004
+ - `success` (boolean): Whether the operation succeeded
2005
+ - `action` (object): Action details including:
2006
+ - `endpoint_id` (string): Endpoint identifier
2007
+ - `result` (string): Action result status
2008
+ - `requested_at` (string): ISO timestamp of request
2009
+ - `completed_at` (string): ISO timestamp of completion (if completed)
2010
+ - `message` (string): Status message
2011
+
2012
+ **Usage Example:**
2013
+ ```json
2014
+ {
2015
+ "name": "isolate_endpoint",
2016
+ "arguments": {
2017
+ "endpoint_id": "endpoint-12345"
2018
+ }
2019
+ }
2020
+ ```
2021
+
2022
+ **Use Cases:**
2023
+ - Contain active threats
2024
+ - Prevent lateral movement
2025
+ - Isolate compromised systems
2026
+ - Emergency response
2027
+
2028
+ **⚠️ Warning:** This is a disruptive action that will disconnect the endpoint from the network. Use with caution.
2029
+
2030
+ ---
2031
+
2032
+ ### `release_endpoint_isolation`
2033
+
2034
+ Release an endpoint from network isolation, restoring normal network connectivity.
2035
+
2036
+ **Parameters:**
2037
+ - `endpoint_id` (string, required): The endpoint ID to release
2038
+
2039
+ **Returns:**
2040
+ - `success` (boolean): Whether the operation succeeded
2041
+ - `action` (object): Action details including:
2042
+ - `endpoint_id` (string): Endpoint identifier
2043
+ - `result` (string): Action result status
2044
+ - `requested_at` (string): ISO timestamp of request
2045
+ - `completed_at` (string): ISO timestamp of completion (if completed)
2046
+ - `message` (string): Status message
2047
+
2048
+ **Usage Example:**
2049
+ ```json
2050
+ {
2051
+ "name": "release_endpoint_isolation",
2052
+ "arguments": {
2053
+ "endpoint_id": "endpoint-12345"
2054
+ }
2055
+ }
2056
+ ```
2057
+
2058
+ **Use Cases:**
2059
+ - Restore endpoint connectivity
2060
+ - Release after remediation
2061
+ - Return endpoint to normal operations
2062
+ - Post-incident recovery
2063
+
2064
+ ---
2065
+
2066
+ ### `kill_process_on_endpoint`
2067
+
2068
+ Terminate a specific process running on an endpoint by its process ID. **Use with caution as this is a disruptive action.**
2069
+
2070
+ **Parameters:**
2071
+ - `endpoint_id` (string, required): The endpoint ID
2072
+ - `pid` (integer, required): The process ID to kill
2073
+
2074
+ **Returns:**
2075
+ - `success` (boolean): Whether the operation succeeded
2076
+ - `action` (object): Action details including:
2077
+ - `endpoint_id` (string): Endpoint identifier
2078
+ - `pid` (integer): Process ID
2079
+ - `result` (string): Action result status
2080
+ - `requested_at` (string): ISO timestamp of request
2081
+ - `completed_at` (string): ISO timestamp of completion (if completed)
2082
+ - `message` (string): Status message
2083
+
2084
+ **Usage Example:**
2085
+ ```json
2086
+ {
2087
+ "name": "kill_process_on_endpoint",
2088
+ "arguments": {
2089
+ "endpoint_id": "endpoint-12345",
2090
+ "pid": 1234
2091
+ }
2092
+ }
2093
+ ```
2094
+
2095
+ **Use Cases:**
2096
+ - Stop malicious processes
2097
+ - Terminate suspicious activity
2098
+ - Kill malware processes
2099
+ - Emergency response
2100
+
2101
+ **⚠️ Warning:** This will terminate the specified process immediately. Use with caution.
2102
+
2103
+ ---
2104
+
2105
+ ### `collect_forensic_artifacts`
2106
+
2107
+ Initiate collection of forensic artifacts from an endpoint, such as process lists, network connections, file system artifacts, etc.
2108
+
2109
+ **Parameters:**
2110
+ - `endpoint_id` (string, required): The endpoint ID
2111
+ - `artifact_types` (array, required): List of artifact types to collect. Common types:
2112
+ - `processes`: Running processes
2113
+ - `network`: Network connections
2114
+ - `filesystem`: File system artifacts
2115
+ - `registry`: Registry keys
2116
+ - `memory`: Memory dumps
2117
+ - `logs`: System logs
2118
+
2119
+ **Returns:**
2120
+ - `success` (boolean): Whether the operation succeeded
2121
+ - `request` (object): Collection request details including:
2122
+ - `endpoint_id` (string): Endpoint identifier
2123
+ - `artifact_types` (array): Types requested
2124
+ - `result` (string): Request result status
2125
+ - `requested_at` (string): ISO timestamp of request
2126
+ - `completed_at` (string): ISO timestamp of completion (if completed)
2127
+ - `message` (string): Status message
2128
+
2129
+ **Usage Example:**
2130
+ ```json
2131
+ {
2132
+ "name": "collect_forensic_artifacts",
2133
+ "arguments": {
2134
+ "endpoint_id": "endpoint-12345",
2135
+ "artifact_types": ["processes", "network", "filesystem"]
2136
+ }
2137
+ }
2138
+ ```
2139
+
2140
+ **Use Cases:**
2141
+ - Collect forensic evidence
2142
+ - Gather investigation data
2143
+ - Document endpoint state
2144
+ - Support incident response
2145
+
2146
+ ---
2147
+
2148
+ ## Engineering Tools
2149
+
2150
+ Engineering tools enable creating and managing recommendations for fine-tuning detection rules and improving security visibility. These tools integrate with engineering platforms (ClickUp, Trello, GitHub) to track improvement tasks.
2151
+
2152
+ **Note:** Currently, only ClickUp is fully supported. Trello and GitHub support for listing and commenting is planned for future releases.
2153
+
2154
+ ### `create_fine_tuning_recommendation`
2155
+
2156
+ Create a fine-tuning recommendation task on the fine-tuning board. This is used to track improvements needed to reduce false positives or enhance detection rules.
2157
+
2158
+ **Parameters:**
2159
+ - `title` (string, required): Task/card title
2160
+ - `description` (string, required): Task/card description
2161
+ - `list_name` (string, optional): Optional list name (Trello only, defaults to first list on board)
2162
+ - `labels` (array, optional): Optional list of label names (Trello only)
2163
+ - `status` (string, optional): Optional status name (ClickUp only, defaults to first status in list)
2164
+ - `tags` (array, optional): Optional list of tag names (ClickUp only)
2165
+
2166
+ **Returns:**
2167
+ - `success` (boolean): Whether the operation succeeded
2168
+ - `provider` (string): Platform provider (clickup, trello, github)
2169
+ - `task`/`card`/`project_item` (object): Created task/card details including:
2170
+ - `id` (string): Task/card identifier
2171
+ - `name` (string): Task/card name
2172
+ - `url` (string): URL to view the task/card
2173
+
2174
+ **Usage Example:**
2175
+ ```json
2176
+ {
2177
+ "name": "create_fine_tuning_recommendation",
2178
+ "arguments": {
2179
+ "title": "Reduce false positives for Elastic Agent alerts",
2180
+ "description": "Alert triggers frequently for Elastic Agent connections to Elastic Cloud. Consider adding whitelist or adjusting rule threshold.",
2181
+ "tags": ["false-positive", "elastic-agent"]
2182
+ }
2183
+ }
2184
+ ```
2185
+
2186
+ **Use Cases:**
2187
+ - Document detection rule improvements needed after false positive identification
2188
+ - Track fine-tuning tasks for rule optimization
2189
+ - Create tasks for reducing false positive rates
2190
+ - Link fine-tuning needs to specific alert types
2191
+
2192
+ ---
2193
+
2194
+ ### `create_visibility_recommendation`
2195
+
2196
+ Create a visibility/engineering recommendation task on the engineering board. This is used to track improvements needed to enhance security visibility or detection capabilities.
2197
+
2198
+ **Parameters:**
2199
+ - `title` (string, required): Task/card title
2200
+ - `description` (string, required): Task/card description
2201
+ - `list_name` (string, optional): Optional list name (Trello only, defaults to first list on board)
2202
+ - `labels` (array, optional): Optional list of label names (Trello only)
2203
+ - `status` (string, optional): Optional status name (ClickUp only, defaults to first status in list)
2204
+ - `tags` (array, optional): Optional list of tag names (ClickUp only)
2205
+
2206
+ **Returns:**
2207
+ - `success` (boolean): Whether the operation succeeded
2208
+ - `provider` (string): Platform provider (clickup, trello, github)
2209
+ - `task`/`card`/`project_item` (object): Created task/card details including:
2210
+ - `id` (string): Task/card identifier
2211
+ - `name` (string): Task/card name
2212
+ - `url` (string): URL to view the task/card
2213
+
2214
+ **Usage Example:**
2215
+ ```json
2216
+ {
2217
+ "name": "create_visibility_recommendation",
2218
+ "arguments": {
2219
+ "title": "Add endpoint logging for PowerShell execution",
2220
+ "description": "PowerShell execution events are not being captured. Need to enable PowerShell logging on endpoints to improve detection capabilities.",
2221
+ "tags": ["visibility", "powershell"]
2222
+ }
2223
+ }
2224
+ ```
2225
+
2226
+ **Use Cases:**
2227
+ - Document visibility gaps identified during investigations
2228
+ - Track engineering tasks for improving detection coverage
2229
+ - Request logging enhancements
2230
+ - Link visibility improvements to specific investigation needs
2231
+
2232
+ ---
2233
+
2234
+ ### `list_fine_tuning_recommendations`
2235
+
2236
+ List all fine-tuning recommendation tasks from the fine-tuning board. This allows checking if an existing task already exists before creating a new one.
2237
+
2238
+ **Note:** Currently only supports ClickUp. Trello and GitHub support will be added in future releases.
2239
+
2240
+ **Parameters:**
2241
+ - `archived` (boolean, optional): Include archived tasks (default: false)
2242
+ - `include_closed` (boolean, optional): Include closed tasks (default: true)
2243
+ - `order_by` (string, optional): Order tasks by field (e.g., "created", "updated", "priority")
2244
+ - `reverse` (boolean, optional): Reverse the order (default: false)
2245
+ - `subtasks` (boolean, optional): Include subtasks (default: false)
2246
+ - `statuses` (array, optional): Filter by status names
2247
+ - `include_markdown_description` (boolean, optional): Include markdown in descriptions (default: false)
2248
+
2249
+ **Returns:**
2250
+ - `success` (boolean): Whether the operation succeeded
2251
+ - `provider` (string): Platform provider (clickup)
2252
+ - `count` (integer): Number of tasks found
2253
+ - `tasks` (array): List of tasks, each containing:
2254
+ - `id` (string): Task identifier
2255
+ - `name` (string): Task name
2256
+ - `url` (string): URL to view the task
2257
+ - `status` (string): Task status
2258
+ - `description` (string): Task description
2259
+
2260
+ **Usage Example:**
2261
+ ```json
2262
+ {
2263
+ "name": "list_fine_tuning_recommendations",
2264
+ "arguments": {
2265
+ "include_closed": false,
2266
+ "order_by": "created"
2267
+ }
2268
+ }
2269
+ ```
2270
+
2271
+ **Use Cases:**
2272
+ - Check if a fine-tuning task already exists before creating a duplicate
2273
+ - Review existing fine-tuning recommendations
2274
+ - Find related tasks for a specific alert type
2275
+ - Track fine-tuning task status
2276
+
2277
+ ---
2278
+
2279
+ ### `list_visibility_recommendations`
2280
+
2281
+ List all visibility/engineering recommendation tasks from the engineering board. This allows checking if an existing task already exists before creating a new one.
2282
+
2283
+ **Note:** Currently only supports ClickUp. Trello and GitHub support will be added in future releases.
2284
+
2285
+ **Parameters:**
2286
+ - `archived` (boolean, optional): Include archived tasks (default: false)
2287
+ - `include_closed` (boolean, optional): Include closed tasks (default: true)
2288
+ - `order_by` (string, optional): Order tasks by field (e.g., "created", "updated", "priority")
2289
+ - `reverse` (boolean, optional): Reverse the order (default: false)
2290
+ - `subtasks` (boolean, optional): Include subtasks (default: false)
2291
+ - `statuses` (array, optional): Filter by status names
2292
+ - `include_markdown_description` (boolean, optional): Include markdown in descriptions (default: false)
2293
+
2294
+ **Returns:**
2295
+ - `success` (boolean): Whether the operation succeeded
2296
+ - `provider` (string): Platform provider (clickup)
2297
+ - `count` (integer): Number of tasks found
2298
+ - `tasks` (array): List of tasks, each containing:
2299
+ - `id` (string): Task identifier
2300
+ - `name` (string): Task name
2301
+ - `url` (string): URL to view the task
2302
+ - `status` (string): Task status
2303
+ - `description` (string): Task description
2304
+
2305
+ **Usage Example:**
2306
+ ```json
2307
+ {
2308
+ "name": "list_visibility_recommendations",
2309
+ "arguments": {
2310
+ "include_closed": false,
2311
+ "order_by": "created"
2312
+ }
2313
+ }
2314
+ ```
2315
+
2316
+ **Use Cases:**
2317
+ - Check if a visibility task already exists before creating a duplicate
2318
+ - Review existing visibility recommendations
2319
+ - Find related tasks for a specific visibility gap
2320
+ - Track visibility improvement task status
2321
+
2322
+ ---
2323
+
2324
+ ### `add_comment_to_fine_tuning_recommendation`
2325
+
2326
+ Add a comment to an existing fine-tuning recommendation task. This is used to add additional context, link to related alerts/cases, or update the status when closing false positives.
2327
+
2328
+ **Note:** Currently only supports ClickUp. Trello and GitHub support will be added in future releases.
2329
+
2330
+ **Parameters:**
2331
+ - `task_id` (string, required): ClickUp task ID
2332
+ - `comment_text` (string, required): Comment text/content
2333
+
2334
+ **Returns:**
2335
+ - `success` (boolean): Whether the operation succeeded
2336
+ - `provider` (string): Platform provider (clickup)
2337
+ - `comment` (object): Comment details including:
2338
+ - `id` (string): Comment identifier
2339
+ - `comment_text` (string): Comment text
2340
+ - `user` (string): Username who added the comment
2341
+ - `task_id` (string): Task ID the comment was added to
2342
+ - `message` (string): Success message
2343
+
2344
+ **Usage Example:**
2345
+ ```json
2346
+ {
2347
+ "name": "add_comment_to_fine_tuning_recommendation",
2348
+ "arguments": {
2349
+ "task_id": "86evk2bcn",
2350
+ "comment_text": "Another false positive observed for this alert type. Alert ID: alert-12345, Case ID: CASE-2024-001. Total false positives for this pattern: 5 this week."
2351
+ }
2352
+ }
2353
+ ```
2354
+
2355
+ **Use Cases:**
2356
+ - Add context to existing fine-tuning tasks when closing additional false positives
2357
+ - Link related alerts or cases to fine-tuning recommendations
2358
+ - Update task status with investigation findings
2359
+ - Document pattern observations
2360
+
2361
+ ---
2362
+
2363
+ ### `add_comment_to_visibility_recommendation`
2364
+
2365
+ Add a comment to an existing visibility/engineering recommendation task. This is used to add additional context, link to related investigations, or provide updates.
2366
+
2367
+ **Note:** Currently only supports ClickUp. Trello and GitHub support will be added in future releases.
2368
+
2369
+ **Parameters:**
2370
+ - `task_id` (string, required): ClickUp task ID
2371
+ - `comment_text` (string, required): Comment text/content
2372
+
2373
+ **Returns:**
2374
+ - `success` (boolean): Whether the operation succeeded
2375
+ - `provider` (string): Platform provider (clickup)
2376
+ - `comment` (object): Comment details including:
2377
+ - `id` (string): Comment identifier
2378
+ - `comment_text` (string): Comment text
2379
+ - `user` (string): Username who added the comment
2380
+ - `task_id` (string): Task ID the comment was added to
2381
+ - `message` (string): Success message
2382
+
2383
+ **Usage Example:**
2384
+ ```json
2385
+ {
2386
+ "name": "add_comment_to_visibility_recommendation",
2387
+ "arguments": {
2388
+ "task_id": "86evk2bcv",
2389
+ "comment_text": "Investigation revealed this visibility gap during Case CASE-2024-001. Additional context: PowerShell execution was observed but not logged on endpoint 10.10.1.2."
2390
+ }
2391
+ }
2392
+ ```
2393
+
2394
+ **Use Cases:**
2395
+ - Add context to existing visibility tasks when gaps are discovered during investigations
2396
+ - Link related cases or investigations to visibility recommendations
2397
+ - Update task status with new findings
2398
+ - Document impact of visibility gaps
2399
+
2400
+ ---
2401
+
2402
+ ## Rules Engine Tools
2403
+
2404
+ Rules engine tools enable execution of automated investigation workflows that chain together multiple skills.
2405
+
2406
+ ### `list_rules`
2407
+
2408
+ List all available investigation rules/workflows.
2409
+
2410
+ **Parameters:**
2411
+ None
2412
+
2413
+ **Returns:**
2414
+ - `rules` (array): List of available rules, each containing:
2415
+ - `name` (string): Rule name
2416
+ - `description` (string): Rule description
2417
+ - `enabled` (boolean): Whether rule is enabled
2418
+ - `action_count` (integer): Number of actions in the rule
2419
+
2420
+ **Usage Example:**
2421
+ ```json
2422
+ {
2423
+ "name": "list_rules",
2424
+ "arguments": {}
2425
+ }
2426
+ ```
2427
+
2428
+ **Use Cases:**
2429
+ - Discover available workflows
2430
+ - Check rule status
2431
+ - Plan automated investigations
2432
+ - Review rule configurations
2433
+
2434
+ ---
2435
+
2436
+ ### `execute_rule`
2437
+
2438
+ Execute an investigation rule/workflow that chains together multiple skills.
2439
+
2440
+ **Parameters:**
2441
+ - `rule_name` (string, required): Name of the rule to execute
2442
+ - `context` (object, optional): Context variables to pass to the rule. Common variables:
2443
+ - `case_id`: Case identifier
2444
+ - `alert_id`: Alert identifier
2445
+ - `endpoint_id`: Endpoint identifier
2446
+ - `indicator`: IOC value
2447
+ - `search_query`: SIEM search query
2448
+
2449
+ **Returns:**
2450
+ - `success` (boolean): Whether the rule executed successfully
2451
+ - `rule_name` (string): Name of the executed rule
2452
+ - `results` (array): List of action results, each containing:
2453
+ - `action` (string): Action name
2454
+ - `success` (boolean): Whether action succeeded
2455
+ - `result` (object): Action result data
2456
+ - `error` (string): Error message (if failed)
2457
+ - `context` (object): Final context variables
2458
+
2459
+ **Usage Example:**
2460
+ ```json
2461
+ {
2462
+ "name": "execute_rule",
2463
+ "arguments": {
2464
+ "rule_name": "automated_threat_investigation",
2465
+ "context": {
2466
+ "case_id": "CASE-2024-001",
2467
+ "indicator": "192.168.1.100"
2468
+ }
2469
+ }
2470
+ }
2471
+ ```
2472
+
2473
+ **Use Cases:**
2474
+ - Automate investigation workflows
2475
+ - Chain multiple investigation steps
2476
+ - Execute predefined playbooks
2477
+ - Standardize response procedures
2478
+
2479
+ ---
2480
+
2481
+ ## Best Practices
2482
+
2483
+ ### Tool Selection
2484
+ - Use case management tools for incident tracking and management
2485
+ - Use SIEM tools for log analysis and event correlation
2486
+ - Use EDR tools for endpoint investigation and response
2487
+ - Use rules engine for automated workflows
2488
+
2489
+ ### Error Handling
2490
+ - Always check the `success` field in responses
2491
+ - Handle missing or invalid parameters gracefully
2492
+ - Log errors for troubleshooting
2493
+ - Provide meaningful error messages
2494
+
2495
+ ### Performance
2496
+ - Use appropriate `limit` parameters to avoid large result sets
2497
+ - Combine tools efficiently to minimize API calls
2498
+ - Cache results when appropriate
2499
+ - Use rules engine for complex multi-step operations
2500
+
2501
+ ### Security
2502
+ - Validate all input parameters
2503
+ - Sanitize user-provided data
2504
+ - Use least privilege principles
2505
+ - Log all critical actions (isolation, process termination, etc.)
2506
+
2507
+ ### Workflow Examples
2508
+
2509
+ **Example 1: Investigate a Suspicious IP**
2510
+ 1. Use `pivot_on_indicator` to find all events related to the IP
2511
+ 2. Use `get_ip_address_report` to get reputation and context
2512
+ 3. Use `search_security_events` to find related events
2513
+ 4. Create or update a case with `attach_observable_to_case`
2514
+ 5. Document findings with `add_case_comment`
2515
+
2516
+ **Example 2: Respond to Endpoint Detection**
2517
+ 1. Use `get_detection_details` to understand the threat
2518
+ 2. Use `get_endpoint_summary` to check endpoint status
2519
+ 3. Use `isolate_endpoint` if threat is active
2520
+ 4. Use `collect_forensic_artifacts` to gather evidence
2521
+ 5. Use `get_file_report` to analyze associated files
2522
+ 6. Create case and document with case management tools
2523
+
2524
+ **Example 3: Automated Investigation Workflow**
2525
+ 1. Use `list_rules` to find appropriate workflow
2526
+ 2. Use `execute_rule` with context variables
2527
+ 3. Review results from automated actions
2528
+ 4. Follow up with manual investigation if needed
2529
+
2530
+ ---
2531
+
2532
+ ## Tool Availability
2533
+
2534
+ Tools are only available if the corresponding integration is configured:
2535
+
2536
+ - **Case Management Tools**: Available when TheHive or IRIS is configured
2537
+ - **SIEM Tools**: Available when Elastic or other SIEM is configured
2538
+ - **CTI Tools**: Available when CTI platform is configured (supports Local TIP or OpenCTI)
2539
+ - `lookup_hash_ti`: Available when any CTI platform (local_tip or opencti) is configured
2540
+ - **EDR Tools**: Available when EDR platform is configured
2541
+ - **Engineering Tools**: Available when engineering platform is configured (supports ClickUp, Trello, or GitHub)
2542
+ - Currently, `list_fine_tuning_recommendations`, `list_visibility_recommendations`, `add_comment_to_fine_tuning_recommendation`, and `add_comment_to_visibility_recommendation` only support ClickUp
2543
+ - **Rules Engine Tools**: Always available
2544
+
2545
+ ---
2546
+
2547
+ ### `get_recent_alerts`
2548
+
2549
+ Summarize and smart-group recent SIEM alerts from the last N hours to help the AI decide what to investigate first.
2550
+
2551
+ **CRITICAL:** This tool automatically excludes alerts that have already been investigated (alerts with `verdict` field). It limits results to `max_alerts` uninvestigated alerts and always respects the specified timeframe. If no uninvestigated alerts are found, it returns an empty result with a message indicating there are no alerts to investigate.
2552
+
2553
+ **Parameters:**
2554
+ - `hours_back` (integer, optional): How many hours to look back for alerts (default: `1`; typically used as "last 1 hour"). **The timeframe is always respected and never bypassed.**
2555
+ - `max_alerts` (integer, optional): Maximum number of **uninvestigated** alerts to retrieve and process (default: `100`). The tool limits results to this number after filtering out investigated alerts.
2556
+ - `status_filter` (string, optional): Filter by alert status (implementation-specific string that is passed through to the SIEM backend)
2557
+ - `severity` (string, optional): Filter by severity (`low`, `medium`, `high`, `critical`)
2558
+
2559
+ **Returns:**
2560
+ - `success` (boolean): Whether the operation succeeded
2561
+ - `hours_back` (integer): Effective lookback window used
2562
+ - `max_alerts` (integer): Effective max alerts used
2563
+ - `status_filter` (string or null): Status filter used
2564
+ - `severity` (string or null): Severity filter used
2565
+ - `total_alerts` (integer): Number of alerts retrieved from the SIEM (may include investigated alerts)
2566
+ - `uninvestigated_alerts` (integer): Number of uninvestigated alerts after filtering (limited to `max_alerts`)
2567
+ - `group_count` (integer): Number of alert groups produced
2568
+ - `message` (string, optional): Message indicating no uninvestigated alerts found (only present when `uninvestigated_alerts` is 0)
2569
+ - `groups` (array): List of grouped alerts, **sorted from most recent to oldest** (by severity descending, count descending, then by latest_created_at descending). Each group contains:
2570
+ - `group_id` (string): Stable identifier for the group (e.g., `alert_group_1`)
2571
+ - `title` (string): Representative alert title for the group
2572
+ - `primary_severity` (string): Highest severity observed in the group
2573
+ - `primary_status` (string): Representative status for the group
2574
+ - `rule_id` (string or null): Detection/rule identifier when available
2575
+ - `alert_type` (string or null): Alert type / category when available
2576
+ - `count` (integer): Number of alerts in this group
2577
+ - `alert_ids` (array): List of alert IDs in this group
2578
+ - `statuses` (array): Unique statuses observed across the group
2579
+ - `severities` (array): Unique severities observed across the group
2580
+ - `earliest_created_at` (string or null): Oldest `created_at` / timestamp in the group
2581
+ - `latest_created_at` (string or null): Most recent `created_at` / timestamp in the group
2582
+ - `example_alerts` (array): Up to 3 representative alerts with key fields, **sorted from most recent to oldest**:
2583
+ - `id`, `title`, `severity`, `status`, `created_at`, `source`, `rule_id`, `type`, `description`
2584
+
2585
+ **Usage Example:**
2586
+ ```json
2587
+ {
2588
+ "name": "get_recent_alerts",
2589
+ "arguments": {
2590
+ "hours_back": 1,
2591
+ "max_alerts": 100,
2592
+ "severity": "high"
2593
+ }
2594
+ }
2595
+ ```
2596
+
2597
+ **Use Cases:**
2598
+ - Quickly understand “what’s going on right now” in the last hour of alerts
2599
+ - Group duplicate or very similar alerts (same title/rule/severity/status) into a single bucket
2600
+ - Present a compact menu of alert groups to an AI agent so it can choose which group/alert ID to work on next
2601
+ - Reduce noise when many similar alerts fire from the same rule or pattern
2602
+
2603
+ Use `list_rules` to check available rules, and check tool availability through the MCP client's tool discovery mechanism.
2604
+
2605
+ ---
2606
+
2607
+ ### `close_alert`
2608
+
2609
+ Close a security alert in the SIEM platform. Use this when an alert has been determined to be a false positive or benign true positive during triage.
2610
+
2611
+ **Parameters:**
2612
+ - `alert_id` (string, required): The ID of the alert to close
2613
+ - `reason` (string, optional): Reason for closing (e.g., "false_positive", "benign_true_positive")
2614
+ - `comment` (string, optional): Comment explaining why the alert is being closed
2615
+
2616
+ **Returns:**
2617
+ - `success` (boolean): Whether the operation succeeded
2618
+ - `alert_id` (string): The ID of the alert that was closed
2619
+ - `status` (string): The new status of the alert (typically "closed")
2620
+ - `reason` (string): Reason for closing
2621
+ - `comment` (string): Comment provided
2622
+ - `alert` (object): Updated alert details
2623
+
2624
+ **Usage Example:**
2625
+ ```json
2626
+ {
2627
+ "name": "close_alert",
2628
+ "arguments": {
2629
+ "alert_id": "alert-123",
2630
+ "reason": "false_positive",
2631
+ "comment": "Verified as legitimate administrative activity"
2632
+ }
2633
+ }
2634
+ ```
2635
+
2636
+ **Use Cases:**
2637
+ - Close false positive alerts after investigation
2638
+ - Mark benign true positives as resolved
2639
+ - Document closure reasons for audit purposes
2640
+ - Reduce alert noise in the SIEM
2641
+
2642
+ ---
2643
+
2644
+ ### `update_alert_verdict`
2645
+
2646
+ Update the verdict for a security alert. Use this to set or update the verdict field (e.g., "in-progress", "false_positive", "benign_true_positive", "true_positive"). This is the preferred method for setting verdicts as it clearly indicates the intent to update the verdict rather than close the alert.
2647
+
2648
+ **Note:** This tool operates on SIEM alerts (not cases). For case management operations, use the case management tools (e.g., `list_cases`, `review_case`).
2649
+
2650
+ **Parameters:**
2651
+ - `alert_id` (string, required): The ID of the alert to update
2652
+ - `verdict` (string, required): The verdict value. Valid values:
2653
+ - `in-progress`: Alert is being actively investigated
2654
+ - `false_positive`: Alert is not a real threat
2655
+ - `benign_true_positive`: Alert is a true positive but represents benign activity
2656
+ - `true_positive`: Alert is a confirmed security incident
2657
+ - `uncertain`: Alert legitimacy cannot be determined with available information
2658
+ - `comment` (string, optional): Optional comment explaining the verdict
2659
+
2660
+ **Returns:**
2661
+ - `success` (boolean): Whether the operation succeeded
2662
+ - `alert_id` (string): The ID of the alert that was updated
2663
+ - `verdict` (string): The verdict that was set
2664
+ - `comment` (string): Comment provided (if any)
2665
+ - `alert` (object): Updated alert details
2666
+
2667
+ **Usage Example:**
2668
+ ```json
2669
+ {
2670
+ "name": "update_alert_verdict",
2671
+ "arguments": {
2672
+ "alert_id": "alert-123",
2673
+ "verdict": "false_positive",
2674
+ "comment": "Verified as legitimate administrative activity after reviewing user permissions and activity logs"
2675
+ }
2676
+ }
2677
+ ```
2678
+
2679
+ **Use Cases:**
2680
+ - Set alert verdict during investigation
2681
+ - Update verdict as investigation progresses
2682
+ - Mark alerts as false positives without closing them
2683
+ - Document verdict with explanatory comments
2684
+ - Track investigation status through verdict field
2685
+
2686
+ **Note:** This is the preferred method for setting verdicts as it clearly indicates the intent to update the verdict rather than close the alert. Use `close_alert` when you want to close the alert entirely.
2687
+
2688
+ ---
2689
+
2690
+ ### `get_all_uncertain_alerts_for_host`
2691
+
2692
+ Retrieve all alerts with verdict="uncertain" for a specific host. This is useful for pattern analysis when investigating uncertain alerts to determine if multiple uncertain alerts on the same host indicate a broader issue requiring case creation and escalation.
2693
+
2694
+ **Parameters:**
2695
+ - `hostname` (string, required): The hostname to search for
2696
+ - `hours_back` (integer, optional): How many hours to look back (default: `168` = 7 days)
2697
+ - `limit` (integer, optional): Maximum number of alerts to return (default: `100`)
2698
+
2699
+ **Returns:**
2700
+ - `success` (boolean): Whether the operation succeeded
2701
+ - `hostname` (string): The hostname that was searched
2702
+ - `hours_back` (integer): The lookback period used
2703
+ - `total_count` (integer): Total number of uncertain alerts found for the host
2704
+ - `returned_count` (integer): Number of alerts returned (limited by `limit`)
2705
+ - `alerts` (array): List of uncertain alerts, each containing:
2706
+ - `id` (string): Alert identifier
2707
+ - `title` (string): Alert title/name
2708
+ - `severity` (string): Alert severity
2709
+ - `status` (string): Alert status
2710
+ - `created_at` (string): ISO timestamp when alert was created
2711
+ - `alert_type` (string): Alert type/category
2712
+ - `description` (string): Alert description
2713
+ - `verdict` (string): Verdict value (should be "uncertain")
2714
+ - `hostname` (string): Hostname where alert occurred
2715
+ - `related_entities` (array): Related entities (IPs, users, hashes, etc.)
2716
+ - `source` (string): SIEM source (e.g., "elastic")
2717
+
2718
+ **Usage Example:**
2719
+ ```json
2720
+ {
2721
+ "name": "get_all_uncertain_alerts_for_host",
2722
+ "arguments": {
2723
+ "hostname": "workstation-01.example.com",
2724
+ "hours_back": 168,
2725
+ "limit": 100
2726
+ }
2727
+ }
2728
+ ```
2729
+
2730
+ **Use Cases:**
2731
+ - Pattern analysis for uncertain alerts on the same host
2732
+ - Identify if multiple uncertain alerts indicate a broader threat
2733
+ - Determine if case creation is needed based on uncertain alert patterns
2734
+ - Correlate uncertain alerts to find common indicators
2735
+ - Support SOC1 triage decision-making for uncertain alerts
2736
+
2737
+ **Note:** This tool is specifically designed for Step 8.6 of the initial alert triage runbook to help identify patterns when investigating uncertain alerts. If multiple uncertain alerts on the same host show patterns (same alert types, escalating frequency, related entities), this may indicate a real threat requiring case creation and escalation to SOC2.
2738
+
2739
+ ---
2740
+
2741
+ ### `tag_alert`
2742
+
2743
+ Tag a security alert in the SIEM platform with a classification. Use this to mark alerts as FP (False Positive), TP (True Positive), or NMI (Need More Investigation).
2744
+
2745
+ **Parameters:**
2746
+ - `alert_id` (string, required): The ID of the alert to tag
2747
+ - `tag` (string, required): The tag to apply. Must be one of:
2748
+ - `FP`: False Positive - Alert is not a real threat
2749
+ - `TP`: True Positive - Alert is a confirmed security incident
2750
+ - `NMI`: Need More Investigation - Requires additional analysis
2751
+
2752
+ **Returns:**
2753
+ - `success` (boolean): Whether the operation succeeded
2754
+ - `alert_id` (string): The ID of the alert that was tagged
2755
+ - `tag` (string): The tag that was applied
2756
+ - `tags` (array): Complete list of tags on the alert after the operation
2757
+ - `alert` (object): Updated alert details
2758
+
2759
+ **Usage Example:**
2760
+ ```json
2761
+ {
2762
+ "name": "tag_alert",
2763
+ "arguments": {
2764
+ "alert_id": "alert-123",
2765
+ "tag": "FP"
2766
+ }
2767
+ }
2768
+ ```
2769
+
2770
+ **Use Cases:**
2771
+ - Classify alerts during triage
2772
+ - Mark alerts for further investigation (NMI)
2773
+ - Tag confirmed incidents (TP) for case creation
2774
+ - Label false positives (FP) for tuning
2775
+ - Track alert classification for analytics and reporting
2776
+
2777
+ **Note:** The tag_alert tool replaces any existing classification tags (FP, TP, NMI) with the new tag to ensure only one classification tag exists at a time.
2778
+
2779
+ ---
2780
+
2781
+ ### `add_alert_note`
2782
+
2783
+ Add a note or comment to a security alert in the SIEM platform. Use this to document investigation findings, recommendations for detection rule improvements, case numbers, or other relevant information about the alert.
2784
+
2785
+ **Parameters:**
2786
+ - `alert_id` (string, required): The ID of the alert to add a note to
2787
+ - `note` (string, required): The note/comment text to add. Should include investigation findings, case numbers (if applicable), and recommendations for detection rule improvements
2788
+
2789
+ **Returns:**
2790
+ - `success` (boolean): Whether the operation succeeded
2791
+ - `alert_id` (string): The ID of the alert that the note was added to
2792
+ - `note` (string): The note that was added
2793
+ - `alert` (object): Updated alert details
2794
+
2795
+ **Usage Example:**
2796
+ ```json
2797
+ {
2798
+ "name": "add_alert_note",
2799
+ "arguments": {
2800
+ "alert_id": "alert-123",
2801
+ "note": "SOC1 Triage Note:\nAssessment: False Positive\nInvestigation: Verified source IP 10.10.20.2 against client KB - confirmed as VPN pool. User 'Administrator' has 'RDP' and 'vpn-rdp-expected' tags in KB. No IOC matches found.\nRecommendations for Detection Rule Improvement:\n1. Add exclusion for VPN pool IPs (10.10.20.0/24) when user has 'vpn-rdp-expected' tag\n2. Add KB tag check before alerting\n3. Reduce severity for expected RDP patterns from VPN pools"
2802
+ }
2803
+ }
2804
+ ```
2805
+
2806
+ **Use Cases:**
2807
+ - Document investigation findings during alert triage
2808
+ - Add recommendations for detection rule improvements when closing false positives
2809
+ - Reference case numbers when escalating alerts
2810
+ - Document key findings and escalation reasons for true positives
2811
+ - Provide context for future analysts reviewing the alert
2812
+ - Track investigation steps and decisions
2813
+ - Support detection rule fine-tuning with specific recommendations
2814
+
2815
+ **Note:** This tool is **mandatory** for SOC1 analysts when closing or escalating alerts per the initial alert triage runbook. Notes should include:
2816
+ - Investigation summary (what was checked)
2817
+ - Assessment (FP/BTP/TP/Suspicious/Uncertain)
2818
+ - Case number (if a case was created)
2819
+ - For FP/BTP: Specific recommendations for detection rule improvements (bullet points on how to fine-tune the rule)
2820
+ - For TP/Suspicious: Key findings and escalation reason
2821
+
2822
+ ---
2823
+
2824
+ ## Support
2825
+
2826
+ For issues, questions, or feature requests related to these tools, please refer to the main SamiGPT documentation or contact your system administrator.
2827
+