{"workflow":{"id":13595,"name":"Monitor asset health and predict maintenance with Anthropic Claude and Slack","views":50,"recentViews":0,"totalViews":50,"createdAt":"2026-02-22T15:38:35.709Z","description":"## How It Works\nThis workflow automates industrial asset health monitoring and predictive maintenance using Anthropic Claude across coordinated specialist agents. It targets facility managers, maintenance engineers, and operations teams in manufacturing, energy, and infrastructure sectors where reactive maintenance leads to costly unplanned downtime and asset failures. On schedule, the system ingests asset health data and routes it through a Performance Evaluation Agent that coordinates three specialist agents: Maintenance Scheduling, Parts Readiness, and Lifecycle Reporting. An MCP External Data Tool enriches analysis with real-time contextual data. Results are risk-routed—Critical assets trigger immediate Slack alerts, High-risk assets escalate via email reports, and Routine cases are logged for scheduled maintenance. All paths merge into a unified maintenance log, giving operations teams proactive, audit-ready asset intelligence before failures occur.\n\n## Setup Steps\n1. Import workflow JSON into your n8n instance.\n2. Add Anthropic API credentials.\n3. Set Schedule Trigger frequency aligned to your asset monitoring cycle.\n4. Update Workflow Configuration node with asset thresholds.\n5. Configure MCP External Data Tool with your external data source endpoint and authentication.\n6. Add Slack credentials and set the target channel in the Notify Critical Alert node.\n7. Set Gmail/SMTP credentials for the Email Escalation Report node.\n\n## Prerequisites\nn8n (cloud or self-hosted), Anthropic API key (Claude), Slack workspace with bot token \n## Use Cases\nFacility managers automating condition-based maintenance scheduling across multiple assets\n## Customization\nReplace Anthropic Claude with OpenAI GPT-4 or NVIDIA NIM in any agent node\n## Benefits\nShifts maintenance from reactive to predictive, reducing unplanned downtime significantly\n","workflow":{"id":"p8Mp9iB7OnJ76V1DU5XNl","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"AI-powered asset health monitoring and predictive maintenance","tags":[],"nodes":[{"id":"04be9a11-7606-4bbe-bef9-a928c2af6b74","name":"Schedule Asset Health Check","type":"n8n-nodes-base.scheduleTrigger","position":[0,192],"parameters":{"rule":{"interval":[{"field":"hours","hoursInterval":6}]}},"typeVersion":1.3},{"id":"67036210-72a9-4819-9091-dcc15ce998c0","name":"Workflow Configuration","type":"n8n-nodes-base.set","position":[224,192],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"criticalThreshold","type":"number","value":85},{"id":"id-2","name":"highThreshold","type":"number","value":70},{"id":"id-3","name":"slackChannel","type":"string","value":"<__PLACEHOLDER_VALUE__Slack channel ID for critical alerts__>"},{"id":"id-4","name":"escalationEmail","type":"string","value":"<__PLACEHOLDER_VALUE__Email address for escalation reports__>"},{"id":"id-5","name":"mcpEndpoint","type":"string","value":"<__PLACEHOLDER_VALUE__MCP server endpoint URL__>"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"8ccbc050-f338-4847-860f-54717866f028","name":"Generate Asset Health Data","type":"n8n-nodes-base.code","position":[448,192],"parameters":{"jsCode":"// Generate simulated asset health data\nconst assets = [\n  { id: 'PUMP-001', name: 'Primary Coolant Pump', type: 'Pump' },\n  { id: 'MOTOR-045', name: 'Conveyor Motor A', type: 'Motor' },\n  { id: 'VALVE-112', name: 'Pressure Relief Valve', type: 'Valve' },\n  { id: 'COMP-023', name: 'Air Compressor Unit', type: 'Compressor' },\n  { id: 'TURB-008', name: 'Steam Turbine Generator', type: 'Turbine' }\n];\n\nconst healthStatuses = ['Excellent', 'Good', 'Fair', 'Poor', 'Critical'];\n\nconst items = assets.map(asset => {\n  // Generate random but realistic values\n  const degradationScore = Math.random() * 100;\n  const temperature = 20 + Math.random() * 80; // 20-100°C\n  const vibration = Math.random() * 10; // 0-10 mm/s\n  const pressure = 1 + Math.random() * 9; // 1-10 bar\n  const operatingHours = Math.floor(Math.random() * 50000);\n  \n  // Last maintenance date (random within last 365 days)\n  const daysAgo = Math.floor(Math.random() * 365);\n  const lastMaintenanceDate = new Date();\n  lastMaintenanceDate.setDate(lastMaintenanceDate.getDate() - daysAgo);\n  \n  // Determine health status based on degradation score\n  let healthStatus;\n  if (degradationScore < 20) healthStatus = 'Excellent';\n  else if (degradationScore < 40) healthStatus = 'Good';\n  else if (degradationScore < 60) healthStatus = 'Fair';\n  else if (degradationScore < 80) healthStatus = 'Poor';\n  else healthStatus = 'Critical';\n  \n  return {\n    json: {\n      assetId: asset.id,\n      assetName: asset.name,\n      assetType: asset.type,\n      temperature: Math.round(temperature * 100) / 100,\n      vibration: Math.round(vibration * 100) / 100,\n      pressure: Math.round(pressure * 100) / 100,\n      operatingHours: operatingHours,\n      lastMaintenanceDate: lastMaintenanceDate.toISOString().split('T')[0],\n      degradationScore: Math.round(degradationScore * 100) / 100,\n      healthStatus: healthStatus,\n      timestamp: new Date().toISOString()\n    }\n  };\n});\n\nreturn items;"},"typeVersion":2},{"id":"7108ce2d-7b98-4c7b-9426-403486bab00e","name":"Performance Evaluation Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[1120,192],"parameters":{"text":"={{ $json }}","options":{"systemMessage":"You are a Performance Evaluation Agent specialized in analyzing asset health and degradation signals.\n\nYour task is to:\n1. Analyze the provided asset health data including temperature, vibration, pressure, operating hours, and degradation scores\n2. Evaluate overall asset health status and identify critical degradation patterns\n3. Calculate risk level (CRITICAL, HIGH, MEDIUM, LOW) based on multiple signal correlations\n4. When risk is HIGH or CRITICAL, call the Maintenance Scheduling Agent Tool to coordinate maintenance\n5. Call the Parts Readiness Agent Tool to verify parts availability for identified maintenance needs\n6. Call the Lifecycle Reporting Agent Tool to generate comprehensive lifecycle reports\n7. Use the MCP External Data Tool to fetch additional contextual data when needed\n8. If uncertainty exists in your analysis, escalate with detailed reasoning\n\nProvide structured analysis with risk assessment, recommended actions, and confidence scores."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"6a5b2f37-7c09-4c0a-a775-b088779c8dff","name":"Maintenance Scheduling Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[800,416],"parameters":{"text":"={{ $fromAI(\"assetData\", \"Asset health data and performance analysis results\", \"json\") }}","options":{"systemMessage":"You are a Maintenance Scheduling Agent responsible for coordinating maintenance activities.\n\nYour task is to:\n1. Analyze asset health data and performance evaluation results\n2. Determine optimal maintenance windows based on asset criticality and operational schedules\n3. Calculate estimated maintenance duration and resource requirements\n4. Identify scheduling conflicts and propose alternatives\n5. Prioritize maintenance tasks based on risk level and business impact\n6. Return structured scheduling recommendations with timelines and resource allocations\n\nConsider operational constraints, resource availability, and minimize downtime."},"hasOutputParser":true,"toolDescription":"Coordinates maintenance scheduling based on asset health analysis, determines optimal maintenance windows, and allocates resources"},"typeVersion":3},{"id":"3875a7e1-7a1a-4fbc-9a90-d0e5d613a744","name":"Parts Readiness Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1088,416],"parameters":{"text":"={{ $fromAI(\"maintenanceRequirements\", \"Maintenance requirements and parts needed\", \"json\") }}","options":{"systemMessage":"You are a Parts Readiness Agent responsible for ensuring parts availability for maintenance operations.\n\nYour task is to:\n1. Analyze maintenance requirements and identify required parts and components\n2. Check parts inventory levels and availability\n3. Calculate lead times for parts procurement\n4. Identify critical parts shortages that could delay maintenance\n5. Recommend alternative parts or suppliers when primary options are unavailable\n6. Return structured parts readiness assessment with availability status and procurement timelines\n\nEscalate when critical parts are unavailable or lead times exceed maintenance urgency."},"hasOutputParser":true,"toolDescription":"Verifies parts availability, checks inventory levels, and provides procurement timelines for maintenance operations"},"typeVersion":3},{"id":"aeda6694-361b-4549-b1a6-fa55d0b07673","name":"Lifecycle Reporting Agent Tool","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1376,416],"parameters":{"text":"={{ $fromAI(\"assetLifecycleData\", \"Asset lifecycle data and maintenance history\", \"json\") }}","options":{"systemMessage":"You are a Lifecycle Reporting Agent responsible for generating comprehensive asset lifecycle reports.\n\nYour task is to:\n1. Analyze asset lifecycle data including maintenance history, operating hours, and performance trends\n2. Calculate total cost of ownership and maintenance costs over time\n3. Identify lifecycle patterns and predict remaining useful life\n4. Generate reports on asset utilization, efficiency, and reliability metrics\n5. Provide recommendations for lifecycle optimization and replacement planning\n6. Return structured lifecycle reports with historical trends and future projections\n\nInclude data-driven insights and actionable recommendations for asset management."},"hasOutputParser":true,"toolDescription":"Generates comprehensive lifecycle reports including maintenance history, cost analysis, and remaining useful life predictions"},"typeVersion":3},{"id":"764f5598-1d78-4e7e-a915-0ee4a97f9938","name":"Anthropic Model - Performance Agent","type":"@n8n/n8n-nodes-langchain.lmChatAnthropic","position":[672,416],"parameters":{"model":{"__rl":true,"mode":"list","value":"claude-sonnet-4-5-20250929","cachedResultName":"Claude Sonnet 4.5"},"options":{"temperature":0.2,"maxTokensToSample":4096}},"credentials":{"anthropicApi":{"id":"S8laStQPC1u3EYuZ","name":"Anthropic account"}},"typeVersion":1.3},{"id":"e36f7513-e024-4988-ae42-efda982bd553","name":"Anthropic Model - Maintenance Tool","type":"@n8n/n8n-nodes-langchain.lmChatAnthropic","position":[704,624],"parameters":{"model":{"__rl":true,"mode":"list","value":"claude-sonnet-4-5-20250929","cachedResultName":"Claude Sonnet 4.5"},"options":{"temperature":0.2,"maxTokensToSample":2048}},"credentials":{"anthropicApi":{"id":"S8laStQPC1u3EYuZ","name":"Anthropic account"}},"typeVersion":1.3},{"id":"9054bded-0a78-455c-822d-9f51f559d823","name":"Anthropic Model - Parts Tool","type":"@n8n/n8n-nodes-langchain.lmChatAnthropic","position":[1088,624],"parameters":{"model":{"__rl":true,"mode":"list","value":"claude-sonnet-4-5-20250929","cachedResultName":"Claude Sonnet 4.5"},"options":{"temperature":0.2,"maxTokensToSample":2048}},"credentials":{"anthropicApi":{"id":"S8laStQPC1u3EYuZ","name":"Anthropic account"}},"typeVersion":1.3},{"id":"b680aabf-fbaa-4f81-b829-38617eb63c76","name":"Anthropic Model - Lifecycle Tool","type":"@n8n/n8n-nodes-langchain.lmChatAnthropic","position":[1440,624],"parameters":{"model":{"__rl":true,"mode":"list","value":"claude-sonnet-4-5-20250929","cachedResultName":"Claude Sonnet 4.5"},"options":{"temperature":0.2,"maxTokensToSample":2048}},"credentials":{"anthropicApi":{"id":"S8laStQPC1u3EYuZ","name":"Anthropic account"}},"typeVersion":1.3},{"id":"22942b56-6dec-4343-9c92-8e15e2010f00","name":"Performance Analysis Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1792,416],"parameters":{"jsonSchemaExample":"{\n  \"assetId\": \"string\",\n  \"assetName\": \"string\",\n  \"riskLevel\": \"CRITICAL | HIGH | MEDIUM | LOW\",\n  \"overallHealthScore\": 0,\n  \"degradationAnalysis\": \"string\",\n  \"criticalSignals\": [\"string\"],\n  \"recommendedActions\": [\"string\"],\n  \"maintenanceUrgency\": \"IMMEDIATE | URGENT | SCHEDULED | ROUTINE\",\n  \"confidenceScore\": 0,\n  \"uncertaintyFactors\": [\"string\"],\n  \"escalationRequired\": false,\n  \"escalationReason\": \"string\",\n  \"agentsCalled\": [\"string\"],\n  \"timestamp\": \"string\"\n}"},"typeVersion":1.3},{"id":"c5f6611c-13ea-4acf-baea-7c898ad66d53","name":"Maintenance Scheduling Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[880,624],"parameters":{"jsonSchemaExample":"{\n  \"scheduledMaintenanceWindow\": \"string\",\n  \"estimatedDuration\": \"string\",\n  \"resourcesRequired\": [\"string\"],\n  \"maintenancePriority\": \"string\",\n  \"schedulingConflicts\": [\"string\"],\n  \"alternativeWindows\": [\"string\"],\n  \"downtimeImpact\": \"string\"\n}"},"typeVersion":1.3},{"id":"7195d277-60ee-456f-a3ed-71d1dc15cd7a","name":"Parts Readiness Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1248,624],"parameters":{"jsonSchemaExample":"{\n  \"requiredParts\": [{\"partId\": \"string\", \"partName\": \"string\", \"quantity\": 0, \"available\": false, \"leadTime\": \"string\"}],\n  \"inventoryStatus\": \"READY | PARTIAL | UNAVAILABLE\",\n  \"criticalShortages\": [\"string\"],\n  \"procurementTimeline\": \"string\",\n  \"alternativeOptions\": [\"string\"],\n  \"estimatedCost\": 0\n}"},"typeVersion":1.3},{"id":"1ce73ca9-6630-4109-9992-0fdceeb5372c","name":"Lifecycle Reporting Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1648,640],"parameters":{"jsonSchemaExample":"{\n  \"totalOperatingHours\": 0,\n  \"maintenanceHistory\": [{\"date\": \"string\", \"type\": \"string\", \"cost\": 0}],\n  \"totalMaintenanceCost\": 0,\n  \"averageDowntime\": \"string\",\n  \"reliabilityScore\": 0,\n  \"remainingUsefulLife\": \"string\",\n  \"replacementRecommendation\": \"string\",\n  \"lifecycleOptimizationTips\": [\"string\"]\n}"},"typeVersion":1.3},{"id":"658dc2ae-f2a1-450a-9b2c-4643ace646b8","name":"MCP External Data Tool","type":"@n8n/n8n-nodes-langchain.mcpClientTool","position":[1664,416],"parameters":{"options":{},"endpointUrl":"={{ $('Workflow Configuration').first().json.mcpEndpoint }}","authentication":"headerAuth"},"typeVersion":1.2},{"id":"4fa5df44-26b4-4b3a-a05d-bdf434333c96","name":"Route by Risk Level","type":"n8n-nodes-base.switch","position":[2160,272],"parameters":{"rules":{"values":[{"outputKey":"Critical","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.riskLevel }}","rightValue":"CRITICAL"}]},"renameOutput":true},{"outputKey":"High","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.riskLevel }}","rightValue":"HIGH"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra","renameFallbackOutput":"Routine"}},"typeVersion":3.4},{"id":"6c53a458-9a11-4e18-8f34-9cd9ef856281","name":"Notify Critical Alert","type":"n8n-nodes-base.slack","position":[2384,240],"webhookId":"9638d7bb-a071-4f16-8213-671dec44d322","parameters":{"text":"=🚨 *CRITICAL ASSET ALERT*\n\n*Asset:* {{ $json.output.assetName }} ({{ $json.output.assetId }})\n*Risk Level:* {{ $json.output.riskLevel }}\n*Health Score:* {{ $json.output.overallHealthScore }}/100\n*Maintenance Urgency:* {{ $json.output.maintenanceUrgency }}\n\n*Degradation Analysis:*\n{{ $json.output.degradationAnalysis }}\n\n*Critical Signals:*\n{{ $json.output.criticalSignals.join(\", \") }}\n\n*Recommended Actions:*\n{{ $json.output.recommendedActions.map((a, i) => `${i+1}. ${a}`).join(\"\\n\") }}\n\n*Confidence:* {{ $json.output.confidenceScore }}%\n{{ $json.output.escalationRequired ? \"⚠️ *ESCALATION REQUIRED:* \" + $json.output.escalationReason : \"\" }}\n\n_Detected at {{ $json.output.timestamp }}_","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{ $('Workflow Configuration').first().json.slackChannel }}"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"d34b1ayEBbvZm2lT","name":"Slack account"}},"typeVersion":2.4},{"id":"65cef488-15ec-41f5-b733-8b5399a3f7be","name":"Email Escalation Report","type":"n8n-nodes-base.emailSend","position":[2400,448],"webhookId":"7dd13710-f110-41d6-aabe-bfe03a2907c8","parameters":{"html":"=<html>\n<body style=\"font-family: Arial, sans-serif; line-height: 1.6; color: #333;\">\n<div style=\"background-color: {{ $json.output.riskLevel === \"CRITICAL\" ? \"#dc3545\" : \"#fd7e14\" }}; color: white; padding: 20px; border-radius: 5px;\">\n<h2>{{ $json.output.riskLevel === \"CRITICAL\" ? \"🚨\" : \"⚠️\" }} Asset Maintenance Escalation</h2>\n</div>\n\n<div style=\"padding: 20px;\">\n<h3>Asset Details</h3>\n<table style=\"width: 100%; border-collapse: collapse;\">\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Asset ID:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.output.assetId }}</td></tr>\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Asset Name:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.output.assetName }}</td></tr>\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Risk Level:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.output.riskLevel }}</td></tr>\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Health Score:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.output.overallHealthScore }}/100</td></tr>\n<tr><td style=\"padding: 8px; border: 1px solid #ddd; font-weight: bold;\">Maintenance Urgency:</td><td style=\"padding: 8px; border: 1px solid #ddd;\">{{ $json.output.maintenanceUrgency }}</td></tr>\n</table>\n\n<h3>Degradation Analysis</h3>\n<p style=\"background-color: #f8f9fa; padding: 15px; border-left: 4px solid {{ $json.output.riskLevel === \"CRITICAL\" ? \"#dc3545\" : \"#fd7e14\" }};\">{{ $json.output.degradationAnalysis }}</p>\n\n<h3>Critical Signals Detected</h3>\n<ul>\n{{ $json.output.criticalSignals.map(signal => `<li>${signal}</li>`).join(\"\") }}\n</ul>\n\n<h3>Recommended Actions</h3>\n<ol>\n{{ $json.output.recommendedActions.map(action => `<li>${action}</li>`).join(\"\") }}\n</ol>\n\n<h3>AI Agent Analysis</h3>\n<p><strong>Confidence Score:</strong> {{ $json.output.confidenceScore }}%</p>\n<p><strong>Agents Called:</strong> {{ $json.output.agentsCalled.join(\", \") }}</p>\n{{ $json.output.uncertaintyFactors.length > 0 ? `<p><strong>Uncertainty Factors:</strong> ${$json.output.uncertaintyFactors.join(\", \")}</p>` : \"\" }}\n\n{{ $json.output.escalationRequired ? `<div style=\"margin-top: 30px; padding: 15px; background-color: #fff3cd; border-left: 4px solid #ffc107;\">\n<strong>⚠️ ESCALATION REQUIRED</strong><br>\n${$json.output.escalationReason}\n</div>` : \"\" }}\n\n<p style=\"color: #666; font-size: 12px; margin-top: 30px;\">Generated: {{ $json.output.timestamp }}</p>\n</div>\n</body>\n</html>","options":{},"subject":"={{ $json.output.riskLevel }} Risk Alert: {{ $json.output.assetName }} - Maintenance Required","toEmail":"={{ $('Workflow Configuration').first().json.escalationEmail }}","fromEmail":"<__PLACEHOLDER_VALUE__Sender email address__>"},"typeVersion":2.1},{"id":"f299b607-773a-4b1d-bb99-57a5e7680c3c","name":"Log Routine Maintenance","type":"n8n-nodes-base.set","position":[2400,624],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"logType","type":"string","value":"routine_maintenance"},{"id":"id-2","name":"assetId","type":"string","value":"={{ $json.output.assetId }}"},{"id":"id-3","name":"assetName","type":"string","value":"={{ $json.output.assetName }}"},{"id":"id-4","name":"riskLevel","type":"string","value":"={{ $json.output.riskLevel }}"},{"id":"id-5","name":"healthScore","type":"number","value":"={{ $json.output.overallHealthScore }}"},{"id":"id-6","name":"maintenanceUrgency","type":"string","value":"={{ $json.output.maintenanceUrgency }}"},{"id":"id-7","name":"recommendedActions","type":"string","value":"={{ $json.output.recommendedActions }}"},{"id":"id-8","name":"timestamp","type":"string","value":"={{ $json.output.timestamp }}"},{"id":"id-9","name":"status","type":"string","value":"logged"}]}},"typeVersion":3.4},{"id":"738dceac-208a-4c4b-adaf-b520c8cd7751","name":"Merge All Paths","type":"n8n-nodes-base.merge","position":[2608,272],"parameters":{"numberInputs":3},"typeVersion":3.2},{"id":"947d6007-fd9f-4dae-abad-b0af4b616ca6","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1072,-384],"parameters":{"color":5,"width":416,"height":368,"content":"## Prerequisites\nn8n (cloud or self-hosted), Anthropic API key (Claude), Slack workspace with bot token \n## Use Cases\nFacility managers automating condition-based maintenance scheduling across multiple assets\n## Customization\nReplace Anthropic Claude with OpenAI GPT-4 or NVIDIA NIM in any agent node\n## Benefits\nShifts maintenance from reactive to predictive, reducing unplanned downtime significantly"},"typeVersion":1},{"id":"2098ce6a-e5d8-4614-b55d-602b4b9ab2b3","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[592,-352],"parameters":{"width":400,"height":320,"content":"## Setup Steps\n1. Import workflow JSON into your n8n instance.\n2. Add Anthropic API credentials.\n3. Set Schedule Trigger frequency aligned to your asset monitoring cycle.\n4. Update Workflow Configuration node with asset thresholds.\n5. Configure MCP External Data Tool with your external data source endpoint and authentication.\n6. Add Slack credentials and set the target channel in the Notify Critical Alert node.\n7. Set Gmail/SMTP credentials for the Email Escalation Report node."},"typeVersion":1},{"id":"47e8eeca-d573-43b6-b256-f9aef29d323b","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-48,-304],"parameters":{"width":592,"height":288,"content":"## How It Works\nThis workflow automates industrial asset health monitoring and predictive maintenance using Anthropic Claude across coordinated specialist agents. It targets facility managers, maintenance engineers, and operations teams in manufacturing, energy, and infrastructure sectors where reactive maintenance leads to costly unplanned downtime and asset failures. On schedule, the system ingests asset health data and routes it through a Performance Evaluation Agent that coordinates three specialist agents: Maintenance Scheduling, Parts Readiness, and Lifecycle Reporting. An MCP External Data Tool enriches analysis with real-time contextual data. Results are risk-routed—Critical assets trigger immediate Slack alerts, High-risk assets escalate via email reports, and Routine cases are logged for scheduled maintenance. All paths merge into a unified maintenance log, giving operations teams proactive, audit-ready asset intelligence before failures occur."},"typeVersion":1},{"id":"07018006-2a4a-4f48-a229-a4b97520583a","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[2048,32],"parameters":{"color":7,"width":672,"height":832,"content":"## Risk Routing & Notification\n**What:** Critical alerts fire via Slack, High-risk cases escalate by email, Routine cases are logged.\n**Why:** Ensures the right stakeholders act immediately on the most urgent asset conditions."},"typeVersion":1},{"id":"496d98b1-2b93-45ec-af03-4fefd9d59836","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[592,32],"parameters":{"color":7,"width":1424,"height":816,"content":"## Performance Evaluation Agent\n**What:** Anthropic Claude assesses overall asset condition and delegates to specialist agents.\n**Why:** Centralises intelligence, ensuring consistent evaluation before action is taken.\n"},"typeVersion":1},{"id":"63b3e921-d60e-4f61-8046-c28ddbaed5cb","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-64,32],"parameters":{"color":7,"width":640,"height":736,"content":"## Generate Asset Health Data\n**What:** Loads or simulates sensor and performance metrics per asset.\n**Why:** Provides structured operational data for downstream AI evaluation."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"8acb5026-a3b2-4f92-9cfb-8e94155e9291","connections":{"Route by Risk Level":{"main":[[{"node":"Notify Critical Alert","type":"main","index":0}],[{"node":"Email Escalation Report","type":"main","index":0}],[{"node":"Log Routine Maintenance","type":"main","index":0}]]},"Notify Critical Alert":{"main":[[{"node":"Merge All Paths","type":"main","index":0}]]},"MCP External Data Tool":{"ai_tool":[[{"node":"Performance Evaluation Agent","type":"ai_tool","index":0}]]},"Workflow Configuration":{"main":[[{"node":"Generate Asset Health Data","type":"main","index":0}]]},"Email Escalation Report":{"main":[[{"node":"Merge All Paths","type":"main","index":1}]]},"Log Routine Maintenance":{"main":[[{"node":"Merge All Paths","type":"main","index":2}]]},"Generate Asset Health Data":{"main":[[{"node":"Performance Evaluation Agent","type":"main","index":0}]]},"Parts Readiness Agent Tool":{"ai_tool":[[{"node":"Performance Evaluation Agent","type":"ai_tool","index":0}]]},"Schedule Asset Health Check":{"main":[[{"node":"Workflow Configuration","type":"main","index":0}]]},"Anthropic Model - Parts Tool":{"ai_languageModel":[[{"node":"Parts Readiness Agent Tool","type":"ai_languageModel","index":0}]]},"Performance Evaluation Agent":{"main":[[{"node":"Route by Risk Level","type":"main","index":0}]]},"Parts Readiness Output Parser":{"ai_outputParser":[[{"node":"Parts Readiness Agent Tool","type":"ai_outputParser","index":0}]]},"Lifecycle Reporting Agent Tool":{"ai_tool":[[{"node":"Performance Evaluation Agent","type":"ai_tool","index":0}]]},"Anthropic Model - Lifecycle Tool":{"ai_languageModel":[[{"node":"Lifecycle Reporting Agent Tool","type":"ai_languageModel","index":0}]]},"Lifecycle Reporting Output Parser":{"ai_outputParser":[[{"node":"Lifecycle Reporting Agent Tool","type":"ai_outputParser","index":0}]]},"Maintenance Scheduling Agent Tool":{"ai_tool":[[{"node":"Performance Evaluation Agent","type":"ai_tool","index":0}]]},"Anthropic Model - Maintenance Tool":{"ai_languageModel":[[{"node":"Maintenance Scheduling Agent Tool","type":"ai_languageModel","index":0}]]},"Performance Analysis Output Parser":{"ai_outputParser":[[{"node":"Performance Evaluation Agent","type":"ai_outputParser","index":0}]]},"Anthropic Model - Performance Agent":{"ai_languageModel":[[{"node":"Performance Evaluation Agent","type":"ai_languageModel","index":0}]]},"Maintenance Scheduling Output Parser":{"ai_outputParser":[[{"node":"Maintenance Scheduling Agent Tool","type":"ai_outputParser","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":27,"nodeTypes":{"n8n-nodes-base.set":{"count":2},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.emailSend":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1},"@n8n/n8n-nodes-langchain.agentTool":{"count":3},"@n8n/n8n-nodes-langchain.mcpClientTool":{"count":1},"@n8n/n8n-nodes-langchain.lmChatAnthropic":{"count":4},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":4}}},"status":"published","readyToDemo":null,"user":{"name":"Cheng Siong Chin","username":"cschin","bio":"Dr. Cheng Siong CHIN is an n8n workflow creator specializing in AI-powered automation, agent orchestration, and intelligent system integrations. He designs and builds end-to-end workflows that combine LLMs, APIs, and data pipelines to streamline complex processes and deliver production-ready automation solutions. Contact me to discuss custom AI workflows and agent architectures.\n","verified":true,"links":["https://gravatar.com/mysticluminary9fa255f7f5"],"avatar":"https://gravatar.com/avatar/54544f98e839bb9dd9a764ad1e6823eeddb6db5138d201e42f291a7b0a73303f?r=pg&d=retro&size=200"},"nodes":[{"id":11,"icon":"fa:envelope","name":"n8n-nodes-base.emailSend","codex":{"data":{"alias":["SMTP","email","human","form","wait","hitl","approval"],"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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sendemail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/sendemail/"}]},"categories":["Communication","HITL","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Send Email","color":"#00bb88"},"iconData":{"icon":"envelope","type":"icon"},"displayName":"Send Email","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":9,"name":"Core Nodes"},{"id":28,"name":"HITL"}]},{"id":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"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/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"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.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"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":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"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/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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"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/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"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/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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"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":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"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":1145,"icon":"file:anthropic.svg","name":"@n8n/n8n-nodes-langchain.lmChatAnthropic","codex":{"data":{"alias":["claude","sonnet","opus"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatanthropic/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Anthropic Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzdEN0Q4NyIgZD0iTTMyLjczIDBoLTYuOTQ1TDM4LjQ1IDMyaDYuOTQ1ek0xMi42NjUgMCAwIDMyaDcuMDgybDIuNTktNi43MmgxMy4yNWwyLjU5IDYuNzJoNy4wODJMMTkuOTI5IDB6bS0uNzAyIDE5LjMzNyA0LjMzNC0xMS4yNDYgNC4zMzQgMTEuMjQ2eiIvPjwvc3ZnPg=="},"displayName":"Anthropic Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","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"}]},{"id":1310,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agentTool","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent Tool","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent Tool","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":5,"name":"Engineering"},{"id":48,"name":"AI RAG"}],"image":[]}}