Discovery Tools

Find nodes and templates across the n8n ecosystem. Search 2,616 nodes and 2,352 templates with full-text and semantic search capabilities, and resolve the real values behind dynamic dropdowns from your own instance.

search_nodes

Full-text search across all 2,616 n8n nodes (832 core + 1,784 community). Returns most relevant nodes first, with frequently-used nodes (HTTP Request, Webhook, Set, Code, Slack) prioritized in results.

No Setup Required
ParameterTypeDescription
query*stringSearch keywords. Use quotes for exact phrases like "google sheets"
limitnumberMaximum results to return (max: 100)
modestringSearch mode
ORANDFUZZY
sourcestringFilter by node source. Use "verified" when recommending community nodes for production.
allcorecommunityverified
includeExamplesbooleanInclude real-world configuration examples from templates
includeOperationsbooleanInclude each node's resource/operation pairs in results to scan capability surface without follow-up get_node calls

Basic keyword search

javascript
search_nodes({query: "webhook"})

Returns Webhook node as top result

Search with all words required

javascript
search_nodes({query: "google sheets", mode: "AND"})

Only returns nodes matching both words

Handle typos with fuzzy search

javascript
search_nodes({query: "slak", mode: "FUZZY"})

Returns Slack despite the typo

Search with examples

javascript
search_nodes({query: "http api", includeExamples: true})

Returns HTTP Request, GraphQL, REST nodes with real-world configs

Inspect operations alongside results

javascript
search_nodes({query: "google sheets", includeOperations: true})

Returns each match with its resource/operation pairs so you can pick the right one without a follow-up get_node call

Search community nodes only

javascript
search_nodes({query: "scraping", source: "community"})

Restricts results to the 1,784 community nodes. Use source: "verified" for the 1,495 verified subset.

Use Cases
  • •Finding nodes when you know partial names
  • •Discovering nodes by functionality (e.g., "email", "database", "transform")
  • •Handling user typos in node names
  • •Finding all nodes related to a service (e.g., "google", "aws", "microsoft")
  • •Discovering community integrations the official n8n MCP server cannot see
✓Best Practices
  • •Start with single keywords for broadest results
  • •Use FUZZY mode when users might misspell node names
  • •AND mode works best for 2-3 word searches
  • •Combine with get_node after finding the right node
  • •Use source="verified" when recommending community nodes for production
  • •Check the isVerified flag before relying on a community node
Common Pitfalls
  • •AND mode searches all fields (name, description) not just node names
  • •FUZZY mode with very short queries (1-2 chars) may return unexpected results
  • •Exact matches in quotes are case-sensitive
  • •Community nodes require npm installation on your n8n instance (n8n npm install <package-name>)
  • •Unverified community nodes (isVerified: false) may have limited support
  • •includeOperations is omitted for trigger nodes and freeform nodes (Code, HTTP Request) — they have no resource/operation pattern

search_templates

Unified template search with multiple modes across 2,352 curated templates. Search by keyword, node types, task type, metadata, or workflow patterns.

No Setup Required
ParameterTypeDescription
searchModestringSearch mode
keywordby_nodesby_taskby_metadatapatterns
querystringFor keyword mode: search keywords
nodeTypesarrayFor by_nodes mode: array of node types
taskstringFor by_task mode: task type. For patterns mode: optional category filter (omit for an overview of all categories).
ai_automationdata_syncwebhook_processingemail_automationslack_integrationdata_transformationfile_processingschedulingapi_integrationdatabase_operations
complexitystringFor by_metadata: workflow complexity
simplemediumcomplex
maxSetupMinutesnumberFor by_metadata: maximum setup time (5-480)
minSetupMinutesnumberFor by_metadata: minimum setup time (5-480)
categorystringFor by_metadata: filter by category (e.g., "automation", "integration")
fieldsarrayFor keyword mode: fields to include — id, name, description, author, nodes, views, created, url, metadata. Trim this to cut response size.
requiredServicestringFor by_metadata: e.g., "openai", "slack"
targetAudiencestringFor by_metadata: e.g., "developers", "marketers"
limitnumberMaximum results (max: 100)
offsetnumberPagination offset

Keyword search (default)

javascript
search_templates({query: "chatbot"})

Find templates using specific nodes

javascript
search_templates({
  searchMode: "by_nodes",
  nodeTypes: ["n8n-nodes-base.httpRequest", "n8n-nodes-base.slack"]
})

Get templates for a task type

javascript
search_templates({searchMode: "by_task", task: "webhook_processing"})

Filter by metadata

javascript
search_templates({
  searchMode: "by_metadata",
  complexity: "simple",
  requiredService: "openai"
})

Browse workflow patterns

javascript
search_templates({searchMode: "patterns"})

Returns aggregated pattern summaries (webhook→AI→DB, schedule→batch→API, etc.) mined from all 2,352 templates. ~550 tokens.

Drill into one category's patterns

javascript
search_templates({searchMode: "patterns", task: "ai_automation"})

Returns node frequencies with roles plus the top connection chains for that category

Use Cases
  • •Find workflows by business purpose (keyword search)
  • •Find templates using specific integrations (by_nodes)
  • •Get pre-built solutions for common tasks (by_task)
  • •Filter by complexity for team skill level (by_metadata)
  • •Find templates requiring specific services (by_metadata)
  • •Survey common workflow architectures before designing your own (patterns)
✓Best Practices
  • •Use searchMode="by_task" for common automation patterns
  • •Use searchMode="by_nodes" when you know which integrations you need
  • •Use searchMode="keyword" for general discovery
  • •Use searchMode="patterns" early in design to anchor on proven architectures
  • •Use get_template(id) to get the full workflow JSON

n8n_explore_node_resources

Resolve the real values behind a node's dynamic dropdown (loadOptions) or resource-locator search (listSearch) — Slack channels, Google Sheets tabs, model lists — by running the node's actual load method against the live service through one of your instance's credentials. Workflow configs then reference IDs that exist instead of ones invented from documentation. Requires N8N_MCP_ACCESS_TOKEN (n8n 2.34+).

n8n API Key Required
Instance-level MCP Token Required
ParameterTypeDescription
nodeType*stringFully-qualified node type, e.g. "n8n-nodes-base.slack" (the long form used in workflows)
version*numberNode typeVersion the method belongs to, e.g. 2.3
methodName*stringThe exact loadOptionsMethod or searchListMethod name from the node's property definition — read it off the dynamicOptions field in get_node output, don't guess
methodType*string"listSearch" for resource-locator search methods (supports filter/pagination); "loadOptions" for plain dropdowns
listSearchloadOptions
credentialType*stringCredential type key the node uses, e.g. "slackApi"
credentialId*stringID of an existing credential of that type, from n8n_manage_credentials({action: "list"})
filterstringSearch text to narrow results (listSearch only)
paginationTokenstringToken from a previous response to fetch the next page (listSearch only)
currentNodeParametersobjectParameters the method depends on (loadOptionsDependsOn) — e.g. a spreadsheet ID before listing its sheets. Resource-locator values keep their {__rl: true, mode: "id", value: "…"} shape.
timeoutMsnumberRequest timeout in ms (5000-600000)

List Slack channels

javascript
n8n_explore_node_resources({
  nodeType: "n8n-nodes-base.slack",
  version: 2.3,
  methodName: "getChannels",
  methodType: "listSearch",
  credentialType: "slackApi",
  credentialId: "c1",
  filter: "general"
})

List the tabs of a specific Google Sheet

javascript
n8n_explore_node_resources({
  nodeType: "n8n-nodes-base.googleSheets",
  version: 4.5,
  methodName: "getSheets",
  methodType: "listSearch",
  credentialType: "googleSheetsOAuth2Api",
  credentialId: "c2",
  currentNodeParameters: {
    documentId: {__rl: true, mode: "id", value: "1AbC…"}
  }
})

currentNodeParameters carries the dependent selection — the spreadsheet whose sheets you want

Use Cases
  • •Grounding a Slack/Discord/Notion channel or database picker in a real ID before writing workflow config
  • •Listing the tabs of a Google Sheet once its spreadsheet ID is known
  • •Fetching the model list a credential actually has access to (OpenAI, Azure OpenAI, etc.)
✓Best Practices
  • •Call get_node first and read methodName/methodType/loadOptionsDependsOn off the property's dynamicOptions — never guess them
  • •Pass currentNodeParameters whenever the method depends on a prior selection
  • •Use the returned value verbatim in the workflow; treat name and description as display text only
Common Pitfalls
  • •All six of nodeType, version, methodName, methodType, credentialType, and credentialId are required — none are inferred
  • •methodName is case-sensitive and specific to nodeType + version — a mismatch returns OFFICIAL_MCP_ERROR, not a silent empty list
  • •listSearch and loadOptions are not interchangeable for the same method
  • •Results are live data from your own accounts — don't assume they are the same across calls or instances
  • •Returns NOT_CONFIGURED without N8N_MCP_ACCESS_TOKEN