discord_create_ eventSchedule a server event in a voice or stage channel, or at a place or link outside Discord, from plain dates (ISO with a time zone offset).
Ask what people asked in your support channel today and what nobody answered, post the release notes with the changelog attached, open a forum post with the right tags, time out a spammer with a reason in the audit log, and schedule the next community call.
PopMCPDiscord
Every part of Discord's HTTP API a bot can use, from messages, threads and forum posts to roles, moderation, events, webhooks, emojis and slash commands, plus everyday tools that take channel and member names instead of ids.
233 tools in the full catalog: 99 read and 134 write. 33 load by default, and the rest are found with tool search.
discord_create_ eventSchedule a server event in a voice or stage channel, or at a place or link outside Discord, from plain dates (ISO with a time zone offset).
discord_create_ webhookCreates a new webhook and returns a webhook object on success.
discord_list_ scheduled_ eventsReturns a list of guild scheduled event objects for the given guild.
discord_send_ webhook_ messagePost through one of the server's webhooks, by its id or URL, with a custom name and avatar, an embed and files; into a thread, or as a new forum post.
discord_get_ server_ overviewOverview of the connected server in one read: name, member and online counts, boost level, its channels by category and type, role count, and what the bot is missing (permissions, Message Content and Server Members intents).
discord_create_ forum_ postCreate a post (a thread) in a forum or media channel with a title, first message, tags by name, an embed and files.
discord_create_ threadCreates a new thread that is not connected to an existing message.
discord_create_ thread_ from_ messageCreates a new thread from an existing message.
discord_list_ active_ threadsReturns all active threads in the guild, including public and private threads.
discord_get_ audit_ logReturns an audit log object for the guild.
discord_moderate_ memberModerate a member: timeout (with duration, at most 28 days), remove_timeout, kick, ban (optionally deleting their recent messages) or unban, by name, id or mention, with a reason in the audit log.
discord_create_ inviteCreate a new invite object for the channel.
discord_bulk_ delete_ messagesDelete multiple messages in a single request.
discord_delete_ messageDelete a message.
discord_edit_ memberModify attributes of a guild member.
discord_edit_ messageEdit a previously sent message.
discord_find_ memberFind members of the server by name or nickname (matches the start), id or <@id> mention.
discord_get_ memberReturns a guild member object for the specified user.
discord_get_ messageRetrieves a specific message in the channel.
discord_read_ messagesRead a channel's or thread's recent messages (by name, id, mention or link), oldest first, up to 200: who, when, text, files, reactions, replies and a link to each.
discord_search_ messagesSearch the server's messages by text, channel, author, mentions, attachments or links (has), dates and pinned, newest first or by relevance; 25 a page with offset for more.
discord_send_ messageSend a message to a channel or thread (by name, id, mention or link), or DM a member (user).
discord_create_ channelCreate a new channel object for the guild.
discord_create_ roleCreate a new role for the guild.
discord_edit_ channelUpdate a channel's settings.
discord_get_ channelGet a channel by ID.
discord_list_ channelsReturns a list of guild channel objects.
discord_list_ rolesReturns a list of role objects for the guild.
discord_update_ member_ rolesGive and take away roles for a member, by role name or id (up to 10 each), leaving their other roles alone.
discord_add_ reactionCreate a reaction for the message.
discord_get_ userReturns an user object for a given user ID.
discord_list_ pinned_ messagesRetrieves the list of pins in a channel.
discord_pin_ messagePin a message in a channel.
discord_create_ emojiCreate a new emoji for the guild.
discord_create_ soundboard_ soundCreate a new soundboard sound for the guild.
discord_create_ stickerCreate a new sticker for the guild.
discord_delete_ emojiDelete the given emoji.
discord_delete_ soundboard_ soundDelete the given soundboard sound.
discord_delete_ stickerDelete the given sticker.
discord_edit_ emojiModify the given emoji.
discord_edit_ soundboard_ soundModify the given soundboard sound.
discord_edit_ stickerModify the given sticker.
discord_get_ emojiReturns an emoji object for the given guild and emoji IDs.
discord_get_ server_ stickerReturns a sticker object for the given guild and sticker IDs.
discord_get_ soundboard_ soundReturns a soundboard sound object for the given sound id.
discord_get_ stickerReturns a sticker object for the given sticker ID.
discord_get_ sticker_ packReturns a sticker pack object for the given sticker pack ID.
discord_list_ default_ soundboard_ soundsReturns an array of soundboard sound objects that can be used by all users.
discord_list_ emojisReturns a list of emoji objects for the given guild.
discord_list_ soundboard_ soundsReturns a list of the guild's soundboard sounds.
discord_list_ sticker_ packsReturns a list of available sticker packs.
discord_list_ stickersReturns an array of sticker objects for the given guild.
discord_play_ soundboard_ soundSend a soundboard sound to a voice channel the user is connected to.
discord_add_ lobby_ memberAdds the provided user to the specified lobby.
discord_count_ scheduled_ event_ usersCount the users interested in a scheduled event, optionally per occurrence of a recurring event.
discord_create_ lobbyCreates a new lobby, adding any of the specified members to it, if provided.
discord_create_ lobby_ invite_ for_ botCreates a single-use guild invite to the lobby's linked channel, targeted at the calling user.
discord_create_ lobby_ invite_ for_ userCreates a single-use guild invite to the lobby's linked channel on behalf of an application, targeted at the specified user.
discord_create_ or_ join_ lobbyCreates a new lobby for the application identified by a secret, or joins the calling user to the existing lobby with that secret if one already exists.
discord_create_ scheduled_ eventCreate a guild scheduled event in the guild.
discord_create_ scheduled_ event_ exceptionCreate an exception to one occurrence of a recurring scheduled event: move it (scheduled_start_time / scheduled_end_time) or cancel it.
discord_delete_ lobbyDelete a lobby of the bot's app.
discord_delete_ scheduled_ eventDelete a guild scheduled event.
discord_delete_ scheduled_ event_ exceptionDelete an exception, so that occurrence of the recurring event goes back to its normal time.
discord_delete_ webhookDelete a webhook permanently.
discord_delete_ webhook_ messageDeletes a message that was created by the webhook.
discord_delete_ webhook_ with_ tokenSame as above, except this call does not require authentication.
discord_edit_ lobbyModifies the specified lobby with new values, if provided.
discord_edit_ scheduled_ eventModify a guild scheduled event.
discord_edit_ scheduled_ event_ exceptionChange an exception to one occurrence of a recurring scheduled event.
discord_edit_ stageUpdates fields of an existing Stage instance.
discord_edit_ webhookModify a webhook.
discord_edit_ webhook_ messageEdits a previously-sent webhook message from the same token.
discord_edit_ webhook_ with_ tokenSame as above, except this call does not require authentication, does not accept a channel_id parameter in the body, and does not return an user in the webhook object.
discord_end_ stageDeletes the Stage instance.
discord_execute_ github_ webhookAdd a new webhook to your GitHub repo (in the repo's settings), and use this endpoint as the "Payload URL." You can choose what events your Discord channel receives by choosing the "Let me select individual events" option and selecting individual events for the new webhook you're configuring.
discord_execute_ slack_ webhookWe do not support Slack's channel, icon_emoji, mrkdwn, or mrkdwn_in properties.
discord_execute_ webhookReturns a message or 204 No Content depending on the wait query parameter.
discord_get_ lobbyReturns a lobby object for the specified lobby id, if it exists.
discord_get_ scheduled_ eventGet a guild scheduled event.
discord_get_ stageGets the stage instance associated with the Stage channel, if it exists.
discord_get_ webhookReturns the new webhook object for the given id.
discord_get_ webhook_ messageReturns a previously-sent webhook message from the same token.
discord_get_ webhook_ with_ tokenSame as above, except this call does not require authentication and returns no user in the webhook object.
discord_leave_ lobbyRemoves the current user from the specified lobby.
discord_link_ lobby_ channelLinks an existing text channel to a lobby.
discord_list_ channel_ webhooksReturns a list of channel webhook objects.
discord_list_ lobby_ messagesReturns the most recent messages in the specified lobby.
discord_list_ scheduled_ event_ exception_ usersList the users interested in one occurrence of a recurring scheduled event.
discord_list_ scheduled_ event_ usersGet a list of guild scheduled event users subscribed to a guild scheduled event.
discord_list_ webhooksReturns a list of guild webhook objects.
discord_remove_ lobby_ memberRemoves the provided user from the specified lobby.
discord_send_ lobby_ messageSends a message to the specified lobby.
discord_set_ dm_ message_ moderationAttach your own moderation metadata to a direct message between two users of a game using the Discord Social SDK.
discord_set_ lobby_ message_ moderationAttach your own moderation metadata (up to a few string keys) to a lobby message, for a game's server-side moderation.
discord_start_ stageCreates a new Stage instance associated to a Stage channel.
discord_update_ lobby_ membersAdds, updates, or removes up to 25 members from the specified lobby in a single request.
discord_delete_ integrationDelete the attached integration object for the guild.
discord_edit_ onboardingModifies the onboarding configuration of the guild.
discord_edit_ serverModify a guild's settings.
discord_edit_ server_ widget_ settingsModify a guild widget settings object for the guild.
discord_edit_ welcome_ screenModify the guild's Welcome Screen.
discord_get_ new_ member_ welcomeGet the server's new member welcome settings (the welcome message and the actions new members are shown).
discord_get_ onboardingReturns the Onboarding object for the guild.
discord_get_ serverReturns the guild object for the given id.
discord_get_ server_ previewReturns the guild preview object for the given id.
discord_get_ server_ vanity_ urlReturns a partial invite object for guilds with that feature enabled.
discord_get_ server_ widgetReturns the widget for the guild.
discord_get_ server_ widget_ settingsReturns a guild widget settings object.
discord_get_ welcome_ screenReturns the Welcome Screen object for the guild.
discord_list_ integrationsReturns a list of integration objects for the guild.
discord_add_ thread_ memberAdds another member to a thread.
discord_create_ global_ commandCreate a new global command.
discord_create_ server_ commandCreate a new guild command.
discord_delete_ global_ commandDeletes a global command.
discord_delete_ server_ commandDelete a guild command.
discord_edit_ global_ commandEdit a global command.
discord_edit_ server_ commandEdit a guild command.
discord_get_ global_ commandFetch a global command for your application.
discord_get_ server_ commandFetch a guild command for your application.
discord_get_ server_ command_ permissionsFetches permissions for a specific command for your application in a guild.
discord_get_ thread_ memberReturns a thread member object for the specified user if they are a member of the thread, returns a 404 response otherwise.
discord_join_ threadAdds the current user to a thread.
discord_leave_ threadRemoves the current user from a thread.
discord_list_ global_ commandsFetch all of the global commands for your application.
discord_list_ joined_ private_ archived_ threadsReturns archived threads in the channel that are of type PRIVATE_THREAD, and the user has joined.
discord_list_ private_ archived_ threadsReturns archived threads in the channel that are of type PRIVATE_THREAD.
discord_list_ public_ archived_ threadsReturns archived threads in the channel that are public.
discord_list_ server_ command_ permissionsFetches permissions for all commands for your application in a guild.
discord_list_ server_ commandsFetch all of the guild commands for your application for a specific guild.
discord_list_ thread_ membersReturns array of thread members objects that are members of the thread.
discord_remove_ thread_ memberRemoves another member from a thread.
discord_replace_ global_ commandsTakes a list of application commands, overwriting the existing global command list for this application.
discord_replace_ server_ commandsTakes a list of application commands, overwriting the existing command list for this application for the targeted guild.
discord_search_ threadsSearch the threads (posts) of a forum, media or text channel by title, tag and archived state.
discord_ban_ memberCreate a guild ban, and optionally delete previous messages sent by the banned user.
discord_bulk_ ban_ usersBan up to 200 users from a guild, and optionally delete previous messages sent by the banned users.
discord_create_ automod_ ruleCreate a new rule.
discord_delete_ automod_ ruleDelete a rule.
discord_edit_ automod_ ruleModify an existing rule.
discord_get_ automod_ ruleGet a single rule.
discord_get_ banReturns a ban object for the given user or a 404 not found if the ban cannot be found.
discord_list_ automod_ rulesGet a list of all rules currently configured for the guild.
discord_list_ bansReturns a list of ban objects for the users banned from this guild.
discord_set_ incident_ actionsPause invites and/or DMs in the server for up to 24 hours during a raid or spam wave: { "invites_disabled_until": ISO time | null, "dms_disabled_until": ISO time | null }.
discord_unban_ userRemove the ban for an user.
discord_add_ invite_ target_ userAdd one user to an invite's target users.
discord_add_ invite_ target_ usersAdd several users to an invite's target users: { "user_ids": ["..."] }.
discord_delete_ inviteDelete an invite.
discord_get_ inviteReturns an invite object for the given code.
discord_get_ invite_ target_ usersGet the users allowed to see and accept an invite, as a CSV with an user_id header.
discord_get_ invite_ target_ users_ job_ statusCheck the job that processes an invite's target users list.
discord_list_ channel_ invitesReturns a list of invite objects (with invite metadata) for the channel.
discord_list_ invitesReturns a list of invite objects.
discord_remove_ invite_ target_ userRemove one user from an invite's target users.
discord_remove_ invite_ target_ usersRemove several users from an invite's target users: { "user_ids": ["..."] }.
discord_replace_ invite_ target_ usersReplace an invite's whole list of target users (who may accept it).
discord_create_ messagePost a message to a guild text or DM channel.
discord_edit_ bot_ memberModifies the current member in a guild.
discord_get_ prune_ countReturns an object with one pruned key indicating the number of members that would be removed in a prune operation.
discord_kick_ memberRemove a member from a guild.
discord_list_ join_ requestsList join requests (member applications) for a server that requires an application to join, optionally filtered by status (SUBMITTED, APPROVED, REJECTED).
discord_list_ membersReturns a list of guild member objects that are members of the guild.
discord_list_ messagesRetrieves the messages in a channel.
discord_prune_ membersBegin a prune operation.
discord_publish_ announcement_ messageCrosspost a message in an Announcement Channel to following channels.
discord_review_ join_ requestApprove or reject a server join request (member application).
discord_search_ guild_ messagesReturns a list of messages without the reactions key that match a search query in the guild.
discord_search_ membersReturns a list of guild member objects whose username or nickname starts with a provided string.
discord_add_ member_ roleAdds a role to a guild member.
discord_delete_ channelDelete a channel, or close a private message.
discord_delete_ channel_ permissionDelete a channel permission overwrite for an user or role in a channel.
discord_delete_ roleDelete a guild role.
discord_edit_ roleModify a guild role.
discord_follow_ announcement_ channelFollow an Announcement Channel to send messages to a target channel.
discord_get_ roleReturns a role object for the specified role.
discord_get_ role_ member_ countsReturns a map of role IDs to the number of members with the role.
discord_move_ channelsModify the positions of a set of channel objects for the guild.
discord_move_ rolesModify the positions of a set of role objects for the guild.
discord_remove_ member_ roleRemoves a role from a guild member.
discord_set_ channel_ permissionEdit the channel permission overwrites for an user or role in a channel.
discord_show_ typingPost a typing indicator for the specified channel, which expires after 10 seconds.
discord_consume_ entitlementFor One-Time Purchase consumable SKUs, marks a given entitlement for the user as consumed.
discord_create_ test_ entitlementCreates a test entitlement to a given SKU for a given guild or user.
discord_delete_ test_ entitlementDeletes a currently-active test entitlement.
discord_get_ entitlementReturns an entitlement.
discord_get_ sku_ subscriptionGet one subscription to a SKU of the bot's app.
discord_list_ entitlementsReturns all entitlements for a given app, active and expired.
discord_list_ sku_ subscriptionsList the subscriptions to a SKU of the bot's app, filtered by user.
discord_list_ skusReturns all SKUs for a given application.
discord_edit_ bot_ voice_ stateUpdates the current user's voice state.
discord_edit_ member_ voice_ stateUpdates another user's voice state.
discord_get_ bot_ voice_ stateReturns the current user's voice state in the guild.
discord_get_ member_ voice_ stateReturns the specified user's voice state in the guild.
discord_list_ server_ voice_ regionsReturns a list of voice region objects for the guild.
discord_list_ voice_ regionsReturns an array of voice region objects that can be used when setting a voice or stage channel's rtc_region.
discord_set_ voice_ channel_ statusSet a voice channel's status text (up to 500 characters; null clears it).
discord_create_ server_ templateCreates a template for the guild.
discord_delete_ server_ templateDeletes the template.
discord_edit_ bot_ userModify the requester's user account settings.
discord_edit_ server_ templateModifies the template's metadata.
discord_get_ bot_ userReturns the user object of the requester's account.
discord_get_ server_ templateReturns a guild template object for the given code.
discord_leave_ serverLeave a guild.
discord_list_ bot_ serversReturns a list of partial guild objects the current user is a member of.
discord_list_ reaction_ usersGet a list of users that reacted with this emoji.
discord_list_ server_ templatesReturns an array of guild template objects.
discord_open_ dmCreate a new DM channel with an user.
discord_remove_ all_ reactionsDeletes all reactions on a message.
discord_remove_ all_ reactions_ for_ emojiDeletes all the reactions for a given emoji on a message.
discord_remove_ own_ reactionDelete a reaction the current user has made for the message.
discord_remove_ user_ reactionDeletes another user's reaction.
discord_sync_ server_ templateSyncs the template to the guild's current state.
discord_create_ app_ emojiCreate a new emoji for the application.
discord_delete_ app_ emojiDelete the given emoji.
discord_delete_ identityDeletes one Application Identity and its associated profile data for the specified user and application.
discord_edit_ app_ emojiModify the given emoji.
discord_edit_ bot_ applicationEdit properties of the app associated with the requesting bot user.
discord_edit_ identity_ profileUpdates the profile data on the user's matching Application Identity record.
discord_find_ identities_ by_ external_ idReturns the application identities for the user/application record currently associated with the specified external ID.
discord_get_ activity_ instanceReturns a serialized activity instance, if it exists.
discord_get_ app_ emojiReturns an emoji object for the given application and emoji IDs.
discord_get_ bot_ applicationReturns the application object associated with the requesting bot user.
discord_get_ identity_ profileReturns the Application Identity Profile object stored on the matching Application Identity for the specified user and application.
discord_get_ role_ connection_ metadataReturns a list of application role connection metadata objects for the given application.
discord_list_ app_ emojisReturns an object containing a list of emoji objects for the given application under the items key.
discord_list_ user_ identitiesReturns the application identities for the specified user and application.
discord_replace_ role_ connection_ metadataUpdates and returns a list of application role connection metadata objects for the given application.
discord_unpin_ messageUnpin a message in a channel.
discord_end_ pollImmediately ends the poll.
discord_get_ bot_ gatewayReturns an object based on the information in Get Gateway, plus additional metadata that can help during the operation of large or sharded bots.
discord_get_ gatewayReturns an object with a valid WSS URL which the app can use when Connecting to the Gateway.
discord_list_ poll_ answer_ votersGet a list of users that voted for this specific answer.
Credentials off one Discord screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.
In the Discord Developer Portal click New Application, open Bot, click Reset Token and copy the token, and turn on Message Content Intent on the same page. Add the bot to your server with the install link on the Installation page, then paste the token into PopMCP and pick the server.
••••••••••••3f7aSending, editing, deleting, timeouts, kicks, bans and role changes wait until an owner or admin allows write actions; new connections start read-only. Each connection reaches one server, and the bot can only do what its role allows there.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Discord credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
What did people ask in #support today that nobody has answered yet?
discord_read_messagesok
Then just ask for the work
“What did people ask in #support today that nobody has answered yet?”
“Post this week's release notes to #announcements and attach the changelog file”
“Time out the member who keeps posting spam links in #general for an hour, and note why in the audit log”
“Find every message this month that mentions the refund policy”
“Schedule our community call for Friday at 5pm in the Stage channel and announce it in #announcements”
“Give Alex the Moderator role and take away Newcomer”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Discord behind an AI client.
A bot token from a Discord app you create for free. In the Developer Portal click New Application, open Bot and click Reset Token, then copy the token Discord shows once. Turn on Message Content Intent and Server Members Intent on the same page, add the bot to your server from the Installation page's install link, and paste the token into PopMCP. You then pick which of the bot's servers to connect. Nothing needs Discord's approval.
Yes, in the channels the bot can see: give its role View Channels and Read Message History. Discord shows a bot the text of messages only when Message Content Intent is on for it; without it the text comes back empty, except messages that mention the bot. PopMCP checks this when you connect and tells you if the intent is off. read_messages reads a channel oldest first, from a date or a message, and search_messages searches the whole server.
One. A bot can be in many servers, so after you paste the token PopMCP lists them and each server you choose becomes its own connection, in the workspace you pick. Channels, webhooks, invites and direct messages from any other server are refused before anything is sent, so an agency's bot in several client servers never mixes them up.
Exactly what its role allows: Discord checks the bot's permissions on every action. The install link PopMCP gives you asks for a sensible set (messages, threads, pins, reactions, channels, roles, webhooks, events, invites, the audit log, timeouts, kicks and bans) without Administrator. When something is refused, the AI is told which permission is missing and where a server admin turns it on.
Not unless you ask it to. Messages the bot sends ping the users they mention and nobody else: @everyone, @here and role mentions stay plain text unless the request says they should notify people. Replies still ping the person replied to, and silent messages send with no notification at all.
New messages in a channel, moderation and settings changes from the audit log, join requests, members joining, leaving or being banned, pinned messages, new threads and forum posts, channels, roles, scheduled events starting or ending, invites, webhooks, custom emojis, AutoMod rules, and the member count passing a number you choose. PopMCP reads them from the API, so they work with no setup in Discord.
When PopMCP's own Discord bot is switched on, the connect button becomes Add to Discord: you pick your server on Discord's own page, check the permissions and authorize, with nothing to copy. That connection acts as PopMCP's bot and reaches only the server you picked. Managing slash commands or a bot's own profile needs your own bot.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect Discord in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Discord on the consent screen. The Discord tools are then available in that session, and no Discord credential is stored on your machine.
Loading 233 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 33-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 233 here. A trigger is something PopMCP watches for you: 18 Discord events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Discord.
Launch a hosted MCP endpoint for Discord, keep tool access under control, and start testing real workflow prompts right away.