A systematic literature review with agents: search, screen, extract and cite
Publicado em 2026-10-12
A systematic review is careful, repetitive work wrapped around a few judgment calls. You write and register a protocol, run the same search in several databases, remove duplicates, screen hundreds or thousands of abstracts, read the survivors in full, pull the same variables out of each paper, judge each study's risk of bias, and write it up so someone else could repeat it. Coding agents such as Claude Code and Codex are good at the repetitive parts. They should not make the judgment calls, and their mistakes look exactly like correct work.
This guide covers eight stages: which catalog tools fit each one, what you need before installing them, and a prompt you can paste. It is written for graduate students and early-career researchers who may not code. Throughout, the tools assist; you, your co-reviewer and your supervisor review everything that goes into the paper.
Before you start
Everything here runs inside a coding agent that you open in a terminal, and both agents need a paid plan or an API key:
- Claude Code needs a Pro, Max, Team, Enterprise or Console account; the free claude.ai plan does not include it (setup guide). If you have never used a terminal, start with its terminal guide.
- Codex needs a ChatGPT plan that includes it, such as Plus, Pro, Business, Enterprise or Edu, or an OpenAI API key billed per use (Codex pricing).
The install commands below run in the terminal, not in the agent's chat. They are written for Claude Code; each resource page lists the Codex command where one exists. Academic Research Skills and PubMed are Claude Code only (Codex users can install ARS-Codex instead), and the Consensus entry in this catalog is a Codex plugin. Commands that start with npx need Node.js, uvx needs uv (a Python tool runner), and pip needs Python. If one of these is missing, ask the agent to install it, and to create a Python virtual environment before any pip install so the packages stay separate from your system's Python.
Where to start
| Stage | Tool | What you need first |
|---|---|---|
| Protocol and screening | Academic Research Skills | Claude Code; Python 3.9+ for SR-Screener's scripts (Codex users: ARS-Codex) |
| Scoping searches and seed checks | Paper Search MCP, PubMed, Consensus | uv for Paper Search; nothing extra for PubMed; a Consensus sign-in for Consensus (free tier is limited) |
| The systematic search itself | Each database's own interface | Your library's access to subscription databases |
| Library and duplicates | Zotero MCP (on Codex: the Zotero plugin) | Zotero desktop; uv and Python 3.10+ for Zotero MCP |
| Review methods and DOI checks | Literature Review (K-Dense) | Node.js for the installer, Python 3.10+ |
| Extraction from PDFs | Docling, PaperQA2 | Python 3.10+ (Docling); Python 3.11+ and an LLM API key (PaperQA2) |
| Drafting from evidence | Scientific Writing (K-Dense) | Node.js for the installer; Python 3.11+ only for its optional checks |
| Simulated review and reporting check | Academic Research Skills, MedSci Skills, Paper Lifecycle | Node.js for the installers; MedSci Skills needs Node 18+ and Python 3.9+ |
If you install only two things this week, make them Zotero MCP and Academic Research Skills.
1. Write and register the protocol before you search
Hand the agent: your draft question (framed with PICO or your field's framework), inclusion and exclusion criteria, planned databases, date and language limits, and a few seed papers that must end up included. Ask it to find gaps, not to write the protocol for you.
Academic Research Skills is a Claude Code plugin that runs from research question to revision. Its SR-Screener has a protocol mode that turns your proposal into a screening protocol with ordered exclusion codes, and its deep-research skill has a Socratic mode that guides you through the plan with questions. The pipeline is designed to stop for your confirmation at every stage, though its README calls these rules the agents follow, not runtime guarantees. It is licensed CC BY-NC 4.0, so not for commercial use.

claude plugin marketplace add Imbad0202/academic-research-skills && claude plugin install academic-research-skills@academic-research-skills
Two steps no agent can do for you. First, the Cochrane Handbook, chapter 4 strongly recommends that a qualified librarian or information specialist peer review search strategies before they are run. Book that meeting now. Second, register the protocol before screening starts: in PROSPERO for reviews with a health-related outcome, or in OSF Registries for other fields. PRISMA 2020 item 24 asks you to give the register name and registration number, or to state that the review was not registered. Check whether your target journal requires registration.
Here are my draft review question, inclusion and exclusion criteria, planned
databases and five seed papers. Use SR-Screener protocol mode. Turn this into
a screening protocol with numbered, ordered exclusion codes. Then list every
criterion that two reviewers could reasonably read differently and ask me to
resolve each one. Do not search yet.
2. Test the search with agents, then run it in each database
Hand the agent: your draft search string, your seed papers and a folder for results.
Agent search tools are good at scoping: finding seed papers, checking that your draft string retrieves every paper you already know belongs in the review, following citations and fetching open-access full text. They are not the systematic search itself. They return a capped number of top results per query, so their hit counts are not your PRISMA numbers. The README of the K-Dense Literature Review skill says the same: use discipline-appropriate bibliographic databases for the reproducible search, because ranked web results cannot establish exhaustive coverage.
Paper Search MCP queries 20+ sources (arXiv, PubMed, bioRxiv, Semantic Scholar, OpenAlex, Crossref, Europe PMC and more) in one call, deduplicates, and tries open-access full text first. Its README notes that the result limit applies per source and that sorting covers only the results it retrieved, not each source's full collection. Most sources need no key, but read its capability table: PubMed is search-only, Google Scholar can be blocked by bot detection (this shows up as a source error), Unpaywall needs an email address, and Sci-Hub is an optional fallback that is off by default. Leave it off. Needs uv.

claude mcp add paper-search -- uvx paper-search-mcp
For biomedical topics, Anthropic's PubMed plugin connects Claude Code to a remote MCP server (pubmed.mcp.claude.com) that searches PubMed; the plugin manifest lists the US National Library of Medicine as its author. No account is needed. On Codex, the official Consensus plugin searches an index of 220 million peer-reviewed papers; it needs a Consensus sign-in, and the free tier returns a limited number of results. Consensus's own MCP page gives typical caps of about 3 results per search without signing in, 10 on a free account and 20 on premium. Claude Code users can add the same Consensus server from Anthropic's life-sciences marketplace with claude plugin install consensus@life-sciences, after adding that marketplace as in the PubMed command below.

claude plugin marketplace add anthropics/life-sciences && claude plugin install pubmed@life-sciences

codex plugin marketplace add openai/plugins && codex plugin add consensus@openai-curated
Using paper-search and pubmed, run quick scoping searches with the draft
string in search-plan.md. Report which of my seed papers are NOT retrieved,
by which sources, and suggest terms that would find them. Do not enable
Sci-Hub. These results are only for testing the string; do not treat them
as the systematic search.
Once the string finds every seed paper and your librarian has reviewed it, run the final version in each database's own interface: the PubMed website, and Scopus, Web of Science, Embase or others through your library. The database then applies its own syntax, such as MeSH terms and field tags, and you get the complete result set. Export everything as RIS, PubMed .nbib or CSV, and keep the files: SR-Screener reads them directly in the next step. PRISMA 2020 asks you to name every source with the date it was last searched and to present the full search strategies (items 6 and 7). The PRISMA-S extension (Rethlefsen et al., Systematic Reviews, 2021) covers search reporting in more detail.
Then bring the exports into one Zotero library with Zotero's own File → Import. Zotero MCP lets the agent search your library by title, author or full text, add items by DOI and merge duplicates. It needs Python 3.10+, uv, and Zotero's local API switched on (Zotero 7+: Settings → Advanced). Reading works straight away. Writing needs Zotero 10+ and the one-time zotero-mcp authorize-local step from its README, or a Zotero web API key and library ID. Searching by meaning is an optional extra (zotero-mcp-server[semantic]) that builds an embedding index first; with OpenAI or Gemini embeddings your library text goes to those providers, so choose local embeddings if the library holds unpublished material. Zotero's duplicate detection compares title, DOI and ISBN, then year and authors.

claude mcp add -e ZOTERO_LOCAL=true zotero -- uvx zotero-mcp-server
On Codex, OpenAI's official Zotero plugin uses Zotero desktop's local API to search your library, export BibTeX and import new references after you confirm.
Matching on DOI or title removes repeated hits, but it does not link a preprint to the journal version of the same study. Ask the agent to flag likely same-study groups for you to decide. Choose one place to remove duplicates (Zotero, or SR-Screener, which also removes them) and record the number, because the PRISMA flow diagram reports duplicates removed before screening.
The K-Dense Literature Review skill is a methods checklist with helper scripts, not a screener. It tells the agent to record every search string and date, test database queries against known eligible reports, and keep records, reports and studies apart for the flow diagram. For screening it gives the order (title, then abstract, then full text), asks you to record every exclusion reason, and calls for two reviewers on full-text eligibility. Its scripts deduplicate normalized search results, check DOI registration and render the review as a PDF; its README says they do not run a complete systematic review automatically. Needs Python 3.10+. Its optional web search uses parallel-cli and a Parallel account, and PDF export needs Pandoc and XeLaTeX.

npx skills add K-Dense-AI/scientific-agent-skills --skill literature-review -a claude-code -y
I exported the full results of each database into exports/ and imported
them into the Zotero collection SR-raw. For each export file, add a row to
search-log.csv with the database, search date, full search string (from
search-plan.md) and the number of records in the file. Flag any file whose
count differs from the hit count I noted in search-plan.md. Merge exact
duplicates in SR-raw and record how many you removed. Then list records
that look like the same study reported twice (preprint plus journal
article, for example) without merging them.
3. Screen with a pilot and logged exclusion reasons
Hand the agent: the export files, the confirmed protocol with exclusion codes, your seed papers, and your team's own include or exclude labels for a pilot sample of about 150 to 200 records.
SR-Screener, inside Academic Research Skills, runs two blinded AI reviewers on every record plus a third that adjudicates conflicts. It applies your ordered exclusion codes and produces a screening log, PRISMA 2020 counts, agreement statistics (kappa and PABAK) and Zotero or EndNote RIS groups. It reads RIS, PubMed .nbib, Web of Science and CSV exports and removes duplicates using Python scripts, so have Python 3.9+ installed.
It is built to slow you down in the right places:
- Pilot against your labels. Before any full run it screens your seeds plus about 150 to 200 records that your team has labelled independently. It refuses the full title-and-abstract run until the AI has excluded none of the records your team advanced, unless you override with a reason, which then appears in the methods text.
- Cost check. It shows a cost estimate and waits for your yes, because a full run can mean hundreds of agent calls.
- Recheck of joint exclusions. Two copies of the same model can share a misreading, so a reproducible sample of the records both AI reviewers excluded (at least 20, 100 by default) plus the near-misses go to a separate senior reviewer agent that does not see the earlier decisions. Counts stay provisional until that has run.
- People own the result. Its instructions call the AI decisions decision support: before numbers are reported, your team verifies at least every advanced record and a sample of exclusions.
Its scripts are tested on synthetic records, and the README of its Codex sibling, which ships the same screener, says screening accuracy has not been measured.
Keep the standard in view. PRISMA 2020 has a 27-item checklist, an abstract checklist and flow diagrams (Page et al., BMJ 2021). The Cochrane Handbook (version 6.5.1, March 2025) says at least two people working independently must make the final full-text eligibility decisions; one person may do the first title-and-abstract pass. Treat the AI screeners as an extra reader that catches slips, not as one of your two people.
Use SR-Screener pilot mode on the pilot batch: my seed studies plus the
records in pilot_labels.csv that my co-reviewer and I labelled ourselves.
Compare your decisions with our labels. If you exclude any seed or any
record we advanced, stop and show me the criterion that caused it. Show me
the cost estimate before any full run. Only after I approve the pilot and
the cost, run ta-screen on the files in exports/ with screening_protocol.md.
For every exclusion, record the exclusion code and a one-sentence reason
quoting the abstract. List conflicts and near-misses separately so I can
check them.
4. Extract data and assess risk of bias
Hand the agent: the included PDFs and your extraction form (design, population, sample size, outcomes, effect estimates). Ask for one row per study with a page number for every value.
Docling turns PDFs into Markdown or JSON while keeping reading order, tables and formulas, and it runs locally, which matters if any documents are not public. Needs Python 3.10+. Compare every extracted table with the PDF: a value from the wrong row looks just as plausible as the right one.

pip install docling
PaperQA2 answers questions over a folder of papers and cites the pages each answer came from. While indexing, it fetches metadata including citation counts and a retraction check, and it offers an optional Docling-based PDF reader. It needs Python 3.11+ and, by default, an OpenAI API key (local models can be configured); for 100+ papers its README recommends Crossref and Semantic Scholar API keys. With the default setup, your text goes to the model provider.

pip install paper-qa
Two rules from the Cochrane Handbook apply whatever tools you use. At least two people working independently extract outcome data from each study (chapter 5, MECIR C46, mandatory). And at least two people independently apply the risk-of-bias tool, such as RoB 2 for randomized trials or ROBINS-I for non-randomized studies of interventions (chapter 7, MECIR C53). Chapter 5, last updated in 2019, also says it cannot recommend a specific tool for automating data extraction. So treat the agent's table as a draft to compare against your two human extractions, never as one of them, and resolve every difference against the PDF. The agent can also collect the supporting quotes, with page numbers, for each risk-of-bias domain. The judgments are yours.
Convert every PDF in included/ to Markdown with docling. Fill extraction.csv
using the columns in extraction-form.md. Every cell must give the page or
table it came from, for example: n=212 (p.4, Table 1). If a value is missing
or ambiguous, write MISSING or AMBIGUOUS and explain; never estimate. Flag
any value you calculated rather than copied. Then list every outcome, effect
estimate and sample size, with its page reference, in verify.csv so my
co-reviewer and I can compare them with our own extractions. For each
risk-of-bias domain in rob-form.md, quote the relevant passages with page
numbers and leave the judgment columns empty.
5. Synthesize and draft from evidence
Hand the agent: the checked extraction table, your team's risk-of-bias judgments and an outline you wrote yourself.
Scientific Writing (K-Dense) is built on one rule: every factual or numeric claim maps to evidence IDs that a human has opened and verified. It forbids invented citations, data, methods or disclosures, marks gaps as missing instead of filling them, and points you to the right reporting guideline (PRISMA 2020 for systematic reviews). Its check scripts run offline with no API key and need Python 3.11+.

npx skills add K-Dense-AI/scientific-agent-skills --skill scientific-writing -a claude-code -y
Organize results by outcome or theme, not paper by paper; the literature-review skill lists study-by-study summaries as a common pitfall. This guide does not cover certainty-of-evidence ratings (GRADE) or meta-analysis. Those stay with your team and a statistician, and the agent should only draft text from judgments and results you have already recorded.
Draft the Results section from extraction.csv and rob.csv only. Organize by
outcome, not by study. Tag every sentence that states a fact or number with
its claim ID and evidence IDs. Anything you cannot support from these two
files goes into unresolved.md, not into the draft.
6. Simulated peer review and a reporting check
The reviewer in Academic Research Skills uses a journal-fit reviewer, three dynamic reviewers and a devil's advocate. It is read-only, and its README says live reviews are not calibrated, so treat the output as questions, not a verdict.
For health and clinical reviews, MedSci Skills, a set of 59 clinical-research skills, adds a reporting check. Its /check-reporting audits a manuscript against one of 49 reporting guidelines and risk-of-bias tools, PRISMA 2020 included, item by item: PRESENT, PARTIAL, MISSING or N/A, with where each item was found. Its README calls this a working audit, not the checklist you upload to the journal. The install adds the whole set. It needs Node 18+ and Python 3.9+, and some of its skills also need R or pandoc. Its README says every output needs review by a qualified researcher, and a clean run means only that its checks found nothing.

npx skills add Aperivue/medsci-skills --skill '*' -a claude-code -y
Paper Lifecycle has two skills and takes PDF, LaTeX, Word or Markdown manuscripts. Review-revision checks a manuscript as a senior reviewer would, plans section-by-section revisions and ends with a submission checklist. Rebuttal-response triages real reviewer comments after submission, plans any extra evidence and drafts point-by-point replies; it is written with conference reviewing in mind (it drafts a summary for the area chair), so adapt that part for a journal.

npx skills add M1n-n9/paper-lifecycle --skill '*' -a claude-code -y
If your review goes to a computer science conference, PaperJury runs a jury-style pre-submission review of LaTeX, Markdown or Word papers (Word files are converted to a Markdown working copy). By default each patch waits for your approval; an opt-in auto mode applies low-risk edits under rules you authorize in advance.
Run /check-reporting on my manuscript against PRISMA 2020 and show me every
item marked PARTIAL or MISSING, with where you looked. Then act as a methods
referee for a systematic review journal and list the three weaknesses a
sceptical referee would raise first. Do not edit the manuscript.
Revise, then move on to the verification gates. Any citation you add while revising has to pass them too.
7. Verification gates before submission
Fabricated references are a measured problem: in an arXiv preprint, Zhao et al. audited 111 million references in 2.5 million papers on arXiv, bioRxiv, SSRN and PubMed Central and conservatively estimate 146,932 hallucinated citations in 2025 alone (arXiv 2605.07723, May 2026). A real paper cited for something it does not say is just as bad and harder to spot. Run three gates:
- Every DOI resolves to the right work. The literature-review skill's
verify_citations.pychecks DOI registration and pulls Crossref metadata. Its README warns that a registered DOI can still identify the wrong work, so compare title, authors and year. MedSci Skills' /verify-refs marks each reference OK, MISMATCH, UNVERIFIED or FABRICATED after lookups in PubMed, Crossref and OpenAlex, needs no API key, and never edits your references. - Every claim matches its source. Academic Research Skills has an opt-in claim audit (
ARS_CLAIM_AUDIT=1) that fetches each cited source and judges whether it supports the sentence. Its README says no live calibration result for that judge has been recorded yet, so treat a supported verdict as a prompt to check, not as proof. Scientific Writing'saudit_claims.pychecks that claims are bound to evidence. Then a person opens the source. - Nothing you cite has been retracted. When Zotero added retraction alerts in 2019, using Retraction Watch data, the check covered only items with a DOI or PMID (Zotero blog), so make sure your items carry identifiers. PaperQA2 also checks retractions, and Zotero MCP's optional Scite extra adds retraction alerts.
Gates reduce errors; they do not remove them. In the showcase run published with Academic Research Skills (March 2026, an older version of the pipeline), a separate audit found 21 of the 68 final references still had problems after three rounds of integrity checks. For the same problem in court filings, see Before you file: verifying AI-drafted citations.
For every entry in references.bib, resolve the DOI, compare title, first
author and year with the Crossref record, and check the Zotero retraction
flag. Then, for every in-text citation in manuscript.md, quote the sentence,
quote the supporting passage from the source with a page number, and mark it
SUPPORTED, PARTLY or NOT FOUND. Write the results to citation-audit.csv. Do
not fix anything; I will.
8. Disclosure and authorship
The ICMJE recommendations, which many medical journals follow, are clear. Chatbots should not be listed as authors, because they cannot be responsible for the accuracy, integrity and originality of the work. Authors disclose AI use at submission: in the acknowledgments for writing help, in the methods for data collection, analysis or figures. Humans are responsible for everything submitted. Every author must also meet all four ICMJE criteria, including final approval and agreement to be accountable for the whole work, so if your name is going on an AI-heavy paper you cannot vouch for, raise it with your supervisor before submission.
PRISMA 2020 asks for the same openness in the methods: items 8 and 9 ask how many reviewers screened and extracted, whether they worked independently, and details of any automation tools used. Check your target journal's own AI policy too; the disclosure mode in Academic Research Skills drafts a statement, and you check it against that policy.
Limits and risks
- Coverage. Agent search tools return capped, ranked results. Paywalled full texts stay paywalled, and subscription databases need your library's access. Run the systematic search in each database and import the full exports.
- Screening errors. A missed eligible study cannot be fixed by good writing later. Pilot against your own labels, review every conflict and near-miss, and keep two people on full-text decisions.
- Confidentiality. Claude Code and Codex send what they read to the model provider, usually Anthropic or OpenAI, so the agent itself counts as an external service. Open-access papers are generally fine to process. For paywalled PDFs from your library, check your library's licence and AI guidance first. Do not open unpublished data, manuscripts under review, peer-review reports or unpublished results obtained from trial investigators in an agent session without authorization; check your institution's policy and any data-sharing terms. Scientific Writing treats this as a hard rule. Docling runs locally, and PaperQA2 can use a local model, but the agent that drives them still sees what it reads.
- Reproducibility. Model outputs are not repeatable word for word. Save search and screening logs, tool versions and dates, and describe AI use in your methods.
- Cost. Multi-agent pipelines use many tokens. SR-Screener shows an estimate before each full run. The Academic Research Skills docs put its full writing pipeline at roughly 3 to 7 US dollars in API usage for a 15,000-word paper, depending on the model (PERFORMANCE.md; September 2026 list prices, before cache discounts, worked out from token counts rather than re-measured). PaperQA2 and Consensus have their own API costs or usage limits.
- Responsibility. These tools assist with an academic review; they do not conduct it. You, your co-reviewer and your supervisor make the decisions and answer for every claim.
The collection below gathers these tools and the next steps toward journal submission.