A MCP for Claude Desktop / Claude Code / Windsurf / Cursor to build n8n workflows for you
This report presents the forensic synthetic code analysis of czlonkowski/n8n-mcp, a TypeScript project with 22,275 GitHub stars. SynthScan v2.0 examined 308,022 lines of code across 798 source files, recording 387 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 2.8 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 387 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 69 | // ─── Workflow Structure Validation ───────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 236 | // ─── Node Validation ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 383 | // ─── Connection Validation ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 465 | // ─── Expression Validation ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 491 | // ─── Expression Format Detection ────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 560 | // ─── Error Handler Detection ─────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 586 | // ─── onError Property Validation ─────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 608 | // ─── Workflow Patterns ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 645 | // ─── Node Error Handling ─────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 682 | // ─── Trigger Reachability ────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 697 | // ─── Tool Variant Validation ─────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 766 | // ─── AI Sub-Node Main Connection Detection ───────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 806 | // ─── Suggestions ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 826 | // ─── Validation Options ──────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 840 | // ─── Integration Tests ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator.test.ts | 862 | // ─── If/Switch conditions validation ────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 13 | // ─── Basic Validation ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 90 | // ─── Edge Cases and Additional Coverage ───────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 140 | // ─── ResourceLocator Validation ───────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 260 | // ─── _cnd Operators (from config-validator-cnd) ───────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 444 | // ─── Null/Undefined Handling (from edge-cases) ───────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 453 | // ─── Boundary Value Testing (from edge-cases) ───────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 470 | // ─── Invalid Data Type Handling (from edge-cases) ───────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 487 | // ─── Performance Boundaries (from edge-cases) ───────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 501 | // ─── Special Characters (from edge-cases) ───────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 508 | // ─── Complex Validation Scenarios (from edge-cases) ─────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 524 | // ─── Error Recovery (from edge-cases) ───────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 541 | // ─── Batch Validation (from edge-cases) ─────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 551 | // ─── HTTP Request Node (from node-specific) ────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 573 | // ─── Code Node (from node-specific) ────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 634 | // ─── Python Code Node (from node-specific) ────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/config-validator.test.ts | 659 | // ─── Database Node (from node-specific, non-security) ──────────── | COMMENT |
| MEDIUM | tests/unit/services/enhanced-config-validator.test.ts | 1375 | // ─── Integration Tests (from enhanced-config-validator-integration) ───────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator-fp-audit.test.ts | 66 | // ─── A2a: webhook responseNode does not require onError ──────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator-fp-audit.test.ts | 100 | // ─── A2b + B1: node-type-aware error output configuration ────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator-fp-audit.test.ts | 267 | // ─── A6: Merge input bounds ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator-fp-audit.test.ts | 313 | // ─── A6: cycle detection ──────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator-fp-audit.test.ts | 396 | // ─── A7: duplicate node IDs ───────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator-fp-audit.test.ts | 444 | // ─── A7: typeVersion / unknown-node severity by package ──────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator-fp-audit.test.ts | 522 | // ─── B2: AI sub-node trigger reachability ────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator-fp-audit.test.ts | 632 | // ─── B3: outdated typeVersion demoted to a gated suggestion ──────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator-fp-audit.test.ts | 665 | // ─── RC-2 + B7: error-handling advisories ─────────────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator-fp-audit.test.ts | 737 | // ─── RC-2 + B11: workflow-level error-handling advice ─────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator-fp-audit.test.ts | 812 | // ─── B8 + info routing: AI advisory dedupe and severity ───────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator-fp-audit.test.ts | 878 | // ─── B9: removed / demoted node-level advisories ──────────────────── | COMMENT |
| MEDIUM | tests/unit/services/workflow-validator-fp-audit.test.ts | 933 | // ─── B11: RECOVERY text references the current tool surface ───────── | COMMENT |
| MEDIUM⚡ | docs/local/integration-testing-plan.md | 401 | # ======================================== | COMMENT |
| MEDIUM⚡ | docs/local/integration-testing-plan.md | 403 | # ======================================== | COMMENT |
| MEDIUM | src/mcp/handlers-n8n-manager.ts | 3584 | // ── Audit Instance ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/services/credential-scanner.ts | 54 | // ── AI / ML ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/services/credential-scanner.ts | 62 | // ── Cloud / DevOps ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/services/credential-scanner.ts | 73 | // ── GitHub ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/services/credential-scanner.ts | 79 | // ── Auth tokens ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/services/credential-scanner.ts | 83 | // ── Communication ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/services/credential-scanner.ts | 87 | // ── Payment ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/services/credential-scanner.ts | 92 | // ── Email / Marketing ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/services/credential-scanner.ts | 99 | // ── E-commerce ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/services/credential-scanner.ts | 102 | // ── Productivity / CRM ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/services/credential-scanner.ts | 110 | // ── Monitoring / Analytics ─────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/services/credential-scanner.ts | 116 | // ── Database ───────────────────────────────────────────────────────────── | COMMENT |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test-output.txt | 1581 | ✓ tests/unit/multi-tenant-integration.test.ts > Multi-Tenant Support Integration > InstanceContext Validation > API key | CODE |
| HIGH | tests/unit/flexible-instance-security.test.ts | 122 | 'YOUR_API_KEY', | CODE |
| HIGH | tests/unit/multi-tenant-integration.test.ts | 119 | 'YOUR_API_KEY', | CODE |
| HIGH⚡ | tests/unit/types/instance-context-coverage.test.ts | 273 | 'YOUR_API_KEY', | CODE |
| HIGH⚡ | tests/unit/types/instance-context-coverage.test.ts | 274 | 'your_api_key', | CODE |
| HIGH | tests/unit/types/instance-context-coverage.test.ts | 302 | err.includes('your_api_key') | CODE |
| HIGH | tests/integration/ai-validation/README.md | 116 | N8N_API_KEY=your-api-key | CODE |
| HIGH | tests/integration/ai-validation/TEST_REPORT.md | 198 | export N8N_API_KEY=your-api-key | CODE |
| HIGH | docs/HTTP_DEPLOYMENT.md | 74 | # N8N_API_KEY=your-api-key-here | COMMENT |
| HIGH | docs/HTTP_DEPLOYMENT.md | 129 | "N8N_API_KEY": "your-api-key-here" | CODE |
| HIGH | docs/CURSOR_SETUP.md | 48 | "N8N_API_KEY": "your-api-key" | CODE |
| HIGH | docs/CURSOR_SETUP.md | 58 | 2. Replace `your-api-key` with your n8n API key | CODE |
| HIGH | docs/SELF_HOSTING.md | 51 | "N8N_API_KEY": "your-api-key" | CODE |
| HIGH | docs/SELF_HOSTING.md | 180 | "-e", "N8N_API_KEY=your-api-key", | CODE |
| HIGH | docs/SELF_HOSTING.md | 207 | "-e", "N8N_API_KEY=your-api-key", | CODE |
| HIGH | docs/SELF_HOSTING.md | 276 | "N8N_API_KEY": "your-api-key" | CODE |
| HIGH | docs/CODEX_SETUP.md | 22 | env = { "MCP_MODE" = "stdio", "LOG_LEVEL" = "error", "DISABLE_CONSOLE_OUTPUT" = "true", "N8N_API_URL" = "https://your-n8 | CODE |
| HIGH | docs/CODEX_SETUP.md | 25 | Make sure to replace `https://your-n8n-instance.com` with your actual n8n URL and `your-api-key` with your n8n API key. | CODE |
| HIGH | docs/CLAUDE_CODE_SETUP.md | 39 | -e N8N_API_KEY=your-api-key \ | CODE |
| HIGH | docs/CLAUDE_CODE_SETUP.md | 51 | '-e N8N_API_KEY=your-api-key' ` | CODE |
| HIGH | docs/CLAUDE_CODE_SETUP.md | 55 | Make sure to replace `https://your-n8n-instance.com` with your actual n8n URL and `your-api-key` with your n8n API key. | CODE |
| HIGH | docs/CLAUDE_CODE_SETUP.md | 80 | "N8N_API_KEY": "your-api-key" | CODE |
| HIGH | docs/WINDSURF_SETUP.md | 53 | "N8N_API_KEY": "your-api-key" | CODE |
| HIGH | docs/WINDSURF_SETUP.md | 63 | 2. Replace `your-api-key` with your n8n API key | CODE |
| HIGH | docs/DOCKER_TROUBLESHOOTING.md | 110 | "-e", "N8N_API_KEY=your-api-key", | CODE |
| HIGH | docs/N8N_DEPLOYMENT.md | 62 | export N8N_API_KEY=your-api-key-here # Your n8n API key | CODE |
| HIGH | docs/N8N_DEPLOYMENT.md | 570 | curl -H "X-N8N-API-KEY: your-api-key" \ | CODE |
| HIGH⚡ | docs/local/integration-testing-plan.md | 407 | N8N_API_KEY=your-api-key-here | CODE |
| HIGH | docs/local/integration-tests-phase1-summary.md | 222 | N8N_API_KEY=<your-api-key> | CODE |
| HIGH | data/skills/n8n-workflow-patterns/webhook_processing.md | 255 | {{$json.headers['x-api-key']}} equals "your-api-key" | CODE |
| HIGH | src/types/instance-context.ts | 96 | !key.toLowerCase().includes('your_api_key') && | CODE |
| HIGH⚡ | src/types/instance-context.ts | 168 | if (context.n8nApiKey.toLowerCase().includes('your_api_key')) { | CODE |
| HIGH⚡ | src/types/instance-context.ts | 169 | errors.push(`Invalid n8nApiKey: contains placeholder 'your_api_key' - Please provide actual API key`); | CODE |
| HIGH | src/utils/template-sanitizer.ts | 33 | ['Bearer ', 'Bearer YOUR_TOKEN_HERE'] | CODE |
| HIGH | src/utils/template-sanitizer.ts | 173 | return 'YOUR_TOKEN_HERE'; | CODE |
| HIGH | src/services/task-templates.ts | 164 | example: 'Bearer YOUR_API_KEY' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | N8N_HTTP_STREAMABLE_SETUP.md | 21 | ### Step 1: Start Services | COMMENT |
| LOW | N8N_HTTP_STREAMABLE_SETUP.md | 35 | ### Step 2: Create MCP Credentials in n8n | COMMENT |
| LOW | N8N_HTTP_STREAMABLE_SETUP.md | 52 | ### Step 3: Configure MCP Client Node | COMMENT |
| LOW | N8N_HTTP_STREAMABLE_SETUP.md | 62 | ### Step 4: Test the Connection | COMMENT |
| LOW | tests/test-mcp-extraction.js | 76 | // Step 1: Initialize | COMMENT |
| LOW | tests/test-mcp-extraction.js | 110 | // Step 2: List tools | COMMENT |
| LOW | tests/test-mcp-extraction.js | 127 | // Step 3: Call the tool to get AI Agent code | COMMENT |
| LOW⚡ | tests/integration/ai-validation/e2e-validation.test.ts | 116 | // Step 1: Create workflow | COMMENT |
| LOW⚡ | tests/integration/ai-validation/e2e-validation.test.ts | 120 | // Step 2: Validate workflow | COMMENT |
| LOW | tests/integration/ai-validation/e2e-validation.test.ts | 139 | // Step 3: Since it's valid, it's already created and ready to use | COMMENT |
| LOW | docs/VS_CODE_PROJECT_SETUP.md | 191 | ## Step 6 - Try it! | COMMENT |
| LOW | data/skills/n8n-node-configuration/DEPENDENCIES.md | 467 | // Step 1: Parent | COMMENT |
| LOW | data/skills/n8n-node-configuration/DEPENDENCIES.md | 474 | // Step 2: Children (structure determined by parent) | COMMENT |
| LOW⚡ | data/skills/n8n-node-configuration/README.md | 181 | // Step 1: Get standard info | COMMENT |
| LOW⚡ | data/skills/n8n-node-configuration/README.md | 186 | // Step 2: Configure for operation | COMMENT |
| LOW⚡ | data/skills/n8n-node-configuration/README.md | 194 | // Step 3: Validate | COMMENT |
| LOW⚡ | data/skills/n8n-node-configuration/README.md | 202 | // Step 1: Configure HTTP POST | COMMENT |
| LOW⚡ | data/skills/n8n-node-configuration/README.md | 208 | // Step 2: Validate → Error: "sendBody required" | COMMENT |
| LOW⚡ | data/skills/n8n-node-configuration/README.md | 209 | // Step 3: Check dependencies | COMMENT |
| LOW⚡ | data/skills/n8n-node-configuration/README.md | 215 | // Step 4: Fix | COMMENT |
| LOW | data/skills/n8n-validation-expert/ERROR_CATALOG.md | 931 | // Step 1: Minimal valid config | COMMENT |
| LOW | data/skills/n8n-validation-expert/ERROR_CATALOG.md | 942 | // Step 2: Add features one by one | COMMENT |
| LOW⚡ | data/skills/n8n-mcp-tools-expert/SKILL.md | 60 | // Step 1: Search | COMMENT |
| LOW⚡ | data/skills/n8n-mcp-tools-expert/SKILL.md | 64 | // Step 2: Get details | COMMENT |
| LOW⚡ | data/skills/n8n-mcp-tools-expert/SKILL.md | 68 | // Step 3: Get readable documentation | COMMENT |
| LOW⚡ | data/skills/n8n-mcp-tools-expert/VALIDATION_GUIDE.md | 407 | // Step 1: Get node requirements (quick check) | COMMENT |
| LOW⚡ | data/skills/n8n-mcp-tools-expert/VALIDATION_GUIDE.md | 415 | // Step 2: Configure node | COMMENT |
| LOW⚡ | data/skills/n8n-mcp-tools-expert/VALIDATION_GUIDE.md | 423 | // Step 3: Validate configuration (full validation) | COMMENT |
| LOW⚡ | data/skills/n8n-mcp-tools-expert/VALIDATION_GUIDE.md | 430 | // Step 4: Check result | COMMENT |
| LOW⚡ | data/skills/n8n-mcp-tools-expert/VALIDATION_GUIDE.md | 438 | // Step 5: Validate in workflow context | COMMENT |
| LOW⚡ | data/skills/n8n-mcp-tools-expert/VALIDATION_GUIDE.md | 446 | // Step 6: Apply auto-fixes if needed | COMMENT |
| LOW⚡ | data/skills/n8n-mcp-tools-expert/SEARCH_GUIDE.md | 318 | // Step 1: Search | COMMENT |
| LOW⚡ | data/skills/n8n-mcp-tools-expert/SEARCH_GUIDE.md | 321 | // Step 2: Get standard info | COMMENT |
| LOW⚡ | data/skills/n8n-mcp-tools-expert/SEARCH_GUIDE.md | 324 | // Step 3: Find auth options | COMMENT |
| LOW⚡ | data/skills/n8n-mcp-tools-expert/SEARCH_GUIDE.md | 331 | // Step 4: Validate config | COMMENT |
| LOW | src/utils/ssrf-protection.ts | 240 | // Step 1: Must be HTTP/HTTPS (all modes) | COMMENT |
| LOW⚡ | src/utils/ssrf-protection.ts | 252 | // Step 2: ALWAYS block cloud metadata endpoints (all modes) | COMMENT |
| LOW⚡ | src/utils/ssrf-protection.ts | 258 | // Step 3: Resolve DNS to get actual IP address | COMMENT |
| LOW | src/utils/ssrf-protection.ts | 276 | // Step 4: ALWAYS block cloud metadata IPs (all modes) | COMMENT |
| LOW | src/utils/ssrf-protection.ts | 301 | // Step 5: Mode-specific validation | COMMENT |
| LOW | src/utils/ssrf-protection.ts | 332 | // Step 6: Check private IPv4 ranges (strict & moderate modes) | COMMENT |
| LOW | src/utils/ssrf-protection.ts | 343 | // Step 7: IPv6 private address check (strict & moderate modes) | COMMENT |
| LOW | src/mcp/tool-docs/guides/ai-agents-guide.ts | 174 | #### Step 1: Create Chat Trigger | COMMENT |
| LOW | src/mcp/tool-docs/guides/ai-agents-guide.ts | 198 | #### Step 2: Add Language Model | COMMENT |
| LOW | src/mcp/tool-docs/guides/ai-agents-guide.ts | 220 | #### Step 3: Add AI Agent | COMMENT |
| LOW | src/mcp/tool-docs/guides/ai-agents-guide.ts | 242 | #### Step 4: Connect Components | COMMENT |
| LOW | src/mcp/tool-docs/guides/ai-agents-guide.ts | 265 | #### Step 5: Validate | COMMENT |
| LOW⚡ | src/mcp/tool-docs/guides/ai-agents-guide.ts | 349 | // Step 1: Create Vector Store with embeddings and documents | COMMENT |
| LOW⚡ | src/mcp/tool-docs/guides/ai-agents-guide.ts | 357 | // Step 2: Connect Vector Store to Vector Store Tool | COMMENT |
| LOW⚡ | src/mcp/tool-docs/guides/ai-agents-guide.ts | 364 | // Step 3: Connect tool to AI Agent | COMMENT |
| LOW | src/scripts/test-webhook-autofix.ts | 71 | // Step 1: Validate workflow to identify issues | COMMENT |
| LOW | src/scripts/test-webhook-autofix.ts | 87 | // Step 2: Generate fixes (preview mode) | COMMENT |
| LOW | src/scripts/test-webhook-autofix.ts | 128 | // Step 3: Verify UUID format | COMMENT |
| LOW | src/scripts/test-autofix-workflow.ts | 115 | // Step 1: Validate the workflow to identify issues | COMMENT |
| LOW | src/scripts/test-autofix-workflow.ts | 127 | // Step 2: Check for expression format issues | COMMENT |
| LOW | src/scripts/test-autofix-workflow.ts | 164 | // Step 3: Generate fixes in preview mode | COMMENT |
| LOW⚡ | src/scripts/test-autofix-workflow.ts | 193 | // Step 4: Display individual fixes | COMMENT |
| LOW⚡ | src/scripts/test-autofix-workflow.ts | 202 | // Step 5: Display generated operations | COMMENT |
| LOW⚡ | src/scripts/test-autofix-workflow.ts | 209 | // Step 6: Test with different confidence thresholds | COMMENT |
| LOW | src/scripts/test-autofix-workflow.ts | 225 | // Step 7: Test with specific fix types | COMMENT |
| 8 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test-enhanced-documentation.js | 7 | async function testEnhancedDocumentation() { | CODE |
| LOW | tests/demo-enhanced-documentation.js | 5 | async function demoEnhancedDocumentation() { | CODE |
| LOW | tests/unit/triggers/trigger-detector.test.ts | 9 | function createWorkflowWithTrigger(triggerType: string, params: Record<string, unknown> = {}): Workflow { | CODE |
| LOW | tests/unit/mcp/search-nodes-source-filter.test.ts | 218 | function enrichNodeWithCommunityMetadata(node: MockRow): any { | CODE |
| LOW | …s/unit/community/documentation-batch-processor.test.ts | 47 | function createMockDocumentationSummary(nodeType: string) { | CODE |
| LOW | tests/unit/services/workflow-diff-node-rename.test.ts | 25 | function convertConnectionsToNameBased(workflow: Workflow): void { | CODE |
| LOW | tests/integration/database/test-utils.ts | 565 | export function createTestDatabaseAdapter(db: Database.Database): DatabaseAdapter { | CODE |
| LOW | tests/integration/n8n-api/utils/webhook-workflows.ts | 215 | export function generateWebhookWorkflowJson( | CODE |
| LOW | tests/integration/n8n-api/utils/webhook-workflows.ts | 240 | export function exportAllWebhookWorkflows(): Record<string, Partial<Workflow>> { | CODE |
| LOW | tests/integration/n8n-api/utils/cleanup-helpers.ts | 255 | export async function cleanupExecutionsByWorkflow( | CODE |
| LOW | tests/integration/n8n-api/utils/factories.ts | 266 | export function createErrorHandlingWorkflow( | CODE |
| LOW | tests/integration/ai-validation/helpers.ts | 128 | export function createHTTPRequestToolNode(options: { | CODE |
| LOW | tests/integration/ai-validation/helpers.ts | 176 | export function createVectorStoreToolNode(options: { | CODE |
| LOW | …ion/validation/real-world-structure-validation.test.ts | 66 | function extractNodesWithSpecialTypes(workflowJson: any) { | CODE |
| LOW | tests/utils/database-utils.ts | 480 | export function createMockDatabaseAdapter(): DatabaseAdapter { | CODE |
| LOW | tests/utils/assertions.ts | 14 | export function expectValidNodeDefinition(node: any) { | CODE |
| LOW | tests/utils/assertions.ts | 108 | export function expectValidPropertyDefinition(property: any) { | CODE |
| LOW | tests/utils/assertions.ts | 222 | export function expectRelevantSearchResults( | CODE |
| LOW | docs/local/Deep_dive_p1_p2.md | 56 | export async function handleBatchUpdateWorkflow( | CODE |
| LOW | docs/local/N8N_AI_WORKFLOW_BUILDER_ANALYSIS.md | 693 | function estimateTokenCountFromMessages(messages: BaseMessage[]): number { | CODE |
| LOW | docs/local/N8N_AI_WORKFLOW_BUILDER_ANALYSIS.md | 1206 | function extractConnectionTypesFromExpression(expression: string): string[] { | CODE |
| LOW | examples/enhanced-documentation-demo.js | 5 | async function demonstrateEnhancedDocumentation() { | CODE |
| LOW | scripts/test-typeversion-validation.ts | 150 | async function testTypeVersionValidation() { | CODE |
| LOW | scripts/generate-initial-release-notes.js | 10 | function generateInitialReleaseNotes(version) { | CODE |
| LOW | scripts/test-structure-validation.ts | 87 | function extractNodesWithSpecialTypes(workflowJson: any): Array<{ | CODE |
| LOW | src/http-server-single-session.ts | 60 | function extractMultiTenantHeaders(req: express.Request): MultiTenantHeaders { | CODE |
| LOW | src/database/database-adapter.ts | 105 | async function createBetterSQLiteAdapter(dbPath: string): Promise<DatabaseAdapter> { | CODE |
| LOW | src/database/shared-database.ts | 202 | export function isSharedDatabaseInitialized(): boolean { | CODE |
| LOW | src/database/shared-database.ts | 209 | export function getSharedDatabaseRefCount(): number { | CODE |
| LOW | src/triggers/trigger-detector.ts | 37 | export function detectTriggerFromWorkflow(workflow: Workflow): TriggerDetectionResult { | CODE |
| LOW | src/triggers/trigger-registry.ts | 93 | export async function initializeTriggerRegistry(): Promise<void> { | CODE |
| LOW | src/triggers/trigger-registry.ts | 114 | export async function ensureRegistryInitialized(): Promise<void> { | CODE |
| LOW | src/utils/expression-utils.ts | 48 | export function shouldSkipLiteralValidation(value: unknown): boolean { | CODE |
| LOW | src/utils/expression-utils.ts | 91 | export function extractBracketExpressions(value: string): string[] { | CODE |
| LOW | src/utils/node-classification.ts | 108 | export function requiresIncomingConnection(nodeType: string): boolean { | CODE |
| LOW | src/utils/node-utils.ts | 95 | function generateCamelCaseVariants(str: string): string[] { | CODE |
| LOW | src/utils/n8n-errors.ts | 120 | export function getUserFriendlyErrorMessage(error: N8nApiError): string { | CODE |
| LOW | src/utils/template-node-resolver.ts | 45 | function generateTemplateNodeVariations(nodeType: string): string[] { | CODE |
| LOW | src/utils/node-type-utils.ts | 215 | export function getTriggerTypeDescription(nodeType: string): string { | CODE |
| LOW | src/utils/mcp-input-normalizer.ts | 98 | export function normalizeMcpWorkflowPosition(value: unknown): unknown { | CODE |
| LOW | src/utils/mcp-input-normalizer.ts | 141 | export function normalizeMcpWorkflowNodes(value: unknown): unknown { | CODE |
| LOW | src/utils/mcp-input-normalizer.ts | 156 | export function normalizeMcpWorkflowConnections(value: unknown): unknown { | CODE |
| LOW | src/mcp/handlers-workflow-diff.ts | 127 | export async function handleUpdatePartialWorkflow( | CODE |
| LOW | src/mcp/handlers-workflow-diff.ts | 686 | function inferIntentFromOperations(operations: any[]): string { | CODE |
| LOW | src/mcp/handlers-n8n-manager.ts | 260 | export function getInstanceCacheStatistics(): string { | CODE |
| LOW | src/mcp/handlers-n8n-manager.ts | 725 | export async function handleGetWorkflowStructure(args: unknown, context?: InstanceContext): Promise<McpToolResponse> { | CODE |
| LOW | src/mcp/handlers-n8n-manager.ts | 830 | export async function handleGetWorkflowFiltered(args: unknown, context?: InstanceContext): Promise<McpToolResponse> { | CODE |
| LOW | src/mcp/handlers-n8n-manager.ts | 1162 | async function trackWorkflowMutationForFullUpdate(data: any): Promise<void> { | CODE |
| LOW | src/mcp/handlers-n8n-manager.ts | 2883 | export async function handleTriggerWebhookWorkflow(args: unknown, context?: InstanceContext): Promise<McpToolResponse> { | CODE |
| LOW | src/mcp/handlers-n8n-manager.ts | 3313 | function isCredentialReadUnsupported(error: unknown): boolean { | CODE |
| LOW | src/mcp/handlers-n8n-manager.ts | 3332 | function credentialReadUnsupportedResponse(error: unknown): McpToolResponse { | CODE |
| LOW | src/mcp/handlers-n8n-manager.ts | 3569 | export async function handleGetCredentialSchema(args: unknown, context?: InstanceContext): Promise<McpToolResponse> { | CODE |
| LOW | src/mcp/tools-documentation.ts | 76 | function buildDisabledOpsOverviewSection(disabledToolOps?: Map<string, Set<string>>): string { | CODE |
| LOW | src/mcp/tools-documentation.ts | 237 | function getJavaScriptCodeNodeGuide(depth: 'essentials' | 'full' = 'essentials'): string { | CODE |
| LOW | src/scripts/rebuild-database.ts | 13 | async function rebuildDocumentationDatabase() { | CODE |
| LOW | src/telemetry/telemetry-cli.ts | 14 | export function handleTelemetryCliIfPresent(args: string[]): void { | CODE |
| LOW | src/community/documentation-generator.ts | 394 | export function createDocumentationGenerator(): DocumentationGenerator { | CODE |
| LOW | src/loaders/node-loader.ts | 16 | function createMissingDependencyStub(): any { | CODE |
| LOW | src/services/ai-node-validator.ts | 68 | export function buildReverseConnectionMap( | CODE |
| LOW | src/services/workflow-diff-engine.ts | 92 | function operationReferencesAddedNode( | CODE |
| 17 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test-mcp-extraction.js | 76 | // Step 1: Initialize | COMMENT |
| LOW | tests/test-mcp-extraction.js | 110 | // Step 2: List tools | COMMENT |
| LOW | tests/test-mcp-extraction.js | 127 | // Step 3: Call the tool to get AI Agent code | COMMENT |
| LOW⚡ | tests/integration/ai-validation/e2e-validation.test.ts | 116 | // Step 1: Create workflow | COMMENT |
| LOW⚡ | tests/integration/ai-validation/e2e-validation.test.ts | 120 | // Step 2: Validate workflow | COMMENT |
| LOW | tests/integration/ai-validation/e2e-validation.test.ts | 139 | // Step 3: Since it's valid, it's already created and ready to use | COMMENT |
| LOW | src/utils/ssrf-protection.ts | 240 | // Step 1: Must be HTTP/HTTPS (all modes) | COMMENT |
| LOW⚡ | src/utils/ssrf-protection.ts | 252 | // Step 2: ALWAYS block cloud metadata endpoints (all modes) | COMMENT |
| LOW⚡ | src/utils/ssrf-protection.ts | 258 | // Step 3: Resolve DNS to get actual IP address | COMMENT |
| LOW | src/utils/ssrf-protection.ts | 276 | // Step 4: ALWAYS block cloud metadata IPs (all modes) | COMMENT |
| LOW | src/utils/ssrf-protection.ts | 301 | // Step 5: Mode-specific validation | COMMENT |
| LOW | src/utils/ssrf-protection.ts | 332 | // Step 6: Check private IPv4 ranges (strict & moderate modes) | COMMENT |
| LOW | src/utils/ssrf-protection.ts | 343 | // Step 7: IPv6 private address check (strict & moderate modes) | COMMENT |
| LOW | src/mcp/tool-docs/guides/ai-agents-guide.ts | 174 | #### Step 1: Create Chat Trigger | COMMENT |
| LOW | src/mcp/tool-docs/guides/ai-agents-guide.ts | 198 | #### Step 2: Add Language Model | COMMENT |
| LOW | src/mcp/tool-docs/guides/ai-agents-guide.ts | 220 | #### Step 3: Add AI Agent | COMMENT |
| LOW | src/mcp/tool-docs/guides/ai-agents-guide.ts | 242 | #### Step 4: Connect Components | COMMENT |
| LOW | src/mcp/tool-docs/guides/ai-agents-guide.ts | 265 | #### Step 5: Validate | COMMENT |
| LOW⚡ | src/mcp/tool-docs/guides/ai-agents-guide.ts | 349 | // Step 1: Create Vector Store with embeddings and documents | COMMENT |
| LOW⚡ | src/mcp/tool-docs/guides/ai-agents-guide.ts | 357 | // Step 2: Connect Vector Store to Vector Store Tool | COMMENT |
| LOW⚡ | src/mcp/tool-docs/guides/ai-agents-guide.ts | 364 | // Step 3: Connect tool to AI Agent | COMMENT |
| LOW | src/scripts/test-webhook-autofix.ts | 71 | // Step 1: Validate workflow to identify issues | COMMENT |
| LOW | src/scripts/test-webhook-autofix.ts | 87 | // Step 2: Generate fixes (preview mode) | COMMENT |
| LOW | src/scripts/test-webhook-autofix.ts | 128 | // Step 3: Verify UUID format | COMMENT |
| LOW | src/scripts/test-autofix-workflow.ts | 115 | // Step 1: Validate the workflow to identify issues | COMMENT |
| LOW | src/scripts/test-autofix-workflow.ts | 127 | // Step 2: Check for expression format issues | COMMENT |
| LOW | src/scripts/test-autofix-workflow.ts | 164 | // Step 3: Generate fixes in preview mode | COMMENT |
| LOW⚡ | src/scripts/test-autofix-workflow.ts | 193 | // Step 4: Display individual fixes | COMMENT |
| LOW⚡ | src/scripts/test-autofix-workflow.ts | 202 | // Step 5: Display generated operations | COMMENT |
| LOW⚡ | src/scripts/test-autofix-workflow.ts | 209 | // Step 6: Test with different confidence thresholds | COMMENT |
| LOW | src/scripts/test-autofix-workflow.ts | 225 | // Step 7: Test with specific fix types | COMMENT |
| LOW | src/community/documentation-batch-processor.ts | 107 | // Step 1: Fetch READMEs (unless summaryOnly) | COMMENT |
| LOW | src/community/documentation-batch-processor.ts | 121 | // Step 2: Generate AI summaries (unless readmeOnly) | COMMENT |
| LOW⚡ | src/community/community-node-service.ts | 73 | // Step 1: Sync verified nodes from Strapi API | COMMENT |
| LOW⚡ | src/community/community-node-service.ts | 82 | // Step 2: Sync popular npm packages (unless verifiedOnly) | COMMENT |
| LOW⚡ | src/services/workflow-diff-engine.ts | 1507 | // Step 1: Update connection object keys (source node names) | COMMENT |
| LOW⚡ | src/services/workflow-diff-engine.ts | 1515 | // Step 2: Update target node references within connections | COMMENT |
| LOW⚡ | src/services/n8n-api-client.ts | 328 | // Step 1: Basic cleaning (remove read-only fields, filter to known settings) | COMMENT |
| LOW⚡ | src/services/n8n-api-client.ts | 331 | // Step 2: Version-aware settings filtering for older n8n compatibility | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test-output.txt | 1580 | ✓ tests/unit/multi-tenant-integration.test.ts > Multi-Tenant Support Integration > InstanceContext Validation > API key | CODE |
| LOW | docker-compose.extract.yml | 11 | - N8N_ENCRYPTION_KEY=dummy-key-for-extraction | CODE |
| LOW | tests/unit/flexible-instance-security.test.ts | 123 | 'placeholder', | CODE |
| LOW | tests/unit/multi-tenant-integration.test.ts | 118 | 'placeholder', | CODE |
| LOW | tests/unit/multi-tenant-integration.test.ts | 311 | 'x-n8n-key': 'placeholder' | CODE |
| LOW | tests/unit/multi-tenant-integration.test.ts | 479 | context: { n8nApiUrl: 'https://example.com', n8nApiKey: 'placeholder' }, | CODE |
| LOW | tests/unit/multi-tenant-integration.test.ts | 480 | expectedError: 'placeholder' | CODE |
| LOW | tests/unit/database/template-repository-core.test.ts | 140 | name: 'John Doe', | CODE |
| LOW | tests/unit/database/template-repository-core.test.ts | 182 | 'John Doe', | CODE |
| LOW | tests/unit/types/instance-context-coverage.test.ts | 186 | n8nApiKey: 'placeholder' // Invalid placeholder key | CODE |
| LOW⚡ | tests/unit/types/instance-context-coverage.test.ts | 277 | 'placeholder', | CODE |
| LOW | tests/unit/types/instance-context-coverage.test.ts | 300 | err.includes('placeholder') || | CODE |
| LOW | tests/unit/http-server/multi-tenant-support.test.ts | 248 | n8nApiKey: 'placeholder' | CODE |
| LOW | tests/unit/triggers/handlers/form-handler.test.ts | 115 | name: 'John Doe', | CODE |
| LOW | tests/unit/triggers/handlers/form-handler.test.ts | 171 | name: 'Jane Doe', | CODE |
| LOW | tests/unit/telemetry/workflow-sanitizer.test.ts | 804 | "const E = 'jane.doe@example.org'; const P = '+1-604-555-1234';" | CODE |
| LOW | tests/unit/services/template-service.test.ts | 643 | author_name: 'John Doe', | CODE |
| LOW | tests/unit/services/template-service.test.ts | 662 | name: 'John Doe', | CODE |
| LOW | tests/unit/services/workflow-validator.test.ts | 495 | const result = await validator.validateWorkflow({ nodes: [{ id: '1', name: 'Send Email', type: 'n8n-nodes-base.ema | CODE |
| LOW | tests/unit/services/workflow-validator.test.ts | 517 | const result = await validator.validateWorkflow({ nodes: [{ id: '1', name: 'Send Email', type: 'n8n-nodes-base.ema | CODE |
| LOW | tests/unit/services/config-validator.test.ts | 362 | it('should match when string ends with suffix', () => { expect(ConfigValidator.isPropertyVisible({ name: 'f', disp | CODE |
| LOW | tests/unit/services/example-generator.test.ts | 116 | name: 'John Doe' | CODE |
| LOW | tests/unit/services/example-generator.test.ts | 454 | username: 'John Doe', | CODE |
| LOW | tests/unit/services/expression-format-validator.test.ts | 284 | toEmail: 'user@example.com', | CODE |
| LOW | docs/workflow-diff-examples.md | 307 | "toEmail": "admin@example.com", | CODE |
| LOW | docs/workflow-diff-examples.md | 646 | "parameters": { "to": "user@example.com" } | CODE |
| LOW | docs/local/N8N_AI_WORKFLOW_BUILDER_ANALYSIS.md | 2257 | ['placeholder', '{messages}'] | CODE |
| LOW | …ta/skills/n8n-node-configuration/OPERATION_PATTERNS.md | 82 | "name": "John Doe", | CODE |
| LOW | …ta/skills/n8n-node-configuration/OPERATION_PATTERNS.md | 324 | "to": "user@example.com", | CODE |
| LOW | …ta/skills/n8n-node-configuration/OPERATION_PATTERNS.md | 339 | "ccList": "admin@example.com", | CODE |
| LOW | …ta/skills/n8n-node-configuration/OPERATION_PATTERNS.md | 1228 | "name": "John Doe", | CODE |
| LOW | data/skills/n8n-code-javascript/BUILTIN_FUNCTIONS.md | 89 | name: 'John Doe', | CODE |
| LOW | data/skills/n8n-expression-syntax/EXAMPLES.md | 16 | "name": "John Doe", | CODE |
| LOW | data/skills/n8n-expression-syntax/EXAMPLES.md | 18 | "company": "Acme Corp", | CODE |
| LOW | data/skills/n8n-expression-syntax/EXAMPLES.md | 30 | "name": "John Doe", | CODE |
| LOW | data/skills/n8n-expression-syntax/EXAMPLES.md | 32 | "company": "Acme Corp", | CODE |
| LOW | data/skills/n8n-expression-syntax/SKILL.md | 346 | "name": "John Doe", | CODE |
| LOW | src/types/instance-context.ts | 97 | !key.toLowerCase().includes('placeholder') && | CODE |
| LOW⚡ | src/types/instance-context.ts | 170 | } else if (context.n8nApiKey.toLowerCase().includes('placeholder')) { | CODE |
| LOW | src/triggers/handlers/form-handler.ts | 186 | hint += '"user@example.com"'; | CODE |
| LOW | src/constants/type-structures.ts | 186 | name: 'John Doe', | CODE |
| LOW | src/constants/type-structures.ts | 653 | name: 'John Doe', | CODE |
| LOW | src/utils/example-generator.ts | 70 | return 'user@example.com'; | CODE |
| LOW | src/services/task-templates.ts | 105 | example: '{\n "name": "John Doe",\n "email": "john@example.com"\n}' | CODE |
| LOW | src/services/example-generator.ts | 31 | jsonBody: '{\n "name": "John Doe",\n "email": "john@example.com"\n}' | CODE |
| LOW | src/services/example-generator.ts | 1093 | return 'John Doe'; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | monitor_fetch.sh | 7 | # Check if process is still running | COMMENT |
| LOW | docker/docker-entrypoint.sh | 75 | # Check if flock is available | COMMENT |
| LOW | deploy/quick-deploy-n8n.sh | 64 | # Check if .env exists | COMMENT |
| LOW | scripts/test-n8n-integration.sh | 68 | # Check if Docker daemon is running | COMMENT |
| LOW | scripts/test-n8n-integration.sh | 177 | # Set trap to cleanup on exit | COMMENT |
| LOW | scripts/test-n8n-integration.sh | 180 | # Check if we're in the right directory | COMMENT |
| LOW | scripts/test-n8n-integration.sh | 281 | # Check if API key was provided | COMMENT |
| LOW | scripts/update-and-publish-prep.sh | 120 | # Check if templates were sanitized | COMMENT |
| LOW | scripts/analyze-optimization.sh | 51 | # Check if optimized database exists | COMMENT |
| LOW⚡ | scripts/publish-npm.sh | 25 | # Check if dist directory exists | COMMENT |
| LOW⚡ | scripts/publish-npm.sh | 31 | # Check if database exists | COMMENT |
| LOW | scripts/extract-nodes-docker.sh | 26 | # Check if Docker is running | COMMENT |
| LOW | scripts/extract-nodes-docker.sh | 82 | # Check if we got the If node source code and look for version | COMMENT |
| LOW | scripts/test-http.sh | 22 | # Check if jq is installed | COMMENT |
| LOW | scripts/deploy-to-vm.sh | 23 | # Check if .env exists | COMMENT |
| LOW | scripts/build-optimized.sh | 13 | # Check if nodes.db exists | COMMENT |
| LOW | scripts/test-docker-optimization.sh | 9 | # Check if nodes.db exists | COMMENT |
| LOW | scripts/test-docker-optimization.sh | 61 | # Check if running | COMMENT |
| LOW | scripts/deploy-http.sh | 11 | # Check if .env exists | COMMENT |
| LOW | scripts/deploy-http.sh | 24 | # Check if AUTH_TOKEN is set | COMMENT |
| LOW | scripts/extract-nodes-simple.sh | 26 | # Check if Docker is running | COMMENT |
| LOW | scripts/extract-nodes-simple.sh | 78 | # Check if we got the If node source code and look for version | COMMENT |
| LOW | .github/workflows/release.yml | 61 | # Check if version changed | COMMENT |
| LOW | .github/workflows/release.yml | 67 | # Check if it's a prerelease (contains alpha, beta, rc, dev) | COMMENT |
| LOW | .github/workflows/release.yml | 94 | # Check if version already exists in npm | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/unit/services/fixed-collection-validation.test.ts | 355 | // This is a pattern commonly generated by AI agents | COMMENT |
| HIGH | docs/local/DEEP_DIVE_ANALYSIS_2025-10-02.md | 753 | // Fix common AI-generated abbreviations | COMMENT |
| HIGH | src/mcp/handlers-n8n-manager.ts | 1006 | // AI-generated node updates typically omit credential references because they | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | data/skills/n8n-workflow-patterns/ai_agent_workflow.md | 69 | ### 2. Document Q&A (RAG) | COMMENT |
| MEDIUM | data/skills/n8n-agents/RAG.md | 1 | # RAG (retrieval augmented generation) | COMMENT |
| MEDIUM | data/skills/n8n-agents/RAG.md | 13 | - **Database or Data Table for exact lookups.** "Look up customer X's record", "fetch issue #1234", "get rows where stat | CODE |
| MEDIUM | data/skills/n8n-agents/RAG.md | 32 | ## Vector RAG: the pieces | COMMENT |
| MEDIUM | data/skills/n8n-agents/RAG.md | 45 | ## Vector RAG: two workflows | COMMENT |
| MEDIUM | data/skills/n8n-agents/SKILL.md | 187 | ## RAG (retrieval augmented generation) | COMMENT |
| MEDIUM | src/mcp/tool-docs/guides/ai-agents-guide.ts | 478 | ### Pattern 3: RAG (Retrieval-Augmented Generation) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/demo-optimization.sh | 7 | # Create a demo directory structure | COMMENT |
| MEDIUM | scripts/demo-optimization.sh | 49 | # Create a simple test | COMMENT |
| MEDIUM⚡ | scripts/publish-npm.sh | 37 | # Create a temporary publish directory | COMMENT |
| MEDIUM | scripts/extract-nodes-simple.sh | 38 | # Create a temporary directory for extraction | COMMENT |
| MEDIUM | .github/workflows/dependency-check.yml | 121 | # Create a simple test script | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | MEMORY_N8N_UPDATE.md | 41 | # 7. Create feature branch | COMMENT |
| LOW | docker-compose.yml | 21 | LOG_LEVEL: ${LOG_LEVEL:-info} | COMMENT |
| LOW | docs/local/TEMPLATE_MINING_ANALYSIS.md | 301 | // - With authentication | COMMENT |
| LOW | .github/dependabot.yml | 61 | - dependency-name: "n8n-nodes-base" | COMMENT |
| LOW | .github/workflows/issue-triage.lock.yml | 1 | # gh-aw-metadata: {"schema_version":"v3","frontmatter_hash":"8138005e553d8368256fb7a4f4ca604d011217c6537a97e1bb356643b8a | COMMENT |
| LOW | .github/workflows/issue-triage.lock.yml | 21 | # Not all edits will cause changes to this file. | COMMENT |
| LOW | .github/workflows/issue-triage.lock.yml | 41 | # - actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | COMMENT |
| LOW | .github/workflows/test.yml | 81 | # Pre-build the Docker test image used by tests/integration/docker/*.test.ts | COMMENT |
| LOW | data/skills/n8n-mcp-tools-expert/WORKFLOW_GUIDE.md | 561 | n8n_manage_credentials({action: "list", includeUsage: true}) | COMMENT |
| LOW | src/http-server-single-session.ts | 601 | const isMultiTenantEnabled = process.env.ENABLE_MULTI_TENANT === 'true'; | COMMENT |
| LOW | src/utils/ssrf-protection.ts | 141 | try { | COMMENT |
| LOW | src/mcp/handlers-n8n-manager.ts | 1021 | node.credentials = match.credentials; | COMMENT |
| LOW | src/mcp/index.ts | 181 | // signals are the fallback. | COMMENT |
| LOW | src/services/workflow-validator.ts | 521 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/unit/docker/serve-command.test.ts | 146 | elif echo "\$@" | grep -q "n8n-mcp.*serve"; then | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/logger.test.ts | 29 | // Restore original DEBUG value with more robust handling | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …integration/n8n-api/workflows/smart-parameters.test.ts | 1211 | // TODO: Add validation to reject negative case values in future enhancement. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/services/config-validator.test.ts | 638 | const result = ConfigValidator.validate('nodes-base.code', { language: 'python', pythonCode: 'def process_data():\ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/mcp/tools-documentation.ts | 638 | except Exception as e: | CODE |