Skip to main content
Glama

Compare two entries

compare_submissions
Read-onlyIdempotent

Two entries side by side: scores, cost and authorship, b minus a per phase, and the file diff of their snapshots (added, removed and modified files with line counts) when the caller may open both; with path, that file's unified diff. Each side's repo, commit and entrant follow get_submission (source_withheld per side: the empty string for a rival's side but its competition's winning entry once the competition settles; the owner is named on both sides, null only on a takedown), each side's total build cost and build time public to every caller while its tokens, models and cost per model follow metrics_withheld per side, and the cost difference comes from the public totals for every caller (the build meter's figures when both sides are metered, else the transcripts' totals), null only when a side is unpriced or when a one-metered pair's metered side is withheld. diff_closed says why the diff is closed (null when it is open): internal, removed, withheld (a side's code holds a form of one of its entrant's own secrets, or its history has not been read for every one of them: that side's access.withheld_unchecked; either way no copy of it is published, to anyone), before_deadline or private (a rival's side past the deadline: of each competition only the winning entry's code is published, once the competition settles); the stricter side's reason. 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": {
      "a": "<a>",
      "b": "<b>"
    },
    "name": "compare_submissions"
  }
}

Input Schema

NameRequiredDescriptionDefault
aYesThe first entry id: a UUID, as get_competition, get_leaderboard and search list them
bYesThe second entry id: a UUID, as get_competition, get_leaderboard and search list them
pathNoA file to diff in full (its unified diff in the answer's file)

Output Schema

NameRequiredDescriptionDefault
aYes
bYes
diffYes
fileYes
deltaYes
diff_closedYes
same_competitionYes
cost_delta_micro_usdYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / diff_closed / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "internal",
      -      "removed",
      -      "withheld",
      -      "before_deadline"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "internal",
      +      "removed",
      +      "withheld",
      +      "before_deadline",
      +      "private"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. First observed

TDQS

A3.8/5.0
Behavior5/5

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

Annotations only cover the safety profile (read-only, idempotent, closed-world), and the description goes far beyond them: 403 semantics with and without dates, source_withheld and metrics_withheld per side, diff_closed reason vocabulary (internal, removed, withheld, before_deadline, private), the x-api-key header requirement, and the admin signed-in-session vs API-key distinction with audit logging. For a read tool this is unusually complete disclosure of conditional behavior.

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 description is a single sprawling paragraph of deeply nested parentheticals, with no paragraph breaks or front-loaded structure past the first clause. Substantial portions describe sibling behavior (action log opening, build transcripts, admin API-key rules) that does not help an agent call compare_submissions and pushes the actionable content far down.

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?

An output schema exists, so return values need not be explained, and the description still covers access, withholding, diff-closure reasons and cost sourcing thoroughly. It loses a point only because the surplus material about other tools' access rules dilutes rather than completes the picture an agent needs to invoke this tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning the schema lacks: 'b minus a per phase' fixes the direction of every delta, and 'with path, that file's unified diff' explains what the optional path switches the response into. The a/b/vs path interaction is clearer than the schema alone.

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 clause gives a specific verb and resource: 'Two entries side by side: scores, cost and authorship, b minus a per phase, and the file diff of their snapshots', and it distinguishes itself from get_submission by pointing at it for per-side detail. The purpose is clear once extracted, but the signal is buried in a long run-on sentence rather than stated crisply.

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 only implied: the reader must infer that this is the tool for pairwise comparison rather than two get_submission calls, and 'with path, that file's unified diff' implicitly selects the single-file mode. There is no explicit when-to-use / when-not-to-use statement or named alternative for the comparison case, unlike get_submission which is referenced only for field semantics.

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.