Bale MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BALE_SESSIONS_DIR | No | Absolute path to the directory where Bale user sessions are stored, e.g. /absolute/path/to/bale-mcp-server/sessions |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| bale_list_sessionsB | List all available Bale user sessions/accounts stored locally on disk. |
| bale_connect_sessionC | Connect to or switch to a specific Bale user account using session name or phone number. |
| bale_get_meA | Get profile information and connection status of the currently active Bale account. |
| bale_auth_request_codeB | Initiate interactive phone login by requesting an SMS/Bale verification code for a new account. |
| bale_auth_verify_codeB | Verify the authentication code received via SMS/Bale to complete login and save session. |
| bale_auth_verify_passwordB | Submit Two-Factor Authentication (2FA) cloud password if required during login. |
| bale_disconnectB | Disconnect the currently active Bale user account. |
| bale_get_dialogsC | Retrieve the list of recent chats, groups, and channels with resolved titles/names, unread counts, and last messages. |
| bale_search_dialogsB | Search active dialogs, groups, and conversations by name/title (supports Persian or English) or chat ID. |
| bale_get_chat_historyC | Fetch recent message history from a specific chat, group, or channel. |
| bale_send_messageC | Send a text message to a user, group, or channel with optional reply support. |
| bale_edit_messageC | Edit an existing text message sent previously in a chat. |
| bale_delete_messageC | Delete a message from a chat. |
| bale_forward_messageC | Forward an existing message to another chat or user. |
| bale_mark_chat_readC | Mark all messages in a chat or group as read (seen). |
| bale_pin_messageC | Pin a message in a private chat or group. |
| bale_get_contactsA | Retrieve the list of saved contacts from the active Bale account. |
| bale_search_userB | Search for a Bale user, bot, group, or channel by username or phone number. |
| bale_get_user_infoB | Get detailed profile information (name, about, username, avatar) for a user by user_id. |
| bale_import_contactsB | Import one or more contacts by phone number and name into Bale address book. |
| bale_block_userC | Block a user by user ID. |
| bale_unblock_userB | Unblock a previously blocked user by user ID. |
| bale_get_blocked_usersA | List all users currently blocked by the active account. |
| bale_get_group_infoB | Retrieve full information, settings, member count, and permissions for a group or channel. |
| bale_get_group_membersC | Retrieve the list of members in a group or channel. |
| bale_create_groupC | Create a new group or channel on Bale with initial members. |
| bale_invite_to_groupC | Invite one or more users to an existing group or channel. |
| bale_get_group_invite_urlB | Get the permanent invitation link (URL) for a group or channel. |
| bale_leave_groupC | Leave a group or channel. |
| bale_send_reactionB | Add an emoji reaction (e.g. 👍, ❤️, 🔥) to a specific message in a chat. |
| bale_remove_reactionC | Remove an emoji reaction from a message in a chat. |
| bale_send_typingC | Send a typing action indicator to a chat or group. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 32 tools
Most tools have clearly distinct purposes (send vs edit vs delete, block vs unblock), but a few pairs like search_dialogs vs search_user and get_me vs get_user_info could be confused. Descriptions help clarify the boundaries, but the overlap is not fully eliminated.
All tools use the bale_ prefix and snake_case, following a consistent verb_noun pattern (list_sessions, send_message, block_user). Minor variations like auth_ prefix are still predictable and readable.
32 tools exceeds the recommended 3-15 range and falls into the 25+ category, which the rubric marks as too many for the apparent scope. While each operation serves a purpose, the surface is heavy and could be consolidated.
Core text messaging, contacts, groups, and authentication are covered, but notable gaps exist: no media/file sending, no message search, no group member removal, no join-by-invite, and no unpin message. These omissions limit full messenger workflows.