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.
| Parameter | Type | Description |
|---|---|---|
query* | string | Search keywords. Use quotes for exact phrases like "google sheets" |
limit | number | Maximum results to return (max: 100) |
mode | string | Search modeORANDFUZZY |
source | string | Filter by node source. Use "verified" when recommending community nodes for production.allcorecommunityverified |
includeExamples | boolean | Include real-world configuration examples from templates |
includeOperations | boolean | Include each node's resource/operation pairs in results to scan capability surface without follow-up get_node calls |
Basic keyword search
search_nodes({query: "webhook"})Returns Webhook node as top result
Search with all words required
search_nodes({query: "google sheets", mode: "AND"})Only returns nodes matching both words
Handle typos with fuzzy search
search_nodes({query: "slak", mode: "FUZZY"})Returns Slack despite the typo
Search with examples
search_nodes({query: "http api", includeExamples: true})Returns HTTP Request, GraphQL, REST nodes with real-world configs
Inspect operations alongside results
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
search_nodes({query: "scraping", source: "community"})Restricts results to the 1,784 community nodes. Use source: "verified" for the 1,495 verified subset.
- •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
- •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
- •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.
| Parameter | Type | Description |
|---|---|---|
searchMode | string | Search modekeywordby_nodesby_taskby_metadatapatterns |
query | string | For keyword mode: search keywords |
nodeTypes | array | For by_nodes mode: array of node types |
task | string | For 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 |
complexity | string | For by_metadata: workflow complexitysimplemediumcomplex |
maxSetupMinutes | number | For by_metadata: maximum setup time (5-480) |
minSetupMinutes | number | For by_metadata: minimum setup time (5-480) |
category | string | For by_metadata: filter by category (e.g., "automation", "integration") |
fields | array | For keyword mode: fields to include — id, name, description, author, nodes, views, created, url, metadata. Trim this to cut response size. |
requiredService | string | For by_metadata: e.g., "openai", "slack" |
targetAudience | string | For by_metadata: e.g., "developers", "marketers" |
limit | number | Maximum results (max: 100) |
offset | number | Pagination offset |
Keyword search (default)
search_templates({query: "chatbot"})Find templates using specific nodes
search_templates({
searchMode: "by_nodes",
nodeTypes: ["n8n-nodes-base.httpRequest", "n8n-nodes-base.slack"]
})Get templates for a task type
search_templates({searchMode: "by_task", task: "webhook_processing"})Filter by metadata
search_templates({
searchMode: "by_metadata",
complexity: "simple",
requiredService: "openai"
})Browse workflow patterns
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
search_templates({searchMode: "patterns", task: "ai_automation"})Returns node frequencies with roles plus the top connection chains for that category
- •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)
- •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+).
| Parameter | Type | Description |
|---|---|---|
nodeType* | string | Fully-qualified node type, e.g. "n8n-nodes-base.slack" (the long form used in workflows) |
version* | number | Node typeVersion the method belongs to, e.g. 2.3 |
methodName* | string | The 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 dropdownslistSearchloadOptions |
credentialType* | string | Credential type key the node uses, e.g. "slackApi" |
credentialId* | string | ID of an existing credential of that type, from n8n_manage_credentials({action: "list"}) |
filter | string | Search text to narrow results (listSearch only) |
paginationToken | string | Token from a previous response to fetch the next page (listSearch only) |
currentNodeParameters | object | Parameters 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. |
timeoutMs | number | Request timeout in ms (5000-600000) |
List Slack channels
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
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
- •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.)
- •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
- •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