Built by Metorial, the integration platform for agentic AI.
Provider Summary
send and manage messages
manage servers and channels
create slash commands
execute webhooks
manage roles and members
moderate content automatically
schedule guild events
manage threads
manage custom guild emojis
track audit logs
Send, edit, and delete messages in channels. Manage servers (guilds), channels, roles, members, invites, webhooks, threads, scheduled events, auto moderation rules, audit logs, application commands, and custom guild emojis.
Fetch audit log entries for a Discord guild. Supports filtering by user, action type, and pagination via snowflake IDs.
Get the Discord account behind the connection: the bot user for a bot token, or the signed-in user for an OAuth connection.
Manage auto moderation rules in a Discord guild. Supports listing all rules, getting a specific rule, creating new rules, updating existing rules, and deleting rules.
List, get, create, update, or delete Discord application commands at global or guild scope.
List, get, create, update, or delete channels in a Discord guild. Supports text, voice, category, announcement, stage, and forum channel types.
List, get, create, update, or delete custom guild emojis.
Get information about a Discord guild (server), list the current user's guilds, or update guild settings such as name, description, verification level, and notification preferences.
List, create, or delete Discord invites. Invites allow users to join a guild via a shareable link. You can list invites for a specific channel or an entire guild, create new invites for a channel, or delete existing invites by code.
List, get, search, update, kick, ban, or unban members in a Discord guild. Supports modifying nicknames, roles, mute and deafen states, and timeouts. List and search return up to 100 members unless a limit is given.
Manage messages in a Discord channel. Supports listing messages, getting a specific message, editing, deleting, pinning/unpinning, listing pinned messages (paginated by pin time), and bulk deleting messages.
Add or remove emoji reactions on a Discord message. Supports adding a reaction, removing your own reaction, or removing all reactions from a message.
List, create, update, or delete roles in a Discord guild. Also supports assigning or removing roles from guild members.
Manage guild scheduled events in Discord. Supports listing, creating, updating, and deleting scheduled events for a guild.
Manage Discord threads and forum posts: create a thread from a message, create a standalone thread or forum post, rename, archive, or lock a thread, add a member, and list active or archived threads.
List, create, update, delete, or execute webhooks in a Discord channel or guild. Webhooks allow external services to send messages to Discord channels without a bot user.
Open (or reuse) the direct message channel between the bot and a user, returning the channel ID to send messages to. Requires the Bot Token connection.
Send a message to a Discord channel. Supports plain text content, rich embeds, replying to an existing message, and text-to-speech (TTS).
The Bot Token connection also implements the normalized chat adapter
(metorial_chat$… actions) with realtime events over the Discord Gateway. The
user OAuth2 connection is not chat-eligible: a user token cannot act as the
bot or open the bot gateway.
bot and applications.commands scopes and the view
channel, read history, send messages (and in threads), embed links, attach
files, and add reactions permissions. metorial_chat$setup.get generates the
install URL and a slash-command registration body.| Action / event | Support | Discord API |
|---|---|---|
| Workspaces | Native: one workspace per server (guild) | GET /users/@me/guilds, GET /guilds/{id} |
message.send / edit / delete | Native | Create/Edit/Delete Message |
message.get / list | Native; pages oldest-first with before/after id cursors | Get Channel Message(s) |
| Replies | Native (message_reference); only REPLY messages (type 19) map to reply, not pins, crossposts, thread starters, or forwards | Create Message |
| Threads | Threads are channels: threadId targets the thread channel | Create Message |
reaction.add / remove / list | Native (bot's own reaction; Unicode and name:id custom emoji) | Reactions |
channel.list / get | Native; channel.list needs workspaceId when the bot is in several servers | Get Guild Channels, Get Channel |
dm.openSingle | Native | Create DM |
user.get / user.getAuthenticated | Native (no workspace on the bot user; use workspace.list) | Get User |
typing.start | Native (about 10 seconds) | Trigger Typing Indicator |
file.upload | Native; sends the file as its own message (25 MiB) | Create Message |
Attachments on message.send / edit | Not supported on send (upload files separately); edits keep listed files already on the message | Edit Message |
file.download | Native; fresh signed CDN URL from the owning message, renewed before expiry | Get Channel Message |
command.list | Native (global, or server commands with workspaceId) | Get Application Commands |
command.respond | Native; edits the deferred (public) response. Ephemeral replies are rejected because Discord keeps the visibility chosen at deferral | Edit Original Interaction Response |
setup.get | Public instructions, no connection needed | — |
message.received / mention.received | Gateway MESSAGE_CREATE | Gateway |
message.updated | Gateway MESSAGE_UPDATE with edited_timestamp (embed-only updates are ignored) | Gateway |
message.deleted | Gateway MESSAGE_DELETE and each id of MESSAGE_DELETE_BULK | Gateway |
reaction.added / reaction.removed | Gateway MESSAGE_REACTION_ADD / REMOVE | Gateway |
command.invoked | Gateway INTERACTION_CREATE (application commands), acknowledged automatically | Gateway |
Content renders to Discord markdown (2,000 characters); cards and standalone
images become embeds (10 per message, Discord embed limits apply); tables and
charts render as code blocks. Over-limit content is rejected, never truncated.
Messages never ping @everyone/@here.
One persistent connection per bot connection, owned by the platform:
GET /gateway/bot for a new session, or the saved
resume_gateway_url when a session can be resumed (v=10&encoding=json).: as the delivery idempotency key, so a
resume replay is deduplicated. Chat event ids are derived from Discord ids
(for example MESSAGE_CREATE:).INTERACTION_CREATE the connection sends a deferred
response within Discord's 3-second window, then emits command.invoked. The
responseToken holds the interaction id and token (valid 15 minutes) and
never the bot token; the interaction token is removed from public raw data.message.search and message.markRead (no bot API),
message.sendEphemeral (Discord ephemeral messages exist only as interaction
responses), channel.members, thread.list / thread.get, dm.openGroup
(bots cannot create group DMs), user.search, member.joined / member.left
(Discord membership is server-level, not channel-level).workspaceId. With several servers
connected, a consumer that routes by workspace cannot attribute DM events to
one of them.MESSAGE_REACTION_REMOVE carries only the user id, so the actor has no name.
Reaction "remove all" / "remove emoji" events are not mapped (no actor).author.isMe = true; consumers
filter them to avoid feedback loops.This integration is licensed under the FSL-1.1.
Built with ❤️ by Metorial