> ## Documentation Index
> Fetch the complete documentation index at: https://docs.neoagent.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Connecting Discord to Neo

> Make a Discord bot, add it to your server and save its token in Neo

You connect Discord once at the MSP level, with the token of a bot your team owns. Neo acts as that bot, in the servers you add it to, with the permissions its role there grants.

## 1. Make the bot

**1. Create an application**

Open the [Discord Developer Portal](https://discord.com/developers/applications), click **New Application** and name it, for example "Neo".

**2. Turn on the two settings Neo reads with**

Open **Bot**. Under **Privileged Gateway Intents**, turn on **Server Members Intent**, so Neo can find people by name, and **Message Content Intent**, so Neo can read the text of replies. Without the second, Neo still reads reactions, its own messages, direct messages to it and messages that mention it.

**3. Copy the token**

On the same page, click **Reset Token** and copy the token. Discord shows it once.

## 2. Add the bot to your server

Open **OAuth2 > URL Generator**, tick the **bot** scope, and tick the permissions the jobs need: **View Channels**, **Send Messages**, **Send Messages in Threads**, **Create Public Threads**, **Embed Links**, **Attach Files**, **Read Message History** and **Add Reactions**. Add **Manage Messages**, **Manage Channels**, **Manage Roles**, **Moderate Members**, **Kick Members** or **Ban Members** only for the agents that do those jobs. Open the generated URL, pick your server and click **Authorize**.

The bot sees only the channels its role can view. A private channel needs the bot's role added to it.

## 3. Add the token in Neo

**1. Open Integrations**

In the Neo Dashboard, open **Integrations** and find the Discord card, under Communication.

**2. Save the token**

Paste the bot token and click **Save settings**. Neo checks it against Discord before saving, so a wrong or reset token is rejected straight away.

## 4. Turn Discord on per agent

Open the agent, go to the Integrations section, and pick an access profile for the Discord block, or set each area yourself:

| Area | Access levels you can pick | Notes |
| - | - | - |
| **Messages & Threads** | Disabled, Read Only, Read / Write | Read / Write for an agent that posts alerts or approval requests; Read Only for one that only reads the answers. |
| **Channels** | Disabled, Read Only, Read / Write | Read Only lets the agent find a channel by name. |
| **Members & Moderation** | Disabled, Read Only, Read / Write | Read Only lets the agent find a person by name for a direct message. |
| **Roles & Access** | Disabled, Read Only, Read / Write | Read Only lets the agent check that a person holds the approver role. |
| **Server Settings** | Disabled, Read Only, Read / Write | Read Only lets the agent list the servers the bot is in. |
| **Events, Emojis & Stickers** | Disabled, Read Only, Read / Write | Scheduled events and expressions. |
| **Webhooks** | Disabled, Read Only, Read / Write | Webhooks of a channel or a server. |
| **Bot & Application** | Disabled, Read Only, Read / Write | The bot's own user and application. |

For approvals in Discord, also give the agent the PSA permission to add internal notes on tickets: it notes where each request is, so its next run finds it. See [Discord API](/agents/tools/communication/discord-api) for the profiles and what the agent can read and change.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.