Give Claude Science a verifiable research workflow
A research agent can draft a paper, but the decisions and evidence behind it also need a traceable record. CiteProof MCP is a local audit layer: Claude Science does the research, CiteProof records and checks the review artefacts.
It is a local MCP server for systematic literature reviews. It keeps the protocol, searches, PRISMA counts, screening decisions, evidence, risk-of-bias judgements and claims in one review file, checks that quotes appear in the source text you supply and that DOIs exist in Crossref, and exports the whole trail as a Markdown audit bundle. Install it with npx -y citeproof-mcp; review data stays in a SQLite file on your computer.
Get the CiteProof MCP
One command. Runs on your computer. Built for Claude Science; runs in any client that starts local stdio servers.
npx -y citeproof-mcp
Need Claude Science? Read the local connector steps or follow the bundle build guide. For the one-click Desktop path, get the latest .mcpb release.
Works with Claude Science and other MCP clients. Claude is a trademark of Anthropic; CiteProof is not affiliated with Anthropic.
Review records with a clear trail
What the MCP server does
CiteProof MCP adds the record-keeping parts of a systematic review to a research agent. It has 40 tools, every tool returns ok, and the server contains no language model: the agent makes each judgement, while the server validates its shape and computes the numbers.
Review setup and status
Create a review with a title, question and optional year range; the server returns a review_id and the next step. review_status reports the current phase, missing protocol fields, PRISMA counts, coverage gaps and up to 10 next steps. It is read-only, so it is safe to call at any point.
Review history
Query the event log that SQLite triggers write for each insert, update and delete in the tracked review tables, with a baseline row for data that existed before the log began. It is append-only by convention, not tamper-proof: anyone with the file can change it.
Protocol record
Store PICO fields, study designs, inclusion and exclusion criteria, databases, search strategy, registration, risk-of-bias tool and synthesis method. Omitted fields keep their value, '' or [] clears one, and every edit to an existing value is logged as an amendment. The result names required and recommended fields that are still missing.
Search validation and seed recall
Record known eligible papers as seeds, then check whether each one is among the records of the last full dedup, per source. Reports found, missing and unresolved seeds and the recall fraction. Seed recall is not proof that a search was exhaustive.
PRISMA search log
Record one row per database search with its source, query, run date and hit count. Repeating the same source, query and date updates the count instead of double-counting, while changing a count clears the dedup record because it belonged to a different record set. The result returns records by source and names any cleared dedup state.
Deduplication
Cluster up to 10,000 exported records by normalised DOI, PMID, or a 20+ character title with the same year and first-author surname; matching is transitive and the most complete record is kept. With a review_id, a count is saved only when the call covers every recorded hit; partial batches are analysed but not recorded. A title match with a different year or author stays a possible duplicate rather than being merged. A full dedup also records each record's identifiers as aliases and keeps conflicting DOIs apart.
Paper and study identity
Look up a DOI, PMID or title key in the stored alias map; nothing is guessed. Record a manual alias, such as a preprint DOI for a published paper. Link several reports of one study so reports and studies are counted separately, and see where one study's outcome was recorded from two reports.
Counts and invariants
Compute identified, deduplicated, screened, sought, assessed, excluded and included counts from the stored searches, dedup row and screening decisions. The result checks PRISMA invariants, flags full-text decisions without a title/abstract include and reports what is still pending. complete is true only when every post-dedup record has a title/abstract decision and the numbers agree.
Flow diagram and checklist
Render the PRISMA flow as Mermaid, SVG or Markdown, with the top full-text exclusion reasons and a pending box when needed; agent text is escaped for each format. Check a draft against the 27 PRISMA 2020 items by keyword and compare sentences that state counts with the recorded counts. It reports missing items and number mismatches, and labels itself a keyword check rather than a quality score.
Screening independence and stages
Register reviewers with their role (human, model, unknown) and model id, open a blind or unblinded screening stage, and close it when done. Blinding is by convention, with an audit trail, not enforced: peer decisions are hidden during an open blind stage, but the server cannot verify who is calling. It warns when only AI reviewers screened and when two reviewers are runs of the same model.
Screening decisions
Record include or exclude at title/abstract and full text, plus not_retrieved at full text; an exclusion needs a reason and every decision carries a reviewer name. Upserts are keyed by paper, stage and reviewer, and bulk writes of up to 500 decisions are all-or-nothing with the failing index. List and filter the log by stage, reviewer, decision or paper; at an open blind stage, pass as_reviewer to see only that reviewer's own decisions.
Reviewer agreement
Compute Cohen's kappa for two reviewers at one stage over the papers they both judged include or exclude. The result includes the 2×2 table, observed and expected agreement, kappa, the Landis–Koch band, disagreements and each reviewer's unique decisions. not_retrieved pairs are counted as not judged; kappa is null when nothing is shared or expected agreement is 1. At an open blind stage the figures stay hidden until the stage is closed.
Evidence extraction and quote checks
Store one row per paper and outcome with design, effect measure, estimate, confidence interval, sample and context. Every quote is checked against the supplied source text, and every number in the row must also appear in the quote. The table exports as Markdown, CSV or JSON and counts unverified quotes and number mismatches; source text is kept only as length and SHA-256.
Statistical verification
Check that a ratio estimate, its confidence interval and an optional p-value agree on the log scale under the stated rounding. Recompute risk ratios, odds ratios and risk differences from arm counts and compare them with reported values. Run the ratio check over every stored evidence row. A finding means the numbers do not agree, never that a paper is wrong.
Claims and claim report
Record each claim as supported, partial or unsupported with a reason; supported and partial claims also need a quote and source text. The report counts labels, lists supported or partial claims whose quote failed, and finds weak claims repeated verbatim in the draft. It checks the record you supplied, not whether the science is correct.
Risk of bias
Record RoB 2 (D1–D5), ROBINS-I (D1–D7) or NOS cohort/case-control domains with judgements and supporting quotes. The summary applies the published overall rules, keeps incomplete tools incomplete, and returns traffic-light rows and counts. A recorded overall judgement outside the rule is ignored with a note.
Excluded studies and manuscript check
List every full-text exclusion with its citation and recorded reasons, reconciled with the PRISMA count. Compare manuscript sections with the record: PRISMA counts, effect estimates and intervals, databases, search dates, reviewer count, risk-of-bias tool and synthesis method. A finding is a mismatch with the record, not a judgement of the science.
DOI verification
Check up to 100 DOIs or doi.org URLs against Crossref and doi.org, with title, year, journal, authors and the Crossref retraction flag when available. A registry that cannot be reached returns unverified, never not_found; a value that is not DOI-shaped is rejected before any request. Redirects are not followed.
Citation resolution
Match author-year citations in a draft to as many as 2,000 supplied papers after normalising common forms such as Smith et al. (2020). The result separates resolved, ambiguous, unresolved and orphan papers. Numeric citations are counted, not resolved, and DOI or URL citation groups are left alone.
Prose lint
Lint the draft with the server's prose checks and return issue codes with short notes. It is advisory: it flags style and structure, not scientific correctness or PRISMA completeness.
Audit bundle export
Export the whole trail as one Markdown or JSON document, or write directly to disk with save: true (saving to <CITEPROOF_MCP_HOME>/exports/). Returns the SHA-256 and the saved path. The bundle adds study groupings, aliases, the latest recall check, statistical checks and a change-history summary to the earlier sections. Source texts are never included.
From question to audit bundle
How a review flows
Start a new review or resume one in progress. The agent records each decision as work moves from the protocol to the final report; people resolve screening differences by consensus.
- 01Create or resume
review_createreview_listreview_statusreview_history - 02Protocol & validation
protocol_recordrecall_seed_record - 03Log searches & dedup
prisma_record_searchdedup_papersprisma_record_deduprecall_check - 04Independent screening
reviewer_recordscreening_stage_setscreening_recordscreening_stage_closescreening_agreement - 05Group companion studies
paper_resolvestudy_linkstudy_overview - 06Evidence & statistical checks
evidence_recordevidence_tablestats_check_evidencestats_check_ratio_ci - 07Assess risk of bias
rob_recordrob_summary - 08Record and check claims
claim_recordclaim_report - 09Resolve citations & DOIs
resolve_citationsverify_dois - 10Check manuscript & export
prisma_statusprisma_excluded_studiesmanuscript_checkexport_bundle
Privacy by default
Local by default
Each review uses its own local SQLite database under CITEPROOF_MCP_HOME (default ~/.citeproof-mcp). The server stores review records and checks the source text supplied for quote verification.
- Local SQLite. Review databases stay on your computer; source text is stored as a length and SHA-256 hash, not verbatim.
- Never uploaded. Review data is never uploaded to CiteProof.
export_bundlereturns its content as text, and writes a file only withsave: true, under<CITEPROOF_MCP_HOME>/exports/. - Only DOI checks use the network.
verify_doischecks Crossref atapi.crossref.organddoi.org; other tools do not make network requests.
A clear division of work
Why use CiteProof with Claude Science
Claude Science searches, reads and writes. CiteProof MCP stores the protocol, counts, screening decisions, evidence, claims and risk-of-bias judgements that led to the draft. The server contains no language model, does not search for papers and does not make scientific judgements.
CiteProof checks and stores what the agent supplies. It does not independently read papers, verify whether a claim is scientifically true, or replace your judgement. A passing check means the artefact is well formed or the quote was found, not that the conclusion is correct.
The division of labour matters:
Research agent
Claude Science
Searches databases, retrieves full text, decides inclusion, extracts results, grades risk of bias and drafts the report.
Audit layer
CiteProof MCP
Stores those decisions in a local review file, rejects malformed input, checks supplied quotes, computes counts and exports the trail.
Install the local server
Set up CiteProof in Claude Science
Claude Science is the tested path: a Local command connector that runs npx -y citeproof-mcp, checked on Windows 11 with Claude Science 0.1.70. The short version is below; the MCP reference lists the exact fields, the bundle fallback and the data-folder rules.
- Add a Local command connector. In Claude Science, open Customize, then Connectors, then Add connector, then Local command.
- Name it and enter the command. Use the name
citeproof(lowercase letters, digits and hyphens only) and the commandnpx -y citeproof-mcp. - Optional: set
CITEPROOF_MCP_HOME. Keep review data in a folder you choose. The default is~/.citeproof-mcpwhen the variable is unset. - Wait for the first start and confirm 40 tools. The first start downloads the package and can take about half a minute. The connector page should then list every tool from
review_createtoreview_history. Ask for one small tool call before a real review.
npx -y citeproof-mcpClaude Science's sandbox cannot reach astral.sh, so inside it the launcher runs the server it carries with the sandbox's own python3 instead of downloading uv. If your Claude Science cannot start the npx command, build the bundle instead: MCP/scripts/build_claude_science_bundle.py copies the server into the connector workspace.
Two other local paths are available. Both start the same server over stdio and use the same review format.
Claude Desktop extension
NewDownload citeproof.mcpb from the latest release, then double-click it or drag it into Claude Desktop → Settings → Extensions and click Install. The extension uses Claude Desktop's built-in Node and installs uv automatically when it is missing.
Set CITEPROOF_NO_AUTO_INSTALL=1 to opt out of automatic uv installation.
npx configuration
NewFor Claude Desktop, Claude Code or another JSON-config client, add this entry. Node 18 or newer is required. The launcher installs uv if it is missing, then uv fetches Python 3.12. Set CITEPROOF_NO_AUTO_INSTALL=1 to opt out of automatic uv installation.
{
"mcpServers": {
"citeproof": {
"command": "npx",
"args": ["-y", "citeproof-mcp"]
}
}
}Claude Code users can run the equivalent command:
claude mcp add citeproof -- npx -y citeproof-mcpReview data stays local in SQLite under CITEPROOF_MCP_HOME (default ~/.citeproof-mcp).
Claude Science local command
TestedThe recommended route, checked on Claude Science 0.1.70 on Windows 11: add a Local command connector named citeproof with the npx command. If your Claude Science cannot start it, build the bundle and point the connector at its run.py with forward slashes.
python3 C:/Users/<you>/.claude-science/orgs/<org-id>/workspaces/_mcp-citeproof/bundle/run.pySet the data folder so review files stay inside the sandbox:
CITEPROOF_MCP_HOME=C:/Users/<you>/.claude-science/orgs/<org-id>/workspaces/_mcp-citeproof/dataCiteProof MCP runs as a local stdio process on your computer. There is no CiteProof server for MCP, and review data is never uploaded. claude.ai web custom connectors cannot start a local command, so they are not supported.
Client compatibility
Research-client compatibility
Compatibility is stated as tested, new or untested. “Should work” is not the same as “tested”, and the table does not claim otherwise.
| Client | Install path | Status |
|---|---|---|
| Claude Science | Local command connector with npx -y citeproof-mcp | Tested Windows 11, Claude Science 0.1.70, 24 tools listed for 0.2.1; 40 tools in 0.3.0 not yet tested |
| Claude Science | Local command connector with the built bundle | Tested Windows 11, Claude Science 0.1.67 |
| Claude Desktop | citeproof.mcpb extension | New Extension path, not yet broadly tested |
| Claude Desktop | npx with a JSON mcpServers entry | New Not yet tested for this release |
| Claude Code | claude mcp add citeproof -- npx -y citeproof-mcp | New Not yet tested for this release |
| Cursor, VS Code, Windsurf | Any stdio launcher, or npx | Not yet tested |
| claude.ai web custom connectors | Cannot start a local stdio command | Unsupported |
Claude Science is not the same product as Claude chat or Claude Code. The setup above is written for Claude Science and a local stdio connector; other clients use the same server but have not been verified for this release.
Common questions
Frequently asked questions
Does CiteProof MCP write the literature review?
No. The research agent searches, reads, decides and writes. CiteProof MCP stores those decisions and checks that they are well formed. The server contains no language model.
Does it follow PRISMA 2020?
It records the PRISMA flow counts, checks them for consistency, renders the flow diagram and checks a draft against the 27 PRISMA 2020 checklist items by keyword. A pass means an item is mentioned, not that the review is methodologically sound. The review workflow page shows where each step fits.
Is my review data uploaded anywhere?
No. Review records stay in a local SQLite database under CITEPROOF_MCP_HOME (default ~/.citeproof-mcp). Only DOI verification uses the network, to Crossref and doi.org.
Which clients does it work with?
Claude Science is the tested path: a Local command connector, checked on Windows 11 with Claude Science 0.1.70 against version 0.2.1. Version 0.3.0 with 40 tools is not yet tested there. Other clients that start local stdio servers use the same server but are not verified for this release. The compatibility table lists each one.
What does it not do?
It does not read papers, decide whether a claim is scientifically true, or replace reviewer judgement. A passing check means a record is well formed or a quote was found in the text you supplied, not that the science is right.
How do I install it?
Add a Local command connector that runs npx -y citeproof-mcp, then confirm the connector lists the tools. The setup steps are above, and the MCP tool reference covers every tool. If something fails, see troubleshooting.
Go deeper
Next steps and troubleshooting
If Claude Science does not list all 40 tools, read the connector's error text first. For the npx install, check that the command is exactly npx -y citeproof-mcp and that you run launcher 0.2.1 or newer. If you use the bundle fallback, backslashes are stripped by the connector form and a bundle built into the wrong folder will start but expose nothing. Then check that CITEPROOF_MCP_HOME points at a writable folder inside the workspace.
- MCP tool reference: all 40 tools, arguments, limits, result shapes and error handling.
- Troubleshooting: connector, bundle, storage and tool-call problems.
- Claude Science setup notes: the repository's authoritative install walkthrough.
- MCP specification: schemas, limits and data-handling details.
- CiteProof review skill: companion instructions for a Claude Science review.
If a tool call fails, read the ok:false response before retrying. The message names the invalid field or the limit that was hit; retrying the same payload will fail the same way. Contact support with the client, the tool name and the exact error.
Ready to inspect the toolset?
Keep every review decision in view.
Explore the full reference, then choose the local install path that fits your client.
npx -y citeproof-mcp