4.9kβ
by acastellana
telebiz-mcp β OpenClaw Skill
telebiz-mcp is an OpenClaw Skills integration for coding workflows. Access Telegram data via MCP using the telebiz-tt browser client. Lists chats, reads messages, searches, manages folders, and sends messages through an authenticated Telegram session.
Skill Snapshot
| name | telebiz-mcp |
| description | Access Telegram data via MCP using the telebiz-tt browser client. Lists chats, reads messages, searches, manages folders, and sends messages through an authenticated Telegram session. OpenClaw Skills integration. |
| owner | acastellana |
| repository | acastellana/telebiz-mcp-skill |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @acastellana/telebiz-mcp-skill |
| last updated | Feb 7, 2026 |
Maintainer

name: telebiz-mcp description: Access Telegram data via MCP using the telebiz-tt browser client. Lists chats, reads messages, searches, manages folders, and sends messages through an authenticated Telegram session. metadata: {"clawdbot":{"emoji":"π±"}}
telebiz-mcp
MCP integration for Telegram via telebiz-tt browser client.
Quick Rules (read this first)
- Rate limits are strict: max 20 calls/request, 30 calls/min, 500ms between calls, heavy ops 1s.
- For adding many chats to folders: do NOT use
batchAddToFolderwith multiple chatIds (known bug). LoopaddChatToFoldersequentially. - For CRM linking:
linkEntityToChatis unstable in our tests. We observedcompanyfailing with Validation error, and at one pointorganizationsucceeding β but laterorganizationalso failed. TreatlinkEntityToChatas unreliable until upstream clarifies schema/feature flags. - Prefer reversible operations and clean up test artifacts (folders, groups) immediately.
Architecture
ββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β Clawdbot ββββββΆβ MCP Server ββββββΆβ WebSocket Relay β
β (mcporter) β β (stdio) β β (port 9716) β
ββββββββββββββββ ββββββββββββββββββββ ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β Browser β
β (telebiz-tt) β
β [executor] β
βββββββββββββββββββ
Quick Setup
Prerequisites
- Node.js 18+
- Telegram account
1. Install telebiz-mcp
npm install -g @telebiz/telebiz-mcp
2. Open Telebiz in browser
Go to https://telebiz.io and login with your Telegram account.
3. Start the HTTP server
cd ~/clawd/skills/telebiz-mcp
./start-http.sh
This starts a persistent server that:
- Runs telebiz-mcp internally
- Keeps browser connection alive
- Exposes HTTP API on port 9718
4. Enable MCP in Telebiz
In telebiz.io: Settings β Agent β Local MCP
The status should show "Connected" once the server is running.
4. Verify connection
# Quick health check
cd ~/clawd/skills/telebiz-mcp
npm run health
# Should show:
# π± Telebiz MCP Status
# ββββββββββββββββββββ
# Relay: β
Running
# Executor: β
Connected
# Tools: 31 available
5. Test via mcporter
cd ~/clawd
mcporter call telebiz.listChats limit:5
Health Monitoring
Manual Check
# Check status
npm run health
# JSON output for automation
node dist/health.js --json
Monitor Script
The monitor tracks state changes and can be used with cron:
# Check and alert on changes
npm run monitor
# Quiet mode - only output on state change
node dist/monitor.js --quiet
# JSON output
node dist/monitor.js --json
Exit codes:
0= Healthy (relay up, executor connected)1= Degraded (relay up, executor disconnected)2= Down (relay not running)3= State changed (for alerting)
Cron Integration
Add to crontab for periodic monitoring:
# Check every 5 minutes, alert on changes
*/5 * * * * cd ~/clawd/skills/telebiz-mcp && node dist/monitor.js --quiet >> /var/log/telebiz-monitor.log 2>&1
Heartbeat Integration
Add to HEARTBEAT.md for Clawdbot monitoring:
### Telebiz MCP (every 2h)
- [ ] Run: `cd ~/clawd/skills/telebiz-mcp && npm run health`
- [ ] If degraded/down: Alert Albert via Telegram
Available Tools
Chat Tools
| Tool | Description |
|---|---|
listChats | List chats with filters (type, unread, archived, etc.) |
getChatInfo | Get detailed chat information |
getCurrentChat | Get currently open chat |
openChat | Navigate to a chat |
archiveChat | Archive a chat |
unarchiveChat | Unarchive a chat |
pinChat | Pin a chat |
unpinChat | Unpin a chat |
muteChat | Mute notifications |
unmuteChat | Unmute notifications |
deleteChat | Delete/leave chat β οΈ |
Message Tools
| Tool | Description |
|---|---|
sendMessage | Send text message (markdown supported) |
forwardMessages | Forward messages between chats |
deleteMessages | Delete messages β οΈ |
searchMessages | Search globally or in a chat |
getRecentMessages | Get message history |
markChatAsRead | Mark all messages as read |
Folder Tools
| Tool | Description |
|---|---|
listFolders | List all chat folders |
createFolder | Create a new folder |
addChatToFolder | Add chat to folders |
removeChatFromFolder | Remove chat from folders |
deleteFolder | Delete a folder β οΈ |
Member Tools
| Tool | Description |
|---|---|
getChatMembers | List group/channel members |
addChatMembers | Add users to group |
removeChatMember | Remove user from group |
createGroup | Create a new group |
User Tools
| Tool | Description |
|---|---|
searchUsers | Search by name/username |
getUserInfo | Get user details |
Batch Tools
| Tool | Description |
|---|---|
batchSendMessage | Send to multiple chats |
batchAddToFolder | Add multiple chats to folder |
batchArchive | Archive multiple chats |
Usage Examples
Find chats waiting for my reply
mcporter call telebiz.listChats iAmLastSender=false hasUnread=true limit:20
Find stale conversations I started
mcporter call telebiz.listChats iAmLastSender=true lastMessageOlderThanDays:7 limit:20
Search all messages
mcporter call telebiz.searchMessages query="invoice" limit:20
Search in specific chat
mcporter call telebiz.searchMessages query="meeting" chatId=-1001234567890 limit:10
Send message
mcporter call telebiz.sendMessage chatId=-1001234567890 text="Hello from Clawdbot!"
Get recent messages
mcporter call telebiz.getRecentMessages chatId=-1001234567890 limit:50
Paginate through history
# Page 1 (newest 50)
mcporter call telebiz.getRecentMessages chatId=-1001234567890 limit:50 offset:0
# Page 2 (messages 51-100)
mcporter call telebiz.getRecentMessages chatId=-1001234567890 limit:50 offset:50
Organize chats
# List folders
mcporter call telebiz.listFolders
# Add chats to folder
mcporter call telebiz.batchAddToFolder chatIds='["-1001234","-1001235"]' folderId:5
Rate Limiting
The browser enforces rate limits to prevent Telegram flood protection:
- Max calls per request: 20
- Max calls per minute: 30
- Min delay between calls: 500ms
- Delay for heavy operations (send/forward/delete): 1s
(These values come from the Telebiz UI and are the effective limits we observed in practice.)
Known Issues / Workarounds (Feb 2026)
batchAddToFolder fails for multiple chatIds
Observed behavior:
batchAddToFolder(folderId, chatIds=[one])works (or reportsalreadyIncluded)batchAddToFolder(folderId, chatIds=[two or more])fails with: "Error: Failed to update folder"- Repro confirmed for both:
- Auto + another group
- Auto + a private chat
Workaround: loop sequentially:
addChatToFolder(chatId=A, folderIds=[folderId])addChatToFolder(chatId=B, folderIds=[folderId])
linkEntityToChat is unstable / schema mismatch
Observed behavior (Feb 2026):
linkEntityToChatreturns "Validation error" forentityType=deal,contact, andcompany.- In one run, using
entityType="organization"successfully linked a HubSpot company to a chat β but laterorganizationalso returned "Validation error".
Implication: this tool is either behind a feature flag, has changing server-side validation, or the published schema/enums donβt match what the backend expects.
Workaround:
- Prefer linking via
createContact/createDeal/createCompany(these link to the chat at creation time). - Use
associateEntitiesto connect dealβcompany/contact. - Donβt depend on
linkEntityToChatuntil upstream provides a stable contract + better error messages.
Troubleshooting
Relay not starting
# Check if port is in use
ss -tlnp | grep 9716
# Kill existing process
pkill -f "relay.js"
# Start fresh
./start-relay.sh
Browser not connecting
- Verify relay is running:
npm run health - Check browser console (F12) for WebSocket errors
- Ensure MCP is enabled in Settings β Agent β Enable MCP
- Try refreshing the telebiz-tt page
"Executor not connected" error
The browser tab with telebiz-tt must be:
- Open and visible (not suspended)
- Logged into Telegram
- MCP enabled in settings
Rate limit errors
- Reduce batch sizes
- Add delays between operations
- Be more specific in filters to reduce API calls
Session expired
If Telegram session expires:
- Refresh the telebiz-tt browser page
- Re-login if prompted
- Re-enable MCP in settings
Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
TELEBIZ_PORT | 9716 | Relay WebSocket port |
TELEBIZ_RELAY_URL | ws://localhost:9716 | Relay URL for MCP server |
TELEBIZ_STATE_FILE | ~/.telebiz-mcp-state.json | Monitor state file |
mcporter Config
Located at ~/clawd/config/mcporter.json:
{
"mcpServers": {
"telebiz": {
"url": "http://localhost:9718/mcp"
}
}
}
Note: Use the HTTP URL (not stdio) to avoid spawning conflicts.
Security Notes
- The browser holds your Telegram session - keep it secure
- Don't expose the relay port (9716) to the internet
- Review tool calls before executing destructive operations
- Rate limits help prevent accidental spam
No README available.
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
- The browser holds your Telegram session - keep it secure - Don't expose the relay port (9716) to the internet - Review tool calls before executing destructive operations - Rate limits help prevent accidental spam
Requirements
- Node.js 18+ - Telegram account
Configuration
### Environment Variables | Variable | Default | Description | |----------|---------|-------------| | `TELEBIZ_PORT` | `9716` | Relay WebSocket port | | `TELEBIZ_RELAY_URL` | `ws://localhost:9716` | Relay URL for MCP server | | `TELEBIZ_STATE_FILE` | `~/.telebiz-mcp-state.json` | Monitor state file | ### mcporter Config Located at `~/clawd/config/mcporter.json`: ```json { "mcpServers": { "telebiz": { "url": "http://localhost:9718/mcp" } } } ``` **Note**: Use the HTTP URL (not stdio) to avoid spawning conflicts.
FAQ
How do I install telebiz-mcp?
Run openclaw add @acastellana/telebiz-mcp-skill in your terminal. This installs telebiz-mcp into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/acastellana/telebiz-mcp-skill. Review commits and README documentation before installing.
