Skip to main content
Glama

search

Find Discord archive messages by substring across content, embeds, or author. Restrict results to a specific server or channel to narrow scope.

Instructions

Substring search over the archive (message content, embeds, author).

Without scope this spans every archived server. Use server= or channel= to restrict; every hit carries its server_id/server_name.

Args: query: search term (substring match; % and _ match literally). server: optional server ID or name (case-insensitive, unique substring ok) to restrict to. channel: optional channel ID/URL to restrict to (applies within the server scope, if any). limit: max hits (default 50). Returns: Dict: {"hits": [ {id, server_id, server_name, channel_id, author_name, ts, content}, ... ]}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
serverNo
channelNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that % and _ match literally (no wildcard semantics), that server matching is case-insensitive with unique-substring tolerance, that hit count is capped by limit (default 50), and what each hit contains. It does not explicitly label the operation read-only or describe truncation/ordering behavior when hits exceed limit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core behavior and scoping rule in two sentences before the Args/Returns blocks, which are well structured. The Returns section partially duplicates what the parameter list already implies, but nothing is wasted enough to be a problem.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description is complete enough for a correct call: it documents all arguments, the scoping model, and the return dictionary shape. The remaining gap is behavioral detail around result truncation and ordering when limit is hit, which an agent would need for large archives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: query is a substring match with literal % and _, server accepts ID or case-insensitive name/unique substring, channel accepts an ID or URL and applies within the server scope, and limit documents its default of 50. Every parameter gains meaning beyond the bare schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('substring search') and resource ('the archive'), and enumerates what is searched: message content, embeds, author. It is clear this is the discovery tool, distinct from listing-style siblings like recent or media, though it never names an alternative outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly explains that without scope the search spans every archived server, and directs the agent to server= or channel= to restrict, including how channel interacts with server scope. It stops short of stating when NOT to use it (e.g., versus recent) or any rate/result-ceiling guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.