@pipeworx/research-chain
Connect: https://gateway.pipeworx.io/research-chain/mcp · Install: one-click buttons
Tools: 1
Everything openly available around one academic paper, in a single call: full
text, license, datasets, code, and citations. Given a DOI, PMID, or arXiv id,
research_chain walks the join that Crossref, OpenAlex, Unpaywall, DataCite,
Zenodo, Hugging Face Papers, PubMed Central, and Semantic Scholar each expose
piecemeal — so a caller no longer has to know all six/seven tools to answer
“what datasets and code are linked to this paper?” or “find an open copy of
this DOI and its license.”
Tools
research_chain({doi | pmid | arxiv_id, max_datasets?, max_citing?})— returns:paper— title, journal, publisher, authors, Crossref’s stated license(s) (URL + which manuscript version each applies to), OpenAlex concepts and citation count.open_copies[]— every open-access location Unpaywall knows about, each with its OWNhost_type,version(publishedVersion|acceptedVersion|submittedVersion), andlicense— never collapsed.is_oa: trueonly means “a free-to-read copy exists somewhere”; it says nothing about reuse rights, which is whylicenseisnull(not guessed) whenever Unpaywall doesn’t state one. A PubMed Central copy (if one exists) is added as its own entry withlicenseandversionexplicitlynull, since NCBI’s ID Converter confirms the copy exists but doesn’t state its terms.pmc_full_text—{has_full_text, pmcid, pmid, url}from NCBI’s ID Converter.datasets—{total, returned, results[]}from DataCite’srelatedIdentifierssearch (datasets/software that cite the paper’s DOI).totalis the real upstream count even whenresultsis truncated tomax_datasets.code—{zenodo[], paperswithcode}. Zenodo is searched bymetadata.related_identifiers.identifier.paperswithcode(Hugging Face Papers, the de-facto successor) reports{found: false, results: []}when the upstream search comes back empty — an empty result isnot_found, never treated as an answer (a bare[]from this upstream used to be routed to as if it were a real “no code exists” answer).citing—{count, top[], note}from Semantic Scholar:countis the paper’s total citation count,topis up tomax_citingciting papers sorted by their own citation count.notecarries an honest partial- failure message (e.g. a rate limit) when one of the two Semantic Scholar calls failed but the other succeeded — it is never silently dropped.retraction— derived from the SAME Crossref record already fetched forpaper(title marker,update-toretraction notices,is-retracted-byrelation) — no extra API call.retracted: falsemeans “no retraction on record”, not proof the paper is clean (coverage depends on the publisher).sources_used/sources_failed— every leg fetches independently and in parallel; a slow or dead upstream lands insources_failedwith a reason, and every other leg still returns.as_of— ISO timestamp of the call.
Auth
Keyless. Every upstream here is a public, unauthenticated API. Crossref,
OpenAlex, and the NCBI ID Converter ask only for a polite-pool contact email,
which this pack supplies as its own ([email protected]) — the same pattern
as the crossref, openalex, and unpaywall packs.
Data sources
- https://api.crossref.org/works/{doi} — title, journal, license, retraction markers.
- https://api.openalex.org/works/doi:{doi} — concepts, citation count.
- https://api.unpaywall.org/v2/{doi} — open-access locations, each with version + license.
- https://pmc.ncbi.nlm.nih.gov/tools/idconv/api/v1/articles/ — DOI/PMID ↔ PMCID resolution. NCBI moved this off
www.ncbi.nlm.nih.gov/pmc/utils/idconvin 2026 — the old host 301-redirects here; this pack hits the new host directly. - https://api.datacite.org/dois — datasets/software citing the paper (
relatedIdentifiers.relatedIdentifiersearch). - https://zenodo.org/api/records — records related to the paper. The search field is
metadata.related_identifiers.identifier, not the barerelated_identifiers.identifier— the bare field silently matches zero records for every query (verified live: 0 vs 19 hits for the same DOI). - https://huggingface.co/api/papers/search — code/implementation search (successor to the shut-down Papers with Code API).
- https://api.semanticscholar.org/graph/v1/paper/DOI:{doi} and
/citations— citation count + citing papers. Keyless pool is ~1 req/sec cumulative across BOTH endpoints; this pack sequences them with a ~1.1s stagger inside one leg rather than firing both in the same instant, which 429’d one of them on nearly every call before the fix.
OSF was scoped as a third code/materials source but dropped: its public
API has no DOI-filterable field (/v2/preprints/?filter[doi]=... returns HTTP
400 “not a filterable field”, verified live). Zenodo + Hugging Face Papers
cover the code/materials join for now.
Identifier resolution
doi— used directly (adoi.orgURL ordoi:prefix is stripped).pmid— resolved to a DOI via NCBI’s ID Converter.arxiv_id— resolved to arXiv’s own auto-registered DataCite DOI (10.48550/arXiv.<id>), which covers essentially every arXiv submission since 2022. This is a construction, not a verified lookup — a pre-2022 arXiv id without a registered DOI will reportnot_foundon the downstream legs rather than resolving.
Tools
- research_chain — Everything openly available around a paper, in ONE call: full text, license, datasets, code, and citations. Given a DOI, PMID, or arXiv id, walks paper (Crossref + OpenAlex) -> open copies with PER-CO
Tools
-
research_chain— Everything openly available around a paper, in ONE call: full text, license, datasets, code, and citations. Given a DOI, PMID, or arXiv id, walks paper (Crossref + OpenAlex) -> open copies with PER-CO