get_chats returns group chats only, so the chat_id for a personal dialog turns up nowhere except get_updates — which is also where button presses arrive, and answer_callback has to respond within 30 seconds of the press. The admin tools carry a caveat the description states outright: remove_admin can return success while the rights stay in place, and only the chat owner can reliably revoke them in the app. Removing a member is not always reversible either, since a user with privacy mode on cannot be re-added by the bot.
A bot front end for the MAX messenger API, 21 tools covering chats, messages, media, membership and event polling.
- Chat state: get_bot_info confirms which bot the token belongs to, get_chats lists the group chats it participates in with participant counts and last activity, get_chat returns one chat's details, and get_chat_members and get_admins say who is in it.
- Messages both ways: get_messages reads a chat's recent messages or a specific set of message_ids, get_message returns one in full, send_message posts to a chat or straight to a user with markdown or HTML, and edit_message and delete_message revise the bot's own posts.
- Presence and prominence: send_action shows a typing or uploading indicator before a post lands, pin_message and unpin_message control what sits at the top of the chat, and edit_chat changes title, description and icon.
- Media without the upload dance: send_media takes a file URL and handles fetching the upload URL, uploading and attaching before the message goes out.
- Membership and rights: add_members, remove_member with an optional block on rejoining, set_admin and remove_admin.
- Events: get_updates returns new messages, button clicks, joins and leaves with a marker for the next call and optional long polling, and answer_callback replies to an inline button press with a message edit or a notification popup.
The MAX_TOKEN environment variable holding the bot's token, and the bot already added to the chats you want to reach. Editing a chat, pinning, adding or removing members and changing admin rights all need it to be an admin there.
One command — npx -y @woyax/mcp-max-messenger
