Skip to main content
Glama

Browse an entry snapshot

get_tree
Read-onlyIdempotent

The snapshot of an entry's repository at its commit: a directory listing (each entry's size, file count and blob sha256), a file (its text, cut at 1 MiB, with per-file authorship counts; binary files carry no text; download is the path on this site that serves its bytes whole, GET /api/submissions/:id/raw/) or a symlink (its target, never followed; download null: never served raw). 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": {
      "submission_id": "<submission_id>"
    },
    "name": "get_tree"
  }
}

Input Schema

NameRequiredDescriptionDefault
pathNoA path in the snapshot, e.g. src/bot.ts (empty or absent: the root directory)
submission_idYesThe entry (submission) id: a UUID, as get_competition, get_leaderboard and search list them

Output Schema

NameRequiredDescriptionDefault
pathYes
typeYes
submission_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.9/5.0
Behavior5/5

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

Beyond readOnly/idempotent annotations, it discloses detailed access-control behavior: code and action logs open on different schedules, transcripts never publish, admin API keys are refused transcripts before the deadline, and each admin transcript read is audited. It also explains binary-file handling, the 1 MiB text cutoff, symlink non-following, and the raw download endpoint.

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

Conciseness3/5

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

The opening sentence front-loads the core return shapes, but the remainder is a dense, run-on block of access-control rules with repetition and nested clauses. The content is valuable but poorly structured and harder to parse than necessary.

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

Completeness5/5

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

For a tool with a complex, time- and role-dependent permission model, the description is extremely complete: it covers all three result shapes, publication timing, 403 behavior, transcript exceptions, and admin session requirements. Output-schema coverage means return values need not be re-explained, yet the description still clarifies them usefully.

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 both parameters are already fully documented by the schema. The description adds return-shape context for path types but does not add syntax or constraints beyond what the schema supplies, making the baseline 3 appropriate.

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 resource—the snapshot of an entry's repository at its commit—and enumerates the three return shapes (directory, file, symlink). It is clearly distinguishable in content from get_blame, get_submission, and search, though it never names those siblings 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?

The description gives extensive conditions for when data becomes accessible (deadline, settlement, owner/admin status) and what a 403 means. It does not, however, say when to choose get_tree over get_blame, get_submission, or search for retrieval tasks; that routing is left implicit.

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.