n8n-mcp 2.10.2 → 2.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
4
  [![GitHub stars](https://img.shields.io/github/stars/czlonkowski/n8n-mcp?style=social)](https://github.com/czlonkowski/n8n-mcp)
5
- [![Version](https://img.shields.io/badge/version-2.10.2-blue.svg)](https://github.com/czlonkowski/n8n-mcp)
5
+ [![Version](https://img.shields.io/badge/version-2.10.3-blue.svg)](https://github.com/czlonkowski/n8n-mcp)
6
6
  [![npm version](https://img.shields.io/npm/v/n8n-mcp.svg)](https://www.npmjs.com/package/n8n-mcp)
7
7
  [![codecov](https://codecov.io/gh/czlonkowski/n8n-mcp/graph/badge.svg?token=YOUR_TOKEN)](https://codecov.io/gh/czlonkowski/n8n-mcp)
8
8
  [![Tests](https://img.shields.io/badge/tests-1356%20passing-brightgreen.svg)](https://github.com/czlonkowski/n8n-mcp/actions)
package/data/nodes.db CHANGED
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"node-repository.d.ts","sourceRoot":"","sources":["../../src/database/node-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAkB;gBAEhB,WAAW,EAAE,eAAe,GAAG,oBAAoB;IAW/D,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAgChC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;IA6B9B,UAAU,IAAI,GAAG,EAAE;IAgBnB,OAAO,CAAC,aAAa;IASrB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAIlC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;IAIpC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,EAAE;IAS3C,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,IAAI,GAAG,KAAK,GAAG,OAAc,EAAE,KAAK,GAAE,MAAW,GAAG,GAAG,EAAE;IAwC1F,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE;IAUlC,YAAY,IAAI,MAAM;IAKtB,cAAc,IAAI,GAAG,EAAE;IAIvB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,EAAE;IAS7C,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,GAAE,MAAW,GAAG,GAAG,EAAE;IAmCrF,OAAO,CAAC,YAAY;CAmBrB"}
1
+ {"version":3,"file":"node-repository.d.ts","sourceRoot":"","sources":["../../src/database/node-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAkB;gBAEhB,WAAW,EAAE,eAAe,GAAG,oBAAoB;IAW/D,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAmChC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;IA+B9B,UAAU,IAAI,GAAG,EAAE;IAgBnB,OAAO,CAAC,aAAa;IASrB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAIlC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG;IAIpC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,EAAE;IAS3C,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,IAAI,GAAG,KAAK,GAAG,OAAc,EAAE,KAAK,GAAE,MAAW,GAAG,GAAG,EAAE;IAwC1F,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE;IAUlC,YAAY,IAAI,MAAM;IAKtB,cAAc,IAAI,GAAG,EAAE;IAIvB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,EAAE;IAS7C,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,GAAE,MAAW,GAAG,GAAG,EAAE;IAmCrF,OAAO,CAAC,YAAY;CAqBrB"}
@@ -16,10 +16,11 @@ class NodeRepository {
16
16
  node_type, package_name, display_name, description,
17
17
  category, development_style, is_ai_tool, is_trigger,
18
18
  is_webhook, is_versioned, version, documentation,
19
- properties_schema, operations, credentials_required
20
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
19
+ properties_schema, operations, credentials_required,
20
+ outputs, output_names
21
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
21
22
  `);
22
- stmt.run(node.nodeType, node.packageName, node.displayName, node.description, node.category, node.style, node.isAITool ? 1 : 0, node.isTrigger ? 1 : 0, node.isWebhook ? 1 : 0, node.isVersioned ? 1 : 0, node.version, node.documentation || null, JSON.stringify(node.properties, null, 2), JSON.stringify(node.operations, null, 2), JSON.stringify(node.credentials, null, 2));
23
+ stmt.run(node.nodeType, node.packageName, node.displayName, node.description, node.category, node.style, node.isAITool ? 1 : 0, node.isTrigger ? 1 : 0, node.isWebhook ? 1 : 0, node.isVersioned ? 1 : 0, node.version, node.documentation || null, JSON.stringify(node.properties, null, 2), JSON.stringify(node.operations, null, 2), JSON.stringify(node.credentials, null, 2), node.outputs ? JSON.stringify(node.outputs, null, 2) : null, node.outputNames ? JSON.stringify(node.outputNames, null, 2) : null);
23
24
  }
24
25
  getNode(nodeType) {
25
26
  const row = this.db.prepare(`
@@ -42,7 +43,9 @@ class NodeRepository {
42
43
  properties: this.safeJsonParse(row.properties_schema, []),
43
44
  operations: this.safeJsonParse(row.operations, []),
44
45
  credentials: this.safeJsonParse(row.credentials_required, []),
45
- hasDocumentation: !!row.documentation
46
+ hasDocumentation: !!row.documentation,
47
+ outputs: row.outputs ? this.safeJsonParse(row.outputs, null) : null,
48
+ outputNames: row.output_names ? this.safeJsonParse(row.output_names, null) : null
46
49
  };
47
50
  }
48
51
  getAITools() {
@@ -179,7 +182,9 @@ class NodeRepository {
179
182
  properties: this.safeJsonParse(row.properties_schema, []),
180
183
  operations: this.safeJsonParse(row.operations, []),
181
184
  credentials: this.safeJsonParse(row.credentials_required, []),
182
- hasDocumentation: !!row.documentation
185
+ hasDocumentation: !!row.documentation,
186
+ outputs: row.outputs ? this.safeJsonParse(row.outputs, null) : null,
187
+ outputNames: row.output_names ? this.safeJsonParse(row.output_names, null) : null
183
188
  };
184
189
  }
185
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"node-repository.js","sourceRoot":"","sources":["../../src/database/node-repository.ts"],"names":[],"mappings":";;;AAIA,MAAa,cAAc;IAGzB,YAAY,WAAmD;QAC7D,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;YACxB,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC;QACxB,CAAC;IACH,CAAC;IAKD,QAAQ,CAAC,IAAgB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;KAO5B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,aAAa,IAAI,IAAI,EAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAC1C,CAAC;IACJ,CAAC;IAKD,OAAO,CAAC,QAAgB;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE3B,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAQ,CAAC;QAExB,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,OAAO;YACL,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,gBAAgB,EAAE,GAAG,CAAC,iBAAiB;YACvC,OAAO,EAAE,GAAG,CAAC,YAAY;YACzB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;YACtC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;YACvC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;YACvC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC;YAC3C,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACzD,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;YAClD,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC;YAC7D,gBAAgB,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa;SACtC,CAAC;IACJ,CAAC;IAKD,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC,GAAG,EAAW,CAAC;QAElB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtB,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,OAAO,EAAE,GAAG,CAAC,YAAY;SAC1B,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,YAAiB;QACnD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAGD,UAAU,CAAC,IAAgB;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,aAAa,CAAC,QAAgB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,kBAAkB,CAAC,QAAgB;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAU,CAAC;QAE1B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,WAAW,CAAC,KAAa,EAAE,OAA+B,IAAI,EAAE,QAAgB,EAAE;QAChF,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAErB,GAAG,GAAG;;;;;OAKL,CAAC;YACF,MAAM,UAAU,GAAG,IAAI,KAAK,GAAG,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YAEN,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAChC,iEAAiE,CAClE,CAAC;YACF,MAAM,QAAQ,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YAEnD,GAAG,GAAG;;gBAEI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;;;OAGlC,CAAC;YAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAG,IAAI,IAAI,GAAG,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAU,CAAC;QAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,WAAW,CAAC,KAAc;QACxB,IAAI,GAAG,GAAG,2CAA2C,CAAC;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,IAAI,UAAU,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,CAAC;QACjD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,YAAY;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EAAS,CAAC;QACnF,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED,iBAAiB,CAAC,WAAmB;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC,GAAG,CAAC,WAAW,CAAU,CAAC;QAE7B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,oBAAoB,CAAC,QAAgB,EAAE,KAAa,EAAE,aAAqB,EAAE;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAEzC,MAAM,OAAO,GAAU,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAExC,SAAS,gBAAgB,CAAC,UAAiB,EAAE,OAAiB,EAAE;YAC9D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU;oBAAE,MAAM;gBAExC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC7D,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEzC,IAAI,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAC9C,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;oBACrD,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC1D,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE,IAAI;wBACd,WAAW,EAAE,IAAI,CAAC,WAAW;qBAC9B,CAAC,CAAC;gBACL,CAAC;gBAGD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;QAED,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,YAAY,CAAC,GAAQ;QAC3B,OAAO;YACL,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,gBAAgB,EAAE,GAAG,CAAC,iBAAiB;YACvC,OAAO,EAAE,GAAG,CAAC,YAAY;YACzB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;YACtC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;YACvC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;YACvC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC;YAC3C,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACzD,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;YAClD,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC;YAC7D,gBAAgB,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa;SACtC,CAAC;IACJ,CAAC;CACF;AA/OD,wCA+OC"}
1
+ {"version":3,"file":"node-repository.js","sourceRoot":"","sources":["../../src/database/node-repository.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,6 @@ export declare class DocsMapper {
2
2
  private docsPath;
3
3
  private readonly KNOWN_FIXES;
4
4
  fetchDocumentation(nodeType: string): Promise<string | null>;
5
+ private enhanceLoopNodeDocumentation;
5
6
  }
6
7
  //# sourceMappingURL=docs-mapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"docs-mapper.d.ts","sourceRoot":"","sources":["../../src/mappers/docs-mapper.ts"],"names":[],"mappings":"AAGA,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAwC;IAGxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAU1B;IAEI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CA6CnE"}
1
+ {"version":3,"file":"docs-mapper.d.ts","sourceRoot":"","sources":["../../src/mappers/docs-mapper.ts"],"names":[],"mappings":"AAGA,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAwC;IAGxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAU1B;IAEI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkDlE,OAAO,CAAC,4BAA4B;CAmDrC"}
@@ -43,8 +43,9 @@ class DocsMapper {
43
43
  for (const relativePath of possiblePaths) {
44
44
  try {
45
45
  const fullPath = path_1.default.join(this.docsPath, relativePath);
46
- const content = await fs_1.promises.readFile(fullPath, 'utf-8');
46
+ let content = await fs_1.promises.readFile(fullPath, 'utf-8');
47
47
  console.log(` ✓ Found docs at: ${relativePath}`);
48
+ content = this.enhanceLoopNodeDocumentation(nodeType, content);
48
49
  return content;
49
50
  }
50
51
  catch (error) {
@@ -54,6 +55,52 @@ class DocsMapper {
54
55
  console.log(` ✗ No docs found for ${nodeName}`);
55
56
  return null;
56
57
  }
58
+ enhanceLoopNodeDocumentation(nodeType, content) {
59
+ if (nodeType.includes('splitInBatches')) {
60
+ const outputGuidance = `
61
+
62
+ ## CRITICAL OUTPUT CONNECTION INFORMATION
63
+
64
+ **⚠️ OUTPUT INDICES ARE COUNTERINTUITIVE ⚠️**
65
+
66
+ The SplitInBatches node has TWO outputs with specific indices:
67
+ - **Output 0 (index 0) = "done"**: Receives final processed data when loop completes
68
+ - **Output 1 (index 1) = "loop"**: Receives current batch data during iteration
69
+
70
+ ### Correct Connection Pattern:
71
+ 1. Connect nodes that PROCESS items inside the loop to **Output 1 ("loop")**
72
+ 2. Connect nodes that run AFTER the loop completes to **Output 0 ("done")**
73
+ 3. The last processing node in the loop must connect back to the SplitInBatches node
74
+
75
+ ### Common Mistake:
76
+ AI assistants often connect these backwards because the logical flow (loop first, then done) doesn't match the technical indices (done=0, loop=1).
77
+
78
+ `;
79
+ const insertPoint = content.indexOf('## When to use');
80
+ if (insertPoint > -1) {
81
+ content = content.slice(0, insertPoint) + outputGuidance + content.slice(insertPoint);
82
+ }
83
+ else {
84
+ content = outputGuidance + '\n' + content;
85
+ }
86
+ }
87
+ if (nodeType.includes('.if')) {
88
+ const outputGuidance = `
89
+
90
+ ## Output Connection Information
91
+
92
+ The IF node has TWO outputs:
93
+ - **Output 0 (index 0) = "true"**: Items that match the condition
94
+ - **Output 1 (index 1) = "false"**: Items that do not match the condition
95
+
96
+ `;
97
+ const insertPoint = content.indexOf('## Node parameters');
98
+ if (insertPoint > -1) {
99
+ content = content.slice(0, insertPoint) + outputGuidance + content.slice(insertPoint);
100
+ }
101
+ }
102
+ return content;
103
+ }
57
104
  }
58
105
  exports.DocsMapper = DocsMapper;
59
106
  //# sourceMappingURL=docs-mapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docs-mapper.js","sourceRoot":"","sources":["../../src/mappers/docs-mapper.ts"],"names":[],"mappings":";;;;;;AAAA,2BAAoC;AACpC,gDAAwB;AAExB,MAAa,UAAU;IAAvB;QACU,aAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAGvC,gBAAW,GAA2B;YACrD,aAAa,EAAE,aAAa;YAC5B,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,SAAS;YACpB,kBAAkB,EAAE,kBAAkB;YAEtC,4BAA4B,EAAE,aAAa;YAC3C,qBAAqB,EAAE,MAAM;YAC7B,wBAAwB,EAAE,SAAS;YACnC,iCAAiC,EAAE,kBAAkB;SACtD,CAAC;IA+CJ,CAAC;IA7CC,KAAK,CAAC,kBAAkB,CAAC,QAAgB;QAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;QAGzD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC;QAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,yCAAyC,QAAQ,EAAE,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,4BAA4B,QAAQ,OAAO,QAAQ,EAAE,CAAC,CAAC;QAGnE,MAAM,aAAa,GAAG;YAEpB,uDAAuD,QAAQ,KAAK;YACpE,sDAAsD,QAAQ,KAAK;YACnE,0DAA0D,QAAQ,KAAK;YACvE,0EAA0E,QAAQ,KAAK;YACvF,yEAAyE,QAAQ,KAAK;YAEtF,uDAAuD,QAAQ,WAAW;YAC1E,sDAAsD,QAAQ,WAAW;YACzE,0DAA0D,QAAQ,WAAW;YAC7E,0EAA0E,QAAQ,WAAW;YAC7F,yEAAyE,QAAQ,WAAW;SAC7F,CAAC;QAGF,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACxD,MAAM,OAAO,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,EAAE,CAAC,CAAC;gBAClD,OAAO,OAAO,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAEf,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA7DD,gCA6DC"}
1
+ {"version":3,"file":"docs-mapper.js","sourceRoot":"","sources":["../../src/mappers/docs-mapper.ts"],"names":[],"mappings":";;;;;;AAAA,2BAAoC;AACpC,gDAAwB;AAExB,MAAa,UAAU;IAAvB;QACU,aAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAGvC,gBAAW,GAA2B;YACrD,aAAa,EAAE,aAAa;YAC5B,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,SAAS;YACpB,kBAAkB,EAAE,kBAAkB;YAEtC,4BAA4B,EAAE,aAAa;YAC3C,qBAAqB,EAAE,MAAM;YAC7B,wBAAwB,EAAE,SAAS;YACnC,iCAAiC,EAAE,kBAAkB;SACtD,CAAC;IAuGJ,CAAC;IArGC,KAAK,CAAC,kBAAkB,CAAC,QAAgB;QAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;QAGzD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC;QAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,yCAAyC,QAAQ,EAAE,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,4BAA4B,QAAQ,OAAO,QAAQ,EAAE,CAAC,CAAC;QAGnE,MAAM,aAAa,GAAG;YAEpB,uDAAuD,QAAQ,KAAK;YACpE,sDAAsD,QAAQ,KAAK;YACnE,0DAA0D,QAAQ,KAAK;YACvE,0EAA0E,QAAQ,KAAK;YACvF,yEAAyE,QAAQ,KAAK;YAEtF,uDAAuD,QAAQ,WAAW;YAC1E,sDAAsD,QAAQ,WAAW;YACzE,0DAA0D,QAAQ,WAAW;YAC7E,0EAA0E,QAAQ,WAAW;YAC7F,yEAAyE,QAAQ,WAAW;SAC7F,CAAC;QAGF,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACxD,IAAI,OAAO,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,EAAE,CAAC,CAAC;gBAGlD,OAAO,GAAG,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAE/D,OAAO,OAAO,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAEf,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,4BAA4B,CAAC,QAAgB,EAAE,OAAe;QAEpE,IAAI,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;CAkB5B,CAAC;YAEI,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACtD,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACxF,CAAC;iBAAM,CAAC;gBAEN,OAAO,GAAG,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC;YAC5C,CAAC;QACH,CAAC;QAGD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,cAAc,GAAG;;;;;;;;CAQ5B,CAAC;YACI,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YAC1D,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AArHD,gCAqHC"}
@@ -13,6 +13,7 @@ export declare class N8NDocumentationMCPServer {
13
13
  private setupHandlers;
14
14
  private sanitizeValidationResult;
15
15
  private validateToolParams;
16
+ private validateToolParamsBasic;
16
17
  private validateExtractedArgs;
17
18
  private listNodes;
18
19
  private getNodeInfo;
@@ -36,6 +37,7 @@ export declare class N8NDocumentationMCPServer {
36
37
  private validateNodeConfig;
37
38
  private getPropertyDependencies;
38
39
  private getNodeAsToolInfo;
40
+ private getOutputDescriptions;
39
41
  private getCommonAIToolUseCases;
40
42
  private getAIToolExamples;
41
43
  private validateNodeMinimal;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAsDA,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,EAAE,CAAgC;IAC1C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,UAAU,CAAa;;YA4DjB,kBAAkB;YAkBlB,wBAAwB;YAgBxB,iBAAiB;IAO/B,OAAO,CAAC,aAAa;IA0NrB,OAAO,CAAC,wBAAwB;IAoFhC,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,qBAAqB;YA8Pf,SAAS;YA2DT,WAAW;YAiDX,WAAW;YAsCX,cAAc;YAiId,gBAAgB;IAqD9B,OAAO,CAAC,mBAAmB;IAwE3B,OAAO,CAAC,eAAe;YAsBT,eAAe;IAqE7B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,uBAAuB;IA0D/B,OAAO,CAAC,iBAAiB;YAqFX,WAAW;YAgCX,oBAAoB;YAyEpB,qBAAqB;YAuCrB,iBAAiB;YA+EjB,oBAAoB;YAsDpB,cAAc;IAqC5B,OAAO,CAAC,gBAAgB;YAiBV,SAAS;YA6CT,kBAAkB;YA+DlB,uBAAuB;YAsDvB,iBAAiB;IAqE/B,OAAO,CAAC,uBAAuB;IAwD/B,OAAO,CAAC,iBAAiB;YAoDX,mBAAmB;YAkGnB,qBAAqB;IAS7B,OAAO,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;YAS9B,iBAAiB;YAqBjB,WAAW;YAmBX,eAAe;YAqBf,mBAAmB;IAuBjC,OAAO,CAAC,kBAAkB;YAiBZ,gBAAgB;YA6GhB,2BAA2B;YAiE3B,2BAA2B;IAyEnC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBhC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAuDA,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,EAAE,CAAgC;IAC1C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,UAAU,CAAa;;YA4DjB,kBAAkB;YAkBlB,wBAAwB;YAgBxB,iBAAiB;IAO/B,OAAO,CAAC,aAAa;IA0NrB,OAAO,CAAC,wBAAwB;IAoFhC,OAAO,CAAC,kBAAkB;IAoE1B,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,qBAAqB;YAsQf,SAAS;YA2DT,WAAW;YAiEX,WAAW;YAsCX,cAAc;YAiId,gBAAgB;IAqD9B,OAAO,CAAC,mBAAmB;IAwE3B,OAAO,CAAC,eAAe;YAsBT,eAAe;IAqE7B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,uBAAuB;IA0D/B,OAAO,CAAC,iBAAiB;YAqFX,WAAW;YAgCX,oBAAoB;YAyEpB,qBAAqB;YAuCrB,iBAAiB;YA+EjB,oBAAoB;YAsDpB,cAAc;IAqC5B,OAAO,CAAC,gBAAgB;YAiBV,SAAS;YA6CT,kBAAkB;YA+DlB,uBAAuB;YAsDvB,iBAAiB;IAqE/B,OAAO,CAAC,qBAAqB;IA8C7B,OAAO,CAAC,uBAAuB;IAwD/B,OAAO,CAAC,iBAAiB;YAoDX,mBAAmB;YAkGnB,qBAAqB;IAS7B,OAAO,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;YAS9B,iBAAiB;YAqBjB,WAAW;YAmBX,eAAe;YAqBf,mBAAmB;IAuBjC,OAAO,CAAC,kBAAkB;YAiBZ,gBAAgB;YA6GhB,2BAA2B;YAiE3B,2BAA2B;IAyEnC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBhC"}
@@ -62,6 +62,7 @@ const handlers_workflow_diff_1 = require("./handlers-workflow-diff");
62
62
  const tools_documentation_1 = require("./tools-documentation");
63
63
  const version_1 = require("../utils/version");
64
64
  const node_utils_1 = require("../utils/node-utils");
65
+ const validation_schemas_1 = require("../utils/validation-schemas");
65
66
  const protocol_version_1 = require("../utils/protocol-version");
66
67
  class N8NDocumentationMCPServer {
67
68
  constructor() {
@@ -379,7 +380,62 @@ class N8NDocumentationMCPServer {
379
380
  }
380
381
  return JSON.parse(JSON.stringify(sanitized));
381
382
  }
382
- validateToolParams(toolName, args, requiredParams) {
383
+ validateToolParams(toolName, args, legacyRequiredParams) {
384
+ try {
385
+ let validationResult;
386
+ switch (toolName) {
387
+ case 'validate_node_operation':
388
+ validationResult = validation_schemas_1.ToolValidation.validateNodeOperation(args);
389
+ break;
390
+ case 'validate_node_minimal':
391
+ validationResult = validation_schemas_1.ToolValidation.validateNodeMinimal(args);
392
+ break;
393
+ case 'validate_workflow':
394
+ case 'validate_workflow_connections':
395
+ case 'validate_workflow_expressions':
396
+ validationResult = validation_schemas_1.ToolValidation.validateWorkflow(args);
397
+ break;
398
+ case 'search_nodes':
399
+ validationResult = validation_schemas_1.ToolValidation.validateSearchNodes(args);
400
+ break;
401
+ case 'list_node_templates':
402
+ validationResult = validation_schemas_1.ToolValidation.validateListNodeTemplates(args);
403
+ break;
404
+ case 'n8n_create_workflow':
405
+ validationResult = validation_schemas_1.ToolValidation.validateCreateWorkflow(args);
406
+ break;
407
+ case 'n8n_get_workflow':
408
+ case 'n8n_get_workflow_details':
409
+ case 'n8n_get_workflow_structure':
410
+ case 'n8n_get_workflow_minimal':
411
+ case 'n8n_update_full_workflow':
412
+ case 'n8n_delete_workflow':
413
+ case 'n8n_validate_workflow':
414
+ case 'n8n_get_execution':
415
+ case 'n8n_delete_execution':
416
+ validationResult = validation_schemas_1.ToolValidation.validateWorkflowId(args);
417
+ break;
418
+ default:
419
+ return this.validateToolParamsBasic(toolName, args, legacyRequiredParams || []);
420
+ }
421
+ if (!validationResult.valid) {
422
+ const errorMessage = validation_schemas_1.Validator.formatErrors(validationResult, toolName);
423
+ logger_1.logger.error(`Parameter validation failed for ${toolName}:`, errorMessage);
424
+ throw new validation_schemas_1.ValidationError(errorMessage);
425
+ }
426
+ }
427
+ catch (error) {
428
+ if (error instanceof validation_schemas_1.ValidationError) {
429
+ throw error;
430
+ }
431
+ logger_1.logger.error(`Validation system error for ${toolName}:`, error);
432
+ const errorMessage = error instanceof Error
433
+ ? `Internal validation error: ${error.message}`
434
+ : `Internal validation error while processing ${toolName}`;
435
+ throw new Error(errorMessage);
436
+ }
437
+ }
438
+ validateToolParamsBasic(toolName, args, requiredParams) {
383
439
  const missing = [];
384
440
  for (const param of requiredParams) {
385
441
  if (!(param in args) || args[param] === undefined || args[param] === null) {
@@ -500,12 +556,17 @@ class N8NDocumentationMCPServer {
500
556
  fix: 'Provide config as an object with node properties'
501
557
  }],
502
558
  warnings: [],
503
- suggestions: [],
559
+ suggestions: [
560
+ '🔧 RECOVERY: Invalid config detected. Fix with:',
561
+ ' • Ensure config is an object: { "resource": "...", "operation": "..." }',
562
+ ' • Use get_node_essentials to see required fields for this node type',
563
+ ' • Check if the node type is correct before configuring it'
564
+ ],
504
565
  summary: {
505
566
  hasErrors: true,
506
567
  errorCount: 1,
507
568
  warningCount: 0,
508
- suggestionCount: 0
569
+ suggestionCount: 3
509
570
  }
510
571
  };
511
572
  }
@@ -518,7 +579,10 @@ class N8NDocumentationMCPServer {
518
579
  nodeType: args.nodeType || 'unknown',
519
580
  displayName: 'Unknown Node',
520
581
  valid: false,
521
- missingRequiredFields: ['Invalid config format - expected object']
582
+ missingRequiredFields: [
583
+ 'Invalid config format - expected object',
584
+ '🔧 RECOVERY: Use format { "resource": "...", "operation": "..." } or {} for empty config'
585
+ ]
522
586
  };
523
587
  }
524
588
  return this.validateNodeMinimal(args.nodeType, args.config);
@@ -683,10 +747,23 @@ class N8NDocumentationMCPServer {
683
747
  'N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true' :
684
748
  null
685
749
  };
750
+ let outputs = undefined;
751
+ if (node.outputNames && node.outputNames.length > 0) {
752
+ outputs = node.outputNames.map((name, index) => {
753
+ const descriptions = this.getOutputDescriptions(node.nodeType, name, index);
754
+ return {
755
+ index,
756
+ name,
757
+ description: descriptions.description,
758
+ connectionGuidance: descriptions.connectionGuidance
759
+ };
760
+ });
761
+ }
686
762
  return {
687
763
  ...node,
688
764
  workflowNodeType: (0, node_utils_1.getWorkflowNodeType)(node.package, node.nodeType),
689
- aiToolCapabilities
765
+ aiToolCapabilities,
766
+ outputs
690
767
  };
691
768
  }
692
769
  async searchNodes(query, limit = 20, options) {
@@ -1513,6 +1590,46 @@ Full documentation is being prepared. For now, use get_node_essentials for confi
1513
1590
  aiToolCapabilities
1514
1591
  };
1515
1592
  }
1593
+ getOutputDescriptions(nodeType, outputName, index) {
1594
+ if (nodeType === 'nodes-base.splitInBatches') {
1595
+ if (outputName === 'done' && index === 0) {
1596
+ return {
1597
+ description: 'Final processed data after all iterations complete',
1598
+ connectionGuidance: 'Connect to nodes that should run AFTER the loop completes'
1599
+ };
1600
+ }
1601
+ else if (outputName === 'loop' && index === 1) {
1602
+ return {
1603
+ description: 'Current batch data for this iteration',
1604
+ connectionGuidance: 'Connect to nodes that process items INSIDE the loop (and connect their output back to this node)'
1605
+ };
1606
+ }
1607
+ }
1608
+ if (nodeType === 'nodes-base.if') {
1609
+ if (outputName === 'true' && index === 0) {
1610
+ return {
1611
+ description: 'Items that match the condition',
1612
+ connectionGuidance: 'Connect to nodes that handle the TRUE case'
1613
+ };
1614
+ }
1615
+ else if (outputName === 'false' && index === 1) {
1616
+ return {
1617
+ description: 'Items that do not match the condition',
1618
+ connectionGuidance: 'Connect to nodes that handle the FALSE case'
1619
+ };
1620
+ }
1621
+ }
1622
+ if (nodeType === 'nodes-base.switch') {
1623
+ return {
1624
+ description: `Output ${index}: ${outputName || 'Route ' + index}`,
1625
+ connectionGuidance: `Connect to nodes for the "${outputName || 'route ' + index}" case`
1626
+ };
1627
+ }
1628
+ return {
1629
+ description: outputName || `Output ${index}`,
1630
+ connectionGuidance: `Connect to downstream nodes`
1631
+ };
1632
+ }
1516
1633
  getCommonAIToolUseCases(nodeType) {
1517
1634
  const useCaseMap = {
1518
1635
  'nodes-base.slack': [
@@ -1635,10 +1752,10 @@ Full documentation is being prepared. For now, use get_node_essentials for confi
1635
1752
  }
1636
1753
  const properties = node.properties || [];
1637
1754
  const operationContext = {
1638
- resource: config.resource,
1639
- operation: config.operation,
1640
- action: config.action,
1641
- mode: config.mode
1755
+ resource: config?.resource,
1756
+ operation: config?.operation,
1757
+ action: config?.action,
1758
+ mode: config?.mode
1642
1759
  };
1643
1760
  const missingFields = [];
1644
1761
  for (const prop of properties) {
@@ -1648,7 +1765,7 @@ Full documentation is being prepared. For now, use get_node_essentials for confi
1648
1765
  let isVisible = true;
1649
1766
  if (prop.displayOptions.show) {
1650
1767
  for (const [key, values] of Object.entries(prop.displayOptions.show)) {
1651
- const configValue = config[key];
1768
+ const configValue = config?.[key];
1652
1769
  const expectedValues = Array.isArray(values) ? values : [values];
1653
1770
  if (!expectedValues.includes(configValue)) {
1654
1771
  isVisible = false;
@@ -1658,7 +1775,7 @@ Full documentation is being prepared. For now, use get_node_essentials for confi
1658
1775
  }
1659
1776
  if (isVisible && prop.displayOptions.hide) {
1660
1777
  for (const [key, values] of Object.entries(prop.displayOptions.hide)) {
1661
- const configValue = config[key];
1778
+ const configValue = config?.[key];
1662
1779
  const expectedValues = Array.isArray(values) ? values : [values];
1663
1780
  if (expectedValues.includes(configValue)) {
1664
1781
  isVisible = false;
@@ -1669,7 +1786,7 @@ Full documentation is being prepared. For now, use get_node_essentials for confi
1669
1786
  if (!isVisible)
1670
1787
  continue;
1671
1788
  }
1672
- if (!(prop.name in config)) {
1789
+ if (!config || !(prop.name in config)) {
1673
1790
  missingFields.push(prop.displayName || prop.name);
1674
1791
  }
1675
1792
  }