Official scripts
Explore our curated collection of scripts
List Discord servers
Lists the Discord servers the logged-in account has access to (name + guildId), read from the server sidebar. Requires being logged in.
create_forum_post
Create a post (thread) in a Discord forum channel, with a title and an opening message. Forum channels reject plain messages — a post is the only way to write to one, which is why discord.com/post_message cannot target a forum. Returns the new post's threadId, name, url, parentId and the opening message id, read from Discord's own creation response. Reply to an existing post with discord.com/post_message against the post's own url (a post is itself a channel), and list a forum's posts with discord.com/list_forum_posts.
reply_to_message
Reply to a specific Discord message, addressed by its own url. Unlike discord.com/post_message, this creates a proper reply — visible as a reference to the original message rather than a plain new post in the channel. Returns the new message's id, channel id, timestamp and content, plus the id of the message it replied to.
Find Discord member ID by name
Resolves a Discord member's userId from their name, through a channel's mention autocomplete (@name). Useful to build a <@id> ping. Requires being logged in.
Read Discord messages
Reads the most recent messages of a Discord channel (author, timestamp, text), newest first, scrolling up to load more until the requested count. Requires being logged in. Also reads a THREAD or a FORUM POST: both are channels in their own right, so pass the post's url (from discord.com/list_forum_posts) and you get its replies plus the opening post, newest first — there is no separate thread-reading script. It does NOT accept a forum channel itself, which lists posts rather than messages: use discord.com/list_forum_posts for that.
Delete Discord message
Deletes a single Discord message by id (e.g. to clean up a message you sent). Requires being logged in as the message's author or having Manage Messages in the channel.
List Discord channels
Lists a Discord server's channels and categories from its sidebar (name, channelId, category, channel URL). Takes a guildId. Requires being logged in.
Discord login
Opens the Discord web app in the browser and reports whether the account is signed in, together with the username and display name it is signed in as. Run this first: the other Discord scripts need the web app open on a signed-in session.
Post a Discord message
Posts a text message in a Discord channel, addressed by channel URL. Requires being logged in to Discord. Returns `sent` plus the created message's messageId, channelId, timestamp and content as Discord stored it. This is a write: the message appears in the channel and is visible to everyone who can see it. Discord's own message limits are checked before anything is sent, so a message that is empty or whitespace-only, or longer than 2000 characters, is refused straight away with a clear reason.
edit_message
Edit the text of one of your own Discord messages, addressed by its url. Discord marks an edited message with an "(edited)" tag visible to everyone. Returns the message's id, channel id, the new content as Discord stored it, and the edit timestamp. Only your own messages can be edited — Discord's UI offers no edit control on anyone else's.
create_channel
Create a channel in a Discord server — text, voice, announcement, stage or forum — optionally inside a category. Requires the Manage Channels permission in that server. Returns the created channel's channelId, name, type, url, parentId and the guildId, read from Discord's own creation response rather than the sidebar, plus already_present when a channel of that name and type already exists in the target category (it is reported, not duplicated — Discord itself allows duplicate channel names). Note Discord lowercases and hyphenates text/forum channel names, so the returned name may differ from the one you passed.
add_reaction
React to a Discord message with a unicode emoji, or remove your own reaction with remove:true. Takes the message's own url, as copied from Discord or returned by discord.com/read_messages. Returns the emoji, the message and channel ids, whether your reaction was already there before this ran, and the reaction's count afterwards. Reactions are visible to everyone who can see the channel. Supports a small set of common emoji rather than any glyph, since Discord's picker only accepts an emoji name to search, not a pasted character. Does not work on a forum post's own opening message, whose context menu is shaped differently from a regular message's — react to a reply in the post instead.
send_dm
Send a direct message to a Discord user, addressed by their username. Opens (or reuses) the one-to-one DM conversation and posts the message there. Returns sent, the created message's messageId, the DM channelId, timestamp, and the content as Discord stored it, plus the recipient's resolved handle so the message is provably not sent to a near-name match. This is a write and the recipient is notified: confirm the exact recipient and text with the user before running, and note that approval for one message does not carry over to another.
list_forum_posts
List the posts (threads) in a Discord forum channel, newest first. Forum channels hold posts rather than a flat message history, which is why discord.com/read_messages refuses them — use this instead, then pass a returned post's url to read_messages to read its replies (a post is itself a channel). Returns per post: threadId, name, url, createdAt (derived from the thread's snowflake, so exact and locale-independent), authorName, messageCount (Discord's reply count, which excludes the opening post), openingMessage and tagNames. Reads the rendered forum grid, because active forum posts are synced over Discord's gateway and never appear in a REST response; that grid exposes no user ids, tag ids, or archived/locked/pinned state, so those are deliberately not returned.
get_member_list
List the members shown in a Discord server's member sidebar for a given channel. Returns per member their userId, display name without the role badges the row also renders, and whether Discord marks them as an app. userId is null for a member on a default avatar, which carries no id to read. Discord only sends the sidebar the members near the scroll position, so a large server returns those rendered while scrolling rather than a guaranteed roster; complete says which happened, and offline members are omitted where Discord collapses them. The sidebar's role grouping is not returned, as the headings expose no stable handle.
search_messages
Search a Discord server's message history, newest first, using Discord's own search. The query accepts Discord's search syntax (plain words, or filters like from:, in:, has:, before:, during:), so scoping to a channel or author is done in the query itself. Returns per hit: messageId, channelId, url, author (id, handle, name), content, timestamp, plus total_results as Discord reports it and complete, which is false when more hits exist beyond the page read. Discord returns search hits with surrounding context messages; only the hits themselves are returned.
Detect company's ATS (Greenhouse/Lever/Ashby)
Given a company's careers page URL, detect whether it's backed by Greenhouse, Lever, or Ashby and extract the board slug usable with greenhouse.io/get_company_jobs, lever.co/get_company_jobs, or ashbyhq.com/get_company_jobs. Detection combines two signals: network requests fired by the page (Greenhouse/Lever client-side API calls, seen e.g. on discord.com/careers) and embedded links to the ATS's own hosted board (seen e.g. on notion.com/careers linking jobs.ashbyhq.com/notion). Many companies fully proxy their ATS server-side with no client-visible signal (e.g. careers.airbnb.com, retool.com/careers) - for those this returns platform: null, which is a legitimate outcome, not a failure. Point this at the company's own marketing careers page, not at a guessed ATS URL: several large companies (e.g. Airbnb, Coinbase) configure their native Greenhouse board (boards.greenhouse.io/<slug>) to redirect to their custom-branded career site, which then also yields platform: null.
Send Slack message
Post a message to a channel or DM, identified by name ('social', '#social'), channel/DM id (C…/D…), or a user (@handle or U…) for a direct message. Pass threadTs to reply inside a thread (with broadcast to also send it to the channel). Returns the new message ts, channel id and permalink. Requires login.
Get Slack message permalink
Get the shareable permalink URL for a message by channel (name or id) and message ts. Requires login.
Open Slack DM
Open (or fetch) a direct message with one user, or a group DM with several, given as @handles or user ids (U…). Returns the conversation id you can then post to. Requires login.
Join subreddit
Join (subscribe to) a subreddit by name. If you're already a member, nothing changes and changed is returned as false. Runs only via the browser extension, not the hosted cloud browser.
Get LinkedIn conversation attendees
List the participants of a classic LinkedIn messaging conversation (NOT Sales Navigator) by thread URL from list_inbox — mainly useful for group chats. Returns each attendee's name, profile URL and member urn, plus whether the thread is a group.
Subscribe to Substack publication
Subscribe the logged-in account to a Substack publication's free tier.
Join Slack channel
Join a public channel (by name or id). Returns the channel id and name. Requires login.
Add Slack reaction
Add an emoji reaction to a message by channel (name or id) and message ts. Emoji name without colons (e.g. 'thumbsup'). Requires login.
