Resolve scholarly identifiers (DOI, PMID, PMCID, ISBN, arXiv, ISSN, ADS bibcode, WHO IRIS URL) into formatted citations (10,000+ CSL styles) and bibliography exports (BibTeX, RIS, EndNote, CSV…), and check retraction, open-access, and citation-fabrication status — from the terminal via the `scholar` CLI. Wraps the public REST API; needs Node ≥20 but no API key for the free tier. Use when the user wants to look up, cite, export, or verify a reference by DOI, PMID, PMCID, ISBN, arXiv ID, ISSN, ADS bibcode, or WHO IRIS URL from the terminal — including retraction, open-access, and fabricated-citation checks.
70
88%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Advisory
Suggest reviewing before use
Turn a scholarly identifier into a formatted citation, a bibliography file, or an integrity
check (retraction / open-access / fabrication) by running the scholar command. The CLI is a
thin wrapper over the public Scholar Sidekick REST API. No API key required for the free,
rate-limited tier — and ergonomic subcommands mean you don't hand-build JSON request bodies.
Sibling skills, same capabilities: use
scholar-sidekick-apiif there's no Node runtime (plaincurl), orscholar-sidekick-mcpif an MCP host is connected. This skill is the typed-CLI path for Node ≥20.
arxiv skill). This assumes you already have an identifier.scholar-sidekick-api instead when there is no Node runtime, or scholar-sidekick-mcp when an MCP host is connected.The CLI ships on npm as scholar-sidekick-cli (bin: scholar). Requires Node.js ≥ 20.
# zero-install, per-invocation
npx -y scholar-sidekick-cli format 10.1038/nphys1170 --style apa
# or install globally and call `scholar`
npm install -g scholar-sidekick-cli
scholar healthThe examples below use scholar; substitute npx -y scholar-sidekick-cli if you didn't install globally.
| Command | What it does | Batch? |
|---|---|---|
format <ids...> | Format identifiers into a citation style. --style, --lang, --footnote, --output text|html|json. | yes |
resolve <ids...> | Resolve identifiers to bibliographic metadata (CSL/Biblio JSON). | yes |
export <ids...> | Export to a file format: --format bib|ris|csv|csl|endnote-xml|endnote-refer|refworks|medline|zotero-rdf|txt. Raw file content on stdout. | yes |
format-items | Format pre-resolved items from --file <json> or stdin (a JSON array). | — |
stream <ids...> | Format a batch, streaming each result as NDJSON as it resolves. | yes |
verify | Verify a claimed citation against the record at its identifier. --title (required) + an identifier flag (--doi, --pmid, …). | no |
retraction <id> | Retraction / correction / expression-of-concern status (Crossref / Retraction Watch). Alias context: single id. | no |
oa <id> | Open-access status and best legal copy (Unpaywall). Alias: open-access. | no |
styles [query] | List/search available CSL citation styles (paginated). | — |
health | Service liveness and diagnostics. | — |
format, resolve, export, and stream accept multiple identifiers (space-, comma-, or
newline-separated). verify, retraction, and oa take a single identifier. Run
scholar <command> --help for the full option list.
scholar format 10.1038/nphys1170 --style vancouver
scholar format 10.1038/nphys1170 PMID:30049270 --style apa # batch--style: vancouver (default), ama, apa, ieee, cse, or any CSL style ID (chicago-author-date, harvard-cite-them-right, nature, the-lancet, …). Use scholar styles <query> to discover IDs.PMID:, arXiv:, ISBN hyphens, and https://doi.org/… are all tolerated.scholar export 10.1038/nphys1170 PMID:30049270 --format ris > refs.risexport writes the raw file content to stdout, so redirect it straight to a file. Formats:
bib, ris, csv, csl, endnote-xml, endnote-refer, refworks, medline, zotero-rdf, txt.
scholar retraction 10.1016/S0140-6736(97)11096-0
scholar oa 10.1371/journal.pone.0173664One identifier per call. Books/ISBNs have no DOI, so these report a "no DOI" result.
scholar verify --title "The title exactly as cited" --doi 10.1016/S0140-6736(26)00603-3--title is required plus an identifier flag. Verdict ∈ matched / mismatch / ambiguous /
not_found:
mismatch — identifier resolves but the title doesn't: the dominant AI-fabrication pattern (real DOI + invented title; Topaz et al., Lancet 2026).ambiguous — identifier resolves to one paper but the claimed title matches a different real paper (wrong-identifier error, not fabrication).Use this for "is this citation real?", not a plain format/resolve. Add --fail-on-mismatch
to make mismatch/not_found exit non-zero for scripting/CI.
Error-recovery loop (verify). Correctness matters here, so don't guess on failure:
scholar verify ….0 → trust the printed verdict.--json and read the verdict/error field — distinguish a real
mismatch/not_found (report it as such) from a network/usage error (code 2/3, retry or fix flags).matched/genuine verdict the tool did not produce.--json to any command to get the raw API JSON — parse that, don't scrape the pretty text:
scholar resolve 10.1016/S0140-6736(26)00603-3 --json | jq '.[0].title'--quiet. Colour auto-disables off-TTY / with NO_COLOR / --no-color.Works anonymously at the free, rate-limited tier — fine for normal agent use. Optional ssk_
or RapidAPI keys raise limits. The CLI uses standard exit codes (0 ok, 1 API error, 2
network/timeout, 3 usage error). Full detail — keys, --base-url/--timeout, and the exit-code
table — is in REFERENCE.md.
Always check the exit code; on non-zero, report the failure — never invent a citation,
retraction status, OA verdict, or a matched verdict.
scholar-sidekick-api skill (plain curl) instead.--json is what you parse; the default text and the stderr footer are for humans.verify/retraction/oa are single-identifier; only format/resolve/export/stream batch.format-items/stream/styles aren't available — run those anonymously or with an ssk_ key.scholar health (or --json) returns an ok: true payload.scholar format … --json response has a non-empty formatted citation in the JSON.