{"workflow":{"id":14413,"name":"Assess blockchain smart contract and tokenomics risk with GPT-4o and Gmail","views":35,"recentViews":2,"totalViews":35,"createdAt":"2026-03-28T09:04:31.838Z","description":"## How It Works\nThis workflow automates blockchain risk assessment using a multi-agent AI architecture, targeting DeFi developers, blockchain auditors, and Web3 project teams who need rigorous smart contract and tokenomics evaluation before deployment or investment decisions. The core problem it solves is the time-intensive, expertise-heavy process of manually auditing Solidity smart contracts and modelling tokenomics sustainability, tasks prone to oversight when done under launch pressure. A manual trigger reads Solidity files from disk and passes them to the Blockchain Risk Orchestrator Agent, which coordinates two specialist sub-agents: a Smart Contract Auditor Agent (using static analysis and a dedicated auditor model) and a Tokenomics Sustainability Agent (leveraging a Risk Score Calculator and Monte Carlo Simulation Tool). Each agent maintains its own memory and model context. Outputs are parsed into a Structured Risk Report, then prepared for storage and saved to a database. A final Gmail node dispatches the completed risk report to stakeholders, closing the audit loop automatically.\n\n## Setup Steps\n1. Configure the Read Solidity Files node with the correct disk path to your `.sol` files.\n2. Add LLM API credentials to all Chat Model nodes (Orchestrator, Auditor, Tokenomics).\n3. Set static analysis parameters in the Static Analysis Tool node.\n4. Define risk thresholds and scoring weights in the Risk Score Calculator.\n5. Configure Monte Carlo simulation parameters in the simulation tool node.\n## Prerequisites\n- LLM API key (OpenAI or compatible)\n- Solidity `.sol` files accessible on disk\n- Static analysis tool configuration\n- Gmail account with OAuth2 credentials\n- Target database or storage destination\n## Use Cases\n- Audit smart contracts before mainnet deployment to catch critical vulnerabilities.\n## Customisation\n- Extend to support multiple Solidity file batches or GitHub repository inputs.\n## Benefits\n- Reduces smart contract audit time from days to minutes.\n","workflow":{"id":"wkdPd1c6cN8gYF1W","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"AI agent for blockchain contract risk analysis with tokenomics and monte carlo","tags":[],"nodes":[{"id":"2c308a2b-d2b7-4335-b67d-4c97d93551f2","name":"Start Analysis","type":"n8n-nodes-base.manualTrigger","position":[256,304],"parameters":{},"typeVersion":1},{"id":"ed4c35e7-1b3e-4770-b669-14bc2c392746","name":"Read Solidity Files","type":"n8n-nodes-base.readWriteFile","position":[480,304],"parameters":{"options":{},"fileSelector":"<__PLACEHOLDER_VALUE__path_to_solidity_file__>"},"typeVersion":1.1},{"id":"488d0fb6-bfe3-4746-a37c-ea6c8b5af1e5","name":"Blockchain Risk Orchestrator","type":"@n8n/n8n-nodes-langchain.agent","position":[976,304],"parameters":{"text":"={{ $json.data }}","options":{"systemMessage":"You are a Blockchain Risk Orchestrator coordinating specialized agents to analyze smart contracts and tokenomics. You delegate smart contract static analysis to the Smart Contract Auditor Agent and tokenomics sustainability analysis to the Tokenomics Sustainability Agent. Aggregate their findings into a comprehensive risk assessment with actionable remediation plans."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"5d75566f-9c36-44fc-a94e-596c5633ce84","name":"Orchestrator Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[672,672],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.2},"builtInTools":{}},"credentials":{"openAiApi":{"id":"credential-id","name":"OpenAi account"}},"typeVersion":1.3},{"id":"e52308cf-a2fb-4268-bc75-64d806d3a8c8","name":"Smart Contract Auditor Agent","type":"@n8n/n8n-nodes-langchain.agentTool","position":[832,640],"parameters":{"text":"={{ $fromAI('solidity_code', 'The Solidity smart contract source code to analyze', 'string') }}","options":{"systemMessage":"You are a Smart Contract Security Auditor specializing in Solidity static analysis. Analyze smart contract code for: 1) Reentrancy vulnerabilities (check-effects-interactions pattern violations), 2) Integer overflow/underflow risks (pre-0.8.0 Solidity), 3) Unchecked external calls and return values, 4) Access control flaws (missing modifiers, improper visibility), 5) Logic errors and edge cases. Use the static analysis tool to perform pattern matching and the calculator for risk scoring. Provide severity ratings (Critical/High/Medium/Low) and specific line references."},"toolDescription":"Performs static analysis of Solidity smart contracts to detect reentrancy vulnerabilities, integer overflow/underflow risks, unchecked external calls, access control flaws, and logic errors. Returns detailed vulnerability findings with severity ratings."},"typeVersion":3},{"id":"58bcb178-d29e-4561-b047-2b0360d5ea74","name":"Auditor Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[768,816],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.1},"builtInTools":{}},"credentials":{"openAiApi":{"id":"credential-id","name":"OpenAi account"}},"typeVersion":1.3},{"id":"d941fb11-613a-40b6-a74f-fff1c2bb4eb2","name":"Static Analysis Tool","type":"@n8n/n8n-nodes-langchain.toolCode","position":[896,816],"parameters":{"jsCode":"const code = $input.first().json.code || '';\nconst analysisType = $input.first().json.analysisType || 'full';\n\nconst findings = [];\n\n// Reentrancy detection\nconst externalCallPattern = /\\.call\\{|\\.transfer\\(|\\.send\\(/g;\nconst stateChangePattern = /\\w+\\s*=|\\w+\\+\\+|\\w+--|\\w+\\s*\\+=|\\w+\\s*-=/g;\nconst lines = code.split('\\n');\n\nfor (let i = 0; i < lines.length; i++) {\n  const line = lines[i];\n  \n  // Check for reentrancy pattern\n  if (externalCallPattern.test(line)) {\n    // Look for state changes after external call\n    for (let j = i + 1; j < Math.min(i + 10, lines.length); j++) {\n      if (stateChangePattern.test(lines[j])) {\n        findings.push({\n          type: 'reentrancy',\n          severity: 'Critical',\n          line: i + 1,\n          description: `Potential reentrancy: external call at line ${i+1} followed by state change at line ${j+1}`,\n          code: line.trim()\n        });\n        break;\n      }\n    }\n  }\n  \n  // Check for unchecked external calls\n  if (/\\.call\\{/.test(line) && !/require\\(|assert\\(|if\\s*\\(/.test(line) && !/require\\(|assert\\(|if\\s*\\(/.test(lines[i-1] || '')) {\n    findings.push({\n      type: 'unchecked_call',\n      severity: 'High',\n      line: i + 1,\n      description: 'External call without return value check',\n      code: line.trim()\n    });\n  }\n  \n  // Check for integer overflow (pre-0.8.0)\n  if (/pragma solidity \\^0\\.[0-7]\\./.test(code) && /\\+|\\*|-/.test(line) && /uint|int/.test(lines[i-1] || '')) {\n    findings.push({\n      type: 'overflow_risk',\n      severity: 'High',\n      line: i + 1,\n      description: 'Potential integer overflow in Solidity < 0.8.0 without SafeMath',\n      code: line.trim()\n    });\n  }\n  \n  // Check for missing access control\n  if (/function\\s+\\w+.*public/.test(line) && !/onlyOwner|onlyAdmin|require\\(msg\\.sender/.test(line)) {\n    const funcName = line.match(/function\\s+(\\w+)/)?.[1];\n    if (funcName && (funcName.includes('withdraw') || funcName.includes('transfer') || funcName.includes('set'))) {\n      findings.push({\n        type: 'access_control',\n        severity: 'Medium',\n        line: i + 1,\n        description: `Public function '${funcName}' may need access control`,\n        code: line.trim()\n      });\n    }\n  }\n}\n\nreturn [{ json: { findings, totalIssues: findings.length, analysisComplete: true } }];","description":"Performs specialized static analysis algorithms including regex pattern matching for vulnerability detection, AST-like parsing of Solidity code structure, and identification of dangerous patterns (reentrancy, unchecked calls, etc.)"},"typeVersion":1.3},{"id":"94520621-6cd9-4e1a-a322-c0dff930195f","name":"Risk Score Calculator","type":"@n8n/n8n-nodes-langchain.toolCalculator","position":[1152,800],"parameters":{},"typeVersion":1},{"id":"1345d433-0c91-4ab4-95af-964cf42d0b2b","name":"Tokenomics Sustainability Agent","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1216,624],"parameters":{"text":"={{ $fromAI('tokenomics_data', 'Token economics parameters including supply, distribution, governance rules, and emission schedules', 'string') }}","options":{"systemMessage":"You are a Tokenomics Sustainability Analyst specializing in DAO governance risk assessment. Analyze token economics for: 1) Token supply dynamics and inflation scenarios using Monte Carlo simulations, 2) Governance centralization risks (voting power concentration, whale dominance), 3) Economic sustainability (token velocity, liquidity depth, emission schedules), 4) DAO stability metrics (Gini coefficient, Nakamoto coefficient, governance participation rates). Use the Monte Carlo simulation tool to model probabilistic scenarios and the calculator for statistical analysis. Provide a DAO stability score (0-100) and identify systemic risks."},"toolDescription":"Performs Monte Carlo simulations of token supply dynamics, inflation scenarios, and governance centralization risks. Computes DAO stability scores based on token distribution, voting power concentration, and economic sustainability metrics."},"typeVersion":3},{"id":"1b73ec13-2265-462c-a78b-4c12adb1d5bc","name":"Tokenomics Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1312,800],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.1},"builtInTools":{}},"credentials":{"openAiApi":{"id":"credential-id","name":"OpenAi account"}},"typeVersion":1.3},{"id":"24b85003-b15c-438c-86e3-20aa50d308e3","name":"Monte Carlo Simulation Tool","type":"@n8n/n8n-nodes-langchain.toolCode","position":[1472,800],"parameters":{"jsCode":"const params = $input.first().json;\nconst simulations = params.simulations || 10000;\nconst timeHorizon = params.timeHorizon || 365; // days\n\n// Extract tokenomics parameters\nconst initialSupply = params.initialSupply || 1+1234567890;\nconst inflationRate = params.inflationRate || 0.05; // 5% annual\nconst distributionGini = params.distributionGini || 0.7; // Gini coefficient\nconst topHoldersPercent = params.topHoldersPercent || 0.3; // Top 10 holders own 30%\n\nconst results = {\n  supplyProjections: [],\n  inflationScenarios: [],\n  centralizationRisks: [],\n  stabilityMetrics: {}\n};\n\n// Monte Carlo simulation for token supply dynamics\nfor (let sim = 0; sim < simulations; sim++) {\n  let supply = initialSupply;\n  let dailyInflation = Math.pow(1 + inflationRate, 1/365) - 1;\n  \n  // Add randomness to inflation (±20% variance)\n  const inflationVariance = 0.8 + Math.random() * 0.4;\n  dailyInflation *= inflationVariance;\n  \n  for (let day = 0; day < timeHorizon; day++) {\n    supply *= (1 + dailyInflation);\n  }\n  \n  results.supplyProjections.push(supply);\n  \n  // Calculate inflation impact\n  const totalInflation = (supply - initialSupply) / initialSupply;\n  results.inflationScenarios.push(totalInflation);\n}\n\n// Governance centralization risk simulation\nfor (let sim = 0; sim < simulations; sim++) {\n  // Simulate voting power concentration\n  const whaleVotingPower = topHoldersPercent + (Math.random() - 0.5) * 0.1;\n  const participationRate = 0.2 + Math.random() * 0.3; // 20-50% participation\n  \n  // Nakamoto coefficient (number of entities needed for 51% attack)\n  const nakamotoCoeff = Math.floor(1 / whaleVotingPower) + Math.floor(Math.random() * 3);\n  \n  // Centralization risk score (0-1, higher = more centralized)\n  const centralizationScore = whaleVotingPower * (1 - participationRate) * (10 / nakamotoCoeff);\n  \n  results.centralizationRisks.push({\n    whaleVotingPower,\n    participationRate,\n    nakamotoCoeff,\n    centralizationScore\n  });\n}\n\n// Calculate statistical metrics\nconst mean = arr => arr.reduce((a, b) => a + b, 0) / arr.length;\nconst stdDev = arr => {\n  const avg = mean(arr);\n  return Math.sqrt(arr.reduce((sq, n) => sq + Math.pow(n - avg, 2), 0) / arr.length);\n};\nconst percentile = (arr, p) => {\n  const sorted = [...arr].sort((a, b) => a - b);\n  return sorted[Math.floor(sorted.length * p)];\n};\n\nresults.stabilityMetrics = {\n  supplyMean: mean(results.supplyProjections),\n  supplyStdDev: stdDev(results.supplyProjections),\n  supply95thPercentile: percentile(results.supplyProjections, 0.95),\n  inflationMean: mean(results.inflationScenarios),\n  inflationStdDev: stdDev(results.inflationScenarios),\n  avgCentralizationScore: mean(results.centralizationRisks.map(r => r.centralizationScore)),\n  avgNakamotoCoeff: mean(results.centralizationRisks.map(r => r.nakamotoCoeff)),\n  avgParticipationRate: mean(results.centralizationRisks.map(r => r.participationRate)),\n  giniCoefficient: distributionGini,\n  // DAO Stability Score (0-100, higher = more stable)\n  daoStabilityScore: Math.max(0, Math.min(100, \n    100 - (mean(results.centralizationRisks.map(r => r.centralizationScore)) * 100) \n    - (stdDev(results.inflationScenarios) * 50)\n    - ((1 - mean(results.centralizationRisks.map(r => r.participationRate))) * 30)\n  ))\n};\n\nreturn [{ json: results }];","description":"Executes Monte Carlo simulations for token supply dynamics, inflation scenarios, and governance outcomes. Generates probabilistic distributions and statistical metrics for risk assessment."},"typeVersion":1.3},{"id":"685b4822-8b5c-4979-80ff-9f2af32d7a6e","name":"Structured Risk Report","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1664,768],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"executiveSummary\": {\n      \"type\": \"string\",\n      \"description\": \"High-level overview of the blockchain risk analysis findings\"\n    },\n    \"smartContractFindings\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"criticalVulnerabilities\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"type\": { \"type\": \"string\" },\n              \"severity\": { \"type\": \"string\" },\n              \"line\": { \"type\": \"number\" },\n              \"description\": { \"type\": \"string\" },\n              \"remediation\": { \"type\": \"string\" }\n            }\n          }\n        },\n        \"highRiskIssues\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"type\": { \"type\": \"string\" },\n              \"severity\": { \"type\": \"string\" },\n              \"line\": { \"type\": \"number\" },\n              \"description\": { \"type\": \"string\" },\n              \"remediation\": { \"type\": \"string\" }\n            }\n          }\n        },\n        \"mediumRiskIssues\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"type\": { \"type\": \"string\" },\n              \"severity\": { \"type\": \"string\" },\n              \"line\": { \"type\": \"number\" },\n              \"description\": { \"type\": \"string\" },\n              \"remediation\": { \"type\": \"string\" }\n            }\n          }\n        },\n        \"overallSecurityScore\": {\n          \"type\": \"number\",\n          \"description\": \"Security score from 0-100, where 100 is most secure\"\n        }\n      }\n    },\n    \"tokenomicsFindings\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"daoStabilityScore\": {\n          \"type\": \"number\",\n          \"description\": \"DAO stability score from 0-100, where 100 is most stable\"\n        },\n        \"centralizationRisks\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"nakamotoCoefficient\": { \"type\": \"number\" },\n            \"giniCoefficient\": { \"type\": \"number\" },\n            \"whaleVotingPower\": { \"type\": \"number\" },\n            \"participationRate\": { \"type\": \"number\" },\n            \"riskLevel\": { \"type\": \"string\" }\n          }\n        },\n        \"inflationAnalysis\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"projectedInflation\": { \"type\": \"number\" },\n            \"inflationVolatility\": { \"type\": \"number\" },\n            \"sustainabilityRating\": { \"type\": \"string\" }\n          }\n        },\n        \"supplyDynamics\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"projectedSupply\": { \"type\": \"number\" },\n            \"supplyVolatility\": { \"type\": \"number\" },\n            \"emissionScheduleRisk\": { \"type\": \"string\" }\n          }\n        }\n      }\n    },\n    \"remediationPlan\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"immediatePriorities\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"action\": { \"type\": \"string\" },\n              \"rationale\": { \"type\": \"string\" },\n              \"estimatedEffort\": { \"type\": \"string\" }\n            }\n          }\n        },\n        \"shortTermActions\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"action\": { \"type\": \"string\" },\n              \"rationale\": { \"type\": \"string\" },\n              \"estimatedEffort\": { \"type\": \"string\" }\n            }\n          }\n        },\n        \"longTermRecommendations\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"action\": { \"type\": \"string\" },\n              \"rationale\": { \"type\": \"string\" },\n              \"estimatedEffort\": { \"type\": \"string\" }\n            }\n          }\n        }\n      }\n    },\n    \"overallRiskRating\": {\n      \"type\": \"string\",\n      \"description\": \"Overall risk rating: Critical, High, Medium, or Low\"\n    }\n  },\n  \"required\": [\"executiveSummary\", \"smartContractFindings\", \"tokenomicsFindings\", \"remediationPlan\", \"overallRiskRating\"]\n}"},"typeVersion":1.3},{"id":"285d478b-152d-43e1-b6fb-7d38b8a07e0e","name":"Prepare Storage Data","type":"n8n-nodes-base.set","position":[1600,304],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"timestamp","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-2","name":"overallRiskRating","type":"string","value":"={{ $json.overallRiskRating }}"},{"id":"id-3","name":"securityScore","type":"number","value":"={{ $json.smartContractFindings.overallSecurityScore }}"},{"id":"id-4","name":"daoStabilityScore","type":"number","value":"={{ $json.tokenomicsFindings.daoStabilityScore }}"},{"id":"id-5","name":"criticalVulnerabilities","type":"number","value":"={{ $json.smartContractFindings.criticalVulnerabilities.length }}"},{"id":"id-6","name":"executiveSummary","type":"string","value":"={{ $json.executiveSummary }}"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"761f9a11-1cc6-4f3a-8e19-f069eeb14411","name":"Store Risk Analysis","type":"n8n-nodes-base.dataTable","position":[1824,304],"parameters":{"columns":{"value":null,"mappingMode":"autoMapInputData"},"options":{},"dataTableId":{"__rl":true,"mode":"id","value":"<__PLACEHOLDER_VALUE__risk_analysis_table__>"}},"typeVersion":1.1},{"id":"d49346a2-9ae1-457f-8719-e1b0ab026674","name":"Send Risk Report Email","type":"n8n-nodes-base.gmail","position":[2096,304],"webhookId":"fa9dd580-a6fb-4edd-a92d-1fbc5c1f8e4d","parameters":{"sendTo":"<__PLACEHOLDER_VALUE__recipient_email__>","message":"=Executive Summary:\n{{ $json.output.executiveSummary }}\n\n=== SMART CONTRACT FINDINGS ===\nSecurity Score: {{ $json.output.smartContractFindings.overallSecurityScore }}/100\nCritical Vulnerabilities: {{ $json.output.smartContractFindings.criticalVulnerabilities.length }}\nHigh Risk Issues: {{ $json.output.smartContractFindings.highRiskIssues.length }}\nMedium Risk Issues: {{ $json.output.smartContractFindings.mediumRiskIssues.length }}\n\n=== TOKENOMICS FINDINGS ===\nDAO Stability Score: {{ $json.output.tokenomicsFindings.daoStabilityScore }}/100\nNakamoto Coefficient: {{ $json.output.tokenomicsFindings.centralizationRisks.nakamotoCoefficient }}\nGini Coefficient: {{ $json.output.tokenomicsFindings.centralizationRisks.giniCoefficient }}\nParticipation Rate: {{ $json.output.tokenomicsFindings.centralizationRisks.participationRate }}\n\n=== REMEDIATION PLAN ===\nImmediate Priorities: {{ $json.output.remediationPlan.immediatePriorities.length }} actions\nShort-Term Actions: {{ $json.output.remediationPlan.shortTermActions.length }} actions\nLong-Term Recommendations: {{ $json.output.remediationPlan.longTermRecommendations.length }} actions\n\nOverall Risk Rating: {{ $json.output.overallRiskRating }}\n\nFull analysis stored in database.","options":{"appendAttribution":false},"subject":"=Blockchain Risk Analysis Report - {{ $json.output.overallRiskRating }} Risk"},"credentials":{"gmailOAuth2":{"id":"credential-id","name":"Gmail account"}},"typeVersion":2.2},{"id":"0b70e035-e44c-461b-9ffd-10f8457ca980","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[208,160],"parameters":{"color":7,"width":1120,"height":336,"content":"## Trigger, Orchestrate Specialist Agents\n**What:** Blockchain Risk Orchestrator delegates tasks to Smart Contract Auditor and Tokenomics Sustainability agents.\n**Why:** Parallel specialised analysis ensures both code-level vulnerabilities and economic risks are assessed simultaneously."},"typeVersion":1},{"id":"feae089b-d969-4d16-b53c-e76605654dc9","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[768,-128],"parameters":{"width":400,"height":256,"content":"## Setup Steps\n1. Configure the Read Solidity Files node with the correct disk path to your `.sol` files.\n2. Add LLM API credentials to all Chat Model nodes (Orchestrator, Auditor, Tokenomics).\n3. Set static analysis parameters in the Static Analysis Tool node.\n4. Define risk thresholds and scoring weights in the Risk Score Calculator.\n5. Configure Monte Carlo simulation parameters (iterations, variables) in the simulation tool node."},"typeVersion":1},{"id":"09414b7c-ba3e-4eb4-aeae-4e9ca7d5173f","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[224,-240],"parameters":{"width":528,"height":368,"content":"## How It Works\nThis workflow automates blockchain risk assessment using a multi-agent AI architecture, targeting DeFi developers, blockchain auditors, and Web3 project teams who need rigorous smart contract and tokenomics evaluation before deployment or investment decisions. The core problem it solves is the time-intensive, expertise-heavy process of manually auditing Solidity smart contracts and modelling tokenomics sustainability, tasks prone to oversight when done under launch pressure. A manual trigger reads Solidity files from disk and passes them to the Blockchain Risk Orchestrator Agent, which coordinates two specialist sub-agents: a Smart Contract Auditor Agent (using static analysis and a dedicated auditor model) and a Tokenomics Sustainability Agent (leveraging a Risk Score Calculator and Monte Carlo Simulation Tool). Each agent maintains its own memory and model context. Outputs are parsed into a Structured Risk Report, then prepared for storage and saved to a database. A final Gmail node dispatches the completed risk report to stakeholders, closing the audit loop automatically."},"typeVersion":1},{"id":"80030564-edfa-463e-bf11-a99491e2751e","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1200,-144],"parameters":{"color":5,"width":448,"height":256,"content":"## Setup Steps\n1. Configure the Read Solidity Files node with the correct disk path to your `.sol` files.\n2. Add LLM API credentials to all Chat Model nodes (Orchestrator, Auditor, Tokenomics).\n3. Set static analysis parameters in the Static Analysis Tool node.\n4. Define risk thresholds and scoring weights in the Risk Score Calculator.\n5. Configure Monte Carlo simulation parameters in the simulation tool node."},"typeVersion":1},{"id":"0ffba75d-26ae-43fc-bd9c-adff14144075","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[160,512],"parameters":{"color":7,"width":928,"height":512,"content":"## Smart Contract Audit\n**What:** Auditor Agent applies static analysis to detect vulnerabilities in Solidity code.\n**Why:** Identifies exploitable flaws (e.g., reentrancy, overflow) before deployment."},"typeVersion":1},{"id":"5d2d2126-7b64-46b0-bc9e-77fddf6dcc85","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[1104,608],"parameters":{"color":7,"width":832,"height":480,"content":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Tokenomics Simulation\n**What:** Tokenomics Agent runs Monte Carlo simulations and calculates risk scores.\n**Why:** Models economic sustainability under uncertainty, revealing collapse or inflation scenarios."},"typeVersion":1},{"id":"4289bb92-95d5-4826-b7aa-7a715bcdd09a","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[1376,208],"parameters":{"color":7,"width":880,"height":320,"content":"## Parse, Store & Report\n**What:** Structured Risk Report Parser consolidates findings; data is stored and emailed via Gmail.\n**Why:** Delivers a traceable, shareable audit trail to all stakeholders automatically."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"binaryMode":"separate","executionOrder":"v1"},"versionId":"bac3d4ff-90f8-4576-9e95-7318159952cd","connections":{"Auditor Model":{"ai_languageModel":[[{"node":"Smart Contract Auditor Agent","type":"ai_languageModel","index":0}]]},"Start Analysis":{"main":[[{"node":"Read Solidity Files","type":"main","index":0}]]},"Tokenomics Model":{"ai_languageModel":[[{"node":"Tokenomics Sustainability Agent","type":"ai_languageModel","index":0}]]},"Orchestrator Model":{"ai_languageModel":[[{"node":"Blockchain Risk Orchestrator","type":"ai_languageModel","index":0}]]},"Read Solidity Files":{"main":[[{"node":"Blockchain Risk Orchestrator","type":"main","index":0}]]},"Store Risk Analysis":{"main":[[{"node":"Send Risk Report Email","type":"main","index":0}]]},"Prepare Storage Data":{"main":[[{"node":"Store Risk Analysis","type":"main","index":0}]]},"Static Analysis Tool":{"ai_tool":[[{"node":"Smart Contract Auditor Agent","type":"ai_tool","index":0}]]},"Risk Score Calculator":{"ai_tool":[[{"node":"Smart Contract Auditor Agent","type":"ai_tool","index":0},{"node":"Tokenomics Sustainability Agent","type":"ai_tool","index":0}]]},"Structured Risk Report":{"ai_outputParser":[[{"node":"Blockchain Risk Orchestrator","type":"ai_outputParser","index":0}]]},"Monte Carlo Simulation Tool":{"ai_tool":[[{"node":"Tokenomics Sustainability Agent","type":"ai_tool","index":0}]]},"Blockchain Risk Orchestrator":{"main":[[{"node":"Prepare Storage Data","type":"main","index":0}]]},"Smart Contract Auditor Agent":{"ai_tool":[[{"node":"Blockchain Risk Orchestrator","type":"ai_tool","index":0}]]},"Tokenomics Sustainability Agent":{"ai_tool":[[{"node":"Blockchain Risk Orchestrator","type":"ai_tool","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":22,"nodeTypes":{"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.gmail":{"count":1},"n8n-nodes-base.dataTable":{"count":1},"n8n-nodes-base.stickyNote":{"count":7},"n8n-nodes-base.manualTrigger":{"count":1},"n8n-nodes-base.readWriteFile":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"@n8n/n8n-nodes-langchain.toolCode":{"count":2},"@n8n/n8n-nodes-langchain.agentTool":{"count":2},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":3},"@n8n/n8n-nodes-langchain.toolCalculator":{"count":1},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"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":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":356,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmail","codex":{"data":{"alias":["email","human","form","wait","hitl","approval"],"resources":{"generic":[{"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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with 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-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/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"transform\"]","defaults":{"name":"Gmail"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"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":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual 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":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":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":1195,"icon":"fa:calculator","name":"@n8n/n8n-nodes-langchain.toolCalculator","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcalculator/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Other Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"Calculator"},"iconData":{"icon":"calculator","type":"icon"},"displayName":"Calculator","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1197,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.toolCode","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"Code Tool"},"iconData":{"icon":"code","type":"icon"},"displayName":"Code Tool","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1233,"icon":"file:readWriteFile.svg","name":"n8n-nodes-base.readWriteFile","codex":{"data":{"alias":["Binary","Binary File","File","Text","Open","Import","Save","Export","Disk","Transfer","Read Binary File","Write Binary File"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.readwritefile/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Files"]}}},"group":"[\"input\"]","defaults":{"name":"Read/Write Files from Disk"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTQxXzE1NDcpIj4KPHBhdGggZD0iTTAgMTJDMCA1LjM3MjU4IDUuMzcyNTggMCAxMiAwSDE1OVYxNTRDMTU5IDE2MC42MjcgMTY0LjM3MyAxNjYgMTcxIDE2NkgzMjVWMjQySDIyOC41NjJDMjEwLjg5NSAyNDIgMTk0LjY1NiAyNTEuNzA1IDE4Ni4yODggMjY3LjI2NEwxMjkuMjAzIDM3My40MDdDMTI1LjEzMSAzODAuOTc4IDEyMyAzODkuNDQgMTIzIDM5OC4wMzdWNDM0SDEyQzUuMzcyNTcgNDM0IDAgNDI4LjYyNyAwIDQyMlYxMloiIGZpbGw9IiM0NEFBNDQiLz4KPHBhdGggZD0iTTMyNSAxMzRWMTI3LjQwMUMzMjUgMTI0LjIyMyAzMjMuNzQgMTIxLjE3NSAzMjEuNDk1IDExOC45MjVMMjA2LjM2OSAzLjUyNDgxQzIwNC4xMTggMS4yNjgyIDIwMS4wNjEgMCAxOTcuODczIDBIMTkxVjEzNEgzMjVaIiBmaWxsPSIjNDRBQTQ0Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjI4LjU2MyAyNzRDMjIyLjY3NCAyNzQgMjE3LjI2MSAyNzcuMjM1IDIxNC40NzIgMjgyLjQyMUwxNzIuMjExIDM2MUg0OTIuNjRMNDQ0LjY3IDI4MS43MTdDNDQxLjc3MiAyNzYuOTI3IDQzNi41OCAyNzQgNDMwLjk4MSAyNzRIMjI4LjU2M1oiIGZpbGw9IiM0NEFBNDQiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNTUgNDA5QzE1NSA0MDAuMTYzIDE2Mi4xNjMgMzkzIDE3MSAzOTNINDk2QzUwNC44MzcgMzkzIDUxMiA0MDAuMTYzIDUxMiA0MDlWNDk2QzUxMiA1MDQuODM3IDUwNC44MzcgNTEyIDQ5NiA1MTJIMTcxQzE2Mi4xNjMgNTEyIDE1NSA1MDQuODM3IDE1NSA0OTZWNDA5Wk0zOTcgNDUzQzM5NyA0NjYuMjU1IDM4Ni4yNTUgNDc3IDM3MyA0NzdDMzU5Ljc0NSA0NzcgMzQ5IDQ2Ni4yNTUgMzQ5IDQ1M0MzNDkgNDM5Ljc0NSAzNTkuNzQ1IDQyOSAzNzMgNDI5QzM4Ni4yNTUgNDI5IDM5NyA0MzkuNzQ1IDM5NyA0NTNaTTQ0NSA0NzdDNDU4LjI1NSA0NzcgNDY5IDQ2Ni4yNTUgNDY5IDQ1M0M0NjkgNDM5Ljc0NSA0NTguMjU1IDQyOSA0NDUgNDI5QzQzMS43NDUgNDI5IDQyMSA0MzkuNzQ1IDQyMSA0NTNDNDIxIDQ2Ni4yNTUgNDMxLjc0NSA0NzcgNDQ1IDQ3N1oiIGZpbGw9IiM0NEFBNDQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTQxXzE1NDciPgo8cmVjdCB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K"},"displayName":"Read/Write Files from Disk","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"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"}]},{"id":1315,"icon":"fa:table","name":"n8n-nodes-base.dataTable","codex":{"data":{"alias":["data","table","knowledge","data table","table","sheet","database","data base","mysql","postgres","postgresql","airtable","supabase","noco","notion"],"details":"Data table","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/"}]},"categories":["Core Nodes","Development"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\",\"transform\"]","defaults":{"name":"Data table"},"iconData":{"icon":"table","type":"icon"},"displayName":"Data table","typeVersion":1,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":29,"name":"SecOps"},{"id":48,"name":"AI RAG"}],"image":[]}}