atmon docs

REFERENCE/TOOLKITS/DISCORD.MD

Discord

Community chat. Send and manage messages, work with channels and threads, look up and moderate members, and manage roles.

PropertyValue
Slugdiscord
Definition version0.1.0
Base URLhttps://discord.com/api/v10
Auth schemesapi_key, oauth2
Action tools39
By class14 read, 19 write, 6 destructive
Triggers0
Provider rate limitnot declared, so outbound calls are unpaced

Measured routing accuracy

60 golden cases replayed through the router over the whole index: measured over corpus ea4f12ad2948 (65 toolkits, 2283 tools indexed and 13 declared uncallable), 39 cases written by hand and 21 cases from the paraphrase pass. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.

MeasureCasesShare
top-127/6045.0%
top-852/6086.7%

The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. just eval-live measures the same cases through the live reranker.

Authentication

Connect an entity with ConnectionsService.InitiateConnection, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.

api_key

PropertyValue
Placementheader
NameAuthorization
Rendered asBot {key}

Submit the key with ConnectionsService rather than putting it in a request; it is sealed at rest and never returned.

oauth2

PropertyValue
Authorization URLhttps://discord.com/oauth2/authorize
Token URLhttps://discord.com/api/oauth2/token
Default scopesbot, identify, guilds
Refresh tokensyes, the refresh daemon renews ahead of expiry

Tools

39 action tools. The catalog-wide slug is discord.<tool>, which is what search_tools returns and call_tool takes.

discord.send_message

Post a message to a Discord channel or thread right now. Use when the user wants to send, post, message, or notify people in a Discord channel or server. Pass reply_to_message_id to quote a specific message. Sending into a thread works the same way: pass the thread's own id as channel_id.

Class write (writes, no confirmation needed). Scopes send_messages. Calls POST /channels/{{params.channel_id}}/messages.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel or thread id to post into, e.g. "1147582039481922560". Resolve a channel name with list_guild_channels.
contentstringyesMessage text, up to 2000 characters. Discord markdown is supported.
reply_to_message_idstringnoId of a message to quote as a reply, e.g. "1148675039221850112".
ttsbooleannoSend as a text-to-speech message. Default false.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
channel_idstring
contentstring
idstring
timestampstring (date-time)

Also retrieved by: "drop a note in the server", "ping people in a text channel", "shout something out to the whole channel", "let the server know what's going on", "quote someone's message in my reply", "fire off a quick line in the chat".

discord.edit_message

Change the text of a message the bot already posted. Use when the user wants to fix, correct, or update a Discord message that was already sent. Only messages the bot itself posted can be edited.

Class write (writes, no confirmation needed). Scopes send_messages. Calls PATCH /channels/{{params.channel_id}}/messages/{{params.message_id}}.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel or thread id containing the message.
contentstringyesReplacement text for the whole message.
message_idstringyesId of the message to edit, e.g. "1148675039221850112".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
channel_idstring
contentstring
edited_timestampstring (date-time)
idstring

Also retrieved by: "fix a typo in something the bot posted", "reword what got sent earlier", "clean up the wording in the last post", "change what was typed by mistake".

discord.delete_message

Delete one message from a Discord channel or thread. Use when the user wants to remove, retract, or take down a single message. Permanent; the message cannot be restored. For two or more messages at once, use bulk_delete_messages instead.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes manage_messages. Calls DELETE /channels/{{params.channel_id}}/messages/{{params.message_id}}.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel or thread id containing the message.
message_idstringyesId of the message to delete.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
okboolean

Also retrieved by: "take back something that got posted", "erase a post someone regrets sending", "pull down what was just written in the channel", "undo a message sent by mistake", "wipe one bad post out of the chat".

discord.bulk_delete_messages

Delete two to a hundred messages from a channel in one call. Use when the user wants to clear, purge, or wipe a batch of messages at once. Discord silently skips any message older than 14 days. Permanent. For a single message, use delete_message.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes manage_messages. Calls POST /channels/{{params.channel_id}}/messages/bulk-delete.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id the messages belong to.
message_idsarray of stringyes2 to 100 message ids to delete together.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
okboolean

Also retrieved by: "clear out a bunch of spam at once", "wipe a pile of messages in one shot", "purge a batch of posts from the channel", "nuke a stretch of chat history together", "mass delete everything from that raid".

discord.get_channel_messages

Fetch recent messages from a channel or thread, newest first. Use when the user wants to read, catch up on, or summarize what was said in a Discord channel. For one specific message by id, use get_message.

Class read (reads only). Scopes view_channel, read_message_history. Calls GET /channels/{{params.channel_id}}/messages.

Arguments:

ArgumentTypeRequiredNotes
afterstringnoOnly messages newer than this message id.
beforestringnoOnly messages older than this message id.
channel_idstringyesChannel or thread id to read from.
limitintegernoMaximum messages to return, up to 100. Default 50.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
messagesarray of object
messages[].authorobject
messages[].author.idstring
messages[].author.usernamestring
messages[].contentstring
messages[].idstring
messages[].timestampstring (date-time)

Also retrieved by: "what did I miss in the general channel", "catch me up on recent chatter in the server", "scroll back through what people just said", "pull the last few things posted in there", "recap what happened in the channel today".

discord.get_message

Get one specific message by its id: author, text, and timestamp. Use when the user asks about a particular Discord message rather than recent history. For a page of recent messages, use get_channel_messages.

Class read (reads only). Scopes view_channel, read_message_history. Calls GET /channels/{{params.channel_id}}/messages/{{params.message_id}}.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel or thread id containing the message.
message_idstringyesId of the message to fetch.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
authorobject
author.idstring
author.usernamestring
channel_idstring
contentstring
idstring
timestampstring (date-time)

Also retrieved by: "what exactly did that one post say", "pull up a single message by its id", "find the exact wording of that specific post", "show me that one message again".

discord.pin_message

Pin a message to the top of a channel's pinned list. Use when the user wants to pin, highlight, or keep a message easy to find later. A channel holds at most 50 pins. Reversible with unpin_message.

Class write (writes, no confirmation needed). Scopes manage_messages. Calls PUT /channels/{{params.channel_id}}/pins/{{params.message_id}}.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id containing the message.
message_idstringyesId of the message to pin.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
okboolean

Also retrieved by: "stick that message to the top of the channel", "highlight a post so it's easy to find later", "keep this one visible for everyone", "flag a message as important in the channel".

discord.unpin_message

Remove a message from a channel's pinned list. Use when the user wants to unpin a message that no longer needs to stay highlighted. The message itself is untouched; only its pinned status changes.

Class write (writes, no confirmation needed). Scopes manage_messages. Calls DELETE /channels/{{params.channel_id}}/pins/{{params.message_id}}.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id containing the message.
message_idstringyesId of the message to unpin.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
okboolean

Also retrieved by: "take that pinned post off the top", "stop highlighting a message that's no longer relevant", "clear a pin from the channel header", "remove something from the pinned list".

discord.list_pinned_messages

List every message currently pinned in a channel. Use when the user wants to see what's pinned, or find a message they remember pinning earlier. For unpinned history, use get_channel_messages.

Class read (reads only). Scopes view_channel. Calls GET /channels/{{params.channel_id}}/pins.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id to list pins from.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
messagesarray of object
messages[].authorobject
messages[].author.idstring
messages[].author.usernamestring
messages[].contentstring
messages[].idstring
messages[].timestampstring (date-time)

Also retrieved by: "what's currently pinned in this channel", "show me the highlighted posts", "see everything someone starred for later", "review the pinned list".

discord.add_reaction

React to a message with an emoji, as the bot. Use when the user wants to react, upvote, or acknowledge a message with an emoji instead of a reply. Accepts a unicode emoji or a custom emoji in name:id form.

Class write (writes, no confirmation needed). Scopes add_reactions. Calls PUT /channels/{{params.channel_id}}/messages/{{params.message_id}}/reactions/{{params.emoji}}/@me.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id containing the message.
emojistringyesUnicode emoji, e.g. "๐Ÿ‘", or a custom emoji as "name:id". URL escaped automatically.
message_idstringyesId of the message to react to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
okboolean

Also retrieved by: "drop an emoji on that message", "react to a post with a thumbs up", "upvote something with an emoji instead of replying", "acknowledge a message without writing anything".

discord.remove_reaction

Remove the bot's own reaction from a message. Use when the user wants to undo or take back a reaction the bot added. Does not remove other members' reactions.

Class write (writes, no confirmation needed). Scopes add_reactions. Calls DELETE /channels/{{params.channel_id}}/messages/{{params.message_id}}/reactions/{{params.emoji}}/@me.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id containing the message.
emojistringyesThe emoji to remove, same form as add_reaction.
message_idstringyesId of the message to remove the reaction from.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
okboolean

Also retrieved by: "take back an emoji the bot dropped", "undo a reaction that was added earlier", "clear an emoji off a message", "pull the bot's reaction back".

discord.list_guild_channels

List every channel in a Discord server: text, voice, and category channels, with ids and names. Use to browse a server's channels or resolve a channel name to its id. For one channel's own details, use get_channel.

Class read (reads only). Scopes view_channel. Calls GET /guilds/{{params.guild_id}}/channels.

Arguments:

ArgumentTypeRequiredNotes
guild_idstringyesServer (guild) id to list channels from, e.g. "1102938475610112233".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
channelsarray of object
channels[].idstring
channels[].namestring
channels[].topicstring
channels[].typeinteger

Also retrieved by: "what channels exist in this server", "show me every room in the server", "browse everything set up in this server", "see the full channel list for a server".

discord.get_channel

Get one channel's details by id: name, type, topic, and which server it belongs to. Use when the user asks about a specific channel. For every channel in a server, use list_guild_channels.

Class read (reads only). Scopes view_channel. Calls GET /channels/{{params.channel_id}}.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel or thread id, e.g. "1147582039481922560".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
guild_idstring
idstring
namestring
parent_idstring
topicstring
typeinteger

Also retrieved by: "what's this particular channel actually for", "tell me about one specific channel", "is this channel a voice or text one", "give me the details on a single channel".

discord.create_channel

Create a new channel in a server. Use when the user wants to make, start, or set up a channel. type 0 is a text channel, 2 is voice, 4 is a category; default is text. Pass parent_id to nest it under a category.

Class write (writes, no confirmation needed). Scopes manage_channels. Calls POST /guilds/{{params.guild_id}}/channels.

Arguments:

ArgumentTypeRequiredNotes
guild_idstringyesServer id to create the channel in.
namestringyesChannel name, e.g. "incident-2026-07". Lowercase letters, numbers, and hyphens, up to 100 characters.
parent_idstringnoOptional category channel id to nest this channel under.
topicstringnoOptional topic shown in the channel header.
typeintegernoChannel type: 0 text, 2 voice, 4 category. Default 0.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
namestring
typeinteger

Also retrieved by: "spin up a new text channel for this", "set up a voice room for the team", "open a fresh channel under a category", "start a channel for the incident responders", "get a new room going in the server".

discord.update_channel

Rename a channel, change its topic, or mark it NSFW. Use when the user wants to update, rename, or change settings on an existing channel. Does not move it between servers or delete it.

Class write (writes, no confirmation needed). Scopes manage_channels. Calls PATCH /channels/{{params.channel_id}}.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id to update.
namestringnoNew channel name.
nsfwbooleannoMark the channel as age restricted.
topicstringnoNew topic text.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
namestring
topicstring

Also retrieved by: "rename this channel to something else", "change the topic on a channel", "mark a channel as age restricted", "tweak the settings on an existing channel".

discord.delete_channel

Delete a channel and its entire message history. Use when the user wants to remove, delete, or get rid of a channel for good. Irreversible: unlike archiving a thread, a deleted channel cannot be brought back.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes manage_channels. Calls DELETE /channels/{{params.channel_id}}.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id to delete.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
okboolean

Also retrieved by: "get rid of a channel for good", "wipe out a room and everything in it", "remove a channel from the server entirely", "blow away an old channel we don't need".

discord.create_thread

Start a thread off an existing message, for a focused side conversation. Use when the user wants to open, start, or spin up a thread. auto_archive_duration is in minutes (60, 1440, 4320, or 10080); default 1440 (one day).

Class write (writes, no confirmation needed). Scopes create_public_threads. Calls POST /channels/{{params.channel_id}}/messages/{{params.message_id}}/threads.

Arguments:

ArgumentTypeRequiredNotes
auto_archive_durationintegernoMinutes of inactivity before auto-archive: 60, 1440, 4320, or 10080.
channel_idstringyesChannel id containing the message to thread from.
message_idstringyesId of the message the thread is created on.
namestringyesThread name, up to 100 characters.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
namestring
parent_idstring

Also retrieved by: "start a side conversation off one post", "spin up a thread under a message", "open a focused discussion branching off a post", "kick off a thread so replies don't clutter the channel".

discord.archive_thread

Archive a thread, closing it and hiding it from the active thread list. Use when the user wants to close, wrap up, or archive a thread that's done. History stays intact and searchable, and unarchive_thread reverses it.

Class write (writes, no confirmation needed). Scopes manage_threads. Calls PATCH /channels/{{params.thread_id}}.

Arguments:

ArgumentTypeRequiredNotes
thread_idstringyesThread id to archive.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
archivedboolean
idstring

Also retrieved by: "wrap up a thread that's done", "close out a side conversation", "shelve a thread nobody's replying to anymore", "mark a thread as finished".

discord.unarchive_thread

Reopen an archived thread so it shows in the active list again and accepts new messages. Use when the user wants to reopen, revive, or bring back a thread that was archived.

Class write (writes, no confirmation needed). Scopes manage_threads. Calls PATCH /channels/{{params.thread_id}}.

Arguments:

ArgumentTypeRequiredNotes
thread_idstringyesThread id to reopen.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
archivedboolean
idstring

Also retrieved by: "bring back a thread that got closed", "reopen a side conversation from before", "revive an old thread", "un-shelve a thread so it's active again".

discord.list_thread_members

List the user ids of everyone currently in a thread. Use when the user asks who is in a thread or how many people joined it. For a whole server's members, use list_guild_members.

Class read (reads only). Scopes view_channel. Calls GET /channels/{{params.thread_id}}/thread-members.

Arguments:

ArgumentTypeRequiredNotes
thread_idstringyesThread id to list members of.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
membersarray of object
members[].user_idstring

Also retrieved by: "who joined this thread", "see everyone following a side conversation", "how many people are actually in this thread", "who's part of that branch off the main channel".

discord.get_guild

Get a Discord server's details: name, owner, and description. Use when the user asks about a specific server as a whole, rather than one of its channels or members.

Class read (reads only). Scopes view_channel. Calls GET /guilds/{{params.guild_id}}.

Arguments:

ArgumentTypeRequiredNotes
guild_idstringyesServer (guild) id to fetch.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
descriptionstring
idstring
namestring
owner_idstring

Also retrieved by: "tell me about this particular server", "who owns this server", "what's the description on this server", "give me the basics on one server".

discord.list_guild_members

List members of a server with their ids, usernames, and nicknames. Use to browse who is in a server or resolve a display name to a user id. For one member's own details, use get_guild_member.

Class read (reads only). Scopes guilds.members.read. Calls GET /guilds/{{params.guild_id}}/members.

Arguments:

ArgumentTypeRequiredNotes
afterstringnoOnly members with a user id after this one, for paging.
guild_idstringyesServer id to list members from.
limitintegernoMaximum results per page, up to 1000. Default 100.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
membersarray of object
members[].joined_atstring (date-time)
members[].nickstring
members[].user_idstring
members[].usernamestring

Also retrieved by: "who is in this server", "show me everyone on this server", "pull up the full member list for a server", "browse everyone who's joined".

discord.get_guild_member

Get one server member's details by user id: username, nickname, roles, and when they joined. Use when the user asks about a specific person in a server. If you only have an id from a mention or a message, this resolves it.

Class read (reads only). Scopes guilds.members.read. Calls GET /guilds/{{params.guild_id}}/members/{{params.user_id}}.

Arguments:

ArgumentTypeRequiredNotes
guild_idstringyesServer id the member belongs to.
user_idstringyesUser id to look up, e.g. "823469175100112233".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
joined_atstring (date-time)
nickstring
rolesarray of string
user_idstring
usernamestring

Also retrieved by: "what's this person's nickname in the server", "look someone up by their id in a server", "what roles does this person hold here", "when did this member actually join".

discord.update_guild_member

Change a member's nickname, mute or deafen them in voice, or put them in a timeout until a given time. Use when the user wants to rename, mute, or timeout someone. For adding or removing a role, use add_role_to_member or remove_role_from_member instead.

Class write (writes, no confirmation needed). Scopes manage_nicknames, moderate_members. Calls PATCH /guilds/{{params.guild_id}}/members/{{params.user_id}}.

Arguments:

ArgumentTypeRequiredNotes
deafbooleannoServer-deafen the member in voice channels.
guild_idstringyesServer id the member belongs to.
mutebooleannoServer-mute the member in voice channels.
nickstringnoNew nickname. Empty string clears it.
timeout_untilstringnoRFC 3339 timestamp the timeout lifts at, e.g. "2026-08-01T00:00:00Z". Omit or set in the past to clear a timeout.
user_idstringyesUser id to update.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
communication_disabled_untilstring (date-time)
nickstring
user_idstring

Also retrieved by: "give someone a nickname in the server", "mute a person in voice chat", "put someone in timeout for a while", "silence a member for a set period", "change what a member is called here".

discord.kick_member

Remove a member from a server. Use when the user wants to kick or remove someone from a Discord server. The person can rejoin with a new invite; their message history stays. For a longer-lasting removal, use ban_member instead.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes kick_members. Calls DELETE /guilds/{{params.guild_id}}/members/{{params.user_id}}.

Arguments:

ArgumentTypeRequiredNotes
guild_idstringyesServer id to remove the member from.
user_idstringyesUser id of the person to kick.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
okboolean

Also retrieved by: "remove someone from the server", "boot a person out of the server", "get rid of a disruptive member", "show someone the door for now".

discord.ban_member

Ban a member from a server, removing them and blocking them from rejoining until unban_member is called. Use when the user wants to ban someone. Optionally deletes their recent messages across the server via delete_message_seconds (up to 604800, seven days).

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes ban_members. Calls PUT /guilds/{{params.guild_id}}/bans/{{params.user_id}}.

Arguments:

ArgumentTypeRequiredNotes
delete_message_secondsintegernoDelete this member's messages from the last N seconds, up to 604800 (7 days). Default 0, no deletion.
guild_idstringyesServer id to ban the member from.
user_idstringyesUser id of the person to ban.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
okboolean

Also retrieved by: "ban a troublemaker from the server for good", "block someone from ever rejoining", "permanently remove and lock out a member", "clean out someone's recent messages while banning them".

discord.unban_member

Lift a ban so the person can rejoin a server. Use when the user wants to unban, reinstate, or forgive someone who was previously banned. They still need a fresh invite link to actually come back.

Class write (writes, no confirmation needed). Scopes ban_members. Calls DELETE /guilds/{{params.guild_id}}/bans/{{params.user_id}}.

Arguments:

ArgumentTypeRequiredNotes
guild_idstringyesServer id to lift the ban on.
user_idstringyesUser id of the banned person.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
okboolean

Also retrieved by: "lift a ban on someone", "let a banned person back in", "forgive someone who was previously banned", "reverse a ban so they can rejoin".

discord.list_bans

List everyone currently banned from a server, with the reason if one was given. Use when the user asks who is banned or wants to review the ban list before unbanning someone.

Class read (reads only). Scopes ban_members. Calls GET /guilds/{{params.guild_id}}/bans.

Arguments:

ArgumentTypeRequiredNotes
guild_idstringyesServer id to list bans from.
limitintegernoMaximum results per page, up to 1000. Default 1000.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
bansarray of object
bans[].reasonstring
bans[].user_idstring
bans[].usernamestring

Also retrieved by: "who's currently banned from this server", "show me the ban list", "review who's been blocked from the server", "see the reasons behind past bans".

discord.list_guild_roles

List every role in a server with its id, name, and color. Use to browse the roles that exist or resolve a role name to its id before calling add_role_to_member.

Class read (reads only). Scopes view_channel. Calls GET /guilds/{{params.guild_id}}/roles.

Arguments:

ArgumentTypeRequiredNotes
guild_idstringyesServer id to list roles from.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
rolesarray of object
roles[].colorinteger
roles[].idstring
roles[].namestring
roles[].permissionsstring

Also retrieved by: "what roles exist in this server", "show me every role set up here", "browse the role list for a server", "what tags can members be given here".

discord.create_guild_role

Create a new role in a server. Use when the user wants to make or set up a role, for example to group members or gate permissions. color is a decimal RGB value; hoist shows the role as a separate group in the member list.

Class write (writes, no confirmation needed). Scopes manage_roles. Calls POST /guilds/{{params.guild_id}}/roles.

Arguments:

ArgumentTypeRequiredNotes
colorintegernoDecimal RGB color, e.g. 15158332 for red. Default 0 (no color).
guild_idstringyesServer id to create the role in.
hoistbooleannoDisplay members with this role separately in the sidebar.
mentionablebooleannoAllow anyone to @mention this role.
namestringyesRole name, e.g. "Moderator".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
colorinteger
idstring
namestring

Also retrieved by: "set up a moderator role", "make a new tag members can be given", "build a role to gate permissions", "add a fresh role to the server".

discord.update_guild_role

Rename a role or change its color, hoist, or mentionable settings. Use when the user wants to update, rename, or recolor an existing role. Does not change which members hold the role; for that use add_role_to_member or remove_role_from_member.

Class write (writes, no confirmation needed). Scopes manage_roles. Calls PATCH /guilds/{{params.guild_id}}/roles/{{params.role_id}}.

Arguments:

ArgumentTypeRequiredNotes
colorintegernoNew decimal RGB color.
guild_idstringyesServer id the role belongs to.
hoistbooleannoDisplay members with this role separately in the sidebar.
mentionablebooleannoAllow anyone to @mention this role.
namestringnoNew role name.
role_idstringyesRole id to update.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
colorinteger
idstring
namestring

Also retrieved by: "recolor an existing role", "rename a role in the server", "change whether a role is mentionable", "tweak the settings on a role".

discord.delete_guild_role

Delete a role from a server entirely. Use when the user wants to remove or get rid of a role. Every member holding it loses it immediately, and any permission or mention tied to the role stops working. Permanent.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). Scopes manage_roles. Calls DELETE /guilds/{{params.guild_id}}/roles/{{params.role_id}}.

Arguments:

ArgumentTypeRequiredNotes
guild_idstringyesServer id the role belongs to.
role_idstringyesRole id to delete.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
okboolean

Also retrieved by: "get rid of a role entirely", "remove a tag from the server for good", "wipe out a role everyone had".

discord.add_role_to_member

Give a server member a role. Use when the user wants to assign, grant, or add a role to someone. Resolve the role id with list_guild_roles first if only the role name is known.

Class write (writes, no confirmation needed). Scopes manage_roles. Calls PUT /guilds/{{params.guild_id}}/members/{{params.user_id}}/roles/{{params.role_id}}.

Arguments:

ArgumentTypeRequiredNotes
guild_idstringyesServer id the member belongs to.
role_idstringyesRole id to add.
user_idstringyesUser id to grant the role to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
okboolean

Also retrieved by: "give someone a role", "tag a person with the moderator role", "grant a member a new role", "assign a role to someone in the server".

discord.remove_role_from_member

Take a role away from a server member. Use when the user wants to revoke, remove, or unassign a role from someone. The member and their other roles are untouched.

Class write (writes, no confirmation needed). Scopes manage_roles. Calls DELETE /guilds/{{params.guild_id}}/members/{{params.user_id}}/roles/{{params.role_id}}.

Arguments:

ArgumentTypeRequiredNotes
guild_idstringyesServer id the member belongs to.
role_idstringyesRole id to remove.
user_idstringyesUser id to remove the role from.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
okboolean

Also retrieved by: "take a role away from someone", "strip a tag off a member", "revoke someone's role", "pull a role from a person's profile".

discord.get_current_user

Get the identity of the connected Discord account itself: its id, username, and discriminator. Use when the user asks which account or bot this integration is running as. For someone else, use get_user.

Class read (reads only). Scopes identify. Calls GET /users/@me.

Takes no arguments.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
discriminatorstring
idstring
usernamestring

Also retrieved by: "which account is this bot running as", "what's my own bot identity here", "who am I logged in as on discord", "show me this integration's own profile".

discord.get_user

Look up a Discord user by id, across the whole platform: their username and discriminator, not scoped to one server. Use when the user asks who someone is by their raw id. For a member's roles and nickname inside a specific server, use get_guild_member instead.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /users/{{params.user_id}}.

Arguments:

ArgumentTypeRequiredNotes
user_idstringyesDiscord user id to look up, e.g. "823469175100112233".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
discriminatorstring
idstring
usernamestring

Also retrieved by: "look up someone by their raw discord id", "who is this person across all of discord", "find someone's username from their id", "resolve an id to a real account".

discord.create_channel_invite

Create an invite link for a channel. Use when the user wants to invite, share access, or generate a link for someone to join a server. max_age is seconds until it expires (0 means never); max_uses caps how many times it can be used (0 means unlimited).

Class write (writes, no confirmation needed). Scopes create_instant_invite. Calls POST /channels/{{params.channel_id}}/invites.

Arguments:

ArgumentTypeRequiredNotes
channel_idstringyesChannel id to create the invite for.
max_ageintegernoSeconds until the invite expires. 0 means never. Default 86400 (1 day).
max_usesintegernoMaximum number of uses. 0 means unlimited. Default 0.
temporarybooleannoKick invited members automatically when they go offline unless a role was granted.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
channel_idstring
codestring
max_ageinteger
max_usesinteger

Also retrieved by: "make an invite link for this channel", "generate a way for someone to join the server", "set up a link that expires in a day", "give me a join link with limited uses".

discord.list_guild_invites

List every active invite link for a server, with the channel each one leads to and how many times it has been used. Use when the user wants to see, audit, or review a server's invite links.

Class read (reads only). Scopes manage_guild. Calls GET /guilds/{{params.guild_id}}/invites.

Arguments:

ArgumentTypeRequiredNotes
guild_idstringyesServer id to list invites for.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
invitesarray of object
invites[].channel_idstring
invites[].codestring
invites[].max_usesinteger
invites[].usesinteger

Also retrieved by: "what invite links are active right now", "audit the invites for this server", "show me every join link out there", "review who's been inviting people lately".

discord.delete_invite

Revoke an invite link so it can no longer be used to join. Use when the user wants to revoke, cancel, or kill an invite link. A new one can be created immediately with create_channel_invite, so this does not lock people out of a server for good.

Class write (writes, no confirmation needed). Scopes manage_guild. Calls DELETE /invites/{{params.invite_code}}.

Arguments:

ArgumentTypeRequiredNotes
invite_codestringyesThe invite's code, e.g. "hK3xQ7mZ" (the part after discord.gg/).

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
channel_idstring
codestring

Also retrieved by: "kill an invite link", "revoke a join link before it's abused", "cancel an invite code", "shut down a link someone shared by mistake".