Compare two entries
compare_submissionsTwo 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
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | The first entry id: a UUID, as get_competition, get_leaderboard and search list them | |
| b | Yes | The second entry id: a UUID, as get_competition, get_leaderboard and search list them | |
| path | No | A file to diff in full (its unified diff in the answer's file) |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes | ||
| diff | Yes | ||
| file | Yes | ||
| delta | Yes | ||
| diff_closed | Yes | ||
| same_competition | Yes | ||
| cost_delta_micro_usd | Yes |