Skip to content

Search

search_messages uses Discord's native guild search endpoint rather than scanning a recent-message window. It requires at least one substantive filter and supports content, channel, author, mention, reply, attachment, embed, link, pin, message-ID, and sort filters. The connector accepts at most 25 filters of each list type through MCP and at most 25 returned messages per request, even where Discord permits larger filter arrays.

Search is scoped before the request leaves the process. If a local channel allowlist exists and the call omits channelIds, the connector injects the exact allowlist into Discord's request. A caller-supplied channel list must be an exact subset. If the configured allowlist exceeds Discord's channel-filter capacity, the caller must provide a bounded subset instead of falling back to guild-wide search.

Results include message content, author identity, jump URLs, counts, and compact attachment metadata. They omit attachment URLs, raw embeds, raw components, reactions, and Discord's member payload. Discord can report approximate totals, return fewer results than requested, or answer with an indexing status. The connector advances pagination by the requested page size and returns indexing progress plus a retry delay without sleeping inside an MCP call.

Discord restricts native search based on the application's Message Content privileged intent. get_connector_status, online doctor, and setup report whether the application flags confirm that intent. See Discord's message search reference.

recall_conversation turns a vague recollection into one bounded live retrieval without creating an archive or making the caller manually merge searches. It accepts one exact permitted guild, one to five distinct literal phrase variants, optional exact channel and author subsets, optional explicit-offset timestamp bounds, a bounded Discord word-distance allowance, up to five ranked targets, and one to five current messages on each side. Each phrase uses the official relevance sort with a fixed candidate ceiling. The connector applies exact local search scope before every Discord request, excludes age-restricted search, deduplicates targets, then ranks phrase coverage before scaled reciprocal rank, recency, and exact message ID.

Every phrase must finish before any match is returned. If Discord reports that one search index is still building, the connector discards earlier partial candidates and returns only content-free progress and retry timing. Search phrase text remains input-only: results identify phrases by one-based indexes and include per-phrase counts without echoing the phrases, memory, names, profiles, or raw Discord payloads.

For each ranked target, the connector refetches the exact current channel and an around page through Discord's Get Channel Messages contract. The channel must remain in the exact guild, locally readable, and non-age-restricted. The target must occur exactly once and its author identity, bot flag, content, timestamps, type, and rich-object counts must still match the indexed snapshot. Malformed, duplicate, cross-channel, cross-guild, missing, or changed evidence rejects the complete result instead of combining stale search data with current context. Successful context is oldest to newest and contains only exact IDs, content, timestamps, message type, bot and system flags, reply target, rich-object counts, and a canonical jump link.

This is literal Discord search, not semantic retrieval, embeddings, a background sync, or complete history. It depends on useful caller-supplied variants, Discord's index and approximate totals, and a bounded point-in-time context page. The recall_discord_conversation prompt offers a model-neutral ergonomic path: it treats one bounded memory as untrusted literal input, derives two to five concise variants, calls recall_conversation exactly once, stops on indexing, explains evidence and inference separately, and forbids every additional Discord read or write. Compatible hosts can complete its exact guild ID from configured read scope.

Canonical source: docs/reference.md

Documentation generated for guildcontrol@0.0.0. Canonical source and edit history remain in the public repository. GuildControl is an independent project and is not affiliated with or endorsed by Discord Inc. Discord is used only to identify the platform that GuildControl connects to.