ClawLink

How to connect Discord to Hermes Agent

Connect Discord to Hermes with ClawLink in one click — 27 tools your AI agent can call from chat via hosted OAuth. No API keys, no manual setup.

Get started for free
Hermes Agent
Hermes Agent
ClawLink
ClawLink
Discord
Discord
DiscordOAUTH2MCP

Send messages, manage channels, and automate server actions. Once connected, Hermes Agent can read and act on Discord from chat — pairing, token refresh, and tool wiring handled for you.

27 tools

Most guides for giving Hermes Agent Discord access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical Discord setup: pair once in the browser and your always-on Hermes agent can act on Discord for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

Copy this prompt into Hermes to install the plugin and pair your account.

Prompt for Hermes
Set up ClawLink for Hermes and tell me when it's ready.

1. Install the plugin:
hermes plugins install ClawLink-HQ/hermes-plugin --enable

2. Start pairing. It prints an approval link, so show me the link and stop, don't wait:
hermes clawlink begin

3. I'll approve it in my browser, then reply "approved".

4. When I say approved, finish setup:
hermes clawlink finish

5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

Setup

It takes three steps to connect Hermes to Discord.

  1. 1

    Install and pair

    Install the ClawLink plugin, then pair Hermes with a one-time browser approval:

    hermes plugins install ClawLink-HQ/hermes-plugin --enable
  2. 2

    Connect Discord

    One-click OAuth in the dashboard.

  3. 3

    Use it from chat

    Ask Hermes Agent: "What can you do with Discord?"

Install by command

The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:

hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin    # prints an approval link — open it and approve
hermes clawlink finish   # after approving in the browser
hermes clawlink test

Then connect Discord in the ClawLink dashboard — a one-click OAuth approval, no API keys.

Verify the connection by asking Hermes:

Run discord_get_my_user and discord_list_my_guilds, and tell me which account is connected and which servers I can reach. For my main server, use discord_get_my_guild_member and show my roles.

Using a different agent?

The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

npx -y @useclawlink/cli login

login opens the same browser approval and stores a credential locally. Once Discord is connected in the dashboard, that agent calls the same 27 Discord tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.

Discord MCP for Hermes

Looking for a Discord MCP server for Hermes Agent? ClawLink connects Discord to Hermes Agent and exposes 27 Discord tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using OpenClaw instead? The OpenClaw Discord integration works the same way.

The answer engines lead with "Assuming you mean Hermes Agent (NousResearch)" and then teach the manual path: create an application in the Discord Developer Portal, enable Server Members and Message Content intents, reset and copy the bot token, compute a permissions integer, and run hermes gateway setup. That is the self-hosted route for the same runtime this page connects: Nous Research's hermes-agent. ClawLink pairs that runtime over a user-account OAuth connection instead. There is no Developer Portal application, no bot token, no gateway intents, and no gateway to run. The agent connects as your Discord account, with the scopes you approve at consent, and the 27 tools below act on that account.

The other ways Hermes Agent gets Discord

Every route below pairs the same hermes-agent runtime; what differs is who owns the identity that acts on Discord.

  • The Developer Portal bot route the AI Overview teaches: a New Application in the Discord Developer Portal, bot tab, Server Members and Message Content intents enabled, a reset bot token, a permissions integer, and hermes gateway setup. You run a bot identity, and the token sits in your config.
  • Self-hosted Discord MCP servers: community servers like sandraschi/discord-mcp or Omnicord that you run with a bot token, so the agent calls them through a local MCP config. You maintain the server and the token.
  • User-account automation outside the API: the AIO's own 'discord self bot' guidance notes that user-account automation is prohibited by Discord. This page's connection is the sanctioned alternative: official OAuth2 user scopes against the API, no self-bot.
  • ClawLink (this page): all 27 tools over user OAuth2, no bot token, nothing running on your machine.

Using OpenClaw as well? The OpenClaw Discord integration is the same Discord OAuth connection and the same tools, with OpenClaw's skill flow instead of Hermes pairing.

What the Hermes Agent Discord integration can do

27 Discord tools are ready for Hermes Agent once the account is connected. The 25 below are the ones people reach for most; your agent can call all 27.

25 of 27 Discord tools for Hermes

ToolWhat it does
Consume entitlement discord_consume_entitlementMarks a one-time purchase consumable entitlement as consumed for a given application. Only applicable to entitlements backed by one-time purchase consumable SKUs.
Edit application command permissions discord_edit_application_command_permissionsEdits the permissions for a specific application command in a guild. Requires OAuth2 Bearer token (bot tokens will error).
Get application command permissions discord_get_application_command_permissionsRetrieves the permissions for a specific application command in a guild. Requires OAuth2 Bearer token (bot tokens will error).
Get batch application command permissions discord_get_batch_application_command_permissionsRetrieves permissions for all commands of an application in a guild. Returns a list of permission objects for each command. Requires OAuth2 Bearer token (Bot tokens will error).
Get current user application entitlements discord_get_current_user_application_entitlementsTool to retrieve 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.
Get gateway discord_get_gatewayTool to retrieve 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.
Get guild template discord_get_guild_templateTool to retrieve 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.
Get guild widget discord_get_guild_widgetTool to retrieve the guild widget in JSON format. Use when you need to get public information about a Discord guild's widget that can be displayed on external websites.
Get guild widget png discord_get_guild_widget_pngTool to retrieve a PNG image widget for a Discord guild. Use when you need a visual representation of the guild widget that can be displayed on external websites.
Get my guild member discord_get_my_guild_memberRetrieves the guild member object for the currently authenticated user within a specified guild, including roles, nickname, join date, and permissions.
Get my oauth2 authorization discord_get_my_oauth2_authorizationRetrieves current OAuth2 authorization details for the application, including app info, scopes
Get my user discord_get_my_userFetches comprehensive profile information for the currently authenticated Discord user
Get openid connect userinfo discord_get_openid_connect_userinfoRetrieve OpenID Connect compliant user information for the authenticated user
Get public keys discord_get_public_keysRetrieve Discord OAuth2 public keys
Get sku subscription discord_get_sku_subscriptionRetrieves a specific subscription by ID for a given SKU
Get user discord_get_userRetrieve information about a Discord user
Get user application role connection discord_get_user_application_role_connectionRetrieves the application role connection for the currently authenticated user for a specified
Invite resolve discord_invite_resolveResolve and retrieve information about a Discord invite code
List my connections discord_list_my_connectionsRetrieves a list of the authenticated user's connected third-party accounts on Discord
List my guilds discord_list_my_guildsLists the current user's guilds, returning partial data for each; primarily used for displaying
List sku subscriptions discord_list_sku_subscriptionsLists all subscriptions for a given SKU
List sticker packs discord_list_sticker_packsRetrieve all available Discord Nitro sticker packs
Modify current user discord_modify_current_userModifies the currently authenticated Discord user's profile
Update user application role connection discord_update_user_application_role_connectionUpdates the application role connection for the currently authenticated user for a specified
Leave guild discord_leave_guildLeaves a Discord guild (server) on behalf of the currently authenticated user

Try it: find the Discord tool you need

Browse the 25 Discord tools

Click any tool to see exactly what Hermes can do and copy a ready-to-use prompt.

Example prompts

Run discord_get_my_user and discord_list_my_guilds, and tell me which account is connected and which servers I can reach. For my main server, use discord_get_my_guild_member and show my roles.

Use discord_invite_resolve on the invite code I paste and tell me which server it points to and roughly how large it is.

Use discord_list_my_connections and discord_get_user_application_role_connection, and summarize what third-party accounts are connected to my Discord account.

For each guild in discord_list_my_guilds, use discord_get_guild_widget and summarize the member counts and activity. Flag any guild where the widget is disabled.

What the Discord tools act on

This integration is a user-account connection, and every tool below follows from that.

  • The tools act as the authenticated user. discord_get_my_user returns the connected profile, discord_list_my_guilds the servers that account belongs to, and discord_leave_guild leaves a server on the account's behalf. There is no bot identity anywhere in the set.
  • Three permission tools reject bot tokens by schema. discord_edit_application_command_permissions, discord_get_application_command_permissions, and discord_get_batch_application_command_permissions each document that they require an OAuth2 bearer token and that bot tokens will error.
  • There is no send-message tool. The set covers profile, guild membership, role connections, entitlements, and invites. Bot-style posting to channels is the separate Discord Bot integration (hermes/discord-bot).
  • discord_get_my_user returns email only if the email scope was granted. The scope list is part of the consent screen; without it, the profile comes back without the email field.
  • discord_get_guild_widget only works when the guild has the widget enabled in server settings; a disabled widget fails rather than returning empty.

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Discord working from chat.

ManualClawLink
Connection flowRegister a Discord app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift.Users connect Discord through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code.
Ongoing maintenanceYou own refresh logic, permission debugging, environment config, and every provider-specific edge case for Discord.ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure.
Agent usabilityYou still need to expose the right Discord actions to the runtime in a format your agent can reliably use.27 tools for Discord are already exposed through ClawLink, so the agent can read and act from chat immediately.

Composio also exposes Discord to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect Discord in the browser, and the 27 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full Composio alternatives comparison.

Troubleshooting

Hermes paired but still can't use Discord

Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.

Connection succeeds but no tools appear

Reconnect Discord from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

"Tool schema not loaded yet" error when calling Discord tools

Discord tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every Discord call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

Discord returns 403 or "permission denied" on one action while others work

Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

discord api 403 forbidden

The standard fixes for this error assume a bot: check the bot's permissions, role hierarchy, gateway intents, or OAuth2 scopes, then re-invite the bot. None apply to a hosted user connection, because there is no bot to re-invite. Two causes cover it. The connected account may lack permission for the action in that guild: the agent acts as you, so a guild where you are not a member or lack the role fails the same way you would fail. Or the agent sent a placeholder id instead of a real one. Run discord_list_my_guilds and discord_get_my_guild_member to confirm what the account can do, then retry with a real id.

Ask the agent to diagnose it:

Run discord_get_my_user and discord_list_my_guilds, tell me which account is connected and which guild the failing call targets. Do not retry until both have returned.
discord bot token invalid

This error comes from the self-hosted world: copying the client secret instead of the bot token, a typo in the env file, or a leaked token that Discord auto-revoked. None of that exists here, because there is no bot token in the flow. If the connection itself fails, it fails on Discord's side of OAuth, and the fix is to reconnect Discord from the ClawLink dashboard and complete the consent screen again.

Ask the agent to diagnose it:

Tell me the exact error text of the failed Discord call. If it names a token, reconnect the Discord connection from the dashboard.
discord api rate limit

Discord rate limits are per resource, and this connection runs under the Discord application ClawLink operates rather than a bot token you manage. The response carries a retry-after value, which is the interval to respect; pacing bursty calls prevents most 429s. No specific limit is claimed here, because the limits belong to the underlying application's tier and are not published on this page.

Ask the agent to diagnose it:

Report the exact status and any retry-after value from the failed Discord call, and do not retry until it has passed.
discord mcp tool not found

The answers for this phrase live in Claude Code and Cursor forums: absolute paths in claude_desktop_config.json, a missing DISCORD_TOKEN env var, a cache clear, or a /mcp Reconnect. There is no local MCP config in a hosted connection. A tool-not-found response here means the tool name was wrong or the schema catalog had not loaded; schemas load on demand, so one retry clears the second case, and the error message names the closest real tools for the first.

Ask the agent to diagnose it:

List the Discord tools you have access to and use the exact name for what I asked.
OAuth finished in the browser but the account is still missing

Try reconnecting Discord and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

FAQ

Is there a Hermes Agent Discord integration?

Yes. ClawLink is the fastest way to connect Hermes to Discord: link your Discord account once in the browser and Hermes Agent can call the Discord API through 27 ready-made tools — no custom code or token handling.

How do I connect Discord to Hermes with ClawLink?

Install the plugin with hermes plugins install ClawLink-HQ/hermes-plugin --enable, then pair once: run hermes clawlink begin, approve the link in your browser, and run hermes clawlink finish. Connect Discord in the dashboard and Hermes can use it from the next message — no config files or API keys to manage.

How long does it take to connect Discord to Hermes Agent?

About two minutes. Sign in, click Connect next to Discord in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

Why use ClawLink instead of wiring Discord up myself?

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Discord working from chat.

Do I need a Discord bot token to connect Discord to Hermes?

No. The AI Overview's "you will always need a free Discord Bot Token" is true for a bot you run yourself; this connection is user-account OAuth, so no bot exists in the flow. You approve the connection on Discord's consent screen, the scopes (identify, email, connections, guilds, guilds.join, guilds.members.read, messages.read, openid) are listed before you click allow, and the agent calls the tools as your account. There is no token to copy, store, or rotate.

Can the agent send messages in my Discord server?

No, and this is a real limit worth naming. The 27 tools act on your user account: profile, guild membership, role connections, entitlements, and invites. There is no send-message tool in the set, because the connection has no bot identity and no message-send scope. If you need bot-style posting to channels, that is the separate Discord Bot integration (hermes/discord-bot), which carries bot permissions. For this user-account integration, the agent reads servers, resolves invites, and manages your profile and memberships.

Is it safe to connect Discord to an AI agent?

The common framing is bot-token hygiene: keep the token secret, scope it tightly, avoid over-privileged bots. That framing does not transfer to this connection, because there is no token to leak. The grant is a user OAuth authorization, visible under your account's authorized applications in Discord, and revoking it there or in the ClawLink dashboard ends access immediately. What transfers is the behavioural risk: the agent reads messages and server content written by other people, and that content can carry prompt-injection attempts. Keep write-capable tools confirm-first and treat anything the agent reads in a guild as untrusted input.

Why do some Discord tools say bot tokens will error?

Several tools in this integration say it in their own schema: discord_edit_application_command_permissions, discord_get_application_command_permissions, and discord_get_batch_application_command_permissions each document that they require an OAuth2 bearer token and that bot tokens will error. That is by design. The connection is your user account, and those permission tools act on your application's commands. A self-hosted bot setup expecting those calls to work with a bot token is using a different integration model.

Hermes paired but still can't use Discord

Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.