metaculus-bot-review
Review how a Metaculus forecasting bot performed on the questions it forecast.
bot-review builds a table of how your bot's forecasts turned out and attaches the reports it
posted, so you can see what it was thinking on the questions it got wrong. Everything is
read-only: it makes no forecasts, spends nothing on LLMs, and publishes nothing. All it needs
is METACULUS_TOKEN.
It reads the reports your bot published as Metaculus comments, so it works whether or not the bot saved anything locally. It parses only the format forecasting-tools itself writes, so it works on any bot built on the framework.
Install
pip install metaculus-bot-review
Or with poetry:
poetry add metaculus-bot-review
Set METACULUS_TOKEN in your environment or in a .env file in the directory you run from.
That token is what decides which bot gets reviewed.
Scoring your questions
bot-review review --tournament <slug-or-id> --output review.json --summary review.md
bot-review review --resolved-since 30 # anything that resolved recently
bot-review review --post 44328 44326 # specific questions
bot-review review --from-json review.json --top 3 # re-render without refetching
The markdown summary gives your leaderboard standing, how many questions were forecast and scored, and the best and worst questions ranked on whichever score the leaderboard uses — spot peer for the AI benchmark tournaments, time-averaged peer for the Metaculus Cup.
The JSON adds per-question detail: the official scores, the bot's forecast, and one RunTrace
per run taken from the comment that run posted — each forecaster's prediction, the run time,
cost and minutes where the bot leaves that metadata in. QuestionOutcome.trace picks the run
that was standing when the question was spot scored, which is the one that earned the score.
Reading the reasoning
Reasoning text is not stored in the table. Pull it a piece at a time:
bot-review show 44328 --section research
bot-review show 44328 --forecaster R1:F3 --comment 921582 # a specific run
Sections are summary, research and forecasts. A research section runs to tens of
thousands of characters, so on a question whose resolution you already know it is usually
cheaper to search it than to read it:
bot-review show 44328 --section research | grep -niE "death toll" | head
From Python
from metaculus_bot_review.outcomes import get_tournament_outcomes
from metaculus_bot_review.summary import build_summary
from metaculus_bot_review.traces import attach_traces, get_trace
table = get_tournament_outcomes("minibench-2026-06-29")
attach_traces(table)
print(build_summary(table))
print(get_trace(44328, section="research"))
Rate limits
Metaculus rate-limits at roughly 5 requests per second. The CLI spaces requests by 0.7s;
change it with --seconds-between-requests.
License
MIT
Metadata
Release files for metaculus-bot-review 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| metaculus_bot_review-0.1.0.tar.gz | 13.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| metaculus_bot_review-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.6 kB
Release files / metaculus_bot_review-0.1.0.tar.gz
| Download URL | metaculus_bot_review-0.1.0.tar.gz |
|---|---|
| Size | 13.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f6c497bb6e689520dd5d9d0af3df0f0285ceecda5d40115b8842d8dbd409168
|
|
BLAKE2b-256 checksum How to use checksums |
9b4c978287d096e5fb401555f268721fe6645778ad72120540de0fea0733fe4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / metaculus_bot_review-0.1.0-py3-none-any.whl
| Download URL | metaculus_bot_review-0.1.0-py3-none-any.whl |
|---|---|
| Size | 16.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f2685677b86b2e9d0d93ccfc641377fd209d0e7600854b6777a016d3abca6b6c
|
|
BLAKE2b-256 checksum How to use checksums |
6b696c28012de233fdc364b9199f1d1a99e2e2350d889bac3cc8a98739a59328
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|