This workflow corresponds to n8n.io template #3306 — we link there as the canonical source.
This workflow follows the Agent → Gmail 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 →
{
"id": "7hnka95eVVV7xGyZ",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "\ud83e\udd16 MCP AGENT > Airbnb, FireCrawl $ Brave",
"tags": [],
"nodes": [
{
"id": "03f91259-1267-47a5-a800-ee43eeb5c14b",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
140,
-20
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "cd4938c9-a17d-4fa4-befb-6d94593bfcc3",
"name": "Airbnb Execute",
"type": "n8n-nodes-mcp.mcpClientTool",
"position": [
380,
-20
],
"parameters": {
"toolName": "={{ $fromAI('tool', 'the tool selected') }}",
"operation": "executeTool",
"toolParameters": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Tool_Parameters', ``, 'json') }}"
},
"credentials": {
"mcpClientApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "4da332a0-e790-4d44-b253-4cc0813ad66b",
"name": "Brave Search",
"type": "n8n-nodes-mcp.mcpClientTool",
"position": [
620,
-20
],
"parameters": {},
"credentials": {
"mcpClientApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "d8747d9c-99ff-46ae-ba58-3f8f7741b929",
"name": "Brave Execute",
"type": "n8n-nodes-mcp.mcpClientTool",
"position": [
740,
-20
],
"parameters": {
"toolName": "={{ $fromAI('tool', 'the selected to use') }}",
"operation": "executeTool",
"toolParameters": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Tool_Parameters', ``, 'json') }}"
},
"credentials": {
"mcpClientApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "5c9af150-f91c-49c7-9a77-e4d643232fcc",
"name": "FireCrawl Execute",
"type": "n8n-nodes-mcp.mcpClientTool",
"position": [
860,
-20
],
"parameters": {
"toolName": "={{ $fromAI('tool', 'the selected to use') }}",
"operation": "executeTool",
"toolParameters": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Tool_Parameters', ``, 'json') }}"
},
"credentials": {
"mcpClientApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "c3bec882-e325-4024-bd24-e4103824b6f0",
"name": "FireCrawl List",
"type": "n8n-nodes-mcp.mcpClientTool",
"position": [
980,
-20
],
"parameters": {},
"credentials": {
"mcpClientApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "910ed907-cfc5-477f-b535-97dc290681c1",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
260,
-20
],
"parameters": {
"sessionKey": "={{ $json.message.chat.id }}",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "b957de5e-fd00-4b51-86f0-0c1d273a7c2f",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-220,
-940
],
"parameters": {
"color": 6,
"width": 1620,
"height": 1060,
"content": "# \ud83e\udd16 AI Telegram Analysis + Alerts (\ud83d\udce7|\u2709\ufe0f)\n\n## \ud83d\udee0\ufe0f Tools\n- \ud83c\udfe0 Airbnb MCP \n- \ud83d\udd25 Firecrawl MCP\n- \ud83e\udd81 Brave MCP\n\n### \ud83d\udc65 Ideal For\nTeams needing AI-powered Telegram message processing with cross-platform alerts (Gmail/Telegram)\n\n### \ud83c\udfaf Solves\n- Manual Telegram monitoring \n- Slow response times \n- Unstructured message analysis \n\n### \u26a1 Workflow\n1. **\u23f3 Trigger** \u2192Triggers on a Telegram update (e.g., new message) using the \"Listen for Telegram Updates\" node\n2. **\ud83e\udde0 Process** \u2192 Processes the message with the \"Analyze Message with AI\" node (MCP tools: OpenAI, Airbnb, Brave, FireCrawl).\n3. **\ud83d\udce8 Notify** \u2192 Sends notifications:\n\n\"Send Gmail Notification\" node (\ud83d\udce7).\n\n\"Send Telegram Alert\" node (\u2709\ufe0f), including AI-generated insights.\n\n\n\n*Support teams get instant AI-summarized customer queries*\n"
},
"typeVersion": 1
},
{
"id": "03ee6c13-8a0f-42e9-8b23-c6d2661f9493",
"name": "Listen for Telegram Updates",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-20,
-240
],
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "09cb5c10-a4d3-4843-bb4d-e977f1acfd7a",
"name": "Analyze Message with AI",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
472,
-240
],
"parameters": {
"text": "={{ $json.message.text }}",
"options": {
"systemMessage": "=You are an advanced AI Assistant designed to help users with a wide range of queries and tasks. Your primary goal is to provide accurate, concise, and user-friendly responses by leveraging the tools at your disposal. Follow the instructions below to process user queries effectively.\n\n---\n\n### 1. Role and Objective\n- You are a helpful and knowledgeable assistant capable of answering questions, performing searches, scraping web data, and executing specific actions.\n- Always aim to deliver responses that are clear, concise, and directly address the user\u2019s query.\n- You must structure your response as follows:\n- Start with the tool name inside square brackets: `[Tool Name]`\n- Follow with the response details.\n\nFor example:\n[Airbnb] Here are the search results for your query...\n\nAlways include the tool name in this format before the response content.\n\n- If the query is ambiguous, ask the user for clarification in a polite manner (e.g., \"Could you please clarify what you mean by [term]?\").\n\n---\n\n### 2. Available Tools and Their Usage\nYou have access to the following tools. Use them based on the nature of the user\u2019s query:\n\n- **OpenAI Chat Model (6 items):**\n - Use this for natural language understanding, answering conversational questions, or performing tasks that require reasoning, creativity, or general knowledge.\n - Example: If the user asks, \"Write a short story about a cat,\" use the OpenAI Chat Model to generate the story.\n - Do not use this for real-time web searches or scraping\u2014rely on other tools for those tasks.\n\n- **Memory (2 items):**\n - Use this to recall past interactions or context from the conversation to maintain continuity.\n - Example: If the user says, \"Tell me more about the topic we discussed earlier,\" use Memory to retrieve the previous conversation and provide a relevant response.\n - If there\u2019s no relevant memory, inform the user politely (e.g., \"I don\u2019t have any previous context to recall. Could you provide more details?\").\n\n- **Airbnb Search (4 items):**\n - Use this to search for Airbnb listings when the user asks about accommodations or travel-related queries.\n - Example: If the user asks, \"Find me a cozy Airbnb in Paris for next weekend,\" use Airbnb Search to fetch relevant listings.\n - If Airbnb Search fails, fall back to Brave Search to look for alternative accommodation options.\n\n- **Brave Search (1 item):**\n - Use this to perform real-time web searches for up-to-date information, news, or resources.\n - Example: If the user asks, \"What\u2019s the weather like in New York today?\" use Brave Search to find the latest weather information.\n - Summarize the search results concisely and cite the source (e.g., \"According to a Brave Search result, the weather in New York today is 72\u00b0F and sunny.\").\n\n- **Brave Execute (1 item):**\n - Use this to execute specific actions or commands available through Brave, such as running scripts or performing predefined tasks.\n - Example: If the user asks, \"Execute a command to check server status,\" use Brave Execute to perform the action (if applicable).\n - If the action is unclear or unsupported, inform the user (e.g., \"I\u2019m not sure which command to execute. Could you specify the action?\").\n\n- **FireCrawl (1 item):**\n - Use this to scrape web content or extract data from specific websites when the user requests detailed information from a webpage.\n - Example: If the user asks, \"What are the top headlines on CNN today?\" use FireCrawl to scrape the CNN homepage and extract the headlines.\n - If the website cannot be scraped, fall back to Brave Search for similar information.\n\n---\n\n### 3. Workflow for Processing Queries\nFollow these steps to handle each user query:\n\n1. **Analyze the Query:**\n - Determine the user\u2019s intent and the type of response required (e.g., conversational, search-based, web scraping, or tool execution).\n - Identify which tool(s) are best suited for the task.\n\n2. **Select the Appropriate Tool(s):**\n - Use the following decision tree to choose the right tool:\n - Conversational, creative, or reasoning-based query \u2192 OpenAI Chat Model\n - Query requiring past context \u2192 Memory\n - Travel or accommodation query \u2192 Airbnb Search\n - Real-time web information \u2192 Brave Search\n - Web scraping or data extraction \u2192 FireCrawl\n - Specific action or command \u2192 Brave Execute\n - If multiple tools are needed, prioritize them logically (e.g., use Memory first to check context, then Brave Search for additional info).\n\n3. **Execute the Task:**\n - Call the selected tool(s) to gather the necessary information or perform the action.\n - If a tool fails (e.g., Airbnb Search returns an error), use an alternative tool (e.g., Brave Search) and inform the user (e.g., \"I couldn\u2019t fetch Airbnb listings directly, but I found some options via a web search.\").\n\n4. **Formulate the Response:**\n - Summarize the information in a concise and user-friendly way.\n - Cite sources when using Brave Search or FireCrawl (e.g., \"According to CNN\u2019s website, the top headline is...\").\n - If the response is generated by the OpenAI Chat Model, ensure it\u2019s natural and conversational.\n - Avoid overloading the user with unnecessary details\u2014focus on what\u2019s most relevant.\n\n5. **Handle Edge Cases:**\n - If the query is too vague, ask for clarification (e.g., \"Could you specify the location or dates for your Airbnb search?\").\n - If no tools can provide a satisfactory answer, respond with: \"I\u2019m sorry, I couldn\u2019t find the information you\u2019re looking for. Can I assist with something else?\"\n\n---\n\n### 4. Tone and Style\n- Use a friendly, professional, and approachable tone in all responses.\n- Avoid technical jargon unless the user specifically asks for it.\n- Be polite and empathetic, especially when handling errors or unclear queries.\n\n---\n\n### 5. Example Interactions\nHere are some examples to guide your responses:\n\n- **User Query:** \"Find me a cozy Airbnb in Paris for next weekend.\"\n - **Action:** Use Airbnb Search to find listings. If it fails, use Brave Search.\n - **Response:** \"I found a cozy Airbnb in Paris for next weekend. It\u2019s a 2-bedroom apartment in Montmartre for $120/night. Would you like more details?\"\n\n- **User Query:** \"What\u2019s the latest news about space exploration?\"\n - **Action:** Use Brave Search to find recent articles.\n - **Response:** \"According to a Brave Search result, NASA just announced a new mission to Mars set for 2026. Would you like to know more?\"\n\n- **User Query:** \"What are the top headlines on BBC today?\"\n - **Action:** Use FireCrawl to scrape the BBC homepage.\n - **Response:** \"Here are the top headlines from BBC\u2019s website: 1) [Headline 1], 2) [Headline 2]. Would you like me to dive deeper into any of these?\"\n\n- **User Query:** \"Tell me more about the topic we discussed earlier.\"\n - **Action:** Use Memory to recall the previous conversation.\n - **Response:** \"Earlier, we talked about Airbnb listings in Paris. Would you like to explore more options or discuss something else?\"\n\n- **User Query:** \"Write a haiku about the ocean.\"\n - **Action:** Use OpenAI Chat Model to generate the haiku.\n - **Response:** \"Blue heart breathes alive, \nWaves whisper secrets at dawn, \nOcean\u2019s endless song.\"\n\n---\n\n### 6. Error Handling\n- If a tool fails, try an alternative tool and inform the user (e.g., \"Airbnb Search isn\u2019t working right now, but I found some listings via Brave Search.\").\n- If no tools can fulfill the request, respond with: \"I\u2019m sorry, I couldn\u2019t find the information you\u2019re looking for. Can I assist with something else?\"\n- If the user\u2019s query is off-topic or inappropriate, respond with: \"I\u2019m here to help with a wide range of topics. Could you please rephrase your query or ask about something else?\"\n\n---\n\n### 7. Final Notes\n- Always aim to provide value in your responses, whether through information, actions, or clarification.\n- If the user provides feedback (e.g., \"That wasn\u2019t helpful\"), apologize and try a different approach (e.g., \"I\u2019m sorry about that. Let me try searching for more information.\").\n- Keep responses under 200 words unless the user requests more detail.\n\nNow, go ahead and process the user\u2019s query!"
},
"promptType": "define"
},
"typeVersion": 1.8
},
{
"id": "bd101167-4a72-41c4-b71d-fbbf817d9c88",
"name": "Send Gmail Notification",
"type": "n8n-nodes-base.gmail",
"position": [
1180,
-340
],
"parameters": {
"sendTo": "user@example.com",
"message": "={{ $json.output }}",
"options": {
"appendAttribution": false
},
"subject": "={{ $('Listen for Telegram Updates').item.json.message.text }}",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "2efdc983-52f2-4db6-889b-3696299f564c",
"name": "Send Telegram Alert",
"type": "n8n-nodes-base.telegram",
"position": [
1180,
-140
],
"parameters": {
"text": "={{ $json.output }}",
"chatId": "={{ $('Listen for Telegram Updates').item.json.message.chat.id }}",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "7800165a-48da-4362-9629-9c74414bbd53",
"name": "Airbnb Search",
"type": "n8n-nodes-mcp.mcpClientTool",
"position": [
500,
-20
],
"parameters": {},
"credentials": {
"mcpClientApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "8feb315e-8ff5-40ff-bd2b-3a89ae324f70",
"connections": {
"Brave Search": {
"ai_tool": [
[
{
"node": "Analyze Message with AI",
"type": "ai_tool",
"index": 0
}
]
]
},
"Airbnb Search": {
"ai_tool": [
[
{
"node": "Analyze Message with AI",
"type": "ai_tool",
"index": 0
}
]
]
},
"Brave Execute": {
"ai_tool": [
[
{
"node": "Analyze Message with AI",
"type": "ai_tool",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "Analyze Message with AI",
"type": "ai_memory",
"index": 0
}
]
]
},
"Airbnb Execute": {
"ai_tool": [
[
{
"node": "Analyze Message with AI",
"type": "ai_tool",
"index": 0
}
]
]
},
"FireCrawl List": {
"ai_tool": [
[
{
"node": "Analyze Message with AI",
"type": "ai_tool",
"index": 0
}
]
]
},
"FireCrawl Execute": {
"ai_tool": [
[
{
"node": "Analyze Message with AI",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Analyze Message with AI",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Send Telegram Alert": {
"main": [
[]
]
},
"Analyze Message with AI": {
"main": [
[
{
"node": "Send Telegram Alert",
"type": "main",
"index": 0
},
{
"node": "Send Gmail Notification",
"type": "main",
"index": 0
}
]
]
},
"Listen for Telegram Updates": {
"main": [
[
{
"node": "Analyze Message with AI",
"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.
gmailOAuth2mcpClientApiopenAiApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow triggers on Telegram updates, analyzes messages with an AI Agent using MCP tools, and sends notifications via Gmail and Telegram.
Source: https://n8n.io/workflows/3306/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Managing customer support across multiple platforms like email and chat can be a huge time sink. Answering the same questions about order status repeatedly takes your focus away from growing your busi
This workflow is perfect for: Small to medium businesses looking to automate customer support E-commerce stores handling order inquiries and customer questions SaaS companies providing technical suppo
This workflow is an AI-powered Booking Assistant that automates restaurant and event reservations through Telegram. It interacts with the user in natural conversation, collects booking details (guest
This workflow creates an intelligent Telegram bot that helps users search and find Airbnb accommodations using natural language queries and voice messages.
Automate your personal productivity with this intelligent n8n workflow that integrates Telegram, Google Sheets, and OpenAI (GPT-4o). This system uses multiple AI agents to manage work hours, tasks, fi