Documentation
Discord
Connect Discord and use its tools through the Authlane control plane.
Prerequisites
Create a Discord OAuth2 application for user authorization. This integration intentionally uses a per-user OAuth token and does not request or store the application's bot token. Use the official API reference, app setup guide, and Developer Portal.
Self-hosted setup
- Open the Discord Developer Portal and create an application.
- Register
https://<your-authlane-host>/api/v1/oauth/discord/callbackas the exact OAuth redirect. - Copy the application's Client ID and Client Secret.
- Enable the
identify,guilds,guilds.members.read, andconnectionsOAuth scopes. - In Authlane, open Dashboard → Services → Discord and save the client credentials.
Configure authentication
Set the OAuth Client ID and Client Secret in Dashboard → Services → Discord. Authlane encrypts the Client Secret and uses the configured redirect URI during the authorization-code exchange.
Scopes
identifyreads the connected user's basic Discord profile.guildslists guilds the connected user belongs to.guilds.members.readreads that user's member record in a selected guild.connectionslists the user's linked external accounts.
Do not add the bot scope for this adapter. Discord bot tokens are separate application secrets;
an OAuth installation does not return the bot token, and bot-only message or channel endpoints
cannot be called with the per-user bearer credential stored by Authlane.
Execution path
There is no official provider MCP server for Discord. The SaaS runtime therefore uses
@authlane/integration-discord to call Discord directly with a fresh credential lease; Authlane
never proxies messages or responses.
Available tools
Identity and guilds
discord_get_current_userdiscord_list_guildsdiscord_get_current_user_guild_member
Linked accounts
discord_list_connections
Connection lifecycle
Successful consent stores an encrypted OAuth credential and marks the connection connected.
Authlane refreshes expiring credentials only when Discord returned usable refresh material. If the
credential expires or Discord rejects it, reconnect the user. A hosted disconnect requires a new
connect session with recent reauthentication and removes the stored connection.
Troubleshooting
- A missing guild means the connected user does not belong to it or did not grant
guilds. - Member lookup requires
guilds.members.readand the exact guild ID returned by the guild list. - Message sending and channel administration are deliberately absent because they require a bot credential model that is different from Authlane's per-user OAuth connection.