npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

doiget-cli

v0.8.13

Published

Turn DOIs and arXiv IDs into local PDFs and metadata via official Open-Access APIs. CLI + stdio MCP server. Never bypasses paywalls.

Readme

doiget

doiget is a single-binary, stdio CLI that fetches academic papers via official Open Access APIs (Crossref, Unpaywall, arXiv by default). It is the agent-facing companion to BiblioFetch.jl and shares the same on-disk paper store, so a Julia REPL session and an MCP-driven agent can operate over the same library without coordination.

Install

This file is also the README of the npm package doiget-cli, so both routes are here. Either way the command you get is doiget.

npm — no toolchain, no compiler

npx -y doiget-cli serve      # stdio MCP server, nothing installed
npm install -g doiget-cli    # puts `doiget` on PATH

The per-platform binaries ship as optionalDependencies carrying the same signed release artifacts, with no postinstall download — so this works under --ignore-scripts and through a registry mirror.

What you get is the release binary, built --no-default-features --features oa-only,citation. citation implies metadata, so that is Tier 1 and Tier 2 (OpenAlex, Semantic Scholar, DOAJ, DataCite, HAL, OpenAIRE, CORE, Europe PMC) and the citation graph. Identical to what the shell installer, the GitHub Release assets and the .mcpb Claude Desktop extension give you — every prebuilt channel ships the same binary.

The one thing no prebuilt channel can give you is Tier 3: the institutional TDM connectors are Cargo features, and each needs a signed agreement with the publisher, so they are opted into at build time rather than shipped and gated at runtime. That needs the route below.

cargo — only route to the Tier 3 TDM connectors

cargo install doiget-cli                                    # Tier 1 only (default)
cargo install doiget-cli --features metadata               # +OpenAlex / Semantic Scholar / DOAJ
cargo install doiget-cli --features metadata,tdm-springer  # add Springer Nature OA TDM

Needs a C linker. The default build compiles Tier 1 (Open Access) sources only. Tier 2 metadata enrichment and Tier 3 institutional TDM connectors are individually feature-flagged and must be opted in at build time. There is no tdm-all umbrella feature by design.

See docs/SOURCES.md for the full source matrix, feature names, required env vars, and Terms-of-Service links.

Status

Shipping and fully functional. OA fetch (Crossref / Unpaywall / arXiv), the on-disk store, BibTeX / CSL export, the citation graph, and the stdio MCP server (doiget serve) are all implemented. The installed binary is named doiget. See the CHANGELOG for the current version and history.

Use as an MCP server

doiget serve runs the stdio MCP server. Register it with any MCP host (Claude Desktop, Cursor, …):

{ "mcpServers": { "doiget": { "command": "doiget", "args": ["serve"] } } }

MCP Registry name: mcp-name: io.github.QAtlasHub/doiget

Subcommand surface

| Command | Purpose | Lands in | |---|---|---| | doiget fetch <ref> | Fetch a single paper PDF by DOI or arXiv id. | Phase 1 | | doiget batch <path> | Fetch many refs from a newline-separated file. | Phase 1 | | doiget info <ref> | Show metadata for a stored entry. | Phase 2 | | doiget list-recent [--limit N] | List the most recently fetched entries. | Phase 2 | | doiget search <query> | Search the local store by title / authors / venue. | Phase 2 | | doiget bib <ref> | Export an entry as BibTeX. | Phase 2 | | doiget csl <ref> | Export an entry as CSL JSON. | Phase 2 | | doiget audit-log [--verify] | Inspect or recompute the SHA-256 provenance hash chain. | Phase 2 | | doiget serve | Run as an MCP server over stdio. | Phase 3 | | doiget config <show\|path\|doctor> | Show or doctor the resolved configuration. | Phase 1 |

<ref> is a DOI (e.g. 10.1103/PhysRevLett.130.200601) or an arXiv id (e.g. arXiv:2401.12345). All logging is written strictly to stderr; stdout is reserved for the MCP JSON-RPC channel and structured tool output.

Configuration

doiget reads its config from a TOML file resolved at runtime; secrets live in a separate credentials file. Network politeness defaults (5 fetches/sec global cap, per-source backoff, User-Agent with maintainer contact) are enforced by the binary, not by config.

  • Config schema, search paths, and doiget config doctor semantics: docs/CONFIG.md.
  • Per-source feature flags, env vars, and ToS pointers: docs/SOURCES.md.

Open Access by default

doiget only attempts retrieval through (1) public Open Access sources and (2) credentials the user has personally configured for their own institutional or personal access. Tier 2 metadata sources and Tier 3 publisher TDM endpoints are compile-time gated and additionally require the user to set a DOIGET_ENABLE_* or DOIGET_AGREE_TDM_* env var at runtime — opting in to a Tier 3 source is therefore a three-key gesture (Cargo feature + API key + agreement env). doiget does not bundle any publisher API keys, does not redistribute fetched content, and does not work around access controls. Users are responsible for ensuring they have the right to access content via each source and for compliance with each source's Terms of Service.

License

MIT. The license under which doiget retrieves papers is separate and is determined by each paper's own license, the publisher's API Terms of Service, and the user's own access rights. doiget does not relicense fetched content. See LICENSE and docs/LEGAL.md.