Skip to content

Privacy and data egress

This page is the precise, per-connector companion to the Privacy policy: what leaves your machine, to which host, and when. If you want the short version, it is the next two paragraphs. If you want to audit every outbound call, the table below names each one.

Researcher has no telemetry, no analytics, and no accounts. Nothing reports back to the maintainer, and nothing can: the plugin is skills plus a local Python core plus local scripts.

By default, skills send bibliographic metadata (a DOI, a title, an author name, or a search term) to public scholarly APIs when you invoke a skill that needs data to do its job. That is the whole of the outbound traffic. Your manuscript prose never leaves the machine through core: core sends only the identifiers and query strings a skill passes it, never a manuscript file or a section of body text, and the faithfulness check (axis c) compares your claims against downloaded passages locally, so claim text is not uploaded to grade it. A literature or fact-check search does put its query string on the wire, and that query can contain terms you drew from the manuscript (a title, keywords, or a claim phrase used as a search), so treat a search as sending its query, not your document.

Set --offline on a core command, or export RESEARCHER_OFFLINE=1, and every network-touching command answers exclusively from the local snapshot store and the response cache. A cache miss returns a typed offline-miss result: it never falls through to a live HTTP call, and no socket is opened. This reuses the same snapshot layer the deterministic evals replay from, so offline mode is not a second, half-trusted cache. It is the honest answer “no local record, and I did not go to the network to get one.”

Use it when you are on a plane, on a metered link, or working with material you would rather keep strictly local: record the snapshots you need once while online (--record), then run offline.

Every host below is reached over HTTPS. “Manuscript terms?” marks whether the query a skill sends can carry text you derived from the manuscript (a free-text search can; a DOI-only lookup cannot). No connector uploads a manuscript file or section prose, and none attaches a cookie, an account, or a persistent identifier of you. The optional polite-pool email is the only contact string ever sent, and it is deliberately kept out of the snapshot and cache keys so a recording replays on any machine.

ConnectorHost(s)What is sentManuscript terms?Connector doc
OpenAlexapi.openalex.orgsearch query, or DOI / OpenAlex ID / arXiv ID; optional mailtoYes (free-text search)openalex.md
Crossrefapi.crossref.orga DOI, or title / author / year for reference validation; optional mailtoYes (title query)crossref.md
DataCiteapi.datacite.orga DOI, or a free-text search plus resource-type filter; optional mailtoYes (free-text search)datacite.md
arXivexport.arxiv.org, arxiv.org (PDF)an arXiv ID or a search query; a PDF URL to fetch OA full textYes (free-text search)arxiv.md
Semantic Scholarapi.semanticscholar.orgsearch query, author name, or paper IDs; optional S2_API_KEY headerYes (free-text search)semantic-scholar.md
PubMedeutils.ncbi.nlm.nih.govsearch query or PMIDs; optional NCBI_API_KEY, tool and email paramsYes (free-text search)pubmed.md
Unpaywallapi.unpaywall.org, then the resolved OA hosta DOI plus a required contact emailNo (DOI only)unpaywall.md
OpenCitationsapi.opencitations.neta DOI; optional access token and mailtoNo (DOI only)opencitations.md
Scitenone from coreuser-connected MCP only (see below)n/ascite.md
Zoteronone from coreuser-connected MCP only (see below)n/azotero.md
Google Scholarnone from coreassistant web search only (see below)n/agoogle-scholar.md
Mendeleynone from corenone (manual export only)n/amendeley.md

Each connector doc carries a full Data egress section with the exact identifiers, the remote retention note where the provider states one, and, for the eight kernel connectors, a Terms of use note. The eight kernel connectors (OpenAlex, Crossref, DataCite, arXiv, Semantic Scholar, PubMed, Unpaywall, OpenCitations) are the only ones core calls directly.

Four connectors are not called by core, so nothing leaves through the plugin for them:

  • Scite and Zotero are Model Context Protocol servers you connect with your own account. When connected, what you send them (DOIs and citation queries for Scite, library items for Zotero) and how long they keep it is governed by their terms and your subscription, not by this plugin. Core never calls either one.
  • Google Scholar has no sanctioned API. When Scholar coverage is wanted, a skill uses the AI assistant’s built-in web search with a site:scholar.google.com query, which travels through the assistant’s web-search provider and Google, not through core. That query can carry manuscript-derived search terms, so it is governed by the assistant provider’s and Google’s terms.
  • Mendeley has no live integration at all. The workflow is a manual BibTeX export you import yourself, so core makes no Mendeley network call.
  • The formal Privacy policy: what the plugin collects (nothing) and what runs locally.
  • Licensing and retention: how long fetched content is cached, why cached full text is never redistributed, and each source’s terms of use.