Discord Bot for AI agents

Discord bots automate moderation, messaging, and event management inside Discord servers on behalf of community owners, handling routine tasks so human moderators can focus on members. Connect it once through Arc0, and your agent, or Claude, ChatGPT and Cursor, can use it through one MCP endpoint, limited to what each user approved.

CommunicationOAuth 2.0MCP + RESTdiscord.com
AUDIT LOG · DISCORD BOTPOLICY: acme-support
09:41:07 · claude · u_8f2read
discord_bot.list_messages
Fetch Messages From Channel✓ allowed · 212ms
09:41:08 · claude · u_8f2read
discord_bot.get_user
Get user✓ allowed · 164ms
09:41:09 · claude · u_8f2write
discord_bot.create_dm
Initiate user channel with recipient✓ approved · approved by user
09:41:12 · claude · u_8f2destructive
discord_bot.delete_guild
Delete guild by id✕ blocked · policy: deny
EVERY DISCORD BOT CALL, ON THE RECORD
01 · USE CASES

What agents do in Discord Bot.

01

Post an announcement

Send a message to a channel to announce an event or update to the community.

02

Create a scheduled event

Set up a guild scheduled event with a time and description once organizers confirm the details.

03

Approve before banning a member

Route a ban or bulk ban request through approval, since removing members from a guild is hard to reverse.

02 · ACTIONS

167 Discord Bot actions, graded by risk.

Every Discord Bot action is tagged read, write or destructive, so one policy covers the whole app and new actions inherit the right default.

read

70

Look things up. Allowed by default.

  • discord_bot.get_user
    Get user
  • discord_bot.get_guild
    Retrieve guild details
  • discord_bot.get_channel
    Retrieve channel details
  • discord_bot.get_gateway
    Get gateway URL
  • discord_bot.get_message
    Get Message
  • discord_bot.get_sticker
    Get sticker
  • discord_bot.get_webhook
    Retrieve webhook by id
  • discord_bot.list_messages
    Fetch Messages From Channel
  • discord_bot.list_my_guilds
    List my guilds
  • discord_bot.get_application
    Get application details
  • discord_bot.get_bot_gateway
    Get bot gateway
  • discord_bot.get_guild_emoji
    Fetch emoji by guild and id
  • discord_bot.get_public_keys
    Get OAuth2 public keys
  • discord_bot.list_guild_bans
    List guild bans
  • discord_bot.get_guild_member
    Retrieve guild member by user id
  • discord_bot.get_guild_widget
    Retrieve guild widget json
+ 54 MORE

write

66

Create and change things. Allow, or ask the user first.

  • discord_bot.create_dm
    Initiate user channel with recipient
  • discord_bot.create_guild
    Create new guild
  • discord_bot.update_guild
    Update guild settings
  • discord_bot.create_thread
    Create new thread in channel
  • discord_bot.create_message
    Send Message To Channel
  • discord_bot.create_webhook
    Create channel webhook
  • discord_bot.update_channel
    Update channel settings
  • discord_bot.update_message
    Edit Message
  • discord_bot.update_my_user
    Update current bot user profile
  • discord_bot.update_webhook
    Update webhook details
  • discord_bot.add_guild_member
    Add guild member
  • discord_bot.add_group_dm_user
    Add recipient to group channel
  • discord_bot.add_thread_member
    Add thread member
  • discord_bot.create_guild_role
    Create role with guild id
  • discord_bot.update_guild_role
    Modify guild role
  • discord_bot.create_guild_emoji
    Create guild emoji
+ 50 MORE

destructive

31

Delete, cancel or archive. Ask first, or deny outright.

  • discord_bot.delete_guild
    Delete guild by id
  • discord_bot.delete_channel
    Delete channel by id
  • discord_bot.delete_message
    Delete Message
  • discord_bot.delete_webhook
    Delete webhook by id
  • discord_bot.delete_guild_role
    Delete role from guild
  • discord_bot.delete_guild_emoji
    Delete guild emoji by id
  • discord_bot.delete_guild_member
    Delete guild member by id
  • discord_bot.delete_group_dm_user
    Remove user from group DM
  • discord_bot.delete_guild_sticker
    Delete guild sticker
  • discord_bot.delete_thread_member
    Remove thread member
  • discord_bot.delete_guild_template
    Delete guild template by code
  • discord_bot.delete_stage_instance
    Delete stage instance
  • discord_bot.delete_webhook_message
    Delete webhook message
  • discord_bot.delete_webhook_by_token
    Delete webhook by token
  • discord_bot.delete_guild_integration
    Delete guild integration
  • discord_bot.delete_guild_member_role
    Delete guild member role
+ 15 MORE
03 · HOW IT WORKS

Discord Bot in three steps.

  1. 01Your users connect Discord BotThey sign in to Discord Bot on Arc0 Connect, under your brand, and approve the access you ask for.
  2. 02You set the rulesReads run, writes like “initiate user channel with recipient” can wait for the user, and “delete guild by id” can be denied outright.
  3. 03Any agent can actYour agent calls Discord Bot through the Arc0 SDK or MCP, and so can Claude, ChatGPT and Cursor. Every call lands on the audit log.
POLICY.TS
await arc0.policies.set('discord_bot', {
  read: 'allow',
  write: 'ask',        // create_dm
  destructive: 'deny',  // delete_guild
})

# Claude Code: the same connection, one URL
$ claude mcp add --transport http arc0 \
    https://mcp.arc0.ai/u/u_8f2
04 · AUTH AND DATA

How Discord Bot connects.

Users sign in to Discord Bot on Arc0 Connect and approve the scopes you request. Build with Arc0’s Discord Bot OAuth app, or bring your own so the Discord Bot consent screen names you. Tokens refresh automatically, and you can export them whenever you want.

The same Discord Bot connection serves your agent over MCP and your own backend over REST and the proxy, so a user connects once. How Arc0 handles credentials →

AUTH
OAuth 2.0
CREDENTIALS
Per-tenant encrypted vault
MODEL SEES
Results only, never credentials
AUDIT LOG
Every call, on every plan
05 · WORKS WITH

Use Discord Bot from any agent.

Claude
ChatGPT
Cursor
Codex
VS Code
OpenAI Agents SDK
Claude Agent SDK
Vercel AI SDK
Mastra
LangGraph
07 · FAQ

Discord Bot and Arc0, answered.

Q01

Can I use Discord Bot with Claude, ChatGPT or Cursor?

Yes. Connect Discord Bot to Arc0 once, then add your Arc0 MCP URL to Claude, ChatGPT, Cursor, Claude Code or any other remote-MCP client. Each assistant only gets the Discord Bot actions you allow.

Q02

How do users connect Discord Bot?

Users sign in to Discord Bot on Arc0 Connect and approve the scopes you request. Build with Arc0’s Discord Bot OAuth app, or bring your own so the Discord Bot consent screen names you. Tokens refresh automatically, and you can export them whenever you want.

Q03

Which Discord Bot actions can my agent take?

167 in total: 70 read, 66 write and 31 destructive, such as “initiate user channel with recipient”. Your policies decide which of them each agent may call.

Q04

Can I stop my agent from deleting things in Discord Bot?

Yes. Actions like “delete guild by id” are graded destructive. Set destructive actions to deny, or to ask so the user approves each one, and blocked calls still show up on the audit log.

Q05

Can my own backend call Discord Bot too?

Yes. The same Discord Bot connection is available over REST and through the Arc0 proxy, so your product and your agent share one connection per user.

Get started

Plug Discord Bot into your agent.

Your users connect Discord Bot once, under your brand. Your agent gets 167 actions behind your policies, with every call on the record.

Free to build · MCP + REST · Audit log on every plan