AutomationFlowsAI & RAG › Business Intelligence Assistant for Slack Using Explorium Mcp & Claude AI

Business Intelligence Assistant for Slack Using Explorium Mcp & Claude AI

Byexplorium @explorium on n8n.io

Slack workspace with admin access Anthropic API key (You can replace with other LLM Chat) Explorium API Key Go to api.slack.com/apps Click Create New App → From scratch Give it name (e.g., "Explorium Agent") and select workspace

Event trigger★★★★☆ complexityAI-powered13 nodesSlack TriggerHTTP RequestAgentAnthropic ChatMemory Buffer WindowMcp Client ToolSlack
AI & RAG Trigger: Event Nodes: 13 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #9935 — we link there as the canonical source.

This workflow follows the Agent → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "LkzpscrRHzAoucunc8q3b",
  "name": "Explorium MCP - Slack Bot",
  "tags": [],
  "nodes": [
    {
      "id": "c368c2db-b724-48d3-9735-cc05f79c1b4d",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        608,
        528
      ],
      "parameters": {
        "width": 640,
        "height": 880,
        "content": "## 1. Create Slack App\n\n### Create App\n1. Go to api.slack.com/apps\n2. Click **Create New App** \u2192 **From scratch**\n3. Give it name (e.g., \"Explorium Agent\") and select workspace\n\n### Bot Permissions (OAuth & Permissions)\nAdd these **Bot Token Scopes**:\n```\napp_mentions:read\nchannels:history\nchannels:read\nchat:write\nemoji:read\ngroups:history\ngroups:read\nim:history\nim:read\nmpim:history\nmpim:read\nreactions:read\nusers:read\n```\n\n### Enable Events\n1. **Event Subscriptions** \u2192 Enable\n2. Add **Request URL** (from n8n Slack Trigger node)\n3. Subscribe to **bot events**:\n   - app_mention\n   - message.channels\n   - message.groups\n   - message.im\n   - message.mpim\n   - reaction_added\n\n### Install App\n1. **Install App** \u2192 **Install to Workspace**\n2. Copy **Bot User OAuth Token** (xoxb-...)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "96561b18-cebd-4705-b6d9-57fe17471371",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1296,
        528
      ],
      "parameters": {
        "width": 640,
        "height": 608,
        "content": "## 2. Configure n8n\n\n### Import & Setup\n1. Import this JSON template\n2. **Slack Trigger** node:\n   - Add Slack credential with Bot Token\n   - Copy webhook URL\n   - Paste in Slack Event Subscriptions Request URL\n\n3. **Anthropic Chat Model** node:\n   - Add Anthropic API credential\n   - Model: claude-haiku-4-5-20251001\n\n(You can replace it with other chat models)\n\n4. **MCP Client** node:\n   - Endpoint: https://mcp.explorium.ai/mcp\n   - Header Auth: Add Explorium API key\n\n\n## Usage Examples\n```\n@Bot find tech companies in SF with 50-200 employees\n@Bot show Microsoft's technology stack\n@Bot get CMO contacts at healthcare companies\n```"
      },
      "typeVersion": 1
    },
    {
      "id": "3e51701f-311d-4fb6-b328-06079e9c12a0",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        608,
        160
      ],
      "parameters": {
        "width": 2912,
        "height": 256,
        "content": "# Explorium Agent for Slack\n\nAI-powered Slack bot for business intelligence queries using Explorium API through MCP.\n\n## Prerequisites\n- Slack workspace with admin access\n- Anthropic API key (You can replace with other LLM Chat)\n- Explorium API Key\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6cd1264f-aa95-4b80-97f8-272df22340a9",
      "name": "Slack Trigger",
      "type": "n8n-nodes-base.slackTrigger",
      "position": [
        1984,
        624
      ],
      "parameters": {
        "options": {
          "resolveIds": true
        },
        "trigger": [
          "app_mention"
        ],
        "watchWorkspace": true
      },
      "typeVersion": 1
    },
    {
      "id": "1005f659-9a26-4e62-a6cb-c97c799ca7d6",
      "name": "Check If Thread",
      "type": "n8n-nodes-base.if",
      "position": [
        2208,
        624
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "combineOperation": "any"
          },
          "conditions": [
            {
              "id": "condition1",
              "operator": {
                "type": "string",
                "operation": "notEmpty"
              },
              "leftValue": "={{ $json.thread_ts }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "15829800-e355-404d-b826-2e86754a426e",
      "name": "Fetch Thread Messages",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2432,
        528
      ],
      "parameters": {
        "url": "https://slack.com/api/conversations.replies",
        "options": {},
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "channel",
              "value": "={{ $json.channel }}"
            },
            {
              "name": "ts",
              "value": "={{ $json.thread_ts }}"
            }
          ]
        },
        "nodeCredentialType": "slackApi"
      },
      "typeVersion": 4.2
    },
    {
      "id": "6a2cd989-62b9-4cf8-89a7-b8e376f53ea8",
      "name": "Format Thread Context",
      "type": "n8n-nodes-base.code",
      "position": [
        2656,
        528
      ],
      "parameters": {
        "jsCode": "// Get the original trigger data from the first item\nconst triggerData = $('Slack Trigger').first().json;\n\n// Get thread messages from Slack API response\nconst slackResponse = $input.first().json;\nconst messagesList = slackResponse.messages || [];\n\n// Build thread context from all messages\nlet threadContext = '';\nif (messagesList.length > 1) {\n  threadContext = messagesList\n    .map((msg, idx) => {\n      const text = msg.text || '';\n      const user = msg.user || 'Unknown';\n      const isBot = msg.bot_id ? ' (bot)' : '';\n      return `Message ${idx + 1} from ${user}${isBot}: ${text}`;\n    })\n    .join('\\n');\n}\n\n// Get current message text\nconst currentText = triggerData.text || (triggerData.blocks && triggerData.blocks[0] && triggerData.blocks[0].elements && triggerData.blocks[0].elements[0] && triggerData.blocks[0].elements[0].elements && triggerData.blocks[0].elements[0].elements[1] ? triggerData.blocks[0].elements[0].elements[1].text : '');\n\n// Combine context with current message\nconst finalText = messagesList.length > 1 \n  ? `Thread Context:\\n${threadContext}\\n\\nCurrent Message: ${currentText}`\n  : currentText;\n\nreturn {\n  channel: triggerData.channel || '',\n  ts: triggerData.ts || '',\n  thread_ts: triggerData.thread_ts || '',\n  type: triggerData.type || '',\n  text: finalText,\n  original_text: currentText,\n  is_bot: triggerData.bot_id ? true : false,\n  user: triggerData.user || '',\n  is_thread_continuation: triggerData.thread_ts ? true : false,\n  session_id: triggerData.thread_ts || triggerData.ts,\n  reaction: triggerData.reaction || '',\n  item_ts: triggerData.item ? triggerData.item.ts : '',\n  is_emoji: triggerData.blocks && triggerData.blocks[0] && triggerData.blocks[0].elements && triggerData.blocks[0].elements[0] && triggerData.blocks[0].elements[0].elements && triggerData.blocks[0].elements[0].elements[0] && triggerData.blocks[0].elements[0].elements[0].type === 'emoji' ? true : false,\n  has_thread_context: messagesList.length > 1\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "fbf84d8a-b7d4-432d-a725-d15112a76953",
      "name": "Format Without Thread",
      "type": "n8n-nodes-base.set",
      "position": [
        2656,
        720
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "2c1ec1ad-72f2-4bcd-bfef-dc12f49de48b",
              "name": "channel",
              "type": "string",
              "value": "={{ $json.channel || '' }}"
            },
            {
              "id": "af7e1d94-946c-4257-824e-a5d91a2b007a",
              "name": "ts",
              "type": "string",
              "value": "={{ $json.ts || '' }}"
            },
            {
              "id": "28583957-bddd-4bd2-b937-79b7554a7a65",
              "name": "thread_ts",
              "type": "string",
              "value": "={{ $json.thread_ts || '' }}"
            },
            {
              "id": "53179618-0ca1-43a2-a416-af8a39f792e0",
              "name": "type",
              "type": "string",
              "value": "={{ $json.type || '' }}"
            },
            {
              "id": "fbe15475-5924-41fa-a7b1-6017ae766a23",
              "name": "text",
              "type": "string",
              "value": "={{ $json.text || ($json.blocks && $json.blocks[0] && $json.blocks[0].elements && $json.blocks[0].elements[0] && $json.blocks[0].elements[0].elements && $json.blocks[0].elements[0].elements[1] ? $json.blocks[0].elements[0].elements[1].text : '') }}"
            },
            {
              "id": "49376ca5-079b-4993-9f15-6847734d9c5d",
              "name": "is_bot",
              "type": "boolean",
              "value": "={{ $json.bot_id ? true : false }}"
            },
            {
              "id": "b0ae1eed-7adf-49d2-b19d-0a1efdb5f435",
              "name": "user",
              "type": "string",
              "value": "={{ $json.user || '' }}"
            },
            {
              "id": "13fab869-b570-444d-903b-11d4b4f0ebe6",
              "name": "is_thread_continuation",
              "type": "boolean",
              "value": "={{ $json.thread_ts ? true : false }}"
            },
            {
              "id": "a148580e-6fe3-4689-be2f-7996c54f6118",
              "name": "session_id",
              "type": "string",
              "value": "={{ $json.thread_ts || $json.ts }}"
            },
            {
              "id": "311146c6-e6cf-492e-a4a9-09066e927879",
              "name": "reaction",
              "type": "string",
              "value": "={{ $json.reaction || '' }}"
            },
            {
              "id": "1b358df2-7062-4c7b-be7d-28bc69611322",
              "name": "item_ts",
              "type": "string",
              "value": "={{ $json.item ? $json.item.ts : '' }}"
            },
            {
              "id": "1e9d1f5a-4e0a-4ed8-8e23-660fe8b6a950",
              "name": "is_emoji",
              "type": "boolean",
              "value": "={{ $json.blocks && $json.blocks[0] && $json.blocks[0].elements && $json.blocks[0].elements[0] && $json.blocks[0].elements[0].elements && $json.blocks[0].elements[0].elements[0] && $json.blocks[0].elements[0].elements[0].type === 'emoji' ? true : false }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "40654e2f-0572-4d38-87e6-28d748dc5af7",
      "name": "Explorium Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2928,
        624
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "systemMessage": "=You are **Explorium Business Intelligence Agent**, created by Explorium.  \n\nAdvanced Explorium API agent with comprehensive business intelligence data through MCP.\n\n## Core Capabilities\n\n### Company Intelligence\n\u2022 Discovery: Search by industry, size, revenue, location, technology, growth metrics\n\u2022 Firmographics: Profiles, employee counts, revenue, industry classifications  \n\u2022 Technographics: Technology stacks, software usage, digital infrastructure\n\u2022 Financial Data: Revenue trends, funding rounds, investor information, financial metrics for public companies\n\u2022 Company Ratings: Employee satisfaction, company culture, work-life balance, management quality\n\u2022 Competitive Analysis: Market positioning, competitive landscape, strategic insights\n\u2022 Strategic Intelligence: Strategic focus areas, value propositions, target markets from SEC filings\n\u2022 Business Challenges: Risk analysis, security breaches, competitive pressures from public disclosures\n\u2022 Events: Funding, product launches, partnerships, office changes, business developments\n\u2022 Workforce Analytics: Department composition, hiring trends, organizational structure\n\u2022 Social Intelligence: LinkedIn posts, website changes, digital presence\n\u2022 Website Intelligence: Keyword searches, content analysis, website changes tracking\n\u2022 Market Statistics: Aggregated industry insights, geographic distribution, revenue analysis\n\n### Prospect Intelligence  \n\u2022 Discovery: Find executives, decision-makers by role, company, industry, experience\n\u2022 Contact Enrichment: Professional/personal emails, phone numbers, verification\n\u2022 Profiles: Work history, education, skills, career progression\n\u2022 Role Intelligence: Current positions, job levels, departments, reporting structure\n\u2022 Social Activity: LinkedIn posts, engagement metrics, professional content\n\u2022 Career Events: Job changes, promotions, role transitions, anniversaries\n\n### Analytics & Communication\n\u2022 Market Research: Industry trends, competitive positioning, landscape analysis\n\u2022 Investment Intelligence: Funding rounds, investor networks, financial milestones\n\u2022 Growth Tracking: Company expansion, headcount changes, business evolution\n\u2022 Personalized Outreach: Targeted messaging using real-time business intelligence\n\u2022 Trigger-Based Communication: Messages based on events, role changes, milestones\n\u2022 Smart Autocomplete: Intelligent suggestions for industries, technologies, job titles, locations\n\u2022 Web Search: General web search capabilities for additional context and research\n\n## Response Guidelines\n\n### Workflow\n1. **Discovery**: Search companies/prospects using filters\n2. **Intelligence**: Enrich with detailed data\n3. **Analysis**: Analyze trends, patterns, competitive insights  \n4. **Action**: Generate personalized messages, recommendations, strategic insights\n\n### Communication\n\u2022 Always mention using **\"Explorium API\"** (never internal function names)\n\u2022 **Keep responses concise and focused** - provide essential information without unnecessary elaboration\n\u2022 State total matches found and suggest relevant enrichments\n\u2022 When responding to thread conversations, consider the full context provided\n\u2022 Format your responses for slack, the output will be post in slack so it should looks good and well formated there. use the slack guidelines below and not md format (for example for headline use *Some Header* and not **Some Header**):\n\nSlack Guidelines:\n*bold text* - makes text bold\n_italic text_ - makes text italic\n~strikethrough~ - strikes through text\n`code` - inline code formatting\n```code block``` - multi-line code block\n\n- Use asterisk + space for bullet points\n- Like this\n\n1. Numbered lists\n2. Work like this\n\n<https://example.com|Link text> - creates a clickable link\n<@U123ABC> - mentions a user (using their user ID)\n<#C123ABC|channel-name> - links to a channel\n\n> Quoted text\n> Continues on next line\n\n--- \n\nCreates a horizontal line\n```\n\n### Error Handling\n\u2022 Tool errors/no data: respond **\"An error occurred.\"**\n\u2022 Invalid queries: guide toward valid parameters\n\u2022 Off-topic requests: redirect to business intelligence use cases\n\n## Off-Topic Handling\nFor non-business intelligence requests:\n\n> I'm the Explorium Business Intelligence Agent, designed to demonstrate our comprehensive company and prospect intelligence platform.  \n>   \n> **Example capabilities:**  \n> \u2022 Find SaaS firms in New York with 50\u2011200 employees  \n> \u2022 Show Microsoft's technology stack  \n> \u2022 Get marketing\u2011director contacts at healthcare companies  \n> \u2022 Compare funding rounds of fintech startups\n>   \n> What business intelligence would you like to explore?\n\n## Technical Notes\n\u2022 Use autocomplete for industries, technologies, job titles, company categories before filtering\n\u2022 Combine multiple criteria for precise targeting and comprehensive results\n\u2022 Prioritize recent data and real-time insights over historical data\n\u2022 Maintain conversation context for follow-up enrichments and related queries\n\u2022 Use web search for general information, news, and context not available in business intelligence data\n\u2022 Leverage aggregated statistics tools for market-level insights and trends\n\u2022 Provide alternative search strategies when initial queries fail\n\u2022 When using fetch_prospects or fetch_businesses tools limit the results (size and page_size) to 5 results\n\u2022 Thread context is automatically provided when responding to messages in a thread",
          "returnIntermediateSteps": false
        },
        "promptType": "define"
      },
      "typeVersion": 2.1
    },
    {
      "id": "191dbf4f-8419-4a3f-a9a3-9db98e58f183",
      "name": "Anthropic Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        2880,
        848
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-haiku-4-5-20251001",
          "cachedResultName": "Claude Haiku 4.5"
        },
        "options": {}
      },
      "typeVersion": 1.3
    },
    {
      "id": "37287cc9-bd59-48b3-863b-69fab27a7d27",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        3008,
        848
      ],
      "parameters": {
        "sessionKey": "={{ $json.session_id }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 20
      },
      "typeVersion": 1.3
    },
    {
      "id": "c630df4c-2423-4dad-9dc2-4ded2938e4cc",
      "name": "Explorium MCP",
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "position": [
        3136,
        848
      ],
      "parameters": {
        "options": {},
        "endpointUrl": "https://mcp-n8n.explorium.ai/mcp",
        "authentication": "headerAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f48400f1-1242-4180-b63a-5385dc8c9de3",
      "name": "Send a message",
      "type": "n8n-nodes-base.slack",
      "position": [
        3344,
        624
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $item(\"0\").$node[\"Slack Trigger\"].json[\"channel\"] }}"
        },
        "otherOptions": {
          "thread_ts": {
            "replyValues": {
              "thread_ts": "={{ $item(\"0\").$node[\"Slack Trigger\"].json[\"thread_ts\"] || $item(\"0\").$node[\"Slack Trigger\"].json[\"ts\"] }}"
            }
          },
          "includeLinkToWorkflow": false
        }
      },
      "typeVersion": 2.3
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "",
  "connections": {
    "Explorium MCP": {
      "ai_tool": [
        [
          {
            "node": "Explorium Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "Explorium Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Slack Trigger": {
      "main": [
        [
          {
            "node": "Check If Thread",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check If Thread": {
      "main": [
        [
          {
            "node": "Fetch Thread Messages",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Format Without Thread",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Explorium Agent": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Anthropic Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Explorium Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Thread Messages": {
      "main": [
        [
          {
            "node": "Format Thread Context",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Thread Context": {
      "main": [
        [
          {
            "node": "Explorium Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Without Thread": {
      "main": [
        [
          {
            "node": "Explorium Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Slack workspace with admin access Anthropic API key (You can replace with other LLM Chat) Explorium API Key Go to api.slack.com/apps Click Create New App → From scratch Give it name (e.g., "Explorium Agent") and select workspace

Source: https://n8n.io/workflows/9935/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This is a base template for anyone trying to develop a Slack bot AI Agent. This base allows for multiple inputs (Voice, Picture, Video, and Text inputs) to be processed by an AI model of their choosin

Agent, OpenAI, Memory Buffer Window +6
AI & RAG

Chat with a multi-agent system to write a blog. The orchestrator advances through research, headlines, hooks, outline, intro, draft, and final polish–one phase per reply—outputting options and asking

Agent, Tool Workflow, Memory Buffer Window +9
AI & RAG

This workflow transforms Slack into a powerful command center for recruitment. Using an AI Agent (LangChain) integrated with the Recrutei ATS API and MCP, your team can manage candidates, vacancies, t

Slack Trigger, Agent, Memory Buffer Window +4
AI & RAG

This workflow implements role-based access control for AI agent tools using Port as the single source of truth for permissions. Different users get access to different tools based on their roles, with

OpenAI Chat, Tool Calculator, Slack Trigger +7
AI & RAG

The AI-Powered Shopify SEO Content Automation is an enterprise-grade workflow that transforms product content creation for e-commerce stores. This sophisticated multi-agent system integrates GPT-4o, C

Perplexity Tool, Memory Buffer Window, Agent +15