Turn the OpenAIRE Graph into a ranked replication queue with a Science Live verification overlay.
Runs on your machine from its package; the steps are below.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted β your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
uvx replication-radar
MCP client config
{
"mcpServers": {
"replication-radar": {
"command": "uvx",
"args": [
"replication-radar"
]
}
}
}A tool that makes the OpenAIRE Graph more useful for replication. Search a research field and it answers the question the Graph structurally cannot: what high-impact work is worth replicating, has it already been independently checked β with what verdict β and is the software reusable?
Ships as a live web app (the link above β pure static, queries OpenAIRE + the nanopub network + GitHub/Software Heritage from the browser) and an MCP server (this package) that exposes the same engine to any agent. Built for the OpenAIRE AI Hackathon (Theme B), CC-BY.
OpenAIRE's only value signal is citation-popularity (BIP! influence / popularity / impulse, classes C1βC5) β paper-bound, and orthogonal to whether a claim is true. The Radar joins three sources to add a replication layer on top:
api.openaire.eu/graph/v1).OpenAIRE AI Hackathon Β· Theme B (Build) Β· CC-BY. Built to be reused through the forrt-replication-template: discovery at the start of a replication, where the template's existing skills handle the nanopub chain at the end.
| Tool | What it answers |
|---|---|
radar(topic) | Impact-ranked replication targets in a field β each OPEN (opportunity) or VERIFIED (done, with verdict) + independent tooling + funder context |
find_independent_software(doi, topic) | Reusable engines not authored by the original team (author-disjoint = replication, not reproduction), ranked by reuse signal β repo Β· Software Heritage Β· downloads Β· GitHub stars β not citations (returns stars + rank_score) |
replication_status(doi) | Has this DOI been replicated, did it hold? Verdict(s) β live from the nanopub network, any signer β with status, CiTO relation, repo, and signed Outcome/CiTO nanopub links; open if not |
verified_claims() | The whole verified-knowledge corpus β every claim the network holds a verdict for (author-agnostic) |
replication_template(doi, topic, owner) | The FORRT replication template (the produce half) β the scaffold repo, the workflow, and a suggested <topic>-replication repo name (checks availability under owner) |
find_dataset(topic) | Hand-off to the OpenAIRE MCP for datasets β replication-radar doesn't search datasets; this says how to find a citable dataset DOI there |
The verdict tools pull live from the nanopub network (the FORRT Outcome/CiTO templates on
query.knowledgepixels.com); the bundled verdicts.json is an offline fallback. So the MCP is the
verified-knowledge layer β pair it with the OpenAIRE MCP and an agent has both the structural
Graph and "has this been checked, and did it hold".
A reproduction re-runs the original code; a replication tests the same claim by a
different route. So the Radar filters tooling by author-disjointness from the
original paper β e.g. for Phillips et al. 2009, the dismo package (co-authored by
Phillips & Elith) is flagged rooted / non-independent, while biomod2 and jSDM
are independent. That filter is the difference between the two, and it's the thing
that makes this replication-aware rather than just "find the code".
pip install -e . # installs the `mcp` runtime
python -m replication_radar.server # stdio MCP server
Add to an MCP client (.mcp.json):
{ "mcpServers": {
"replication-radar": { "command": "python", "args": ["-m", "replication_radar.server"] }
} }
The core (OpenAIRE client + radar logic) is stdlib-only β try it without the MCP runtime:
PYTHONPATH=src python3 demo_sdm.py # live vertical-slice demo on SDM
| Env var | Default | Purpose |
|---|---|---|
RADAR_OPENAIRE_BASE | https://api.openaire.eu/graph/v1 | Swap to the Alien AI-Gateway or a mirror β the Radar is endpoint-agnostic |
RADAR_HTTP_TIMEOUT | 30 | Per-request timeout (s) |
data/verdicts.json to grow coverage.