Skip to content

Commit 23d1790

Browse files
authored
chore: sync skills pack guides (n8n-skills 1.33.0) (czlonkowski#1035)
* chore: sync skills pack guides (v1.33.0) Conceived by Romuald Członkowski - www.aiadvisors.pl/en * chore: sync skills pack review fixes (n8n-skills 1.33.0) Conceived by Romuald Członkowski - www.aiadvisors.pl/en * chore: sync skills pack wording fixes (n8n-skills 1.33.0) Conceived by Romuald Członkowski - www.aiadvisors.pl/en
1 parent e385880 commit 23d1790

5 files changed

Lines changed: 119 additions & 14 deletions

File tree

data/skills/n8n-mcp-tools-expert/OPERATIONS_GUIDE.md

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,18 @@ n8n_deploy_template({
6969
## Data Table Management
7070

7171
> **Two surfaces, don't confuse them:**
72-
> - **`n8n_manage_datatable` (below)** — MCP tool for managing tables and 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.
7373
> - **`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).
7474
>
7575
> Rule of thumb: use the MCP tool to set up a table once and the workflow node to read/write rows on every execution.
7676
7777
### n8n_manage_datatable
7878

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.
8080

8181
**Table Actions**: `createTable`, `listTables`, `getTable`, `updateTable`, `deleteTable`
8282
**Row Actions**: `getRows`, `insertRows`, `updateRows`, `upsertRows`, `deleteRows`
83+
**Column Actions** (n8n's MCP server, `N8N_MCP_ACCESS_TOKEN`, n8n 2.34+): `addColumn`, `deleteColumn`, `renameColumn`
8384

8485
```javascript
8586
// Create a data table
@@ -129,6 +130,31 @@ n8n_manage_datatable({
129130
})
130131
```
131132

133+
```javascript
134+
// Column actions: the Public API cannot change columns after a table exists,
135+
// so these run through n8n's MCP server. projectId is the project owning the
136+
// table; when omitted it is resolved from the instance's projects (PROJECT_REQUIRED
137+
// asks for it when more than one project could own the table).
138+
n8n_manage_datatable({
139+
action: "addColumn",
140+
tableId: "dt-123",
141+
column: {name: "status", type: "string"} // letters/digits/underscores, starts with a letter, max 63 chars
142+
})
143+
144+
n8n_manage_datatable({
145+
action: "renameColumn",
146+
tableId: "dt-123",
147+
columnId: "col-456", // from getTable
148+
name: "state"
149+
})
150+
151+
n8n_manage_datatable({
152+
action: "deleteColumn",
153+
tableId: "dt-123",
154+
columnId: "col-456"
155+
})
156+
```
157+
132158
**Filter conditions**: `eq`, `neq`, `like`, `ilike`, `gt`, `gte`, `lt`, `lte`
133159

134160
**Best practices**:

data/skills/n8n-mcp-tools-expert/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ See [WORKFLOW_GUIDE.md](WORKFLOW_GUIDE.md) for all actions, the includeUsage sha
316316

317317
## Agents
318318

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.
320320

321321
- `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.
322322
- `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"})`.

data/skills/n8n-mcp-tools-expert/WORKFLOW_GUIDE.md

Lines changed: 88 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,14 @@ const result = n8n_deploy_template({
547547

548548
## n8n_workflow_versions (VERSION CONTROL)
549549

550-
**Use when**: Managing workflow history, rollback, cleanup
550+
**Use when**: Managing workflow history, rollback, cleanup, comparing versions
551+
552+
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.
551558

552559
### List Versions
553560
```javascript
@@ -556,27 +563,74 @@ n8n_workflow_versions({
556563
workflowId: "workflow-id",
557564
limit: 10
558565
})
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+
})
559575
```
560576

561577
### Get Specific Version
562578
```javascript
563579
n8n_workflow_versions({
564580
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…"
566610
})
567611
```
612+
Both versions must come from the same source and the same workflow; a mismatch is refused, not silently compared.
568613

569614
### Rollback to Previous Version
570615
```javascript
571616
n8n_workflow_versions({
572617
mode: "rollback",
573618
workflowId: "workflow-id",
574619
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…"
576629
})
577630
```
578631

579632
### Delete Versions
633+
Local snapshots only (`source: "native"` returns `MODE_NOT_SUPPORTED_FOR_SOURCE`).
580634
```javascript
581635
// Delete specific version
582636
n8n_workflow_versions({
@@ -594,6 +648,7 @@ n8n_workflow_versions({
594648
```
595649

596650
### Prune Old Versions
651+
Local snapshots only.
597652
```javascript
598653
n8n_workflow_versions({
599654
mode: "prune",
@@ -604,32 +659,56 @@ n8n_workflow_versions({
604659

605660
---
606661

607-
## n8n_test_workflow (TRIGGER EXECUTION)
662+
## n8n_test_workflow (RUNNING WORKFLOWS)
608663

609-
**Use when**: Testing workflow execution
664+
**Use when**: Running a workflow to test it
610665

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.
612667

613668
```javascript
614-
// Test webhook workflow
669+
// HTTP trigger path (method auto/trigger): the older fields still apply here
615670
n8n_test_workflow({
616671
workflowId: "workflow-id",
617672
triggerType: "webhook", // Optional: auto-detected
618673
httpMethod: "POST",
619674
data: {message: "Hello!"},
620675
waitForResponse: true,
621-
timeout: 120000
676+
timeout: 120000 // HTTP trigger path only
622677
})
623678

624-
// Test chat workflow
625679
n8n_test_workflow({
626680
workflowId: "workflow-id",
627681
triggerType: "chat",
628682
message: "Hello, AI agent!",
629683
sessionId: "session-123" // For conversation continuity
630684
})
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})
631708
```
632709

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).
711+
633712
---
634713

635714
## n8n_manage_credentials (CREDENTIAL MANAGEMENT)

data/skills/n8n-node-configuration/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ get_node({
172172
3. Looking for a specific field → `search_properties` mode. Otherwise continue.
173173
4. Still need more → `get_node({detail: "full"})`.
174174

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.
176176

177177
---
178178

data/skills/n8n-validation-expert/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ n8n_autofix_workflow({
451451

452452
## Running the workflow after it validates
453453

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.
455455

456456
**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).
457457

0 commit comments

Comments
 (0)