Find the 5–10 recent papers with the highest impact on a research question, topic or project
An evidence pipeline for a reasoning agent to drive, not an assistant that answers questions. Start from a brief or a one-line question.
Research Scan takes a research question and returns a small, ranked shortlist of papers — each one carrying an argument for why it earned its slot, and a verification record showing that its DOI, title, year and first author were checked against the live record.
It runs on free and pay-per-use scholarly APIs, on any laptop, without an LLM API key in the tool itself.
The work is split in two, deliberately
The CLI is deterministic and model-free. It retrieves across OpenAlex, Semantic Scholar and arXiv, walks the citation graph, dedups, counts coverage per criterion, shortlists, verifies every DOI against the live record, applies the selection rules and renders the result. It contains no LLM SDK and makes no judgement about a paper.
The agent supplies the cognition. Planning the queries, scoring each candidate 0–3, writing gap queries when coverage is thin, and reranking the shortlist are all model decisions. The skill packages the rubrics they are made against, as plain Markdown; whatever agent hosts it executes them.
Files are the interface between the two halves — the filesystem is the protocol boundary between reasoning and execution, not a storage detail. That is what lets Claude Code, Codex, Cursor or a plain Python loop drive the same chain over the same artifacts.
Why the separation matters
Judgement and retrieval fail in different ways, and fixing them requires different tools. Retrieval fails quietly — a source times out, a cap truncates a pool, a duplicate survives. Those are engineering faults, and the fix is a deterministic pipeline that records every drop and every failure so you can see them.
Judgement fails differently. A model can score a paper generously, or reward a famous venue, or repair a DOI from memory. The fix there is a written rubric, a narrow interface, and metadata the model is never allowed to invent.
Fusing the two hides both. Separating them means the model can change — a better one, a cheaper one, a local one — without touching the layer that decides what counts as a verified record.
What bounds a result
Two things. A purpose decides what a paper has to do to earn a slot.
| Purpose | A paper earns its place by | Example |
|---|---|---|
build | moving a design or plan decision | “What should we know before we design the enrolment flow?” |
research | changing what we believe, what we would test, or how we would measure it | “What is the strongest recent evidence that default enrolment affects how much people save?” |
orient | being something a newcomer must know, recent first | “I am new to mechanistic interpretability — what must I read, recent first?” |
A profile decides how much the scan costs.
| Profile | Per query | Pool cap | Out-of-window total | Gap round |
|---|---|---|---|---|
quick | 20 | 250 | 12 | never |
standard (default) | 40 | 450 | 20 | when coverage is uneven |
deep | 40 | 450 × sources ÷ 2 | 30 | always |
Start at standard; use quick for “what is out there” and deep when a miss is
expensive. Measured recall for each.
How this differs
Stated as category differences, not as claims about any particular product.
- No embedded model. The package declares no LLM SDK and makes no model calls. Every judgement belongs to the hosting agent.
- No vendor lock-in. The interface is files in a run directory, so any agent that can read and write JSON can drive the pipeline.
- Auditable artifacts. Every drop — retracted, excluded, type-filtered,
pool-capped — and every source that failed after retries is counted in
manifest.json. Nothing is capped silently. - A reproducible pipeline. Stages are idempotent and re-runnable; clocks are injectable, so re-runs are byte-identical.
- Agent-controlled judgement. The rubrics ship as plain Markdown you can read, edit and disagree with.
Run it
Python ≥ 3.11 and uv.
uvx research-scan doctor # run any command without installinguv tool install research-scan # or put it on PATH permanentlyThen connect an agent. In Claude Code, the plugin installs the skill and configures the MCP server in one step:
/plugin marketplace add Synectic-Research/research-scan/plugin install research-scan@synecticFor Claude Desktop, Cursor, or anything else that speaks MCP, point the client at
uvx research-scan mcp. It talks MCP on stdin and stdout and nothing else, reads
no token and needs none, and exposes four tools — scan_start, scan_continue,
scan_verify and scan_result — one per decision the pipeline needs from a
model. See MCP clients for the config block and
where it goes.
You drive it by asking your agent for a scan, not by running a single command:
there is no one-shot scan, because the pipeline needs a model’s judgement
between stages. Walk through a first scan.
Not for
Systematic reviews. There is no PRISMA trail and no workflow for screening thousands of records.
Manuscript citation management. evidence.bib is a courtesy, not a library.
Use a citation manager.
Full-text work. Retrieval and screening run on titles, abstracts and metadata. No PDF is fetched, parsed or read.
Google Scholar, Scopus, Web of Science, PsycInfo are not sources and are not planned: none offers a personal-key API or a ToS-compatible path.
Where to go next
- Installation — get the tool on your machine.
- Agent and tool separation — the idea the rest of the design follows from.
- Architecture overview — the real pipeline, stage by stage.
- CLI reference — every command, from its own
--help. - Contributing — the developer setup and the measured-or-reverted rule.
Research Scan is Apache-2.0 and developed in the open at Synectic-Research/research-scan. Contributions are welcome, with one unusual rule: any change to retrieval, expansion, screening caps or selection has to arrive with golden-set eval results. Measured, or reverted — a green test suite is not evidence that a scan finds better papers. How to contribute.