Discord
Connect to Discord. Read user profile, guilds, roles, manage bots, and perform interactions.
Supports authentication: OAuth 2.0
Set up the agent connector
Section titled “Set up the agent connector”Register your Scalekit environment with the Discord connector so Scalekit handles the OAuth 2.0 (PKCE) flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically.
-
Create a Discord application
-
Go to the Discord Developer Portal and sign in with your Discord account.
-
Click New Application, enter a name for your app (e.g.,
My Agent), accept the terms, and click Create.
-
-
Set up the OAuth2 redirect URI
-
In Scalekit dashboard, go to Agent Auth → Create Connection. Find Discord and click Create. Copy the redirect URI shown — it looks like:
https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback
-
Back in the Discord Developer Portal, open your application and go to OAuth2 in the left sidebar.
-
Under Redirects, click Add Redirect, paste the URI from Scalekit, and click Save Changes.

-
-
Copy your credentials
-
On the OAuth2 page, copy the Client ID.
-
Click Reset Secret to generate a Client Secret and copy it immediately. It will not be shown again.
-
-
Add credentials in Scalekit
-
In Scalekit dashboard, go to Agent Auth → Connections and open the connection you created.
-
Enter the credentials you copied:
-
Client ID
-
Client Secret
-
Scopes — select the scopes your agent needs. Common scopes:
Scope What it grants identifyRead basic user profile (username, avatar, discriminator) emailRead the user’s email address guildsList the guilds the user belongs to guilds.members.readRead the user’s member data within a guild connectionsRead third-party accounts linked to the user’s Discord profile openidUse Discord as an OpenID Connect provider applications.entitlementsRead premium entitlements for your application

-
-
Click Save.
-
Connect a user’s Discord account and make API calls on their behalf — Scalekit handles OAuth 2.0 (PKCE), token storage, and refresh automatically.
Proxy API Calls
import { ScalekitClient } from '@scalekit-sdk/node';import 'dotenv/config';
const connectionName = 'discord'; // get your connection name from connection configurationsconst identifier = 'user_123'; // your unique user identifier
// Get your credentials from app.scalekit.com → Developers → Settings → API Credentialsconst scalekit = new ScalekitClient( process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);const actions = scalekit.actions;
// Authenticate the user — send this link to your userconst { link } = await actions.getAuthorizationLink({ connectionName, identifier,});console.log('🔗 Authorize Discord:', link);process.stdout.write('Press Enter after authorizing...');await new Promise(r => process.stdin.once('data', r));
// Fetch the authenticated user's Discord profile via Scalekit proxyconst user = await actions.request({ connectionName, identifier, path: '/api/users/@me', method: 'GET',});console.log(user);import scalekit.client, osfrom dotenv import load_dotenvload_dotenv()
connection_name = "discord" # get your connection name from connection configurationsidentifier = "user_123" # your unique user identifier
# Get your credentials from app.scalekit.com → Developers → Settings → API Credentialsscalekit_client = scalekit.client.ScalekitClient( client_id=os.getenv("SCALEKIT_CLIENT_ID"), client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"), env_url=os.getenv("SCALEKIT_ENV_URL"),)actions = scalekit_client.actions
# Authenticate the user — present this link to your userlink_response = actions.get_authorization_link( connection_name=connection_name, identifier=identifier)print("🔗 Authorize Discord:", link_response.link)input("Press Enter after authorizing...")
# Fetch the authenticated user's Discord profile via Scalekit proxyuser = actions.request( connection_name=connection_name, identifier=identifier, path="/api/users/@me", method="GET")print(user)Tool list
Section titled “Tool list”discord_get_current_user_application_entitlements
Section titled “discord_get_current_user_application_entitlements”Retrieves entitlements for the current user for a given application. Use when you need to check what premium offerings or subscriptions the authenticated user has access to. Requires the applications.entitlements OAuth2 scope.
| Name | Type | Required | Description |
|---|---|---|---|
application_id | string | Yes | The ID of the application to retrieve entitlements for. |
exclude_deleted | boolean | No | Whether to exclude deleted entitlements. |
exclude_ended | boolean | No | Whether to exclude ended entitlements. |
limit | integer | No | Maximum number of entitlements to return (1–100). |
discord_get_gateway
Section titled “discord_get_gateway”Retrieves a valid WebSocket (wss) URL for establishing a Gateway connection to Discord. Use when you need to connect to the Discord Gateway for real-time events. No authentication required.
discord_get_guild_template
Section titled “discord_get_guild_template”Retrieves information about a Discord guild template using its unique template code. Use when you need to get details about a guild template for creating new servers.
| Name | Type | Required | Description |
|---|---|---|---|
template_code | string | Yes | The unique code of the guild template. |
discord_get_guild_widget
Section titled “discord_get_guild_widget”Retrieves the guild widget in JSON format. Returns public information about a Discord guild’s widget including online member count and invite URL. The widget must be enabled in the guild’s server settings.
| Name | Type | Required | Description |
|---|---|---|---|
guild_id | string | Yes | The ID of the Discord guild (server) to retrieve the widget for. |
discord_get_guild_widget_png
Section titled “discord_get_guild_widget_png”Retrieves a PNG image widget for a Discord guild. Returns a visual representation of the guild widget that can be embedded on external websites. The widget must be enabled in the guild’s server settings.
| Name | Type | Required | Description |
|---|---|---|---|
guild_id | string | Yes | The ID of the Discord guild (server) to retrieve the widget image for. |
style | string | No | Style of the widget image. |
discord_get_invite_deprecated
Section titled “discord_get_invite_deprecated”DEPRECATED: Use discord_resolve_invite instead. Retrieves information about a specific invite code including guild and channel details. This endpoint is deprecated — prefer the Resolve Invite tool for new integrations.
| Name | Type | Required | Description |
|---|---|---|---|
invite_code | string | Yes | The unique invite code to look up. |
with_counts | boolean | No | Whether to include approximate member and presence counts. |
with_expiration | boolean | No | Whether to include the expiration date of the invite. |
discord_get_my_guild_member
Section titled “discord_get_my_guild_member”Retrieves the guild member object for the currently authenticated user within a specified guild, provided they are a member of that guild. Requires the guilds.members.read OAuth2 scope.
| Name | Type | Required | Description |
|---|---|---|---|
guild_id | string | Yes | The ID of the guild to retrieve the current user’s member object from. |
discord_get_my_oauth2_authorization
Section titled “discord_get_my_oauth2_authorization”Retrieves current OAuth2 authorization details for the application, including app info, granted scopes, token expiration date, and user data (contingent on scopes like ‘identify’). Useful for verifying what access the current token has.
discord_get_my_user
Section titled “discord_get_my_user”Fetches comprehensive profile information for the currently authenticated Discord user, including username, avatar, discriminator, locale, and email if the ‘email’ OAuth2 scope is granted.
discord_get_openid_connect_userinfo
Section titled “discord_get_openid_connect_userinfo”Retrieves OpenID Connect compliant user information for the authenticated user. Returns standardized OIDC claims (sub, email, nickname, picture, locale, etc.) following the OpenID Connect specification. Requires an OAuth2 access token with the ‘openid’ scope; additional fields require ‘identify’ and ‘email’ scopes.
discord_get_public_keys
Section titled “discord_get_public_keys”Retrieves Discord OAuth2 public keys (JWKS). Use when you need to verify OAuth2 tokens or access public keys for cryptographic operations such as signature verification.
discord_get_user
Section titled “discord_get_user”Retrieve information about a Discord user. With OAuth Bearer token, use ‘@me’ as user_id to return the authenticated user’s information. With a Bot token, you can query any user by their ID. Returns username, avatar, discriminator, locale, premium status, and email (if email scope is granted).
| Name | Type | Required | Description |
|---|---|---|---|
user_id | string | Yes | The ID of the user to retrieve. Use ‘@me’ to get the authenticated user’s information. |
discord_list_my_guilds
Section titled “discord_list_my_guilds”Lists the current user’s guilds, returning partial data (id, name, icon, owner, permissions, features) for each. Primarily used for displaying server lists or verifying guild memberships. Requires the ‘guilds’ OAuth2 scope.
| Name | Type | Required | Description |
|---|---|---|---|
after | string | No | Get guilds after this guild ID (for pagination). |
before | string | No | Get guilds before this guild ID (for pagination). |
limit | integer | No | Maximum number of guilds to return (1–200, default 200). |
with_counts | boolean | No | Whether to include approximate member and presence counts for each guild. |
discord_list_sticker_packs
Section titled “discord_list_sticker_packs”Retrieves all available Discord Nitro sticker packs. Returns official Discord sticker packs including pack name, description, stickers, cover sticker, and banner asset.
discord_resolve_invite
Section titled “discord_resolve_invite”Resolves and retrieves information about a Discord invite code, including the associated guild, channel, event, and inviter. Prefer this over the deprecated Get Invite tool for new integrations.
| Name | Type | Required | Description |
|---|---|---|---|
guild_scheduled_event_id | string | No | Guild scheduled event ID to include event details in the response. |
invite_code | string | Yes | The unique invite code to resolve. |
with_counts | boolean | No | Whether to include approximate member and presence counts. |
with_expiration | boolean | No | Whether to include the expiration date of the invite. |
discord_retrieve_user_connections
Section titled “discord_retrieve_user_connections”Retrieves a list of the authenticated user’s connected third-party accounts on Discord, such as Twitch, YouTube, GitHub, Steam, and others. Requires the ‘connections’ OAuth2 scope.