DialogBrain
DialogBrain gives AI agents access to all your messaging channels — Telegram, WhatsApp, Instagram, Email, and more — through a single MCP interface. Read conversations, send messages, search contacts, and manage threads across 10+ channels. Perfect for LangGraph, Claude, and any MCP-compatible agent framework.
https://dialogbrain--dialogbrain.run.tools
How to connect
-
Smithery (hosted)
1. Open https://smithery.ai/servers/dialogbrain/dialogbrain 2. Click Connect and complete OAuth in your MCP client (Claude, Cursor, VS Code, etc.) 3. MCP endpoint: https://dialogbrain--dialogbrain.run.tools
Tools (16)
-
contacts_find👤 Search for contacts in your address book by name or username. When to use: - User asks 'find contact X' or 'who is Y?' - User wants to know someone's username or ID - Before sending a message to verify contact exists - To get contact's channel reference for messaging Examples: ❓ User: 'find contact named [name]' → contacts_search(query='[name]', limit=5) ❓ User: 'who is [full name]?' → contacts_search(query='[full name]', limit=1) ❓ User: 'search for @username' → contacts_search(query='us
-
contacts_discoverSearch for a contact on a live channel (Telegram, WhatsApp, etc.) before adding them. Use this to look up a person by username or phone number before calling contacts.sync.
-
contacts_syncAdd a discovered contact and open a conversation thread. Returns thread_id for the new conversation. Call contacts.discover first to verify the contact exists.
-
files_ingestSave and index a file into the knowledge base. Use this when the user asks to save, store, or remember a document. The file will be processed (OCR if needed) and indexed for future search.
-
files_readRead the contents of an attached file directly. Use this when the user asks 'what is in this file?' or 'read this document'. Works for text files (.txt, .md, .json, code files, etc.). For PDFs and images, suggests using knowledge.answer after indexing.
-
files_uploadUpload a file to DialogBrain and get a file_id for use in messages_send. When to use: - User wants to send a file/image to a contact - Before calling messages_send with an attachment Returns: file_id (integer) to pass to messages_send attachments parameter.
-
files_infoGet metadata and download URLs for files by their IDs. When to use: - After messages_read_history returns attachment_file_ids - To get a presigned download URL to read a received file Returns: filename, mime_type, byte_size, download_url (1-hour presigned URL).
-
files_get_base64Download one or more files server-side and return their content as base64-encoded strings. Use this to inspect images, PDFs, or any binary file attached to messages when you cannot access presigned S3 URLs directly. Supports up to 5 files per call, max 5 MB each. For large files batch in groups of 1-2 to avoid oversized responses.
-
messages_read_historyRead messages from a conversation thread in chronological order. Returns the most recent messages, including sender info and timestamps. Usage: 1. Get thread_id from threads.list first, OR 2. Use contact_name to auto-resolve thread_id Examples: - User: 'show me messages from chat with [contact]' → read_history(contact_name='[contact]', limit=10) - User: 'last 5 messages from thread 571' → read_history(thread_id=571, limit=5)
-
threads_list💬 List conversation threads/chats with previews and metadata. When to use: - User asks 'show my chats' or 'list my conversations' - User asks 'who did I chat with recently?' - Before using messages.read_history to get thread_id - To discover available conversations Examples: ❓ User: 'show me my last 5 chats' → threads_list(limit=5) ❓ User: 'find conversations with [name]' → threads_list(participant_name='[name]', limit=10) ❓ User: 'list all my Telegram chats' → threads_list(limit=20) Retur
-
messages_sendSend a message to a thread, channel, or contact. Supports Telegram, Email, and other connected channels. Can automatically resolve recipients and channels when not specified.
-
messages_deleteDelete a message from a thread. Supports Telegram, WhatsApp, and other connected channels. Note: Some channels have time limits on message deletion.
-
kg_find_entityFind an entity by name in the Knowledge Graph. USE WHEN user mentions a person, project, company by name and you need: - To resolve a name to entity_id for subsequent queries - 'Кто работает над X?' → find X first - 'Расскажи про Y' → find Y first RETURNS entity_id for use in kg.get_relationships or kg.explore. ALWAYS use this as the FIRST step in KG query chains.
-
kg_get_relationshipsGet relationships for a specific entity from Knowledge Graph. USE WHEN: - 'Кто работает над X?' - filter by works_on - 'С кем общался Y?' - filter by discussed_with - 'Кто из компании Z?' - filter by member_of - 'Что связано с W?' - no filter, get all REQUIRES: entity_id from previous kg.find_entity step. Use: {{step_N.entity_id}} where N is the find_entity step number.
-
web_searchSearch the web for current information, news, facts, prices, or events. Use this when the user asks about something that requires up-to-date information from the internet, or when internal knowledge base doesn't have the answer. Examples: recent news, stock prices, weather, product information, current events.
-
workspace_searchUniversal multi-search across workspace: files, links, chats, messages. KEY FEATURE: Can search multiple types in parallel and return sectioned results. Usage options: 1. scope='auto' (default) - tool auto-detects what to search from query 2. scope=['files'] - search only files 3. scope=['files', 'links'] - search files AND links in parallel 4. goal='files' - legacy single-type search (backward compatible) IMPORTANT - file_origin parameter: When user asks for files THEY created/sent (e.g., 'i