Revolt (Stoat)
MESSAGING · MESSAGING
Channel messages, pins, reactions, and roles on the server they connected.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
revolt_delete_bots_by_bot_idWRITEDelete Bot. Delete a bot by its id. DELETE /bots/{bot_id}.
revolt_delete_bots_by_bot_id_discoverWRITEDelete bot Discover request. This cannot be used if your request is no longer in the queue (ie approved or rejected). If you wish to reapply after a rejection, submit another POST. This endpoint is ONLY USEFUL in production on stoat.chat/app. DELETE /bots/{bot_id}/discover.
revolt_delete_channels_by_group_id_recipients_by_member_idWRITERemove Member from Group. Removes a user from the group. DELETE /channels/{group_id}/recipients/{member_id}.
revolt_delete_channels_by_targetWRITEClose Channel. Deletes a server channel, leaves a group or closes a group. DELETE /channels/{target}.
revolt_delete_channels_by_target_messages_bulkWRITEBulk Delete Messages. Delete multiple messages you've sent or one you have permission to delete. This will always require ManageMessages permission regardless of whether you own the message or not. Messages must have been sent within the past 1 week. DELETE /channels/{target}/messages/bulk.
revolt_delete_channels_by_target_messages_by_msgWRITEDelete Message. Delete a message you've sent or one you have permission to delete. DELETE /channels/{target}/messages/{msg}.
revolt_delete_channels_by_target_messages_by_msg_pinWRITEUnpins a message. Unpins a message by its id. DELETE /channels/{target}/messages/{msg}/pin.
revolt_delete_channels_by_target_messages_by_msg_reactionsWRITERemove All Reactions from Message. Remove your own, someone else's or all of a given reaction. Requires ManageMessages permission. DELETE /channels/{target}/messages/{msg}/reactions.
revolt_delete_channels_by_target_messages_by_msg_reactions_by_emojiWRITERemove Reaction(s) to Message. Remove your own, someone else's or all of a given reaction. Requires ManageMessages if changing others' reactions. DELETE /channels/{target}/messages/{msg}/reactions/{emoji}.
revolt_delete_custom_emoji_by_emoji_idWRITEDelete Emoji. Delete an emoji by its id. DELETE /custom/emoji/{emoji_id}.
revolt_delete_invites_by_targetWRITEDelete Invite. Delete an invite by its id. DELETE /invites/{target}.
revolt_delete_servers_by_server_bans_by_targetWRITEUnban user. Remove a user's ban. DELETE /servers/{server}/bans/{target}.
revolt_delete_servers_by_server_discoverWRITEDelete server Discover request. This cannot be used if your request is no longer in the queue (ie approved or rejected). If you wish to reapply after a rejection, submit another POST. This endpoint is ONLY USEFUL in production on stoat.chat/app. DELETE /servers/{server}/discover.
revolt_delete_servers_by_server_id_members_by_member_idWRITEKick Member. Removes a member from the server. DELETE /servers/{server_id}/members/{member_id}.
revolt_delete_servers_by_targetWRITEDelete / Leave Server. Deletes a server if owner otherwise leaves. DELETE /servers/{target}.
revolt_delete_servers_by_target_roles_by_role_idWRITEDelete Role. Delete a server role by its id. DELETE /servers/{target}/roles/{role_id}.
revolt_delete_users_by_target_blockWRITEUnblock User. Unblock another user by their id. DELETE /users/{target}/block.
revolt_delete_users_by_target_friendWRITEDeny Friend Request / Remove Friend. Denies another user's friend request or removes an existing friend. DELETE /users/{target}/friend.
revolt_delete_webhooks_by_webhook_idWRITEDeletes a webhook. DELETE /webhooks/{webhook_id}.
revolt_getREADQuery Node. Fetch the server configuration for this Revolt instance. GET /.
revolt_get_bots_by_bot_id_discoverREADGet bot Discover request status. Fetches the status of your Discover request. If it has been approved or denied, the reason will be provided (if applicable). This endpoint is ONLY USEFUL in production on stoat.chat/app. GET /bots/{bot_id}/discover.
revolt_get_bots_by_target_inviteREADFetch Public Bot. Fetch details of a public (or owned) bot by its id. GET /bots/{target}/invite.
revolt_get_channels_by_channel_id_webhooksREADGets all webhooks. Gets all webhooks inside the channel GET /channels/{channel_id}/webhooks.
revolt_get_channels_by_targetREADFetch Channel. Fetch channel by its id. GET /channels/{target}.
revolt_get_channels_by_target_membersREADFetch Group Members. Retrieves all users who are part of this group. This may not return full user information if users are not friends but have mutual connections. GET /channels/{target}/members.
revolt_get_channels_by_target_messagesREADFetch Messages. Fetch multiple messages. GET /channels/{target}/messages.
revolt_get_channels_by_target_messages_by_msgREADFetch Message. Retrieves a message by its id. GET /channels/{target}/messages/{msg}.
revolt_get_custom_emoji_by_emoji_idREADFetch Emoji. Fetch an emoji by its id. GET /custom/emoji/{emoji_id}.
revolt_get_invites_by_targetREADFetch Invite. Fetch an invite by its id. GET /invites/{target}.
revolt_get_onboard_helloREADCheck Onboarding Status. This will tell you whether the current account requires onboarding or whether you can continue to send requests as usual. You may skip calling this if you're restoring an existing session. GET /onboard/hello. NEEDS A USER SESSION TOKEN: onboarding state belongs to a user account, and measured 2026-09-17 a valid bot token is refused 401 here. A connection made with the Bot token card cannot call this tool and will be told so before the request is made.
revolt_get_servers_by_server_discoverREADGet server Discover request status. Fetches the status of your Discover request. If it has been approved or denied, the reason will be provided (if applicable). This endpoint is ONLY USEFUL in production on stoat.chat/app. GET /servers/{server}/discover.
revolt_get_servers_by_server_id_members_by_member_idREADFetch Member. Retrieve a member. GET /servers/{server_id}/members/{member_id}.
revolt_get_servers_by_targetREADFetch Server. Fetch a server by its id. GET /servers/{target}.
revolt_get_servers_by_target_audit_logsREADAudit Log Query. Queries a server's audit logs. GET /servers/{target}/audit_logs. ONE FILTER IS NOT AVAILABLE THROUGH THIS TOOL: an ARRAY-typed filter whose query-string wire form is unmeasured. A bot identity cannot create a server (400 IsBot, measured 2026-09-17) and this wave's bot is in none, so every audit-log request answers 404 before a filter is parsed -- there was no way to tell `type=a&type=b` from `type[]=a&type[]=b`, and the wrong one returns an unfiltered 200 a caller cannot distinguish from a correct answer. Settle it by calling GET /servers/{id}/audit_logs on a real server with one known-present action type and one invented value, and compare the two result counts.
revolt_get_servers_by_target_bansREADFetch Bans. Fetch all bans on a server. GET /servers/{target}/bans.
revolt_get_servers_by_target_emojisREADFetch Server Emoji. Fetch all emoji on a server. GET /servers/{target}/emojis.
revolt_get_servers_by_target_invitesREADFetch Invites. Fetch all server invites. GET /servers/{target}/invites.
revolt_get_servers_by_target_membersREADFetch Members. Fetch all server members. GET /servers/{target}/members.
revolt_get_servers_by_target_members_experimental_queryREADQuery members by name. Query members by a given name, this API is not stable and will be removed in the future. GET /servers/{target}/members_experimental_query.
revolt_get_servers_by_target_roles_by_role_idREADFetch Role. Fetch a role by its id. GET /servers/{target}/roles/{role_id}.
revolt_get_sync_unreadsREADFetch Unreads. Fetch information about unread state on channels. GET /sync/unreads.
revolt_get_users_by_targetREADFetch User. Retrieve a user's information. GET /users/{target}.
revolt_get_users_by_target_dmREADOpen Direct Message. Open a DM with another user. If the target is oneself, a saved messages channel is returned. GET /users/{target}/dm.
revolt_get_users_by_target_flagsREADFetch User Flags. Retrieve a user's flags. GET /users/{target}/flags.
revolt_get_users_by_target_mutualREADFetch Mutual Friends, Servers, Groups and DMs. Retrieve a list of mutual friends, servers, groups and DMs with another user. GET /users/{target}/mutual.
revolt_get_users_by_target_profileREADFetch User Profile. Retrieve a user's profile data. Will fail if you do not have permission to access the other user's profile. GET /users/{target}/profile.
revolt_get_users_dmsREADFetch Direct Message Channels. This fetches your direct messages, including any DM and group DM conversations. GET /users/dms.
revolt_get_users_meREADFetch Self. Retrieve your user information. GET /users/@me.
revolt_get_webhooks_by_webhook_idREADGets a webhook. GET /webhooks/{webhook_id}.
revolt_patch_channels_by_targetWRITEEdit Channel. Edit a channel object by its id. PATCH /channels/{target}.
revolt_patch_channels_by_target_messages_by_msgWRITEEdit Message. Edits a message that you've previously sent. PATCH /channels/{target}/messages/{msg}.
revolt_patch_custom_emoji_by_emoji_idWRITEEdit Emoji. Edit an emoji by its id. PATCH /custom/emoji/{emoji_id}.
revolt_patch_servers_by_server_id_members_by_member_idWRITEEdit Member. Edit a member by their id. PATCH /servers/{server_id}/members/{member_id}.
revolt_patch_servers_by_targetWRITEEdit Server. Edit a server by its id. PATCH /servers/{target}.
revolt_patch_servers_by_target_roles_by_role_idWRITEEdit Role. Edit a role by its id. PATCH /servers/{target}/roles/{role_id}.
revolt_patch_servers_by_target_roles_ranksWRITEEdits server roles ranks. Edit's server role's ranks. PATCH /servers/{target}/roles/ranks.
revolt_patch_users_by_targetWRITEEdit User. Edit currently authenticated user. PATCH /users/{target}.
revolt_patch_webhooks_by_webhook_idWRITEEdits a webhook. PATCH /webhooks/{webhook_id}.
revolt_post_bots_by_target_inviteWRITEInvite Bot. Invite a bot to a server or group by its id.` POST /bots/{target}/invite.
revolt_post_channels_by_channel_id_webhooksWRITECreates a webhook. Creates a webhook which 3rd party platforms can use to send messages POST /channels/{channel_id}/webhooks.
revolt_post_channels_by_target_invitesWRITECreate Invite. Creates an invite to this channel. Channel must be a TextChannel. POST /channels/{target}/invites.
revolt_post_channels_by_target_join_callWRITEJoin Call. Asks the voice server for a token to join the call. POST /channels/{target}/join_call.
revolt_post_channels_by_target_messagesWRITESend Message. Sends a message to the given channel. POST /channels/{target}/messages.
revolt_post_channels_by_target_messages_by_msg_pinWRITEPins a message. Pins a message by its id. POST /channels/{target}/messages/{msg}/pin.
revolt_post_channels_by_target_searchWRITESearch for Messages. This route searches for messages within the given parameters. POST /channels/{target}/search.
revolt_post_channels_createWRITECreate Group. Create a new group channel. POST /channels/create.
revolt_post_invites_by_targetWRITEJoin Invite. Join an invite by its ID POST /invites/{target}.
revolt_post_onboard_completeWRITEComplete Onboarding. This sets a new username, completes onboarding and allows a user to start using Revolt. POST /onboard/complete. NEEDS A USER SESSION TOKEN: onboarding completes a user account, and measured 2026-09-17 a valid bot token is refused 401 here. A connection made with the Bot token card cannot call this tool and will be told so before the request is made.
revolt_post_policy_acknowledgeWRITEAcknowledge Policy Changes. Accept/acknowledge changes to platform policy. POST /policy/acknowledge.
revolt_post_push_subscribeWRITEPush Subscribe. Create a new Web Push subscription. If an existing subscription exists on this session, it will be removed. POST /push/subscribe. NEEDS A USER SESSION TOKEN: push subscriptions belong to a user session, and measured 2026-09-17 a valid bot token is refused 401 here. A connection made with the Bot token card cannot call this tool and will be told so before the request is made.
revolt_post_push_unsubscribeWRITEUnsubscribe. Remove the Web Push subscription associated with the current session. POST /push/unsubscribe. NEEDS A USER SESSION TOKEN: push subscriptions belong to a user session, and measured 2026-09-17 a valid bot token is refused 401 here. A connection made with the Bot token card cannot call this tool and will be told so before the request is made.
revolt_post_safety_reportWRITEReport Content. Report a piece of content to the moderation team. POST /safety/report.
revolt_post_servers_by_server_channelsWRITECreate Channel. Create a new Text or Voice channel. POST /servers/{server}/channels.
revolt_post_servers_by_target_rolesWRITECreate Role. Creates a new server role. POST /servers/{target}/roles.
revolt_post_servers_createWRITECreate Server. Create a new server. POST /servers/create. NOT AVAILABLE TO BOT IDENTITIES: Revolt refuses server creation to bot identities: measured 2026-09-17, a valid bot token answers 400 {"type":"IsBot"}. A human account creates the server and invites the bot to it.
revolt_post_sync_settings_fetchWRITEFetch Settings. Fetch settings from server filtered by keys. This will return an object with the requested keys, each value is a tuple of (timestamp, value), the value is the previously uploaded data. POST /sync/settings/fetch.
revolt_post_sync_settings_setWRITESet Settings. Upload data to save to settings. POST /sync/settings/set.
revolt_post_users_friendWRITESend Friend Request. Send a friend request to another user. POST /users/friend.
revolt_put_bots_by_bot_id_discoverWRITEAdd bot to Discover. This puts your bot into the Discover request queue. This endpoint is ONLY USEFUL in production on stoat.chat/app. PUT /bots/{bot_id}/discover.
revolt_put_channels_by_group_id_recipients_by_member_idWRITEAdd Member to Group. Adds another user to the group. PUT /channels/{group_id}/recipients/{member_id}.
revolt_put_channels_by_target_ack_by_messageWRITEAcknowledge Message. Lets the server and all other clients know that we've seen this message id in this channel. PUT /channels/{target}/ack/{message}.
revolt_put_channels_by_target_end_ring_by_target_userWRITEStop Ring. Stops ringing a specific user in a dm call. You must be in the call to use this endpoint, returns NotConnected otherwise. Only valid in DM/Group channels, will return NoEffect in servers. Returns NotFound if the user is not in the dm/group channel PUT /channels/{target}/end_ring/{target_user}.
revolt_put_channels_by_target_messages_by_msg_reactions_by_emojiWRITEAdd Reaction to Message. React to a given message. PUT /channels/{target}/messages/{msg}/reactions/{emoji}.
revolt_put_channels_by_target_permissions_by_role_idWRITESet channel role permissions. Sets permissions for the specified role in this channel. Channel must be a TextChannel. PUT /channels/{target}/permissions/{role_id}.
revolt_put_channels_by_target_permissions_defaultWRITESet default channel permissions. Sets permissions for the default role in this channel. Channel must be a Group or TextChannel. PUT /channels/{target}/permissions/default.
revolt_put_custom_emoji_by_emoji_idWRITECreate New Emoji. Create an emoji by its Autumn upload id. PUT /custom/emoji/{emoji_id}.
revolt_put_servers_by_server_bans_by_targetWRITEBan User. Ban a user by their id. PUT /servers/{server}/bans/{target}.
revolt_put_servers_by_server_discoverWRITEAdd server to Discover. This puts your server into the Discover request queue. This endpoint is ONLY USEFUL in production on stoat.chat/app. PUT /servers/{server}/discover.
revolt_put_servers_by_target_ackWRITEMark Server As Read. Mark all channels in a server as read. PUT /servers/{target}/ack.
revolt_put_servers_by_target_permissions_by_role_idWRITESet server role permissions. Sets permissions for the specified role in the server. PUT /servers/{target}/permissions/{role_id}.
revolt_put_servers_by_target_permissions_defaultWRITESet default server permissions. Sets permissions for the default role in this server. PUT /servers/{target}/permissions/default.
revolt_put_users_by_target_blockWRITEBlock User. Block another user by their id. PUT /users/{target}/block.
revolt_put_users_by_target_friendWRITEAccept Friend Request. Accept another user's friend request. PUT /users/{target}/friend.
Often connected alongside
Put Revolt (Stoat) behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.