Files
n8n-skills/skills/n8n-mcp-tools-expert/SEARCH_GUIDE.md
Romuald Członkowski d9c2872029 feat: Update skills for n8n-mcp unified tool API (v1.1.0)
BREAKING: Updated all skills to reflect n8n-mcp tool consolidation:

## Tool API Changes
- get_node_essentials → get_node({detail: "standard"})
- get_node_info → get_node({detail: "full"})
- get_node_documentation → get_node({mode: "docs"})
- search_node_properties → get_node({mode: "search_properties"})
- validate_node_minimal → validate_node({mode: "minimal"})
- validate_node_operation → validate_node({mode: "full"})
- get_property_dependencies → REMOVED (use get_node modes)

## New Features Documented
- Workflow activation via API (activateWorkflow/deactivateWorkflow operations)
- n8n_deploy_template - deploy templates directly to n8n
- n8n_workflow_versions - version history and rollback
- n8n_test_workflow - trigger execution
- n8n_executions - manage executions
- Smart parameters (branch, case) for IF/Switch connections
- Intent parameter for better AI responses

## Documentation Updates
- Added YouTube video introduction with thumbnail
- Added GitHub stars badge (1.2k milestone)
- Added build.sh script for dist packaging
- Fixed "5 skills" → "7 skills" inconsistency in README

## Files Updated
- n8n-mcp-tools-expert: Complete rewrite of SKILL.md, SEARCH_GUIDE.md,
  VALIDATION_GUIDE.md, WORKFLOW_GUIDE.md
- n8n-node-configuration: Updated SKILL.md, DEPENDENCIES.md
- n8n-validation-expert: Updated SKILL.md, ERROR_CATALOG.md, FALSE_POSITIVES.md
- n8n-workflow-patterns: Updated SKILL.md, README.md
- README.md, CLAUDE.md: Modernized documentation

Conceived by Romuald Członkowski - www.aiadvisors.pl/en

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 15:37:57 +01:00

8.0 KiB

Node Discovery Tools Guide

Complete guide for finding and understanding n8n nodes.


search_nodes (START HERE!)

Speed: <20ms

Use when: You know what you're looking for (keyword, service, use case)

Syntax:

search_nodes({
  query: "slack",      // Required: search keywords
  mode: "OR",          // Optional: OR (default), AND, FUZZY
  limit: 20,           // Optional: max results (default 20)
  source: "all",       // Optional: all, core, community, verified
  includeExamples: false  // Optional: include template configs
})

Returns:

{
  "query": "slack",
  "results": [
    {
      "nodeType": "nodes-base.slack",                    // For search/validate tools
      "workflowNodeType": "n8n-nodes-base.slack",       // For workflow tools
      "displayName": "Slack",
      "description": "Consume Slack API",
      "category": "output",
      "relevance": "high"
    }
  ]
}

Tips:

  • Common searches: webhook, http, database, email, slack, google, ai
  • OR mode (default): matches any word
  • AND mode: requires all words
  • FUZZY mode: typo-tolerant (finds "slak" → Slack)
  • Use source: "core" for only built-in nodes
  • Use includeExamples: true for real-world configs

get_node (UNIFIED NODE INFORMATION)

The get_node tool provides all node information with different detail levels and modes.

Detail Levels (mode="info")

Detail Tokens Use When
minimal ~200 Quick metadata check
standard ~1-2K Most use cases (DEFAULT)
full ~3-8K Complex debugging only

Speed: <10ms | Size: ~1-2K tokens

Use when: You've found the node and need configuration details

get_node({
  nodeType: "nodes-base.slack",      // Required: SHORT prefix format
  includeExamples: true              // Optional: get real template configs
})
// detail="standard" is the default

Returns:

  • Available operations and resources
  • Essential properties (10-20 most common)
  • Metadata (isAITool, isTrigger, hasCredentials)
  • Real examples from templates (if includeExamples: true)

Minimal Detail

Speed: <5ms | Size: ~200 tokens

Use when: Just need basic metadata

get_node({
  nodeType: "nodes-base.slack",
  detail: "minimal"
})

Returns: nodeType, displayName, description, category

Full Detail (USE SPARINGLY)

Speed: <100ms | Size: ~3-8K tokens

Use when: Debugging complex configuration, need complete schema

get_node({
  nodeType: "nodes-base.httpRequest",
  detail: "full"
})

Warning: Large payload! Use standard for most cases.


get_node Modes

mode="docs" (READABLE DOCUMENTATION)

Use when: Need human-readable documentation with examples

get_node({
  nodeType: "nodes-base.slack",
  mode: "docs"
})

Returns: Formatted markdown with:

  • Usage examples
  • Authentication guide
  • Common patterns
  • Best practices

Better than raw schema for learning!

mode="search_properties" (FIND SPECIFIC FIELDS)

Use when: Looking for specific property in a node

get_node({
  nodeType: "nodes-base.httpRequest",
  mode: "search_properties",
  propertyQuery: "auth",           // Required for this mode
  maxPropertyResults: 20           // Optional: default 20
})

Returns: Property paths and descriptions matching query

Common searches: auth, header, body, json, url, method, credential

mode="versions" (VERSION HISTORY)

Use when: Need to check node version history

get_node({
  nodeType: "nodes-base.executeWorkflow",
  mode: "versions"
})

Returns: Version history with breaking changes flags

mode="compare" (COMPARE VERSIONS)

Use when: Need to see differences between versions

get_node({
  nodeType: "nodes-base.httpRequest",
  mode: "compare",
  fromVersion: "3.0",
  toVersion: "4.1"       // Optional: defaults to latest
})

Returns: Property-level changes between versions

mode="breaking" (BREAKING CHANGES ONLY)

Use when: Checking for breaking changes before upgrades

get_node({
  nodeType: "nodes-base.httpRequest",
  mode: "breaking",
  fromVersion: "3.0"
})

Returns: Only breaking changes (not all changes)

mode="migrations" (AUTO-MIGRATABLE)

Use when: Checking what can be auto-migrated

get_node({
  nodeType: "nodes-base.httpRequest",
  mode: "migrations",
  fromVersion: "3.0"
})

Returns: Changes that can be automatically migrated


Additional Parameters

includeTypeInfo

Add type structure metadata (validation rules, JS types)

get_node({
  nodeType: "nodes-base.if",
  includeTypeInfo: true   // Adds ~80-120 tokens per property
})

Use for complex nodes like filter, resourceMapper

includeExamples

Include real-world configuration examples from templates

get_node({
  nodeType: "nodes-base.slack",
  includeExamples: true   // Adds ~200-400 tokens per example
})

Only works with mode: "info" and detail: "standard"


Common Workflow: Finding & Configuring

Step 1: Search
search_nodes({query: "slack"})
→ Returns: nodes-base.slack

Step 2: Get Operations (18s avg thinking time)
get_node({
  nodeType: "nodes-base.slack",
  includeExamples: true
})
→ Returns: operations list + example configs

Step 3: Validate Config
validate_node({
  nodeType: "nodes-base.slack",
  config: {resource: "channel", operation: "create"},
  profile: "runtime"
})
→ Returns: validation result

Step 4: Use in Workflow
(Configuration ready!)

Most common pattern: search → get_node (18s average)


Quick Comparison

Tool/Mode When to Use Speed Size
search_nodes Find by keyword <20ms Small
get_node (standard) Get config (DEFAULT) <10ms 1-2K
get_node (minimal) Quick metadata <5ms 200
get_node (full) Complex debugging <100ms 3-8K
get_node (docs) Learn usage Fast Medium
get_node (search_properties) Find specific field Fast Small
get_node (versions) Check versions Fast Small

Best Practice: search → get_node(standard) → validate


nodeType Format (CRITICAL!)

Search/Validate Tools (SHORT prefix):

"nodes-base.slack"
"nodes-base.httpRequest"
"nodes-langchain.agent"

Workflow Tools (FULL prefix):

"n8n-nodes-base.slack"
"n8n-nodes-base.httpRequest"
"@n8n/n8n-nodes-langchain.agent"

Conversion: search_nodes returns BOTH formats:

{
  "nodeType": "nodes-base.slack",          // Use with get_node, validate_node
  "workflowNodeType": "n8n-nodes-base.slack"  // Use with n8n_create_workflow
}

Examples

Find and Configure HTTP Request

// Step 1: Search
search_nodes({query: "http request"})

// Step 2: Get standard info
get_node({nodeType: "nodes-base.httpRequest"})

// Step 3: Find auth options
get_node({
  nodeType: "nodes-base.httpRequest",
  mode: "search_properties",
  propertyQuery: "authentication"
})

// Step 4: Validate config
validate_node({
  nodeType: "nodes-base.httpRequest",
  config: {method: "POST", url: "https://api.example.com"},
  profile: "runtime"
})

Explore AI Nodes

// Find all AI-related nodes
search_nodes({query: "ai agent", source: "all"})

// Get AI Agent documentation
get_node({nodeType: "nodes-langchain.agent", mode: "docs"})

// Get configuration details with examples
get_node({
  nodeType: "nodes-langchain.agent",
  includeExamples: true
})

Check Version Compatibility

// See all versions
get_node({nodeType: "nodes-base.executeWorkflow", mode: "versions"})

// Check breaking changes from v1 to v2
get_node({
  nodeType: "nodes-base.executeWorkflow",
  mode: "breaking",
  fromVersion: "1.0"
})