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.

Claude Science

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.

Browse the documentation home

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.

  1. 01Create or resumereview_create review_list review_status review_history
  2. 02Protocol & validationprotocol_record recall_seed_record
  3. 03Log searches & dedupprisma_record_search dedup_papers prisma_record_dedup recall_check
  4. 04Independent screeningreviewer_record screening_stage_set screening_record screening_stage_close screening_agreement
  5. 05Group companion studiespaper_resolve study_link study_overview
  6. 06Evidence & statistical checksevidence_record evidence_table stats_check_evidence stats_check_ratio_ci
  7. 07Assess risk of biasrob_record rob_summary
  8. 08Record and check claimsclaim_record claim_report
  9. 09Resolve citations & DOIsresolve_citations verify_dois
  10. 10Check manuscript & exportprisma_status prisma_excluded_studies manuscript_check export_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_bundle returns its content as text, and writes a file only with save: true, under <CITEPROOF_MCP_HOME>/exports/.
  • Only DOI checks use the network. verify_dois checks Crossref at api.crossref.org and doi.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.

What the checks mean

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.

  1. Add a Local command connector. In Claude Science, open Customize, then Connectors, then Add connector, then Local command.
  2. Name it and enter the command. Use the name citeproof (lowercase letters, digits and hyphens only) and the command npx -y citeproof-mcp.
  3. Optional: set CITEPROOF_MCP_HOME. Keep review data in a folder you choose. The default is ~/.citeproof-mcp when the variable is unset.
  4. 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_create to review_history. Ask for one small tool call before a real review.
npx -y citeproof-mcp

Claude 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

New

Download 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.

Open the latest release

Set CITEPROOF_NO_AUTO_INSTALL=1 to opt out of automatic uv installation.

npx configuration

New

For 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-mcp

Review data stays local in SQLite under CITEPROOF_MCP_HOME (default ~/.citeproof-mcp).

Claude Science local command

Tested

The 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.py

Set the data folder so review files stay inside the sandbox:

CITEPROOF_MCP_HOME=C:/Users/<you>/.claude-science/orgs/<org-id>/workspaces/_mcp-citeproof/data

CiteProof 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.

ClientInstall pathStatus
Claude ScienceLocal command connector with npx -y citeproof-mcpTested Windows 11, Claude Science 0.1.70, 24 tools listed for 0.2.1; 40 tools in 0.3.0 not yet tested
Claude ScienceLocal command connector with the built bundleTested Windows 11, Claude Science 0.1.67
Claude Desktopciteproof.mcpb extensionNew Extension path, not yet broadly tested
Claude Desktopnpx with a JSON mcpServers entryNew Not yet tested for this release
Claude Codeclaude mcp add citeproof -- npx -y citeproof-mcpNew Not yet tested for this release
Cursor, VS Code, WindsurfAny stdio launcher, or npxNot yet tested
claude.ai web custom connectorsCannot start a local stdio commandUnsupported

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.

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