{"workflow":{"id":14347,"name":"Analyze Alertmanager incidents and post diagnostic reports to Mattermost","views":20,"recentViews":1,"totalViews":20,"createdAt":"2026-03-26T06:43:03.646Z","description":"# Overview\nThis workflow helps automatically analyze alerts occurring in the infrastructure and suggest solutions even before the on-duty engineer sees the alert.\n## How it work\n1. Workflow receives alert from Alertmanager via Webhook.\n1. The variables required for operation are set\n1. Preparing a prompt for the agent containing only the data necessary for analysis\n1. Optional step to deduplicating duplicate alerts\n1. Getting the trigger condition\n1. The agent performs diagnostics as described in the system prompt. During operation, it can access various systems via MCP to obtain additional information.\n1. Search for a message in a Slack channel corresponding to a processed alert\n1. Send report to Slack thread.\n## How to use\n1. Generate webhook credentials and use it in Alertmanager\n2. Add Alert fingerprint into Slack message template\n3. Set variables it SetVars node\n4. Add your own Rules and recomendations to system promt\n5 Run mcp servers\n6. Choose Slack channel with alerts","workflow":{"id":"iaQBJNGp3ERioXWn","meta":{"instanceId":"692a4531fef66763dc9fefd13abab9be42c96948d0e43fd67b83edc1d09e2ea4"},"name":"AlertAssistant","tags":[{"id":"hyB5cI3OJX7DXB43","name":"public","createdAt":"2026-04-05T04:05:10.508Z","updatedAt":"2026-04-05T04:05:10.508Z"}],"nodes":[{"id":"26b0cac2-157a-4bac-b77e-26d3ab644adc","name":"AI Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[1008,448],"parameters":{"options":{"maxIterations":20,"systemMessage":"=You are an senior SRE assistant for a game studio infrastructure. Your main goal is to assist in the investigation of the incident indicated by the Alert.\n\n## Kubernetes Tools\nUse these to inspect cluster state: pods, deployments, ingress, services, logs, events, etc\n- Read container logs for error investigation\n- Use pods_log for the same pod no more than twice!\n- List resources across namespaces\n- Main workload is in namespace: {{ $('SetVars').first().json.mainNS }}\n\n\n## Grafana Tools  \nUse these to query metrics, logs, dashboards:\n- **Prometheus**: query_prometheus for PromQL queries (CPU, memory, request rates, error rates). Datasource uid: {{ $('SetVars').first().json.prometheus_uid }}\n- **Loki**: query_loki_logs for LogQL log searches. Datasource uid: {{ $('SetVars').first().json.loki_uid }}\n- **Dashboards**: search_dashboards, get_dashboard_summary to find relevant dashboards\n\n## Vector store tools\n- Read infromation about infratructure, service commuication, trafic balancing, useful tags and labels. Naming convention\n\n## Digitalocean tools:\n- Use if you need information about App Platform, Droplets, Kubernetes(DOKS), Networking\n\n## Github tools\n- Use this to find out if releases have been executed.\n- Search only within the organization {{ $('SetVars').first().json.GITHUB_ORG_NAME }}.\n\n## Critical Rules for Tool Usage\n1. **Never retry a failed tool call more than once.** If a Kubernetes resource (pod, deployment, node) is not found on the first attempt, it likely no longer exists. Do NOT retry the same query.\n2. **If any tool returns an error or empty result**, acknowledge it and move on.\n3.  Don't make any changes to anything through mcp.\n4.  Avoid queries that return all elements; filter and grep.\n\n## Important rules\n- Don't ask anything, analyze it yourself\n\n## Investigation flow recommendations\n- Pay attention to the alert labels. They will help you understand what the problem is and where it is.\n- Study the alert description and labels.\n- Determine the subject area of ​​the message. What is it related to, for example, a database, a message queue, a pod with a backend, or errors on an ingress controller.\n- If you need details about the infrastructure organization, endpoints, component names, and how they are related, use Qdrant vectore store \n- Try executing the request that triggered the alert.\n- Check the status of the service affected by the alert.\n- Check the resource consumption of this service.\n- Find out if releases have been executed\n- Examine the service logs.\n\n## Output format\n### What happened\nDescription of what happened and what happened to what\n\n### Event timeline\nDescription of events preceding the alert for more than 10 minutes\n\n### Root cause\nNo more than two root cause suggestions\n\n### Troubleshooting tips\nStep-by-step description of actions for each root cause"}},"typeVersion":3.1},{"id":"0ca3947b-27d1-4981-be0c-65624e74fa04","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[896,592],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-5.3-codex","cachedResultName":"gpt-5.3-codex"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"YqUclNJ5ZMSQShmK","name":"OpenAi account"}},"typeVersion":1.3},{"id":"db712c7f-f0e9-48ad-80ed-b76d4f3cfd38","name":"Qdrant Vector Store","type":"@n8n/n8n-nodes-langchain.vectorStoreQdrant","position":[1312,944],"parameters":{"mode":"retrieve-as-tool","options":{},"toolDescription":"Use this tool to fetch knowledge from the database. ","qdrantCollection":{"__rl":true,"mode":"list","value":"<your-qdrant-collection-name>","cachedResultName":"<your-qdrant-collection-name>"}},"credentials":{"qdrantApi":{"id":"xjNBLWiBkrXqQZdg","name":"QdrantApi account"}},"typeVersion":1.3},{"id":"d1d8a2f3-1fbc-47c3-bd78-97306e1dc595","name":"Embeddings Google Gemini","type":"@n8n/n8n-nodes-langchain.embeddingsGoogleGemini","position":[1312,1152],"parameters":{"modelName":"models/gemini-embedding-2-preview"},"credentials":{"googlePalmApi":{"id":"Dpf9LrCQzAsbokWH","name":"Google Gemini(PaLM) Api account"}},"typeVersion":1},{"id":"b75b9e64-b259-40fd-b5d8-c4219bc74100","name":"K8S mcp","type":"@n8n/n8n-nodes-langchain.mcpClientTool","position":[1040,944],"parameters":{"include":"selected","options":{},"endpointUrl":"http://mcp-kubernetes:8089/mcp","includeTools":["configuration_view","events_list","namespaces_list","nodes_log","nodes_stats_summary","nodes_top","pods_get","pods_list","pods_list_in_namespace","pods_log","pods_top","resources_get","resources_list"]},"typeVersion":1.2},{"id":"3b1d8a04-1ac0-4546-9721-89057b694f1f","name":"Grafana mcp","type":"@n8n/n8n-nodes-langchain.mcpClientTool","position":[1184,944],"parameters":{"include":"selected","options":{"timeout":60000},"endpointUrl":"http://mcp-grafana:8000/mcp","includeTools":["generate_deeplink","get_alert_rule_by_uid","get_annotations","get_dashboard_by_uid","get_dashboard_panel_queries","get_dashboard_property","get_dashboard_summary","get_datasource_by_name","get_datasource_by_uid","get_panel_image","get_sift_analysis","get_sift_investigation","list_alert_rules","list_loki_label_names","list_loki_label_values","list_prometheus_label_names","list_prometheus_label_values","list_prometheus_metric_metadata","list_prometheus_metric_names","query_loki_logs","query_loki_patterns","query_loki_stats","query_prometheus","query_prometheus_histogram","search_dashboards"]},"typeVersion":1.2},{"id":"cdaf5a8a-7d73-4eb5-a1bf-38c2c0edf4c0","name":"Digitalocean MCP","type":"@n8n/n8n-nodes-langchain.mcpClientTool","position":[896,944],"parameters":{"include":"selected","options":{"timeout":60000},"endpointUrl":"http://mcp-digitalocean:8090/mcp","includeTools":["apps-get-deployment-status","apps-get-info","apps-get-logs","apps-list","byoip-prefix-get","byoip-prefix-list","byoip-prefix-resources-get","certificate-get","certificate-list","doks-get-cluster","doks-get-cluster-upgrades","doks-get-nodepool","doks-list-options","doks-list-nodepools","doks-list-clusters","domain-get","domain-list","domain-record-list","domain-record-get","droplet-get","droplet-list","firewall-get","firewall-list","image-action-get","image-get","image-list","lb-get","lb-list","region-list","reserved-ip-list","reserved-ip-get","size-list","vpc-list","vpc-get","vpc-list-members","vpc-peering-get","vpc-peering-list"]},"typeVersion":1.2},{"id":"9cdbd9bf-fc42-4f48-bcbb-7eaea24aba31","name":"Github MCP","type":"@n8n/n8n-nodes-langchain.mcpClientTool","position":[768,944],"parameters":{"include":"selected","options":{},"endpointUrl":"=http://mcp-github:8091/mcp","includeTools":["search_repositories","get_file_contents","list_commits","list_issues","search_issues","get_issue","get_pull_request","list_pull_requests","get_pull_request_files","get_pull_request_status","get_pull_request_comments","get_pull_request_reviews"]},"typeVersion":1.2},{"id":"f3671b7e-e797-44c3-a22b-386dea7c881f","name":"Receive alerts","type":"n8n-nodes-base.webhook","position":[-320,448],"webhookId":"b90b84ed-b400-4074-87ff-95d4538ae8d4","parameters":{"path":"<your-webhook-path>","options":{},"httpMethod":"POST","authentication":"basicAuth"},"credentials":{"httpBasicAuth":{"id":"pQiNrwWXgxcaxR7H","name":"alertmanager-webhook"}},"typeVersion":2.1},{"id":"e46d4de0-8e99-49fc-ba66-740f84e30464","name":"GetAlertMessages","type":"n8n-nodes-base.httpRequest","position":[1472,448],"parameters":{"url":"=https://{{ $('SetVars').first().json.MATTERMOST_HOST }}/api/v4/channels/{{ $('SetVars').first().json.MATTERMOST_CHANNEL_ID }}/posts","options":{},"sendQuery":true,"authentication":"predefinedCredentialType","queryParameters":{"parameters":[{"name":"per_page","value":"10"}]},"nodeCredentialType":"mattermostApi"},"credentials":{"mattermostApi":{"id":"VuYowkkUoLxihLrh","name":"Mattermost account"}},"typeVersion":4.4},{"id":"bb6003d5-94c0-4983-be51-226aa077f699","name":"Post in thread","type":"n8n-nodes-base.mattermost","position":[1824,448],"parameters":{"message":"={{ $('AI Agent').item }}","channelId":"={{ $('SetVars').first().json.MATTERMOST_CHANNEL_ID }}","attachments":[],"otherOptions":{"root_id":"={{ $json.thread_root_id }}"}},"credentials":{"mattermostApi":{"id":"VuYowkkUoLxihLrh","name":"Mattermost account"}},"typeVersion":1},{"id":"34a40436-a431-4659-8d53-29ec618f2e94","name":"PreProcessAlerts","type":"n8n-nodes-base.code","position":[16,448],"parameters":{"jsCode":"const webhookData = $input.first().json.body || $input.first().json;\n\nconst SKIP_LABELS = new Set([\n  \"alertname\", \"endpoint\", \"instance\", \"job\",\n  \"metrics_path\", \"prometheus\", \"project\", \"env\",\n]);\n\nconst LABEL_RENAME = {\n  \"grafana_board\": \"Grafana Dashboard\",\n  \"persistentvolumeclaim\": \"PVC\",\n};\n\nconst alerts = webhookData.alerts || [];\nconst results = [];\n\nfor (const alert of alerts) {\n  const status = alert.status || \"unknown\";\n  const labels = alert.labels || {};\n  const annotations = alert.annotations || {};\n  const alertname = labels.alertname || \"UnknownAlert\";\n  const fingerprint = alert.fingerprint || \"\";\n  const startsAt = alert.startsAt || \"\";\n  const generatorURL = alert.generatorURL || \"\";\n\n  const lines = [\n    `Analyze this ${status.toUpperCase()} alert.`,\n    `Alertname: ${alertname}`,\n    `Severity: ${labels.severity || \"unknown\"}`,\n  ];\n\n  for (const key of Object.keys(labels).sort()) {\n    if (SKIP_LABELS.has(key) || key === \"severity\") continue;\n    const displayKey = LABEL_RENAME[key] || key;\n    lines.push(`${displayKey}: ${labels[key]}`);\n  }\n\n  if (startsAt) lines.push(`Started At: ${startsAt}`);\n  if (generatorURL) lines.push(`Alert Source: ${generatorURL}`);\n\n  for (const key of Object.keys(annotations).sort()) {\n    const displayKey = key.replace(/_/g, \" \").replace(/\\b\\w/g, c => c.toUpperCase());\n    lines.push(`${displayKey}: ${annotations[key]}`);\n  }\n\n  const chatInput = lines.join(\"\\n\");\n  const sessionId = fingerprint\n    ? `alert-${fingerprint}`\n    : `alert-${alertname}-${labels.namespace || \"\"}-${labels.service || \"\"}`;\n\n  results.push({\n    json: {\n      action: \"sendMessage\",\n      chatInput,\n      sessionId,\n      alert_id: fingerprint,\n      alertname,\n    },\n  });\n}\n\nreturn results;"},"typeVersion":2},{"id":"2f51979a-16e3-475b-9cfb-58638745abbf","name":"FindAlert","type":"n8n-nodes-base.code","position":[1648,448],"parameters":{"jsCode":"let agentOutput = \"\";\nlet chatInput = \"\";\ntry {\n  const agentData = $('AI Agent').first().json;\n  agentOutput = agentData.output || \"\";\n  chatInput = agentData.chatInput || \"\";\n} catch (e) {\n  // AI Agent node not executed in this run\n}\n\n// Get Mattermost posts from GetAlertMessages (direct input)\nconst postsData = $input.first().json;\nconst order = postsData.order || [];\nconst posts = postsData.posts || {};\n\n// Extract alertname from chatInput\nlet alertname = \"\";\nfor (const line of chatInput.split(\"\\n\")) {\n  if (line.startsWith(\"Alertname:\")) {\n    alertname = line.split(\":\").slice(1).join(\":\").trim();\n    break;\n  }\n}\n\n// Search for existing Alertmanager post with this alertname\nlet thread_root_id = \"\";\n\nfor (const postId of order) {\n  const post = posts[postId] || {};\n  const props = post.props || {};\n  const attachments = props.attachments || [];\n\n  for (const att of attachments) {\n    const title = att.title || \"\";\n    // Match alertname in attachment title, e.g. \"[FIRING:1] KubeJobFailed\"\n    if (alertname && title.includes(alertname)) {\n      thread_root_id = post.root_id || postId;\n      break;\n    }\n  }\n  if (thread_root_id) break;\n}\n\nreturn [{\n  json: {\n    thread_root_id,\n    message: agentOutput,\n    alertname,\n  }\n}];"},"typeVersion":2},{"id":"d57d5093-9007-40b8-ba7a-e3eba33d3ffe","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-368,352],"parameters":{"width":740,"height":352,"content":"# Input chain\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nAdd your Mattermost server address and channel id into SetVars"},"typeVersion":1},{"id":"4c05e834-8ee9-4536-bc1b-370f22678fbd","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[1408,352],"parameters":{"width":640,"height":352,"content":"# Output chain"},"typeVersion":1},{"id":"5a8df1b8-57f6-46d1-806a-4f063cf00bc1","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[848,352],"parameters":{"color":6,"width":528,"height":352,"content":"# Alert analysis"},"typeVersion":1},{"id":"1929829e-b398-4462-8da0-5e0303879ef9","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[736,880],"parameters":{"color":4,"width":848,"height":448,"content":"\n\n\n\n\n\n\n\n\n\n\n\n\n# MCP servers\nAdd correct URLs for remote MCPs\nUse following mcp:\n* [grafana-mcp](https://github.com/grafana/mcp-grafana)\n* [kubernetes-mcp-server](https://github.com/containers/kubernetes-mcp-server)\n* [digitalocean-mcp](https://github.com/digitalocean/digitalocean-mcp)\n* [github-mcp](https://github.com/github/github-mcp-server)"},"typeVersion":1},{"id":"58c1322a-dfbb-420e-a022-3177799ef081","name":"SetVars","type":"n8n-nodes-base.set","notes":"To get channel id\ncurl --request GET \\\n  --url \"https://<MM HOST>/api/v4/teams/<teamd_id>/channels/name/<channel-name> \\\n  --header 'Accept: application/json' \\\n  --header 'Authorization: Bearer '","position":[-144,448],"parameters":{"options":{},"assignments":{"assignments":[{"id":"b5fe345b-04b2-4eef-a4a0-100ed63dc9de","name":"MATTERMOST_HOST","type":"string","value":"mattermost.example.com"},{"id":"7b6f0211-00dc-4e0a-a6af-108c55c521de","name":"MATTERMOST_CHANNEL_ID","type":"string","value":"dr87mpsdmbfrbxeag7i11acuyw"},{"id":"f8c9da79-3e04-4e9c-b5ad-28260a1cd27f","name":"prometheus_uid","type":"string","value":"234543ijpo34ij"},{"id":"88c7c127-5219-4b12-8f5c-5c951896218c","name":"loki_uid","type":"string","value":"r235jr24u5ohgke"},{"id":"cbed6664-a919-4f03-b726-c2891b165c0d","name":"mainNS","type":"string","value":"myns"},{"id":"8eccc026-05c0-4972-8215-7b2214a6b058","name":"PROMETHEUS_URL","type":"string","value":"https://prometheus-host"},{"id":"b14a6741-856b-4ce8-97ce-1d1762155a58","name":"GITHUB_ORG_NAME","type":"string","value":"yourorg"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"b142abb3-e2df-431a-be2a-bc42a313b59b","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-368,752],"parameters":{"color":5,"width":1072,"height":752,"content":"# Overview\nWorkflow receives alert from Alertmanager, analize it and send report to Mattermost\n## Requirements:\n1. OpenAI  or Anthropic API key\n2. Mattermost API key\n3. Google Gemini API key\n4. Webhook receiver in Alertmanager\n5. Webhook token\n6. Qdrant with token\n7. Github token\n8. Digitalocean token\n## How it work\n1. Workflow receives alert from Alertmanager via Webhook.\n1. The variables required for operation are set\n1. Preparing a prompt for the agent containing only the data necessary for analysis\n1. Optional step to deduplicating duplicate alerts\n1. Getting the trigger condition\n1. The agent performs diagnostics as described in the system prompt. During operation, it can access various systems via MCP to obtain additional information.\n1. Search for a message in a Mattermost channel corresponding to a processed alert\n1. Send report to Mattermost thread.\n## How to use\n1. Upload to Vector store your infrastructure description\n1. Generate webhook credentials and use it in Alertmanager\n1. Add Alert fingerprint into Slack message template\n1. Set variables it SetVars node\n1. Add your own Rules and recomendations to system prompt\n1. Run mcp servers\n1. Choose Mattermost channel with alerts"},"typeVersion":1},{"id":"05a2b15c-47f7-421a-8cff-849e01d2cb92","name":"DeduplicateAlerts","type":"n8n-nodes-base.code","position":[192,448],"parameters":{"jsCode":"const DEDUP_WINDOW_MS = 48 * 60 * 60 * 1000; // 48 hours\nconst now = Date.now();\n\nconst staticData = $getWorkflowStaticData('global');\n\nif (!staticData.alertDedup) {\n  staticData.alertDedup = {};\n}\n\n// Cleanup entries older than dedup window\nfor (const key of Object.keys(staticData.alertDedup)) {\n  if (now - staticData.alertDedup[key] > DEDUP_WINDOW_MS) {\n    delete staticData.alertDedup[key];\n  }\n}\n\n// Build dedup key from alert labels\nconst chatInput = $input.first().json.chatInput || \"\";\n\nconst extractLabel = (label) => {\n  const re = new RegExp(`(?:^|\\\\n)${label}:\\\\s*(.+)`, \"i\");\n  const m = chatInput.match(re);\n  return m ? m[1].trim() : \"\";\n};\n\nconst dedupKey = [\n  extractLabel(\"Alertname\"),\n  extractLabel(\"namespace\"),\n  extractLabel(\"service\"),\n  extractLabel(\"severity\"),\n  extractLabel(\"container\"),\n].join(\"|\").toLowerCase();\n\n// Check if already seen\nif (staticData.alertDedup[dedupKey]) {\n  const minutesAgo = Math.round((now - staticData.alertDedup[dedupKey]) / 60000);\n  console.log(`[Dedup] SKIP: \"${dedupKey}\" seen ${minutesAgo}m ago`);\n  return [];\n}\n\n// New alert — register and pass through\nstaticData.alertDedup[dedupKey] = now;\nconsole.log(`[Dedup] PASS: \"${dedupKey}\" — store size: ${Object.keys(staticData.alertDedup).length}`);\n\nreturn [$input.first()];"},"typeVersion":2},{"id":"dfe76fd9-1977-4b17-995e-59628a2a2969","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[400,352],"parameters":{"color":2,"width":416,"height":352,"content":"## Collect data"},"typeVersion":1},{"id":"1477dea9-dc56-41a5-bbd0-0868d21661db","name":"GetAlertRule","type":"n8n-nodes-base.httpRequest","position":[464,448],"parameters":{"url":"={{ $('SetVars').first().json.PROMETHEUS_URL }}/api/v1/rules","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"rule_name[]","value":"={{ $json.alertname }}"},{"name":"type","value":"alert"}]}},"typeVersion":4.4},{"id":"bae33d42-5c16-45ac-bd24-e5aec1d38740","name":"ExtractRuleQuery","type":"n8n-nodes-base.code","position":[656,448],"parameters":{"jsCode":"const rulesResponse = $input.first().json;\n\n// Get original alert data preserved from DeduplicateAlerts\nconst alertData = $('DeduplicateAlerts').first().json;\nconst alertname = alertData.alertname || \"\";\n\nlet triggerQuery = \"\";\nlet triggerDuration = \"\";\n\ntry {\n  const groups = rulesResponse?.data?.groups || [];\n  for (const group of groups) {\n    const rules = group.rules || [];\n    for (const rule of rules) {\n      // Match by name (should already be filtered by rule_name[] param, but double-check)\n      if (rule.name === alertname || rule.name === alertData.alertname) {\n        triggerQuery = rule.query || \"\";\n        // Duration in seconds (the 'for' clause)\n        if (rule.duration) {\n          triggerDuration = `${rule.duration}s`;\n        }\n        break;\n      }\n    }\n    if (triggerQuery) break;\n  }\n} catch (e) {\n  console.log(`[ExtractRuleQuery] Error parsing rules response: ${e.message}`);\n}\n\n// Build the enriched chatInput with trigger condition\nlet chatInput = alertData.chatInput || \"\";\n\nif (triggerQuery) {\n  chatInput += `\\nTrigger Query (PromQL): ${triggerQuery}`;\n  if (triggerDuration) {\n    chatInput += `\\nTrigger Duration (for): ${triggerDuration}`;\n  }\n} else {\n  console.log(`[ExtractRuleQuery] No rule found for alertname: \"${alertname}\"`);\n}\n\nreturn [{\n  json: {\n    ...alertData,\n    chatInput,\n    triggerQuery,\n    triggerDuration,\n  }\n}];"},"typeVersion":2}],"active":false,"pinData":{},"settings":{"binaryMode":"separate","availableInMCP":false,"executionOrder":"v1"},"versionId":"d1a35bbd-1c9f-4d3d-a37e-cefbe6983b15","connections":{"K8S mcp":{"ai_tool":[[{"node":"AI Agent","type":"ai_tool","index":0}]]},"SetVars":{"main":[[{"node":"PreProcessAlerts","type":"main","index":0}]]},"AI Agent":{"main":[[{"node":"GetAlertMessages","type":"main","index":0}]]},"FindAlert":{"main":[[{"node":"Post in thread","type":"main","index":0}]]},"Github MCP":{"ai_tool":[[{"node":"AI Agent","type":"ai_tool","index":0}]]},"Grafana mcp":{"ai_tool":[[{"node":"AI Agent","type":"ai_tool","index":0}]]},"GetAlertRule":{"main":[[{"node":"ExtractRuleQuery","type":"main","index":0}]]},"Receive alerts":{"main":[[{"node":"SetVars","type":"main","index":0}]]},"Digitalocean MCP":{"ai_tool":[[{"node":"AI Agent","type":"ai_tool","index":0}]]},"ExtractRuleQuery":{"main":[[{"node":"AI Agent","type":"main","index":0}]]},"GetAlertMessages":{"main":[[{"node":"FindAlert","type":"main","index":0}]]},"PreProcessAlerts":{"main":[[{"node":"DeduplicateAlerts","type":"main","index":0}]]},"DeduplicateAlerts":{"main":[[{"node":"GetAlertRule","type":"main","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"AI Agent","type":"ai_languageModel","index":0}]]},"Qdrant Vector Store":{"ai_tool":[[{"node":"AI Agent","type":"ai_tool","index":0}]]},"Embeddings Google Gemini":{"ai_embedding":[[{"node":"Qdrant Vector Store","type":"ai_embedding","index":0}]]}}},"lastUpdatedBy":29,"workflowInfo":{"nodeCount":23,"nodeTypes":{"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":4},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.mattermost":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.httpRequest":{"count":2},"@n8n/n8n-nodes-langchain.agent":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":1},"@n8n/n8n-nodes-langchain.mcpClientTool":{"count":4},"@n8n/n8n-nodes-langchain.vectorStoreQdrant":{"count":1},"@n8n/n8n-nodes-langchain.embeddingsGoogleGemini":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Sergei Byvshev","username":"javdet","bio":"Lead DevOps. I have been involved in infrastructure automation for over 12 years.","verified":true,"links":["https://linkedin.com/in/sergeybyvshev"],"avatar":"https://gravatar.com/avatar/6cc6d29016fd271ebee0bbdae1332c062637c44d24efba61f10c0574e2cf74bc?r=pg&d=retro&size=200"},"nodes":[{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":55,"icon":"file:mattermost.svg","name":"n8n-nodes-base.mattermost","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-host-virtual-coffee-breaks-with-n8n/","icon":"☕️","label":"How to host virtual coffee breaks with n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/creating-error-workflows-in-n8n/","icon":"🌪","label":"Creating Error Workflows in n8n"},{"url":"https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mattermost/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/mattermost/"}]},"categories":["Communication"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"output\"]","defaults":{"name":"Mattermost"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4NSIgaGVpZ2h0PSI4NSIgc3R5bGU9Ii1tcy10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZykiIHRyYW5zZm9ybT0icm90YXRlKDM2MCkiPjxwYXRoIGZpbGw9IiMwMDU4Q0MiIGQ9Im00Mi42NDIuMDA0LjUzOC4wMTEtNS43NTMgNi44Yy0xMC42NSAxLjkyNS0xOS44NDcgOS4xOTctMjMuNDYgMTkuODc0LTUuMzc4IDE1Ljg4NSAzLjYzNSAzMy4yOSAyMC4xMzEgMzguODc0czM0LjIyOC0yLjc2NyAzOS42MDUtMTguNjUxYzMuNTUtMTAuNDg3LjgyOC0yMS42MzYtNi4xNzktMjkuNjFsLS4zMTItLjM0OS0uNDQyLTguOTI2YzE0LjUwNyAxMC41MyAyMS4xNjEgMjkuNjM4IDE1LjExMSA0Ny41MS03LjQ0NiAyMS45OTUtMzEuMzEyIDMzLjc4OC01My4zMDYgMjYuMzQzQzYuNTggNzQuNDM0LTUuMjE1IDUwLjU2OCAyLjIzIDI4LjU3NCA4LjIzIDEwLjg1MiAyNC44OS0uMjQ3IDQyLjY0MS4wMDR6TTE5MC40IDI4LjMxNHE4LjMzMSAwIDEzLjAxNyA0LjAwNiA0LjY4NiA0LjAwNSA0LjY4NiAxMi44MTV2MjQuMDNxLTIuODA1Ljg4Mi02LjgxIDEuNjgzLTQuMDA0LjgtOS4wNS44LTQuMDg1IDAtNy40OS0uNzJ0LTUuODQ2LTIuNDAzYTExLjMgMTEuMyAwIDAgMS0zLjc2Ny00LjMyNXEtMS4zMi0yLjY0NC0xLjMyLTYuNDg5dDEuNjQxLTYuNDQ4YTEyLjY2IDEyLjY2IDAgMCAxIDQuMjQ1LTQuMTY1cTIuNjA0LTEuNTYyIDUuODA4LTIuMjQzYTMwLjcgMzAuNyAwIDAgMSA2LjQwOC0uNjhxMi4zMjMgMCA1LjEyNy4yNHYtLjk2MnEwLTEuOTIxLS42NDEtMy4xMjRhNC44IDQuOCAwIDAgMC0xLjc2Mi0xLjg4MXEtMS4xMjMtLjY4Mi0yLjc2My0uOTIyYTI1IDI1IDAgMCAwLTMuNjQ2LS4yNHEtNC4zMjUgMC05LjIxIDEuNjgyLTEuMTI0LTIuMDg0LTEuNjgzLTMuOTI2LS41Ni0xLjg0MS0uNTYxLTQuNDA2IDMuNTI1LTEuMiA3LjA0OC0xLjc2IDMuNTI1LS41NjIgNi41NjktLjU2Mm0tMzAuMzI4LTEyLjIwMnEzLjI5NyAwIDYuMzM0LjQ4M2wyLjk1IDU0LjU3cS0zLjI5Ni40ODQtNi4yNDcuNDg0YTM1IDM1IDAgMCAxLTUuODEzLS40ODNsLTEuNTYzLTM5LjQ1NS0xMi42NyAyNy4yN3EtMS4yMTQuMTYxLTIuNTE3LjI4MS0xLjMuMTItMi42MDMuMTItMS4xMjcuMDAxLTIuMjU1LS4wOGExOSAxOSAwIDAgMS0yLjM0NC0uMzIybC0xMS44LTI3LjgzNS0xLjIxNSA0MC4wMmEzMS4zIDMxLjMgMCAwIDEtNS4zODEuNDg0cS0yLjc3NiAwLTUuNzI3LS40ODNsMi40My01NC41N2E0OC41IDQ4LjUgMCAwIDEgNi42ODEtLjQ4NHEzLjM4NSAwIDYuNjgyLjQ4M2wxNC4zMTkgMjkuNzE4IDE0Ljc1MS0yOS43MThxMi42OS0uNDgzIDUuOTg4LS40ODNtMTMwLjgzNCAxMi4yMDJxNC4zMjUgMCA3LjY4OSAxLjUyMiAzLjM2NSAxLjUyMiA1LjcyNyA0LjE2NiAyLjM2NCAyLjY0MiAzLjU2NiA2LjI4NyAxLjIgMy42NDYgMS4yIDcuODEgMCAxLjUyMy0uMTIgMy4wMDVhMjUgMjUgMCAwIDEtLjI4IDIuMzYzaC0yNi41OTRxLjMyMSA0LjgwNSAzLjM2NSA2Ljk2OHQ4LjAxIDIuMTYzcTIuNzI0IDAgNS41NjctLjUyMmEzMS42IDMxLjYgMCAwIDAgNS40MDctMS40OHEuODgyIDEuNjAxIDEuNTIyIDMuODQ0dC43MiA0LjgwNnEtNi4yNDcgMi40MDMtMTQuMDk4IDIuNDAzLTUuNzY2IDAtOS44OTItMS42MDItNC4xMjQtMS42MDItNi43MjgtNC40NDYtMi42MDQtMi44NDItMy44NDUtNi43NjktMS4yNDEtMy45MjQtMS4yNC04LjU3LS4wMDEtNC41NjUgMS4yOC04LjU3IDEuMjgtNC4wMDcgMy44MDUtNi45NyAyLjUyMy0yLjk2NCA2LjI0OC00LjY4NnQ4LjY5LTEuNzIyem0xMzYuMDkyIDBxNS4wNDYgMCA4LjgxIDEuNjgyIDMuNzY0IDEuNjg0IDYuMjUgNC42MDYgMi40ODEgMi45MjUgMy42ODQgNi45MjkgMS4yIDQuMDA1IDEuMjAxIDguNTcgMCA0LjU2Ny0xLjIwMSA4LjQ5MS0xLjIwMyAzLjkyNi0zLjY4NSA2Ljg0OC0yLjQ4NSAyLjkyNS02LjI0OSA0LjU2Ny0zLjc2NCAxLjY0MS04LjgxIDEuNjQyLTUuMDQ4IDAtOC43Ny0xLjY0Mi0zLjcyNi0xLjY0MS02LjE3LTQuNTY3LTIuNDQyLTIuOTIyLTMuNjg0LTYuODQ4dC0xLjI0MS04LjQ5cTAtNC41NjcgMS4yNDEtOC41NzEgMS4yNDItNC4wMDUgMy42ODUtNi45MjkgMi40NDItMi45MjMgNi4xNjgtNC42MDYgMy43MjQtMS42ODEgOC43Ny0xLjY4MnptNDEuMjc3IDBxMy4xMjMgMCA2LjE2Ny41NjFhMzkuMyAzOS4zIDAgMCAxIDYuMTY4IDEuNjgyIDIyIDIyIDAgMCAxLS44MDIgNC4zMjVxLS42NCAyLjI0NC0xLjUyIDMuOTI2YTMyIDMyIDAgMCAwLTQuMjQ3LTEuNDAyIDE5LjUgMTkuNSAwIDAgMC00Ljg4NS0uNjAxcS0yLjcyMyAwLTQuMjQ2Ljg0MS0xLjUyMi44NC0xLjUyMSAyLjY4MyAwIDEuNzYyIDEuMDggMi40ODQgMS4wODIuNzIxIDMuMDg0IDEuMzYxbDQuNTY2IDEuMzYzcTIuMjQ0LjY0IDQuMDQ1IDEuNTYxIDEuODAyLjkyMiAzLjA4NCAyLjI4MyAxLjI4MiAxLjM2MyAyLjAwMiAzLjM2NC43MjIgMi4wMDMuNzIyIDQuODg2IDAgMi45NjUtMS4yNDIgNS41MjctMS4yNDIgMi41NjQtMy42MDQgNC40NDUtMi4zNjQgMS44ODQtNS43MjggMi45NjQtMy4zNjQgMS4wODItNy42MSAxLjA4MmE0NyA0NyAwIDAgMS0zLjUyMy0uMTIgMjggMjggMCAwIDEtMy4wODQtLjQgMzYgMzYgMCAwIDEtMi45MjQtLjY4MSAzNiAzNiAwIDAgMS0zLjEyNC0xLjA0MiAyMyAyMyAwIDAgMSAuNzYtNC4zNjUgMjcuNSAyNy41IDAgMCAxIDEuNTYzLTQuMjg2cTIuNjQ0IDEuMDQyIDUuMDA3IDEuNTYyIDIuMzYyLjUyMiA0LjkyNi41MjEgMS4xMjEgMCAyLjQ0Mi0uMmE5IDkgMCAwIDAgMi40NDQtLjcyIDUuOCA1LjggMCAwIDAgMS44ODItMS4zNjNxLjc2MS0uODQuNzYtMi4yMDMgMC0xLjkyMi0xLjE2LTIuNzY0LTEuMTY0LS44NDEtMy4yNDQtMS40ODFsLTQuOTY3LTEuNDQycS00LjQ4Ni0xLjI4Mi03LjAwOC0zLjgwNS0yLjUyNC0yLjUyMy0yLjUyNC03LjU3IDAtNi4wODYgNC4zNjUtOS41MzF0MTEuODk2LTMuNDQ1TTI1Ni45NTIgMTcuMTh2MTIuMDk1aDkuNjkzcS4yNCAxLjIwMS4zMiAyLjE2M3QuMDggMi4wMDNxMCAxLjEyLS4wOCAyLjE2MmEyMiAyMiAwIDAgMS0uMzIgMi4zMjNoLTkuNjkzdjE2LjI2MXEwIDIuNDgzLjQwMiA0LjAwNS40IDEuNTIgMS4xNiAyLjQwNGEzLjgzIDMuODMgMCAwIDAgMS44ODMgMS4ycTEuMTIyLjMyMSAyLjY0My4zMjEgMS4yMDMgMCAyLjM2NC0uMnQyLjA0Mi0uMzZhMTUuNyAxNS43IDAgMCAxIC44IDMuMTYzcS4yNDMgMS42NDMuMjQyIDIuOTI0IDAgLjg4MS0uMDQgMS40ODNhMTYgMTYgMCAwIDEtLjEyIDEuMTZxLTMuNjg1Ljg4Mi03LjYxLjg4LTcuMjkgMC0xMS4xMzQtMy40MDItMy44NDYtMy40MDUtMy44NDYtMTEuMDk1VjM3LjkyNmgtNS4yMDZsLS40MDEtMS42MDIgMTQuOTgtMTkuMTQ0em0tMzAuMDUyIDB2MTIuMDk1aDkuNjkycS4yNCAxLjIwMS4zMjEgMi4xNjMuMDc5Ljk2MS4wNzkgMi4wMDMgMCAxLjEyLS4wNzkgMi4xNjJhMjIgMjIgMCAwIDEtLjMyMSAyLjMyM0gyMjYuOXYxNi4yNjFxMCAyLjQ4My40MDEgNC4wMDUuNCAxLjUyIDEuMTYgMi40MDRhMy44MyAzLjgzIDAgMCAwIDEuODgzIDEuMnExLjEyMy4zMjEgMi42NDMuMzIxIDEuMjAyIDAgMi4zNjQtLjJ0Mi4wNDItLjM2YTE1LjcgMTUuNyAwIDAgMSAuODAyIDMuMTYzcS4yNCAxLjY0My4yNCAyLjkyNCAwIC44ODEtLjA0IDEuNDgzLS4wNC42LS4xMjEgMS4xNmEzMi42IDMyLjYgMCAwIDEtNy42MDkuODhxLTcuMjkgMC0xMS4xMzQtMy40MDItMy44NDUtMy40MDUtMy44NDUtMTEuMDk1VjM3LjkyNmgtNS4yMDdsLS40LTEuNjAyIDE0Ljk3OS0xOS4xNDR6bTEwNy44NCAxMS42MTRxLjgwMSAwIDEuODQyLjA4MSAxLjA0LjA4IDEuNTIyLjI0LjE2LjgwMS4yNCAxLjg0Mi4wODEgMS4wNDIuMDggMi4xNjQgMCAxLjM2LS4xMiAyLjk2M2EyMSAyMSAwIDAgMS0uNDQgMy4wNDMgMTEgMTEgMCAwIDAtMS45NjItLjE2aC0xLjMyMnEtMS4zNjIgMC0zLjA0NS4yOC0xLjY4LjI4Mi0zLjIwNCAxLjQ4NC0xLjUyMiAxLjItMi41MjIgMy42MDQtMS4wMDIgMi40MDMtMS4wMDIgNi43Mjl2MTkuNzA1cS0xLjQ0MS4yMzktMi44ODQuMzE5YTQ4IDQ4IDAgMCAxLTUuNTY3IDAgMzAgMzAgMCAwIDEtMi45MjMtLjMyVjI5LjI3NnExLjIwMS0uMjQgMi4yODItLjM2IDEuMDgyLS4xMiAyLjM2NC0uMTIgMS4yMDMgMCAyLjM2Mi4xNiAxLjE2My4xNiAyLjI4My40LjI0MS40MDEuNDQxIDEuMTYyLjIuNzYyLjM2MSAxLjYwMnQuMjggMS42ODNsLjIgMS40MDFxMS43NjQtMi40ODMgNC4zMjUtNC40NDUgMi41NjUtMS45NjQgNi40MDgtMS45NjR6bTU1LjM5NS0uNDhxNy4wNSAwIDEwLjM3MyAzLjg4NiAzLjMyNCAzLjg4NCAzLjMyNCAxMi4xMzV2MjYuMzUzcS0yLjg4My40OC01LjY4Ny40OHQtNS42ODYtLjQ4di0yMy4zOXEwLTQuMzI2LTEuMDgzLTYuNjQ3LTEuMDgtMi4zMjQtNC4zNjUtMi4zMjQtMS4zNjIgMC0yLjY4Mi40LTEuMzIzLjQtMi40MDQgMS40ODItMS4wOCAxLjA4LTEuNzYzIDMuMDQ1Yy0uNDU0IDEuMzA2LS42OCAzLjAwNC0uNjggNS4wODV2MjIuMzQ5YTM0LjYgMzQuNiAwIDAgMS01LjY4OC40OCAzNC42IDM0LjYgMCAwIDEtNS42ODgtLjQ4di0yMy4zOXEwLTQuMzI2LTEuMDgtNi42NDctMS4wODItMi4zMjQtNC4zNjYtMi4zMjRhOS43IDkuNyAwIDAgMC0yLjcyNC40cS0xLjM2LjQtMi40NDMgMS41NjItMS4wODEgMS4xNjEtMS43MjEgMy4yNDUtLjY0MiAyLjA4MS0uNjQyIDUuNDQ2djIxLjcwOHEtMi44ODMuNDgtNS42ODcuNDgtMi44MDMgMC01LjY4Ni0uNDhWMjkuMjc1YTIyIDIyIDAgMCAxIDIuMjQyLS4zNnExLjEyMS0uMTIgMi40ODQtLjEyYTIxIDIxIDAgMCAxIDIuNDAyLjEycTEuMDQyLjEyIDIuMTYzLjM2LjI0LjQwMS40NCAxLjE2MnQuMzYxIDEuNjAyLjI4IDEuNjQycS4xMi44MDEuMjAxIDEuMzYxLjY0LTEuMiAxLjY4Mi0yLjQwMyAxLjA0MS0xLjIgMi40ODMtMi4xNjJhMTMuNSAxMy41IDAgMCAxIDMuMjQ0LTEuNTYycTEuODAyLS42IDQuMDQ1LS42MDEgOS42OTIgMCAxMi40MTYgNy4zNyAxLjYtMi45NjQgNC41MjYtNS4xNjcgMi45MjMtMi4yMDMgNy40MS0yLjIwM3ptMTEwLjMzLTExLjEzNHYxMi4wOTVoOS42OTJhMTkgMTkgMCAwIDEgLjMyMSAyLjE2M3EuMDguOTYxLjA4IDIuMDAzYTI4IDI4IDAgMCAxLS4wOCAyLjE2MiAyMiAyMiAwIDAgMS0uMzIgMi4zMjNoLTkuNjkydjE2LjI2MXEwIDIuNDgzLjQgNC4wMDUuNCAxLjUyIDEuMTYxIDIuNDA0YTMuODMgMy44MyAwIDAgMCAxLjg4MyAxLjJxMS4xMjIuMzIxIDIuNjQzLjMyMSAxLjIgMCAyLjM2NC0uMiAxLjE2LS4yIDIuMDQxLS4zNmExNS41IDE1LjUgMCAwIDEgLjgwMSAzLjE2MyAyMC4yIDIwLjIgMCAwIDEgLjIgNC40MDcgMTUgMTUgMCAwIDEtLjExOSAxLjE2cS0zLjY4NC44ODItNy42MS44OC03LjI4OSAwLTExLjEzNC0zLjQwMi0zLjg0NS0zLjQwNi0zLjg0NS0xMS4wOTVWMzcuOTI2aC01LjIwNmwtLjQwMS0xLjYwMiAxNC45NzktMTkuMTQ0em0tNzMuNDY3IDIwLjAyNXEtNC40MDYgMC02LjM2OCAzLjMyNS0xLjk2NCAzLjMyNC0xLjk2NCA5LjU3MnQxLjk2NCA5LjU3MnExLjk2MiAzLjMyNCA2LjM2OCAzLjMyNCA0LjQ4NiAwIDYuNDQ3LTMuMzI0IDEuOTYzLTMuMzI0IDEuOTYzLTkuNTcydC0xLjk2My05LjU3MnEtMS45NjEtMy4zMjUtNi40NDctMy4zMjVNMTkyLjk2MyA1MS4zMDRxLTMuOTI1IDAtNi4yMDggMS40MDF0LTIuMjgzIDQuNTI2cTAgMi4wODMuODgyIDMuMjA0Ljg4MSAxLjEyMSAyLjEyMiAxLjY0MWE4LjcgOC43IDAgMCAwIDIuNjQzLjY0MnExLjQwNC4xMiAyLjQ0My4xMiAxLjIwMyAwIDIuNDAzLS4yYTEzNiAxMzYgMCAwIDAgMi4wODQtLjM2MVY1MS43MDRxLS45NjEtLjE2LTIuMDg0LS4yOC0xLjEyLS4xMi0yLjAwMi0uMTJNNTQuOTc2IDMuODg1Yy4xOTUuMDY3LjM1My4xOS40NjcuMzQzbC4wNjMuMDk2LjAyNC4wMzguMDIuMDQ0Yy4wNTYuMTA2LjEwMy4yMjYuMTI1LjM3NS4wNC4yNzEuMDYuODgyLjA3IDEuNTNsLjAwMy4zOTIuMDAyLjM4NnYuNjk5Yy0uMDAxLjM2OC0uMDA0LjYzMy0uMDA0LjY4N3YuMDFsLjE2NSA2LjIyMi4yNDQgNy4xOC4zMDUgMTIuNDh2LjA4NGMtLjAwMy43MjYtLjE1NCA1LjkzMy0zLjg1IDkuNTUzLTMuOTggMy45LTguODY4IDMuNTQyLTEyLjA0OCAyLjQ2Ni0zLjE4LTEuMDc3LTcuMjgtMy43NjMtOC4wNzQtOS4yNzgtLjc3OC01LjQxIDIuNjYzLTkuODI1IDIuNzkzLTkuOTlsLjAwMy0uMDA0IDcuODIzLTkuNzI4IDQuNTU2LTUuNTU1IDMuOTEtNC44NDJzMS43OTUtMi40MDQgMi4zMDYtMi45cS4xMDItLjA5Ny4yMDUtLjE1N2wuMTAyLS4wNTUuMDc1LS4wMzguMDEzLS4wMDVhLjk3Ljk3IDAgMCAxIC43MDItLjAzM20yMzUuNzcgMzMuMDhxLTQuMDA1IDAtNi4wODggMi4yNDMtMi4wODEgMi4yNDMtMi40ODMgNi4zMjloMTYuMThxLS4xNi0zLjg0Ni0yLjEyMy02LjIwOC0xLjk2Mi0yLjM2NC01LjQ4Ny0yLjM2NXoiLz48cGF0aCBmaWxsPSJyZ2JhKDAsIDAsIDAsIDApIiBkPSJNMCAwaDUxMnY4NUgweiIvPjwvc3ZnPg=="},"displayName":"Mattermost","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1248,"icon":"file:qdrant.svg","name":"@n8n/n8n-nodes-langchain.vectorStoreQdrant","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreqdrant/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Tools":["Other Tools"],"Vector Stores":["Other Vector Stores"]}}},"group":"[\"transform\"]","defaults":{"name":"Qdrant Vector Store"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBkYXRhLW5hbWU9IkNhcGEgMiIgdmlld0JveD0iMCAwIDM0Ni40MiA0MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxkZWZzPgo8c3R5bGU+LmNscy0xIHsKICAgICAgICBmaWxsOiAjOWUwZDM4OwogICAgICB9CgogICAgICAuY2xzLTIgewogICAgICAgIGZpbGw6ICNkYzI0NGM7CiAgICAgIH0KCiAgICAgIC5jbHMtMyB7CiAgICAgICAgZmlsbDogI2ZmNTE2YjsKICAgICAgfTwvc3R5bGU+CjwvZGVmcz4KPHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjE3My4yMSAwIDAgMTAwIDAgMzAwIDE3My4yMSA0MDAgMjM4LjE2IDM2Mi41IDIzOC4xNiAyODcuNSAxNzMuMjEgMzI1IDY0Ljk2IDI2Mi41IDY0Ljk2IDEzNy41IDE3My4yMSA3NSAyODEuNDYgMTM3LjUgMjgxLjQ2IDM4Ny41IDM0Ni40MiAzNTAgMzQ2LjQyIDEwMCIvPgo8cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMTA4LjI2IDE2Mi41IDEwOC4yNiAyMzcuNSAxNzMuMjEgMjc1IDIzOC4xNiAyMzcuNSAyMzguMTYgMTYyLjUgMTczLjIxIDEyNSIvPgo8cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iMjM4LjE2IDI4Ny41IDIzOC4xNiAzNjIuNSAxNzMuMjEgNDAwIDE3My4yMSAzMjUiLz4KPHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjM0Ni40MiAxMDAgMzQ2LjQyIDM1MCAyODEuNDYgMzg3LjUgMjgxLjQ2IDEzNy41Ii8+Cjxwb2x5Z29uIGNsYXNzPSJjbHMtMyIgcG9pbnRzPSIzNDYuNDIgMTAwIDI4MS40NiAxMzcuNSAxNzMuMjEgNzUgNjQuOTYgMTM3LjUgMCAxMDAgMTczLjIxIDAiLz4KPHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjE3My4yMSAzMjUgMTczLjIxIDQwMCAwIDMwMCAwIDEwMCA2NC45NiAxMzcuNSA2NC45NiAyNjIuNSIvPgo8cG9seWdvbiBjbGFzcz0iY2xzLTMiIHBvaW50cz0iMjM4LjE2IDE2Mi41IDE3My4yMSAyMDAgMTA4LjI2IDE2Mi41IDE3My4yMSAxMjUiLz4KPHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjE3My4yMSAyMDAgMTczLjIxIDI3NSAxMDguMjYgMjM3LjUgMTA4LjI2IDE2Mi41Ii8+Cjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSIyMzguMTYgMTYyLjUgMjM4LjE2IDIzNy41IDE3My4yMSAyNzUgMTczLjIxIDIwMCIvPgo8L3N2Zz4K"},"displayName":"Qdrant Vector Store","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1261,"icon":"file:google.svg","name":"@n8n/n8n-nodes-langchain.embeddingsGoogleGemini","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsgooglegemini/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Embeddings"]}}},"group":"[\"transform\"]","defaults":{"name":"Embeddings Google Gemini"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"},"displayName":"Embeddings Google Gemini","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1292,"icon":"file:../mcp.svg","name":"@n8n/n8n-nodes-langchain.mcpClientTool","codex":{"data":{"alias":["Model Context Protocol","MCP Client"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"output\"]","defaults":{"name":"MCP Client"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDE5NSAxOTUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+Cgk8ZyBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMTIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CgkJPHBhdGggZD0iTTI1IDk3Ljg1MjhMOTIuODgyMyAyOS45NzA2QzEwMi4yNTUgMjAuNTk4IDExNy40NTEgMjAuNTk4IDEyNi44MjMgMjkuOTcwNlYyOS45NzA2QzEzNi4xOTYgMzkuMzQzMSAxMzYuMTk2IDU0LjUzOTEgMTI2LjgyMyA2My45MTE3TDc1LjU1ODEgMTE1LjE3NyIvPgoJCTxwYXRoIGQ9Ik03Ni4yNjUzIDExNC40N0wxMjYuODIzIDYzLjkxMTdDMTM2LjE5NiA1NC41MzkxIDE1MS4zOTIgNTQuNTM5MSAxNjAuNzY1IDYzLjkxMTdMMTYxLjExOCA2NC4yNjUyQzE3MC40OTEgNzMuNjM3OCAxNzAuNDkxIDg4LjgzMzggMTYxLjExOCA5OC4yMDYzTDk5LjcyNDggMTU5LjZDOTYuNjAwNiAxNjIuNzI0IDk2LjYwMDYgMTY3Ljc4OSA5OS43MjQ4IDE3MC45MTNMMTEyLjMzMSAxODMuNTIiLz4KCQk8cGF0aCBkPSJNMTA5Ljg1MyA0Ni45NDExTDU5LjY0ODIgOTcuMTQ1N0M1MC4yNzU3IDEwNi41MTggNTAuMjc1NyAxMjEuNzE0IDU5LjY0ODIgMTMxLjA4N1YxMzEuMDg3QzY5LjAyMDggMTQwLjQ1OSA4NC4yMTY4IDE0MC40NTkgOTMuNTg5NCAxMzEuMDg3TDE0My43OTQgODAuODgyMiIvPgoJPC9nPgo8L3N2Zz4K"},"displayName":"MCP Client Tool","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":16,"name":"DevOps"},{"id":48,"name":"AI RAG"}],"image":[]}}