You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: data/skills/n8n-mcp-tools-expert/OPERATIONS_GUIDE.md
+28-2Lines changed: 28 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -69,17 +69,18 @@ n8n_deploy_template({
69
69
## Data Table Management
70
70
71
71
> **Two surfaces, don't confuse them:**
72
-
> -**`n8n_manage_datatable` (below)** — MCP tool for managing tablesand rows from *outside* a workflow (e.g. creating tables during workflow scaffolding, seeding data, or inspecting state from Claude). Covered here.
72
+
> -**`n8n_manage_datatable` (below)** — MCP tool for managing tables, rows and columns from *outside* a workflow (e.g. creating tables during workflow scaffolding, seeding data, or inspecting state from Claude). Covered here.
73
73
> -**`nodes-base.dataTable` node** — the in-workflow node you drop into a workflow to read/write rows *during execution*. For its parameter shapes, operation values, filter syntax, and gotchas (e.g. the `deleteRows` reserved-word workaround, the `id isNotEmpty` trick for "all rows"), see [n8n-node-configuration → OPERATION_PATTERNS.md → Storage Nodes → Data Table](../n8n-node-configuration/OPERATION_PATTERNS.md#data-table-nodes-basedatatable).
74
74
>
75
75
> Rule of thumb: use the MCP tool to set up a table once and the workflow node to read/write rows on every execution.
76
76
77
77
### n8n_manage_datatable
78
78
79
-
Unified tool for managing n8n data tables and rows. Supports CRUD operations on tables and rows with filtering, pagination, and dry-run support.
79
+
Unified tool for managing n8n data tables, their rows and their columns. Supports CRUD operations on tables and rows with filtering, pagination, and dry-run support, plus column changes through n8n's MCP server.
Copy file name to clipboardExpand all lines: data/skills/n8n-mcp-tools-expert/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -316,7 +316,7 @@ See [WORKFLOW_GUIDE.md](WORKFLOW_GUIDE.md) for all actions, the includeUsage sha
316
316
317
317
## Agents
318
318
319
-
Three tools talk to n8n's instance-level MCP server (a separate endpoint from the Public API)and need `N8N_MCP_ACCESS_TOKEN` — see "Tool Availability" below.
319
+
The three tools in this section exist only for n8n's instance-level MCP server (a separate endpoint from the Public API). `n8n_manage_agents`and `n8n_explore_node_resources`need `N8N_MCP_ACCESS_TOKEN`; `n8n_list_catalog` works without it and uses the token only for its team-project fallback. Other tools route individual operations through the same server — `n8n_test_workflow``prepare`/`pinned`/`direct`, `n8n_workflow_versions``source: "native"`, the `n8n_manage_datatable` column actions — as described in their own sections; see "Tool Availability" below.
320
320
321
321
- `n8n_manage_agents` — create, configure, validate, run and publish persisted n8n Agents (a standalone assistant artifact: model, instructions, tools, skills, tasks, memory, channels — not the AI Agent workflow node). Actions: `reference`, `search`, `get`, `create`, `mutate`, `validate`, `call`, `publish`, `unpublish`, `revert`, `versions`, `delete`, `discover_assets`, `verify_mcp_server`, `update_integration`. Start with `action: "reference"`, then `discover_assets` → `create` → `mutate` (one resource at a time, always the latest `configHash` — a stale one comes back as `STALE_CONFIG`) → `validate`. `publish` only on explicit request; `call` runs the agent with real credentials and tools and may return `approvals[]` for the human to decide. `timeoutMs` is a top-level parameter (default 30000, 180000 for `call`), not part of `args`. Needs n8n **2.34+** with the agents module; on 2.36.x the agents runtime rejects `azureOpenAiApi`/`aws` credentials. See **n8n-agents** skill's "Persisted n8n Agents" section for the full workflow.
322
322
-`n8n_explore_node_resources` — resolve the real values behind a node's `loadOptions` dropdown or resource-locator `listSearch` (Slack channels, Google Sheets tabs, model lists) using a live credential, instead of guessing an ID. Use it when `get_node` (`standard` detail) shows `dynamicOptions: {methodName, methodType, dependsOn}` on a property — pass that `methodName`/`methodType` plus a `credentialId` from `n8n_manage_credentials({action: "list"})`.
Two independent histories, selected with `source`:
553
+
554
+
-`source: "local"` (default) — snapshots n8n-mcp takes before it changes a workflow. Any n8n version, no token; ids are numbers. Blind to edits made in the n8n UI. The only source with `delete` and `prune`.
555
+
-`source: "native"` — n8n's own workflow history, the same list the UI shows. Needs `N8N_MCP_ACCESS_TOKEN` (n8n 2.34+; native `diff` needs 2.36) and the workflow's "Available in MCP" setting; ids are opaque strings; `list` is capped at 50 with `offset`; `delete`/`prune` return `MODE_NOT_SUPPORTED_FOR_SOURCE`; native `rollback` runs without local validation and says so in `validation`.
556
+
557
+
Every response states `source` and `backend`. The examples below use `source: "local"` unless noted.
551
558
552
559
### List Versions
553
560
```javascript
@@ -556,27 +563,74 @@ n8n_workflow_versions({
556
563
workflowId:"workflow-id",
557
564
limit:10
558
565
})
566
+
567
+
// n8n's own history (edits made in the UI included)
568
+
n8n_workflow_versions({
569
+
mode:"list",
570
+
source:"native",
571
+
workflowId:"workflow-id",
572
+
limit:20,
573
+
offset:0
574
+
})
559
575
```
560
576
561
577
### Get Specific Version
562
578
```javascript
563
579
n8n_workflow_versions({
564
580
mode:"get",
565
-
versionId:123
581
+
workflowId:"workflow-id",
582
+
versionId:123// local ids are numbers
583
+
})
584
+
585
+
n8n_workflow_versions({
586
+
mode:"get",
587
+
source:"native",
588
+
workflowId:"workflow-id",
589
+
versionId:"8f3c…"// native ids are strings, from the native list
590
+
})
591
+
```
592
+
593
+
### Diff Two Versions
594
+
```javascript
595
+
// Local: added/removed/modified nodes reported as node IDs (data.format: "n8n-mcp")
596
+
n8n_workflow_versions({
597
+
mode:"diff",
598
+
workflowId:"workflow-id",
599
+
versionId:122,
600
+
toVersionId:123
601
+
})
602
+
603
+
// Native: n8n's own payload with field-level before/after values (data.format: "n8n", n8n 2.36+)
604
+
n8n_workflow_versions({
605
+
mode:"diff",
606
+
source:"native",
607
+
workflowId:"workflow-id",
608
+
versionId:"8f3c…",
609
+
toVersionId:"a91d…"
566
610
})
567
611
```
612
+
Both versions must come from the same source and the same workflow; a mismatch is refused, not silently compared.
568
613
569
614
### Rollback to Previous Version
570
615
```javascript
571
616
n8n_workflow_versions({
572
617
mode:"rollback",
573
618
workflowId:"workflow-id",
574
619
versionId:123, // Optional: specific version
575
-
validateBefore:true// Default: validate before rollback
620
+
validateBefore:true// Default: validate before rollback (local only)
621
+
})
622
+
623
+
// Native rollback restores n8n's own version; no local validation runs
624
+
n8n_workflow_versions({
625
+
mode:"rollback",
626
+
source:"native",
627
+
workflowId:"workflow-id",
628
+
versionId:"8f3c…"
576
629
})
577
630
```
578
631
579
632
### Delete Versions
633
+
Local snapshots only (`source: "native"` returns `MODE_NOT_SUPPORTED_FOR_SOURCE`).
580
634
```javascript
581
635
// Delete specific version
582
636
n8n_workflow_versions({
@@ -594,6 +648,7 @@ n8n_workflow_versions({
594
648
```
595
649
596
650
### Prune Old Versions
651
+
Local snapshots only.
597
652
```javascript
598
653
n8n_workflow_versions({
599
654
mode:"prune",
@@ -604,32 +659,56 @@ n8n_workflow_versions({
604
659
605
660
---
606
661
607
-
## n8n_test_workflow (TRIGGER EXECUTION)
662
+
## n8n_test_workflow (RUNNING WORKFLOWS)
608
663
609
-
**Use when**: Testing workflow execution
664
+
**Use when**: Running a workflow to test it
610
665
611
-
**Auto-detects** trigger type (webhook, form, chat)
666
+
`method` picks the path. `auto` (default) and `trigger` fire a webhook/form/chat trigger over HTTP through the Public API — the workflow must be active. `prepare`, `pinned` and `direct` go through n8n's MCP server (`N8N_MCP_ACCESS_TOKEN`, n8n 2.34+, workflow "Available in MCP") and also work for inactive workflows and workflows without an HTTP trigger. `auto` never runs anything through n8n's MCP server: without an HTTP trigger it reports that the workflow cannot be triggered and names the other methods. See SKILL.md "Running Workflows" for the full method table and the side-effect notes.
612
667
613
668
```javascript
614
-
//Test webhook workflow
669
+
//HTTP trigger path (method auto/trigger): the older fields still apply here
615
670
n8n_test_workflow({
616
671
workflowId:"workflow-id",
617
672
triggerType:"webhook", // Optional: auto-detected
618
673
httpMethod:"POST",
619
674
data: {message:"Hello!"},
620
675
waitForResponse:true,
621
-
timeout:120000
676
+
timeout:120000// HTTP trigger path only
622
677
})
623
678
624
-
// Test chat workflow
625
679
n8n_test_workflow({
626
680
workflowId:"workflow-id",
627
681
triggerType:"chat",
628
682
message:"Hello, AI agent!",
629
683
sessionId:"session-123"// For conversation continuity
630
684
})
685
+
686
+
// Which nodes need pinned data (read-only)
687
+
n8n_test_workflow({
688
+
workflowId:"workflow-id",
689
+
method:"prepare"
690
+
})
691
+
692
+
// Run with pinned data standing in for trigger, credentialed and HTTP Request nodes
693
+
n8n_test_workflow({
694
+
workflowId:"workflow-id",
695
+
method:"pinned",
696
+
pinData: {"Webhook": [{"json": {"id":"123"}}]}, // keyed by node name; items wrapped as {json: ...}
697
+
timeoutMs:300000// client deadline for the official call (5000-600000)
698
+
})
699
+
700
+
// Start a run without a webhook; returns once the run has started
701
+
n8n_test_workflow({
702
+
workflowId:"workflow-id",
703
+
method:"direct",
704
+
data: {message:"Hello!"},
705
+
triggerNodeName:"Manual Trigger"// optional; required by n8n when inputs are given
706
+
})
707
+
// then poll: n8n_executions({action: "get", id: executionId})
631
708
```
632
709
710
+
`timeout` applies to the HTTP trigger path only; the routed methods use `timeoutMs`. A workflow whose "Available in MCP" setting is off comes back as `WORKFLOW_NOT_EXPOSED`; re-running with `exposeToMcp: true` enables that setting on the workflow (a visible, persistent change — confirm with the user first).
Copy file name to clipboardExpand all lines: data/skills/n8n-node-configuration/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -172,7 +172,7 @@ get_node({
172
172
3. Looking for a specific field → `search_properties` mode. Otherwise continue.
173
173
4. Still need more → `get_node({detail: "full"})`.
174
174
175
-
**Dynamic properties**: when `standard` detail marks a property with `dynamicOptions: {methodName, methodType, dependsOn}`, its real values come from a live `loadOptions`/`listSearch` method, not from bundled docs — don't guess an ID for it. Resolve it with `n8n_explore_node_resources` (pass that `methodName`/`methodType`, plus a `credentialId` from `n8n_manage_credentials({action: "list"})`) and use the returned `value` in the config; `dependsOn` lists which other parameters must already be set before the method returns useful results.
175
+
**Dynamic properties**: when `standard` detail marks a property with `dynamicOptions: {methodName, methodType, dependsOn}`, its real values come from a live `loadOptions`/`listSearch` method, not from bundled docs — don't guess an ID for it. Resolve it with `n8n_explore_node_resources` (needs `N8N_MCP_ACCESS_TOKEN`, n8n 2.34+; pass that `methodName`/`methodType`, plus a `credentialId` from `n8n_manage_credentials({action: "list"})`) and use the returned `value` in the config; `dependsOn` lists which other parameters must already be set before the method returns useful results.
Copy file name to clipboardExpand all lines: data/skills/n8n-validation-expert/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -451,7 +451,7 @@ n8n_autofix_workflow({
451
451
452
452
## Running the workflow after it validates
453
453
454
-
`validate_workflow` checks structure, parameters and expressions — it never runs anything. A workflow that validates clean can still fail on real data, so run it once before calling it done.
454
+
`validate_workflow` checks structure, parameters and expressions — it never runs anything. A workflow that validates cleanly can still fail on real data, so run it once before calling it done.
455
455
456
456
**With a webhook, form or chat trigger:**`n8n_test_workflow({workflowId})` — the default `method: "auto"` detects the trigger and fires it over HTTP (the workflow must be active).
0 commit comments