Skip to main content
Glama
Guildora
by az-xx

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DISCORD_TOKENYesBot token from Discord Developer Portal (Bot > Reset Token).
GUILDORA_HOSTNoHTTP bind address.127.0.0.1
GUILDORA_PORTNoHTTP port.8085
GUILDORA_PACKSNoComma-separated list of packs to enable; use 'all' to enable everything.core
DISCORD_GUILD_IDNoDefault Discord server ID, so tools may omit the guild. Not needed if the bot is in one server.
GUILDORA_LOG_LEVELNoLog level: 'error', 'warn', 'info' or 'debug'. Logs go to stderr only.info
GUILDORA_READ_ONLYNoSet to 'true' to expose only non-mutating tools.false
GUILDORA_TRANSPORTNoTransport mode: 'stdio' or 'http'.stdio
GUILDORA_HTTP_TOKENNoRequire 'Authorization: Bearer <token>' over HTTP. Must be at least 16 characters.
GUILDORA_SCAN_LIMITNoMax messages scanned when Discord's server search is unavailable (100-10000).1000

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

Guildora manages a Discord server through a bot. Channel, role, member, category and emoji arguments accept an ID, a mention (<#id>, <@&id>, <@id>) or a name; ambiguous names return the candidates. Destructive tools (delete, kick, ban, bulk delete) return a dry run unless called with "confirm": true. Show the dry run to the user before confirming. Lists are paginated: pass next_cursor back as "cursor" to get more. Enabled packs: core. Other packs (channels, roles, moderation, threads, voice, webhooks, invites, emoji, insights) are off; the user can enable them with GUILDORA_PACKS.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_server_infoA

Overview of a Discord server: owner, member count, boost tier, channel/role/emoji counts, the bot's permissions and which privileged intents are on. Call this first to orient yourself. If the bot is in several servers and none is the default, the error lists them.

list_channelsA

Lists server channels in sidebar order (categories with their channels), with IDs and types. Filter by type, category or a name fragment; type "thread" lists active threads (archived ones: list_threads). Use get_channel for details of one channel.

get_channelA

Details of one channel, category, thread or forum post: topic, category, slowmode, voice settings and who is connected, forum tags, thread state, and which key permissions the bot lacks there. Works for archived threads by ID or link.

list_rolesA

Lists server roles from highest to lowest with ID, position, color, flags and notable permissions. Marks the bot's highest role: the bot can only manage roles below it.

list_membersA

Lists server members with IDs, roles and join date. With "query", searches usernames and nicknames that start with the text (no special intent needed). Without a query it pages through all members, which needs the Server Members intent. "role" keeps only members with that role. Use get_member for one member.

get_memberA

Full details of one server member: names, account and join dates, all roles, timeout, voice channel, boosting, key permissions, and whether the bot can kick/ban/timeout them (role hierarchy).

read_messagesA

Reads recent messages from a channel, thread, forum post or DM, shown oldest first with IDs, authors, replies, attachments (names and IDs; get_message gives URLs), embeds and reactions. Page with before/after/around (message ID or ISO date). pinned: true lists pinned messages instead. To find messages by text or author, use search_messages.

get_messageA

Fetches one message by ID or link, with attachments (IDs, sizes, URLs), embeds, reactions and the message it replies to. include_replies: true also scans later messages for replies to it and says how many it scanned.

get_attachmentA

Opens a message's attachments so you can see them: images (screenshots, photos) come back as images, scaled down to a readable size; text files (logs, code, JSON, CSV) come back as text. Other files are listed with their size and URL. Pick one with "attachment" (ID or file name), or get all (up to 4 images).

search_messagesA

Finds messages by text, author, mentions, attachments/links (has), pinned state and date range. Uses Discord's server-wide search when available (whole history, all channels). Otherwise, or if scan: true, it scans one channel's history up to scan_limit and states exactly how much it scanned. Results include message IDs and channels; use get_message or read_messages around=ID for context.

recent_activityA

Shows which channels and threads had messages from people since a time ("24h" by default, or "7d", an ISO date), newest first, with how many messages and people and the latest message (include_bots adds bot activity). Use it to see what is going on without opening channels one by one; then read_messages.

get_new_messagesA

Returns messages that arrived across the server (or a channel, category or forum) since your last call, oldest first, from what Guildora received live during this session. Pass the returned next_cursor next time to get only newer ones. only_mentions keeps messages that mention or reply to the bot. For older history use recent_activity or read_messages.

list_unansweredA

Finds channels, tickets, threads and forum posts where the latest message from a person is not from staff, i.e. someone is waiting for a reply; sorted by longest wait. Staff = members with staff_roles, or by default anyone with Administrator, Manage Server, Manage Channels, Manage Messages or Timeout Members. Bot messages are ignored unless bot_replies_count is true.

send_messageA

Sends a message to a channel, thread, forum post or a user's DMs (pass "user"). Supports replies, up to 10 embeds and 10 file attachments (local path in stdio mode, https URL, or base64). Content max 2000 characters. @everyone/@here only ping if mention_everyone is true. Returns the new message ID and link. To start a new forum post, use create_thread.

edit_messageA

Edits a message the bot sent (content and/or embeds). suppress_embeds hides link previews on any message (needs Manage Messages for others' messages). Bots cannot change other users' text.

delete_messageA

Deletes one message (the bot's own, or anyone's with Manage Messages). Destructive: returns a dry run unless confirm is true. For many messages use bulk_delete_messages (moderation pack).

add_reactionC

Reacts to a message with a Unicode or custom server emoji.

remove_reactionA

Removes a reaction from a message: the bot's own by default, or another member's (needs Manage Messages).

pin_messageB

Pins a message (pinned: true, default) or unpins it (pinned: false). Max 50 pins per channel.

check_accessA

Explains channel access after roles and overwrites are combined. With "member" or "role": what they can and cannot do there, and which overwrites cause it. Without either: who can see the channel (roles, specific members, and a member count when available). Use it to check private ticket or staff channels.

Prompts

Interactive templates invoked by user choice

NameDescription
server_digestSummarise what happened in the server recently and what needs attention.
triage_forumReview the posts of a forum (bug reports, questions, suggestions) and propose next steps.
reply_queueFind tickets and conversations waiting for a staff reply and draft answers.
catch_upSummarise messages that arrived during this session, mentions of the bot first.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 20 tools

Disambiguation4/5

Most tools target a distinct resource+action, and the four message-reading tools (read_messages, search_messages, recent_activity, get_new_messages) are separated by explicit descriptions of when to use each. However, list_unanswered and recent_activity both answer 'what needs attention', and get_message vs read_messages around=ID create mild overlap that requires reading descriptions to resolve.

Naming Consistency4/5

Mostly a predictable verb_noun snake_case pattern (list_channels, get_channel, send_message, delete_message, pin_message). A few deviations break the pattern: recent_activity is a bare noun phrase and list_unanswered uses verb_adjective rather than verb_noun.

Tool Count4/5

At 20 tools it sits at the top of the comfortable range, but each tool maps to a recognizable Discord operation (read, send, edit, react, moderate, inspect). The count is slightly heavy given several read-path variants that could be consolidated.

Completeness3/5

Read/inspect and message lifecycle are well covered, but write-side moderation and structure are missing: no kick/ban/timeout, no role assignment or channel/thread creation. Worse, send_message tells the agent to 'use create_thread' and delete_message points at bulk_delete_messages, neither of which exists in this surface — real dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues