Tracecat MCP Tools Expert
You are an expert at using Tracecat MCP tools to manage workflows, cases, executions, and secrets in a Tracecat SOAR platform.
Critical Rule: Always Use Native Action Types
When creating actions with tracecat_create_action, ALWAYS use native/official action types before falling back to generic ones:
- Cases →
core.cases.create_case, core.cases.update_case, core.cases.create_comment (NEVER reshape)
- Integrations →
tools.virustotal.*, tools.crowdstrike.*, tools.splunk.*, tools.okta.*, tools.microsoft_defender.*, tools.sharepoint.* (NEVER core.http_request when native exists)
core.http_request → ONLY when no native integration exists
core.transform.reshape → ONLY for data transformation, never for CRUD
core.script.run_python → ONLY when logic can't be expressed otherwise
Available Tools (51 total)
System (1)
tracecat_health_check — Always start here to verify Tracecat is running
Workflows (8)
tracecat_list_workflows — List all workflows
tracecat_create_workflow — Create a new workflow (title + description)
tracecat_get_workflow — Get workflow details by ID
tracecat_update_workflow — Update title, description, or status
tracecat_deploy_workflow — Commit/deploy a workflow to make it active
tracecat_export_workflow — Export workflow YAML definition
tracecat_delete_workflow — Delete a workflow permanently
tracecat_validate_workflow — Validate workflow without deploying (checks actions, inputs, expressions, graph connectivity)
Actions (5)
tracecat_list_actions — List all actions in a workflow
tracecat_create_action — Create a new action (type + title, requires workflow_id)
tracecat_get_action — Get action details by ID
tracecat_update_action — Update title, description, inputs, control_flow
tracecat_delete_action — Delete an action
Executions (5)
tracecat_run_workflow — Execute a workflow with optional payload
tracecat_list_executions — List executions (optionally filter by workflow)
tracecat_get_execution — Get full execution details with events
tracecat_get_execution_compact — Get compact execution (action-level status, inputs, results, errors)
tracecat_cancel_execution — Cancel a running execution
Cases (7)
tracecat_list_cases — List cases (optionally filter by status)
tracecat_create_case — Create a case linked to a workflow
tracecat_get_case — Get a specific case by ID
tracecat_update_case — Update case status, priority, etc.
tracecat_delete_case — Delete a case permanently
tracecat_add_comment — Add a comment to a case
tracecat_list_comments — List all comments on a case
Secrets (5)
tracecat_search_secrets — Search secrets by name
tracecat_create_secret — Create a new secret with key-value pairs
tracecat_get_secret — Get secret metadata by name
tracecat_update_secret — Update secret keys or description
tracecat_delete_secret — Delete a secret permanently
Tables (5)
tracecat_list_tables — List all tables
tracecat_create_table — Create a new table
tracecat_get_table — Get table details by ID (includes columns)
tracecat_update_table — Update table name or description
tracecat_delete_table — Delete a table
Table Columns (2)
tracecat_create_column — Create a column (types: TEXT, INTEGER, NUMERIC, DATE, BOOLEAN, TIMESTAMP, TIMESTAMPTZ, JSONB, UUID, SELECT, MULTI_SELECT)
tracecat_delete_column — Delete a column
Table Rows (6)
tracecat_list_rows — List rows with optional pagination
tracecat_get_row — Get a specific row by ID
tracecat_insert_row — Insert a new row
tracecat_update_row — Update an existing row
tracecat_delete_row — Delete a row
tracecat_batch_insert_rows — Insert multiple rows at once
Schedules (5)
tracecat_list_schedules — List schedules (optionally filter by workflow)
tracecat_create_schedule — Create a cron or interval schedule for a workflow
tracecat_get_schedule — Get schedule details
tracecat_update_schedule — Update cron, interval, status, or inputs
tracecat_delete_schedule — Delete a schedule
Webhooks (1)
tracecat_create_webhook_key — Generate/rotate a webhook API key
Graph (5)
tracecat_get_graph — Get workflow graph (nodes, edges, positions, version)
tracecat_add_edges — Add connections between actions (source_type: 'trigger' or 'udf')
tracecat_delete_edges — Remove connections between actions
tracecat_move_nodes — Reposition action nodes (recommended: trigger at x=500,y=0, 160px vertical spacing)
tracecat_update_trigger_position — Reposition the trigger node
Documentation (1)
tracecat_docs — Get inline documentation (topics: action_types, expressions, functions, control_flow, common_mistakes)
Recommended Operation Order
Creating a new workflow from scratch
tracecat_health_check — Verify connectivity
tracecat_list_workflows — Check existing workflows
tracecat_create_workflow — Create the workflow
tracecat_create_action — Add actions one by one
tracecat_update_action — Configure inputs and control flow for each action
tracecat_add_edges — Connect trigger → actions → actions (use source_type 'trigger' for first edge)
tracecat_move_nodes — Position all nodes (trigger at 500,0; first action at 500,300; 160px spacing)
tracecat_validate_workflow — Check for errors before deploying
tracecat_deploy_workflow — Deploy to make it active
tracecat_run_workflow — Test execution
tracecat_get_execution_compact — Check results
Investigating an incident
tracecat_list_cases with status filter
tracecat_get_case — Get full case details
tracecat_update_case — Set to in_progress
tracecat_add_comment — Document findings
tracecat_run_workflow — Trigger remediation workflows
tracecat_update_case — Set to resolved
Checking execution results
tracecat_list_executions — Find the execution
tracecat_get_execution_compact — Quick triage (action status + errors)
tracecat_get_execution — Deep investigation (full event history)
Setting up a scheduled workflow
- Create and deploy the workflow first
tracecat_create_schedule — Set cron or interval
tracecat_list_schedules — Verify it's active
Working with tables
tracecat_create_table — Create the table
tracecat_insert_row / tracecat_batch_insert_rows — Add data
tracecat_list_rows — Query data
tracecat_update_row — Modify entries
Graph API — Node Positioning
Use the Graph tools (tracecat_get_graph, tracecat_add_edges, tracecat_delete_edges, tracecat_move_nodes, tracecat_update_trigger_position) to manage node connections and positions. When creating actions, nodes default to (0, 0) and overlap. You MUST reposition nodes after creating/wiring them.
API Endpoint
PATCH /api/workflows/{workflow_id}/graph?workspace_id={workspace_id}
Requires cookie-based auth (login via POST /auth/login first), NOT service key.
move_nodes Operation (validated format)
{
"base_version": <current_graph_version>,
"operations": [
{
"type": "move_nodes",
"payload": {
"positions": [
{"action_id": "<uuid>", "x": 250, "y": 200},
{"action_id": "<uuid>", "x": 250, "y": 400}
]
}
}
]
}
CRITICAL format rules:
- Field is
action_id (NOT node_id, NOT id)
- Coordinates
x and y are flat at root level (NOT nested in position: {x, y})
positions is a list (NOT a dict)
base_version must match the current graph version (get it with GET on the graph endpoint)
Other Graph Operations
| Operation |
Payload fields |
add_edge |
source_id, source_type ("trigger" or "udf"), target_id |
delete_edge |
source_id, source_type, target_id |
update_node |
action_id, plus fields to update |
move_nodes |
positions: list of {action_id, x, y} |
update_trigger_position |
x, y |
update_viewport |
x, y, zoom |
Node Layout Best Practices
Spacing rules (validated in Tracecat UI):
- Vertical spacing between levels: 200px minimum — Nodes are ~100px tall. Less than 200px causes overlap.
- Horizontal spacing between siblings: 350px minimum — Nodes are ~250px wide. Less than 350px causes overlap for case/action nodes with long titles.
- Branch offset: 250-300px from center axis — When a node branches (e.g. if/else), offset children left and right from parent's x.
Layout algorithm for common patterns:
Linear chain (A → B → C): Same x, increment y by 200
A (250, 0) → B (250, 200) → C (250, 400)
Binary branch (A → B | C): Parent centered, children offset ±300
A (250, 600)
B (0, 850) C (600, 850)
Triple fan-out (A → B | C | D): Parent centered, children at -350, 0, +350
A (0, 1000)
B (-350, 1250) C (0, 1250) D (350, 1250)
Full workflow example (trigger → chain → branch → fan-out):
Trigger (250, 0)
Step 1 (250, 250)
Step 2 (250, 450)
Decision (250, 650)
Left branch (0, 880) Right branch (600, 880)
Sub-step (0, 1100)
Case A (-350, 1350) Case B (0, 1350) Case C (350, 1350)
Key principles:
- Keep the main chain centered on x=250 (aligns with default trigger position)
- Use consistent vertical gaps (200-230px for tight layouts, 250px for readability)
- For branches, offset symmetrically from the parent's x coordinate
- For fan-outs of 3+ nodes, calculate:
parent_x + (i - (n-1)/2) * 350 for each child i
Tips
- Workflow IDs are UUIDs like
wf:abc123...
- Always deploy a workflow after making changes
- Always reposition nodes after creating them — MCP-created nodes default to (0,0)
- Executions are asynchronous; use
tracecat_get_execution_compact for quick status checks
- The workspace ID is auto-detected on server start
- Use
tracecat_create_action with type matching the action registry (e.g. core.transform.reshape, core.http_request, core.script.run_python)
tracecat_update_action accepts inputs as a YAML string (not JSON object) and control_flow (run_if, for_each, retry_policy)
- Actions require
workflow_id on every operation (get, update, delete)
- Tables require columns to be created before inserting rows (use
tracecat_create_column)
- Batch insert rows expects flat objects (keys = column names), not wrapped in
data
- Expression operators: use
&& and || (NOT and/or)
- Use
tracecat_validate_workflow before deploying to catch common errors early
- Use
tracecat_docs to get inline reference on action types, expressions, functions, or common mistakes
Related Skills
- tracecat-workflow-patterns — Design patterns and templates for SOAR workflows
- tracecat-yaml-syntax — YAML syntax reference for workflow definitions
- tracecat-integration-expert — Configure external tool integrations
- tracecat-case-management — Case lifecycle and incident tracking
- tracecat-validation-debug — Debug failed executions and troubleshoot errors
- tracecat-code-python — Write Python scripts for run_python actions
Reference Files
1---2name: tracecat-mcp-tools-expert3description: Activate when users interact with Tracecat MCP tools, create workflows, manage cases, or need help with Tracecat API operations4---56# Tracecat MCP Tools Expert78You are an expert at using Tracecat MCP tools to manage workflows, cases, executions, and secrets in a Tracecat SOAR platform.910## Critical Rule: Always Use Native Action Types1112When creating actions with `tracecat_create_action`, ALWAYS use native/official action types before falling back to generic ones:13- Cases → `core.cases.create_case`, `core.cases.update_case`, `core.cases.create_comment` (NEVER reshape)14- Integrations → `tools.virustotal.*`, `tools.crowdstrike.*`, `tools.splunk.*`, `tools.okta.*`, `tools.microsoft_defender.*`, `tools.sharepoint.*` (NEVER core.http_request when native exists)15- `core.http_request` → ONLY when no native integration exists16- `core.transform.reshape` → ONLY for data transformation, never for CRUD17- `core.script.run_python` → ONLY when logic can't be expressed otherwise1819## Available Tools (51 total)2021### System (1)22- `tracecat_health_check` — Always start here to verify Tracecat is running2324### Workflows (8)25- `tracecat_list_workflows` — List all workflows26- `tracecat_create_workflow` — Create a new workflow (title + description)27- `tracecat_get_workflow` — Get workflow details by ID28- `tracecat_update_workflow` — Update title, description, or status29- `tracecat_deploy_workflow` — Commit/deploy a workflow to make it active30- `tracecat_export_workflow` — Export workflow YAML definition31- `tracecat_delete_workflow` — Delete a workflow permanently32- `tracecat_validate_workflow` — Validate workflow without deploying (checks actions, inputs, expressions, graph connectivity)3334### Actions (5)35- `tracecat_list_actions` — List all actions in a workflow36- `tracecat_create_action` — Create a new action (type + title, requires workflow_id)37- `tracecat_get_action` — Get action details by ID38- `tracecat_update_action` — Update title, description, inputs, control_flow39- `tracecat_delete_action` — Delete an action4041### Executions (5)42- `tracecat_run_workflow` — Execute a workflow with optional payload43- `tracecat_list_executions` — List executions (optionally filter by workflow)44- `tracecat_get_execution` — Get full execution details with events45- `tracecat_get_execution_compact` — Get compact execution (action-level status, inputs, results, errors)46- `tracecat_cancel_execution` — Cancel a running execution4748### Cases (7)49- `tracecat_list_cases` — List cases (optionally filter by status)50- `tracecat_create_case` — Create a case linked to a workflow51- `tracecat_get_case` — Get a specific case by ID52- `tracecat_update_case` — Update case status, priority, etc.53- `tracecat_delete_case` — Delete a case permanently54- `tracecat_add_comment` — Add a comment to a case55- `tracecat_list_comments` — List all comments on a case5657### Secrets (5)58- `tracecat_search_secrets` — Search secrets by name59- `tracecat_create_secret` — Create a new secret with key-value pairs60- `tracecat_get_secret` — Get secret metadata by name61- `tracecat_update_secret` — Update secret keys or description62- `tracecat_delete_secret` — Delete a secret permanently6364### Tables (5)65- `tracecat_list_tables` — List all tables66- `tracecat_create_table` — Create a new table67- `tracecat_get_table` — Get table details by ID (includes columns)68- `tracecat_update_table` — Update table name or description69- `tracecat_delete_table` — Delete a table7071### Table Columns (2)72- `tracecat_create_column` — Create a column (types: TEXT, INTEGER, NUMERIC, DATE, BOOLEAN, TIMESTAMP, TIMESTAMPTZ, JSONB, UUID, SELECT, MULTI_SELECT)73- `tracecat_delete_column` — Delete a column7475### Table Rows (6)76- `tracecat_list_rows` — List rows with optional pagination77- `tracecat_get_row` — Get a specific row by ID78- `tracecat_insert_row` — Insert a new row79- `tracecat_update_row` — Update an existing row80- `tracecat_delete_row` — Delete a row81- `tracecat_batch_insert_rows` — Insert multiple rows at once8283### Schedules (5)84- `tracecat_list_schedules` — List schedules (optionally filter by workflow)85- `tracecat_create_schedule` — Create a cron or interval schedule for a workflow86- `tracecat_get_schedule` — Get schedule details87- `tracecat_update_schedule` — Update cron, interval, status, or inputs88- `tracecat_delete_schedule` — Delete a schedule8990### Webhooks (1)91- `tracecat_create_webhook_key` — Generate/rotate a webhook API key9293### Graph (5)94- `tracecat_get_graph` — Get workflow graph (nodes, edges, positions, version)95- `tracecat_add_edges` — Add connections between actions (source_type: 'trigger' or 'udf')96- `tracecat_delete_edges` — Remove connections between actions97- `tracecat_move_nodes` — Reposition action nodes (recommended: trigger at x=500,y=0, 160px vertical spacing)98- `tracecat_update_trigger_position` — Reposition the trigger node99100### Documentation (1)101- `tracecat_docs` — Get inline documentation (topics: action_types, expressions, functions, control_flow, common_mistakes)102103## Recommended Operation Order104105### Creating a new workflow from scratch1061. `tracecat_health_check` — Verify connectivity1072. `tracecat_list_workflows` — Check existing workflows1083. `tracecat_create_workflow` — Create the workflow1094. `tracecat_create_action` — Add actions one by one1105. `tracecat_update_action` — Configure inputs and control flow for each action1116. `tracecat_add_edges` — Connect trigger → actions → actions (use source_type 'trigger' for first edge)1127. `tracecat_move_nodes` — Position all nodes (trigger at 500,0; first action at 500,300; 160px spacing)1138. `tracecat_validate_workflow` — Check for errors before deploying1149. `tracecat_deploy_workflow` — Deploy to make it active11510. `tracecat_run_workflow` — Test execution11611. `tracecat_get_execution_compact` — Check results117118### Investigating an incident1191. `tracecat_list_cases` with status filter1202. `tracecat_get_case` — Get full case details1213. `tracecat_update_case` — Set to `in_progress`1224. `tracecat_add_comment` — Document findings1235. `tracecat_run_workflow` — Trigger remediation workflows1246. `tracecat_update_case` — Set to `resolved`125126### Checking execution results1271. `tracecat_list_executions` — Find the execution1282. `tracecat_get_execution_compact` — Quick triage (action status + errors)1293. `tracecat_get_execution` — Deep investigation (full event history)130131### Setting up a scheduled workflow1321. Create and deploy the workflow first1332. `tracecat_create_schedule` — Set cron or interval1343. `tracecat_list_schedules` — Verify it's active135136### Working with tables1371. `tracecat_create_table` — Create the table1382. `tracecat_insert_row` / `tracecat_batch_insert_rows` — Add data1393. `tracecat_list_rows` — Query data1404. `tracecat_update_row` — Modify entries141142## Graph API — Node Positioning143144Use the **Graph tools** (`tracecat_get_graph`, `tracecat_add_edges`, `tracecat_delete_edges`, `tracecat_move_nodes`, `tracecat_update_trigger_position`) to manage node connections and positions. When creating actions, nodes default to `(0, 0)` and overlap. **You MUST reposition nodes** after creating/wiring them.145146### API Endpoint147```148PATCH /api/workflows/{workflow_id}/graph?workspace_id={workspace_id}149```150Requires **cookie-based auth** (login via `POST /auth/login` first), NOT service key.151152### move_nodes Operation (validated format)153```json154{155 "base_version": <current_graph_version>,156 "operations": [157 {158 "type": "move_nodes",159 "payload": {160 "positions": [161 {"action_id": "<uuid>", "x": 250, "y": 200},162 {"action_id": "<uuid>", "x": 250, "y": 400}163 ]164 }165 }166 ]167}168```169170**CRITICAL format rules:**171- Field is `action_id` (NOT `node_id`, NOT `id`)172- Coordinates `x` and `y` are **flat** at root level (NOT nested in `position: {x, y}`)173- `positions` is a **list** (NOT a dict)174- `base_version` must match the current graph version (get it with GET on the graph endpoint)175176### Other Graph Operations177| Operation | Payload fields |178|---|---|179| `add_edge` | `source_id`, `source_type` ("trigger" or "udf"), `target_id` |180| `delete_edge` | `source_id`, `source_type`, `target_id` |181| `update_node` | `action_id`, plus fields to update |182| `move_nodes` | `positions`: list of `{action_id, x, y}` |183| `update_trigger_position` | `x`, `y` |184| `update_viewport` | `x`, `y`, `zoom` |185186### Node Layout Best Practices187188**Spacing rules (validated in Tracecat UI):**189- **Vertical spacing between levels: 200px minimum** — Nodes are ~100px tall. Less than 200px causes overlap.190- **Horizontal spacing between siblings: 350px minimum** — Nodes are ~250px wide. Less than 350px causes overlap for case/action nodes with long titles.191- **Branch offset: 250-300px** from center axis — When a node branches (e.g. if/else), offset children left and right from parent's x.192193**Layout algorithm for common patterns:**1941951. **Linear chain** (A → B → C): Same x, increment y by 200196 ```197 A (250, 0) → B (250, 200) → C (250, 400)198 ```1992002. **Binary branch** (A → B | C): Parent centered, children offset ±300201 ```202 A (250, 600)203 B (0, 850) C (600, 850)204 ```2052063. **Triple fan-out** (A → B | C | D): Parent centered, children at -350, 0, +350207 ```208 A (0, 1000)209 B (-350, 1250) C (0, 1250) D (350, 1250)210 ```2112124. **Full workflow example** (trigger → chain → branch → fan-out):213 ```214 Trigger (250, 0)215 Step 1 (250, 250)216 Step 2 (250, 450)217 Decision (250, 650)218 Left branch (0, 880) Right branch (600, 880)219 Sub-step (0, 1100)220 Case A (-350, 1350) Case B (0, 1350) Case C (350, 1350)221 ```222223**Key principles:**224- Keep the main chain centered on x=250 (aligns with default trigger position)225- Use consistent vertical gaps (200-230px for tight layouts, 250px for readability)226- For branches, offset symmetrically from the parent's x coordinate227- For fan-outs of 3+ nodes, calculate: `parent_x + (i - (n-1)/2) * 350` for each child i228229## Tips230- Workflow IDs are UUIDs like `wf:abc123...`231- Always deploy a workflow after making changes232- **Always reposition nodes after creating them** — MCP-created nodes default to (0,0)233- Executions are asynchronous; use `tracecat_get_execution_compact` for quick status checks234- The workspace ID is auto-detected on server start235- Use `tracecat_create_action` with `type` matching the action registry (e.g. `core.transform.reshape`, `core.http_request`, `core.script.run_python`)236- `tracecat_update_action` accepts `inputs` as a **YAML string** (not JSON object) and `control_flow` (run_if, for_each, retry_policy)237- Actions require `workflow_id` on every operation (get, update, delete)238- Tables require columns to be created before inserting rows (use `tracecat_create_column`)239- Batch insert rows expects flat objects (keys = column names), not wrapped in `data`240- Expression operators: use `&&` and `||` (NOT `and`/`or`)241- Use `tracecat_validate_workflow` before deploying to catch common errors early242- Use `tracecat_docs` to get inline reference on action types, expressions, functions, or common mistakes243244## Related Skills245- **tracecat-workflow-patterns** — Design patterns and templates for SOAR workflows246- **tracecat-yaml-syntax** — YAML syntax reference for workflow definitions247- **tracecat-integration-expert** — Configure external tool integrations248- **tracecat-case-management** — Case lifecycle and incident tracking249- **tracecat-validation-debug** — Debug failed executions and troubleshoot errors250- **tracecat-code-python** — Write Python scripts for run_python actions251252## Reference Files253- [Common Mistakes](./COMMON_MISTAKES.md)254- [Examples](./EXAMPLES.md)255- [README](./README.md)