Skip to Content
ResourcesIntegrationsSocial & CommunicationDiscord Bot

Discord Bot

Service domainMESSAGING
Discord Bot icon
Arcade Optimized

Arcade.dev LLM tools for Discord

Author:Arcade
Version:0.1.0
Auth:No authentication required
20tools
20require secrets

Discord Bot Toolkit

The Discord Bot toolkit lets an Arcade-powered agent act as a Discord bot — reading and writing messages, managing threads, handling reactions, and inspecting server structure — all authenticated via a bot token rather than OAuth.

Capabilities

  • Messaging: Send, edit, delete, reply to, pin, and unpin messages across channels and threads; mention suppression (@everyone, @here, roles) is enforced on send, edit, and thread seed operations to prevent accidental server-wide pings.
  • Search & retrieval: Fetch individual messages, channels, servers, and users by ID; list recent messages (newest-first), pinned messages, and perform text/author search within a channel or across an entire server (local scan of recent history, not full Discord history).
  • Thread & channel management: List channels (filterable by type), list active (non-archived) threads, and start threads from a message, standalone in a text channel, or as forum/media posts.
  • Reactions: Add and remove the bot's own emoji reactions; removing a reaction never added is a safe no-op.
  • Server & identity introspection: List servers the bot belongs to, resolve user IDs to human-readable names (with optional per-server nickname lookup), and verify the active bot identity with WhoAmI.
  • Graceful not-found handling: Missing messages, channels, servers, and users return a structured not_found status rather than raising errors, letting agent chains branch without try/catch logic.

Secrets

DISCORD_BOT_TOKEN — The bot token that authenticates every API call as your Discord bot. To obtain it:

  1. Open the Discord Developer Portal and select (or create) your application.
  2. Go to Bot in the left sidebar.
  3. Under the Token section, click Reset Token (or Copy if already generated) to retrieve the token.
  4. Enable any Privileged Gateway Intents your use case requires — notably Message Content Intent if you need full message body access via SearchMessages or GetMessage.
  5. Invite the bot to your server with appropriate permissions (e.g. Read Messages, Send Messages, Manage Messages) using the OAuth2 URL Generator in the portal.

Store the token as an Arcade secret. See Arcade tool secrets docs for configuration details, or manage secrets directly at https://api.arcade.dev/dashboard/auth/secrets.

Available tools(20)

20 of 20 tools
Operations
Behavior
Tool nameDescriptionSecrets
Add an emoji reaction to a Discord message as the bot.
1
Delete a message from a Discord channel. This cannot be undone.
1
Edit a message the bot posted. The bot can only edit its own messages. Edits suppress @everyone, @here, and role mentions, so correcting an earlier post never pings the whole server (Discord re-parses mentions in edited content by default). Editing a message authored by someone else is not an error: it returns a result whose ``status`` is ``not_author`` so the caller can pivot (e.g. post a new message) without its tool chain aborting.
1
Get a single Discord channel's name, type, and topic. A missing channel (e.g. one that was deleted) is not an error: the result's ``status`` is ``not_found`` so the caller can branch without a try/catch. A genuine permission problem is still raised.
1
Fetch a single Discord message by id. A missing message (e.g. one that was deleted) is not an error: the result's ``status`` is ``not_found`` so the caller can branch without a try/catch. A genuine permission problem is still raised.
1
Get a single Discord server's name, owner, and member count. A server the bot cannot resolve (it is not a member, or the id is wrong) is not an error: the result's ``status`` is ``not_found`` so the caller can branch without a try/catch. A genuine permission problem is still raised.
1
Resolve a user id (such as a message author_id) into a human-readable name. Pass server_id to fold in the user's nickname in that server. Use this to turn the opaque author_id on messages into a name without leaving the agent. A user id that resolves to no account is not an error: the result's ``status`` is ``not_found`` so the caller can branch.
1
List a Discord server's currently active (non-archived) threads.
1
List the channels in a Discord server, optionally filtered by type.
1
Read a channel's or thread's recent messages, newest first.
1
List the pinned messages in a Discord channel.
1
List the Discord servers the bot is a member of and can act in.
1
Pin a message in a Discord channel so the team can find it later.
1
Remove the bot's own emoji reaction from a Discord message. Removes only the bot's reaction; other users' reactions with the same emoji are unaffected. Removing a reaction the bot never added is a no-op that returns ``removed`` False, so the caller can tell that case apart from a real removal.
1
Reply to an existing Discord message so the answer stays tied to the question. To reply inside a thread, pass the thread id as channel_id and a message id from inside the thread as message_id. A thread's own id is its starter message, which lives in the parent channel, not inside the thread.
1
Find messages by text and/or author in one channel or across a whole server. Use a single call with server_id to answer "I remember a message but not where" without looping channels yourself; a server-wide search covers text and announcement channels plus active threads and forum posts. Discord's bot API has no server-side message search, so this scans recent messages locally and covers the most recent ``max_scan`` messages, not full history. Matching reads ``content``, which is empty for messages the bot cannot see in full without the Message Content intent.
1
Post a new message to a Discord channel as the bot. Posts with @everyone, @here, and role mentions suppressed so a routine update never pings the whole server.
1
Start a thread from a message, standalone in a text channel, or as a forum/media post. Discord seeds forum and media posts from the create call but does not accept an opening body for text-channel threads, so for those this posts ``content`` as a follow-up opening message in one call. Mentions in ``content`` are suppressed so seeding never pings the server.
1
Unpin a previously pinned message in a Discord channel.
1
Return the authenticated Discord bot's own user identity. Use this to verify the configured bot token and confirm which bot account the tools act as. It is a verification helper, not a required preamble to the other tools.
1

Selected tools

No tools selected.

Click "Show all tools" to add tools.

Requirements

Select tools to see requirements

#

DiscordBot.AddReaction

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Create
Service domains
Messaging
MCP behavior
No

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Add an emoji reaction to a Discord message as the bot.

Parameters

ParameterTypeReq.Description
channel_idstringRequiredThe channel id the message is in.
message_idstringRequiredThe id of the message to react to.
emojistringRequiredThe emoji to add: a unicode emoji character, or a custom emoji as name:id.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe reaction outcome.
#

DiscordBot.DeleteMessage

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Delete
Service domains
Messaging
MCP behavior
No

Reads data without modifying any state in the target system.

Yes

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Delete a message from a Discord channel. This cannot be undone.

Parameters

ParameterTypeReq.Description
channel_idstringRequiredThe channel id the message is in.
message_idstringRequiredThe id of the message to delete.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe delete outcome.
#

DiscordBot.EditMessage

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Update
Service domains
Messaging
MCP behavior
No

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Edit a message the bot posted. The bot can only edit its own messages. Edits suppress @everyone, @here, and role mentions, so correcting an earlier post never pings the whole server (Discord re-parses mentions in edited content by default). Editing a message authored by someone else is not an error: it returns a result whose ``status`` is ``not_author`` so the caller can pivot (e.g. post a new message) without its tool chain aborting.

Parameters

ParameterTypeReq.Description
channel_idstringRequiredThe channel id the message is in.
message_idstringRequiredThe id of the bot's message to edit.
contentstringRequiredThe new message text (1-2000 characters).

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe message after editing.
#

DiscordBot.GetChannel

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Messaging
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Get a single Discord channel's name, type, and topic. A missing channel (e.g. one that was deleted) is not an error: the result's ``status`` is ``not_found`` so the caller can branch without a try/catch. A genuine permission problem is still raised.

Parameters

ParameterTypeReq.Description
channel_idstringRequiredThe channel or thread id to fetch.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonFull details for one channel.
#

DiscordBot.GetMessage

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Messaging
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Fetch a single Discord message by id. A missing message (e.g. one that was deleted) is not an error: the result's ``status`` is ``not_found`` so the caller can branch without a try/catch. A genuine permission problem is still raised.

Parameters

ParameterTypeReq.Description
channel_idstringRequiredThe channel or thread id the message is in.
message_idstringRequiredThe message id to fetch.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe requested message.
#

DiscordBot.GetServer

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Messaging
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Get a single Discord server's name, owner, and member count. A server the bot cannot resolve (it is not a member, or the id is wrong) is not an error: the result's ``status`` is ``not_found`` so the caller can branch without a try/catch. A genuine permission problem is still raised.

Parameters

ParameterTypeReq.Description
server_idstringRequiredThe server (guild) id to fetch.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonFull details for one server.
#

DiscordBot.GetUser

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Messaging
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Resolve a user id (such as a message author_id) into a human-readable name. Pass server_id to fold in the user's nickname in that server. Use this to turn the opaque author_id on messages into a name without leaving the agent. A user id that resolves to no account is not an error: the result's ``status`` is ``not_found`` so the caller can branch.

Parameters

ParameterTypeReq.Description
user_idstringRequiredThe user id to resolve, such as a message author_id.
server_idstringOptionalResolve the user's nickname within this server (guild). Leave empty to return only the account-level profile.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe resolved user.
#

DiscordBot.ListActiveThreads

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Messaging
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

List a Discord server's currently active (non-archived) threads.

Parameters

ParameterTypeReq.Description
server_idstringRequiredThe server (guild) id whose active threads to list.
limitintegerOptionalMaximum threads to return (1-100). Defaults to 50.
offsetintegerOptional0-indexed starting position into the thread list. Defaults to 0.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe server's active threads.
#

DiscordBot.ListChannels

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Messaging
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

List the channels in a Discord server, optionally filtered by type.

Parameters

ParameterTypeReq.Description
server_idstringRequiredThe server (guild) id whose channels to list.
channel_typestringOptionalRestrict results to one channel type. Defaults to ALL (no filter).
alltextvoicecategoryannouncementforum
limitintegerOptionalMaximum channels to return (1-100). Defaults to 50.
offsetintegerOptional0-indexed starting position into the filtered list. Defaults to 0.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe channels in the server.
#

DiscordBot.ListMessages

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Messaging
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Read a channel's or thread's recent messages, newest first.

Parameters

ParameterTypeReq.Description
channel_idstringRequiredThe channel or thread id to read. A thread is a channel, so this reads threads too.
limitintegerOptionalMaximum messages to return (1-100). Defaults to 20.
beforestringOptionalReturn only messages older than this message id. Leave empty for none.
afterstringOptionalReturn only messages newer than this message id. Leave empty for none.
aroundstringOptionalReturn messages centered on this message id. Leave empty for none.
include_systembooleanOptionalInclude Discord's auto-generated system notices (thread-created, pin, join messages). Defaults to false, which keeps a catch-up read free of blank non-conversational rows.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonRecent messages, newest first.
#

DiscordBot.ListPinnedMessages

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Messaging
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

List the pinned messages in a Discord channel.

Parameters

ParameterTypeReq.Description
channel_idstringRequiredThe channel id whose pinned messages to list.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe channel's pinned messages.
#

DiscordBot.ListServers

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Messaging
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

List the Discord servers the bot is a member of and can act in.

Parameters

ParameterTypeReq.Description
limitintegerOptionalMaximum servers to return (1-200). Defaults to 200.
beforestringOptionalReturn servers before this server id (for paging backward). Leave empty for none.
afterstringOptionalReturn servers after this server id; pass next_cursor to get the next page. Leave empty to start at the first page.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe servers the bot belongs to.
#

DiscordBot.PinMessage

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Update
Service domains
Messaging
MCP behavior
No

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Pin a message in a Discord channel so the team can find it later.

Parameters

ParameterTypeReq.Description
channel_idstringRequiredThe channel id the message is in.
message_idstringRequiredThe id of the message to pin.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe pin outcome.
#

DiscordBot.RemoveReaction

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Update
Service domains
Messaging
MCP behavior
No

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Remove the bot's own emoji reaction from a Discord message. Removes only the bot's reaction; other users' reactions with the same emoji are unaffected. Removing a reaction the bot never added is a no-op that returns ``removed`` False, so the caller can tell that case apart from a real removal.

Parameters

ParameterTypeReq.Description
channel_idstringRequiredThe channel id the message is in.
message_idstringRequiredThe id of the message to remove the reaction from.
emojistringRequiredThe emoji to remove: a unicode emoji character, or a custom emoji as name:id.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe reaction outcome.
#

DiscordBot.ReplyToMessage

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Create
Service domains
Messaging
MCP behavior
No

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

No

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Reply to an existing Discord message so the answer stays tied to the question. To reply inside a thread, pass the thread id as channel_id and a message id from inside the thread as message_id. A thread's own id is its starter message, which lives in the parent channel, not inside the thread.

Parameters

ParameterTypeReq.Description
channel_idstringRequiredThe channel id the original message is in.
message_idstringRequiredThe id of the message to reply to.
contentstringRequiredThe reply text (1-2000 characters).
mention_authorbooleanOptionalWhether to ping the author of the message being replied to. Defaults to false.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe reply the bot posted.
#

DiscordBot.SearchMessages

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Messaging
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Find messages by text and/or author in one channel or across a whole server. Use a single call with server_id to answer "I remember a message but not where" without looping channels yourself; a server-wide search covers text and announcement channels plus active threads and forum posts. Discord's bot API has no server-side message search, so this scans recent messages locally and covers the most recent ``max_scan`` messages, not full history. Matching reads ``content``, which is empty for messages the bot cannot see in full without the Message Content intent.

Parameters

ParameterTypeReq.Description
channel_idstringOptionalThe channel or thread id to search (a thread is a channel, so this searches threads too). Leave empty to search a whole server instead via server_id. Provide exactly one of channel_id or server_id.
server_idstringOptionalThe server (guild) id to search across all of its text and announcement channels. Leave empty to search a single channel via channel_id. Provide exactly one of channel_id or server_id.
querystringOptionalText to find in message content (case-insensitive). Leave empty to match any content, which is useful when filtering only by author_id.
author_idstringOptionalOnly return messages posted by this author id. Leave empty to match any author. Combine with an empty query to list a user's recent messages.
limitintegerOptionalMaximum matching messages to return (1-50). Defaults to 20.
max_scanintegerOptionalMaximum recent messages to scan while searching (50-1000). Defaults to 300. In a server-wide search this is the total budget shared across channels. Raise to look further back at the cost of more API calls.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonMatching messages, newest first.
#

DiscordBot.SendMessage

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Create
Service domains
Messaging
MCP behavior
No

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

No

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Post a new message to a Discord channel as the bot. Posts with @everyone, @here, and role mentions suppressed so a routine update never pings the whole server.

Parameters

ParameterTypeReq.Description
channel_idstringRequiredThe channel id to post to.
contentstringRequiredThe message text to post (1-2000 characters).

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe message the bot posted.
#

DiscordBot.StartThread

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Create
Service domains
Messaging
MCP behavior
No

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

No

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Start a thread from a message, standalone in a text channel, or as a forum/media post. Discord seeds forum and media posts from the create call but does not accept an opening body for text-channel threads, so for those this posts ``content`` as a follow-up opening message in one call. Mentions in ``content`` are suppressed so seeding never pings the server.

Parameters

ParameterTypeReq.Description
channel_idstringRequiredThe channel id to start the thread in.
namestringRequiredThe thread name (1-100 characters).
message_idstringOptionalStart the thread attached to this existing message. Leave empty to start a standalone thread in the channel.
contentstringOptionalBody that seeds the thread (1-2000 characters). For a forum or media channel this opens the post and is required. For a standalone text-channel thread it is posted as the thread's opening message. Ignored when starting the thread from an existing message. Leave empty to open an unseeded text-channel thread.
auto_archive_minutesstringOptionalInactivity period before Discord auto-archives the thread. Defaults to ONE_DAY.
601440432010080

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe thread the bot created.
#

DiscordBot.UnpinMessage

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Update
Service domains
Messaging
MCP behavior
No

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Unpin a previously pinned message in a Discord channel.

Parameters

ParameterTypeReq.Description
channel_idstringRequiredThe channel id the message is in.
message_idstringRequiredThe id of the message to unpin.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe unpin outcome.
#

DiscordBot.WhoAmI

Execution hints

Signals for MCP clients and agents about how this tool behaves.

Operations
Read
Service domains
Messaging
MCP behavior
Yes

Reads data without modifying any state in the target system.

No

May permanently delete or overwrite data in the target system.

Yes

Repeated calls with the same inputs produce no additional effect.

Yes

Communicates with external APIs, databases, or other services.

Return the authenticated Discord bot's own user identity. Use this to verify the configured bot token and confirm which bot account the tools act as. It is a verification helper, not a required preamble to the other tools.

Parameters

No parameters required.

Requirements

Secrets:DISCORD_BOT_TOKEN

Output

Type:jsonThe authenticated bot's identity.
Last updated on