Skip to main content
Glama

Search code and transcripts

search
Read-onlyIdempotent

Full-text search over the snapshot text of the entries the caller may open and the transcript turns of those entries the caller owns or administers (an admin's API key finds a rival's turns only from its deadline; web-search syntax: words, "a phrase", -excluded, or). Each hit names the entry and either a file with its line range or a session turn, with a snippet whose matches sit between « and ». An entry's code (its snapshot tree and blame) is its owner's and admins' only, at every time: of each competition only the winning entry's code (rank 1 of its final standings) is published, to everyone, once the competition settles. Its action log opens to everyone once its competition's deadline has passed (on a competition with a running phase, a live replay of its sealed final runs, once its results are published at the replay's end). Before then each opens only to the entry's owner (send your account's API key as the x-api-key header of the MCP connection) and to an admin's signed-in session: an admin's API key reads its action log but not its code until then. A closed part answers 403: before the deadline with the date its action log opens (none yet while a running phase's results are not out), after it, for a rival's code that is not the published solution, with no date. Its build transcripts (the sessions and turns, their ATIF downloads and the transcript text a search reads) never open that way: make.fun does not publish them, not at the deadline and not for the winners, so only the entry's owner and admins read them, at any time, and everyone else gets 403 with no date. An admin reads a rival's transcripts with a signed-in session inside the admin window, before the deadline and after it, each read recorded in the audit log; an admin's API key, this connection's included, is refused them (403: a signed-in session is needed) until the deadline and reads them from it.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "q": "<q>"
    },
    "name": "search"
  }
}

Input Schema

NameRequiredDescriptionDefault
qYesThe query, e.g. "trailing stop" -test
kindNosnapshot (code), transcript (sessions: your own entries', or any entry's for an admin, a key's from its deadline) or all (default)
limitNoPage size, 1 to 100 (default 20)
cursorNoThe previous page's next_cursor, for the next page (keep the other arguments the same)
submissionNoOnly this entry (its id)
competitionNoOnly entries of this competition (its slug)

Output Schema

NameRequiredDescriptionDefault
kindYes
itemsYes
queryYes
next_cursorYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / kind / description
      Previous value: -"snapshot (code), transcript (sessions) or all (default)"New value: +"snapshot (code), transcript (sessions: your own entries', or any entry's for an admin, a key's from its deadline) or all (default)"
  2. First observed

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety is covered; the description goes well beyond with 403 semantics, deadline/reveal timing, and audit-log recording. But the disclosure is dense and repetitive rather than cleanly organized, and the audit-log side effect of reads sits awkwardly against the readOnly framing without being clarified.

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

Conciseness2/5

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

The purpose is front-loaded, but the paragraph then runs into a wall of run-on access-policy prose that repeats the 403 rules for code, action logs and transcripts across multiple clauses. Substantial text is spent on permission minutiae that could be compressed into a short rules list, hurting scanability.

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?

For a search tool with an output schema already covering return shape, the description supplies the missing pieces: query syntax, hit format (entry plus file/line range or session turn, snippet with « » delimiters), and the full visibility matrix. It is complete on permissions, with the only gap being no pointer to sibling tools for fetching whole files or turns.

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

Parameters3/5

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

Schema coverage is 100%, so all six parameters are already documented, giving a baseline of 3. The description adds real value only for `q`, spelling out web-search syntax (words, quoted phrase, -excluded, or) that the schema's bare example does not fully convey; the filters (kind, submission, competition) are only gestured at.

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?

The opening sentence states a specific verb and resource: "Full-text search over the snapshot text ... and the transcript turns", and scopes it to "the entries the caller may open" and "those entries the caller owns or administers". That distinguishes it reasonably from siblings like get_transcript_turns or get_tree, though it never names them explicitly.

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

Usage Guidelines3/5

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

Usage is implied through the elaborate access-condition narrative (what you can and cannot search, and when), which tells an agent when results are available. However, there is no explicit statement of when to choose search over alternatives such as list_transcripts, get_tree, or get_action_log for retrieving the same content.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.