Resolve, format, export, and verify academic citations (DOI incl. shortDOI aliases, PMID, > PMCID, ISBN, ISSN, arXiv, ADS, WHO IRIS) - plus retraction and open-access checks.
# Scholar Sidekick — citations, retraction, open-access, fabrication-checking
Scholar Sidekick turns a scholarly **identifier** into clean citations and integrity
checks. Reach for it whenever the user mentions a DOI, PMID, PMCID, ISBN, ISSN, arXiv ID,
ADS bibcode, or WHO IRIS URL, or asks to format/export references, or asks whether a paper
is retracted, open access, or a real (non-fabricated) citation.
It does **not** search for papers by topic — it assumes you already have an identifier.
## Two paths (this plugin bundles both)
- **MCP server (preferred when connected)** — the bundled `scholar-sidekick` server exposes
native tools. Runs anonymously at a rate-limited free tier; **no key required**.
- **REST API (keyless fallback)** — `https://scholar-sidekick.com/api/*` works anonymously
over `curl`, no key, at a free rate-limited tier. Use this if the MCP server isn't
connected. See the `scholar-sidekick-api` skill for the full REST recipe.
Both paths are anonymous by default. **Never ask the user for an API key** to make a call work. A free first-party `ssk_` key (https://scholar-sidekick.com/account) only raises rate limits - mention it if and only if they actually hit one.
Never scrape the website UI — call the JSON API (or MCP tools).
## Pick the right tool
| The user wants… | Tool (MCP) | REST endpoint |
|---|---|---|
| Structured metadata for an identifier | `resolveIdentifier` | `POST /api/format` (`output: json`) |
| A formatted citation (Vancouver/APA/IEEE/CSE/AMA or any CSL style) | `formatCitation` | `POST /api/format` |
| A bibliography file (BibTeX, RIS, EndNote XML, RefWorks, NBIB, RDF, CSV, CSL-JSON) | `exportCitation` | `POST /api/export` |
| "Has this been retracted / corrected?" | `checkRetraction` | `POST /api/retraction-check` |
| "Is there a free / open-access copy?" | `checkOpenAccess` | `POST /api/oa-check` |
| "Is this citation real / did you make it up?" | `verifyCitation` | `POST /api/verify` |
| Audit a whole bibliography / .bib / .ris file at once | `auditBibliography` | `POST /api/audit` |
**Critical:** for "is this citation real?", use **`verifyCitation`**, *not* `resolveIdentifier`.
A plain resolve returns whatever the registry holds for the identifier and so misses the
dominant fabrication pattern — a real, resolvable DOI paired with an invented title (Topaz
et al., Lancet 2026). Only `verifyCitation` compares the *claimed* citation against reality
and returns a verdict (`matched` / `mismatch` / `ambiguous` / `not_found`).
## Rules of engagement
- Pass identifiers **verbatim** — don't strip `PMID:`, `arXiv:`, ISBN hyphens, or `https://doi.org/…` prefixes; detection is automatic. A shortDOI alias (`10/aabbe`, from shortdoi.org) works anywhere a DOI does and is expanded to the full DOI before resolving.
- `formatCitation` / `exportCitation` accept several newline-separated identifiers (batch). `checkRetraction` / `checkOpenAccess` / `verifyCitation` take **one** identifier per call; to check a whole reference list in one call, use `auditBibliography` (max 25 entries).
- Books / ISBNs have no DOI, so retraction and open-access checks return a "no DOI" result.
- **Never fabricate a fallback.** If a call fails or returns `ok: false`, report that — do
not invent a citation, a retraction status, an OA verdict, or a "matched" verdict.
## If the MCP tools are missing
The REST fallback is the right move — the `scholar-sidekick-api` skill works with no
key. But say plainly that you used it, and do not describe the reason as an API or
authentication problem.
A `curl` error such as `CONNECT tunnel failed`, a proxy 403, or a bare timeout means the
request never reached Scholar Sidekick. Report it as a local network or setup problem, not
as "the citation could not be verified" — those are different claims and only the second
one is about the paper.
If the MCP server is installed but its tools are absent, it failed to start. The usual
cause is that the editor cannot find `npx`: launched from the Dock it inherits no shell
environment, so a Node from a version manager is invisible to it. Point the user at the
plugin README's Troubleshooting section rather than guessing. Never tell them to obtain
an API key to fix it — both paths are anonymous, and a key fixes nothing here.
Full agent guide: https://scholar-sidekick.com/AGENTS.md · index: https://scholar-sidekick.com/llms.txt