{
  "markdown": "# Scholar Sidekick MCP Server\n\n[MCP](https://modelcontextprotocol.io) server for [Scholar Sidekick](https://scholar-sidekick.com) — catch AI-fabricated citations, one at a time or across a whole bibliography, from any AI assistant. It also checks retraction and open-access status, and resolves any scholarly identifier (DOI, PMID, PMCID, ISBN, arXiv, ISSN, NASA ADS bibcode, WHO IRIS URL) into 10,000+ CSL styles or nine export formats.\n\n## Highlights\n\n- **Citation-fabrication detection** — `verifyCitation` cross-checks a claimed citation against the resolved record at its identifier, detecting the dominant AI-driven fabrication pattern documented by [Topaz et al. (Lancet 2026)](https://doi.org/10.1016/S0140-6736(26)00603-3) — real DOI + invented title — that simple identifier resolution cannot catch. Long-form explainer at [scholar-sidekick.com/citation-integrity](https://scholar-sidekick.com/citation-integrity).\n- **Whole-bibliography audit** — `auditBibliography` runs that same check plus a retraction lookup across an entire reference list in one call, taking raw BibTeX, RIS, or CSL JSON and returning a per-entry verdict table with a corpus summary.\n- **Retraction & open-access checks** — `checkRetraction` surfaces retractions, corrections, and expressions of concern (Crossref / Retraction Watch); `checkOpenAccess` returns OA status and the best legal landing or PDF URL (Unpaywall). Both accept any identifier type and resolve it to a DOI under the hood.\n- **Eight identifier types out of the box** — DOIs, PMIDs, PMCIDs, ISBNs, arXiv IDs, ISSNs, NASA ADS bibcodes, and WHO IRIS URLs (rare in citation tooling).\n- **Batch-friendly resolve / format / export** — each accepts a single identifier or a comma- or newline-separated list; the server normalises the list and resolves them in one round trip.\n- **10,000+ citation styles** — five hand-tuned builtins (Vancouver, AMA, APA, IEEE, CSE) plus any [CSL style ID](https://github.com/citation-style-language/styles), with alias and dependent-style resolution.\n- **Nine export formats** — BibTeX, RIS, CSL JSON, EndNote (XML/Refer), RefWorks, MEDLINE, Zotero RDF, CSV, plain text.\n- **Composable workflow** — chain `resolveIdentifier` → `formatCitation` → `exportCitation` in one prompt for an end-to-end \"raw IDs → exportable bibliography\" pipeline.\n- **Provenance metadata on every response** — formatted output is followed by a metadata block (`requestId`, `formatter`, `styleUsed`, `warnings`) so the assistant can show users *which* engine produced each citation.\n- **No key required** — works anonymously against the public Scholar Sidekick API (rate-limited free tier); add a free first-party `ssk_` key for higher limits, or a RapidAPI key for paid/managed tiers.\n- **Hosted HTTP endpoint (no install)** — prefer not to run a local stdio server? Connect any HTTP-capable MCP client straight to `https://scholar-sidekick.com/api/mcp` (Streamable HTTP, same 7 tools). See [Hosted HTTP endpoint](#hosted-http-endpoint-no-install).\n- **REST API twin** — the same endpoints are available as the [Scholar Sidekick REST API](https://scholar-sidekick.com/docs) for non-MCP integrations.\n\n## Tools\n\n| Tool | Description |\n| --- | --- |\n| **verifyCitation** | Verify a claimed citation against the resolved record at its identifier. Detects the Topaz et al. (Lancet 2026) fabrication pattern — real DOI + invented title — that `resolveIdentifier` alone cannot catch. Returns one of four verdicts (`matched` / `mismatch` / `ambiguous` / `not_found`) plus per-field similarity scores and the resolved record so the user can see where the cited title and the actual paper diverged. Optional Stage 3 LLM screen rescues informal-abbreviation false positives (paid plans / first-party authentication only). One citation per call. |\n| **auditBibliography** | Run the `verifyCitation` check plus a retraction lookup across a *whole* bibliography in one call. Accepts raw BibTeX, RIS, or CSL-JSON text, or a pre-parsed `claims[]` array; returns a per-entry verdict table and a corpus summary. Capped at 25 entries per call. |\n| **resolveIdentifier** | Resolve DOIs, PMIDs, PMCIDs, ISBNs, arXiv IDs, ISSNs, ADS bibcodes, and WHO IRIS URLs to structured bibliographic metadata (CSL JSON). Accepts a single identifier or a comma/newline-separated batch. |\n| **formatCitation** | Format one or many identifiers into Vancouver, AMA, APA, IEEE, CSE, or any of 10,000+ CSL styles. Output as text, HTML, or JSON. Returns formatted citations plus a provenance metadata block. |\n| **exportCitation** | Export one or many identifiers to BibTeX, RIS, CSL JSON, EndNote (XML/Refer), RefWorks, MEDLINE, Zotero RDF, CSV, or plain text — ready to write to disk or hand to a reference manager. |\n| **checkRetraction** | Check whether a single work has been retracted, corrected, or had an expression of concern raised. Sourced from Crossref `updated-by` (Retraction Watch). Resolves DOI/PMID/PMCID/arXiv/ADS inputs to a DOI before lookup. One identifier per call. |\n| **checkOpenAccess** | Check whether a single work is openly accessible and where to find the best legal version. Sourced from Unpaywall. Returns OA status (gold/green/hybrid/bronze/closed), best landing/PDF URL, license, and version. Resolves DOI/PMID/PMCID/arXiv/ISBN/ADS inputs to a DOI before lookup. One identifier per call. |\n\nAll seven tools are read-only (`readOnlyHint: true`, `destructiveHint: false`). The exact\n`tools/list` payload — descriptions, JSON Schemas, and annotations — is committed as\n[`tools.json`](tools.json) and ships in the npm tarball, so you can review the full tool\nsurface without running anything.\n\n## Setup\n\n**No key required.** The server works anonymously against the public Scholar Sidekick API\n(`https://scholar-sidekick.com`) at a rate-limited free tier — just install and go. To raise\nyour limits, create a free first-party `ssk_` key at\n[scholar-sidekick.com/account](https://scholar-sidekick.com/account) and set `SCHOLAR_API_KEY`.\nFor paid/managed tiers, subscribe on\n[RapidAPI](https://rapidapi.com/scholar-sidekick-scholar-sidekick-api/api/scholar-sidekick) and\nset `RAPIDAPI_KEY` (which routes calls through the RapidAPI gateway).\n\n> **Prefer zero install?** There's also a **hosted HTTP endpoint** at\n> `https://scholar-sidekick.com/api/mcp` (Streamable HTTP) — connect any HTTP-capable MCP\n> client directly, no `npx` needed. See [Hosted HTTP endpoint](#hosted-http-endpoint-no-install)\n> below. The stdio package documented here is the local-install alternative (and the path for\n> RapidAPI-keyed users).\n\n### Claude Desktop\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows). No key, no `env` block:\n\n```json\n{\n  \"mcpServers\": {\n    \"scholar-sidekick\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"scholar-sidekick-mcp@latest\"]\n    }\n  }\n}\n```\n\nOnly if you want higher rate limits, add an `env` block with a free `ssk_` key from\n[scholar-sidekick.com/account](https://scholar-sidekick.com/account):\n\n```json\n\"env\": { \"SCHOLAR_API_KEY\": \"ssk_your-first-party-key\" }\n```\n\n### Claude Code\n\n```bash\n# Anonymous (no key):\nclaude mcp add scholar-sidekick -- npx -y scholar-sidekick-mcp@latest\n\n# With a free first-party key for higher limits:\nclaude mcp add scholar-sidekick \\\n  -e SCHOLAR_API_KEY=ssk_your-first-party-key \\\n  -- npx -y scholar-sidekick-mcp@latest\n```\n\n### Claude Code plugin (server + skill in one step)\n\nThis repo is also a **Claude Code plugin marketplace**. Installing the plugin wires\nup the MCP server *and* the companion agent skill together — no separate\n`claude mcp add`, no `env` block:\n\n```bash\n/plugin marketplace add mlava/scholar-sidekick-mcp\n/plugin install scholar-sidekick@scholar-sidekick\n```\n\nThe plugin runs the server anonymously (no key). For higher rate limits, add a free\n`ssk_` key from [scholar-sidekick.com/account](https://scholar-sidekick.com/account)\nvia `claude mcp add` as shown above, or use the hosted endpoint below.\n\n### Cursor / VS Code / Windsurf\n\nAdd to `.cursor/mcp.json` or `.vscode/mcp.json`. No key needed:\n\n```json\n{\n  \"mcpServers\": {\n    \"scholar-sidekick\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"scholar-sidekick-mcp@latest\"]\n    }\n  }\n}\n```\n\nFor higher rate limits, add `\"env\": { \"SCHOLAR_API_KEY\": \"ssk_your-first-party-key\" }`.\n\n### Run in a container (sandboxed)\n\nThe server speaks MCP over stdio and needs outbound HTTPS to the Scholar Sidekick API and\nnothing else — no filesystem access, no shell. If your policy is that MCP servers don't get\nhost access, build the image in this repo and run it isolated:\n\n```bash\ndocker build -t scholar-sidekick-mcp .\n```\n\n```json\n{\n  \"mcpServers\": {\n    \"scholar-sidekick\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"-i\", \"--rm\",\n        \"--read-only\", \"--cap-drop\", \"ALL\", \"--security-opt\", \"no-new-privileges\",\n        \"scholar-sidekick-mcp\"\n      ]\n    }\n  }\n}\n```\n\n`-i` is required — that's the stdio pipe. Add `\"-e\", \"SCHOLAR_API_KEY\",` to the args only if\nyou are passing a key for higher limits.\nNo image is published to a registry; build it locally so you're running a bundle you built\nfrom source you can read.\n\n### Agent skill (optional)\n\nInstall a companion [Agent Skill](https://skills.sh) that teaches Claude Code, Cline, and other agents when and how to use these tools — it complements the server config above:\n\n```bash\nnpx skills add mlava/scholar-sidekick-mcp\n```\n\n## Hosted HTTP endpoint (no install)\n\nDon't want to run a local stdio server? Scholar Sidekick is also a **hosted Streamable HTTP\nMCP** at `https://scholar-sidekick.com/api/mcp` — the same seven tools, no `npx`, no local\nprocess. It works **anonymously** (rate-limited free tier); add an `Authorization: Bearer ssk_…`\nheader (a free key from [scholar-sidekick.com/account](https://scholar-sidekick.com/account)) for\nhigher limits.\n\nPoint any HTTP-capable MCP client at it:\n\n```json\n{\n  \"mcpServers\": {\n    \"scholar-sidekick\": {\n      \"type\": \"http\",\n      \"url\": \"https://scholar-sidekick.com/api/mcp\"\n    }\n  }\n}\n```\n\nIn Claude Desktop, use **Settings → Connectors → Add custom connector** (or \"Add HTTP server\")\nand paste the URL. Add the bearer token in the client's header/auth field if you have one.\n\nDiscovery: [`/.well-known/mcp.json`](https://scholar-sidekick.com/.well-known/mcp.json)\n(SEP-1649 server card) lists this endpoint plus the no-auth ChatGPT Apps endpoint at\n`/api/apps/mcp`. The stdio package above remains the local-install alternative and the path for\nRapidAPI-keyed users.\n\n## Environment Variables\n\n| Variable | Required | Description |\n| --- | --- | --- |\n| `SCHOLAR_API_KEY` | No | Free first-party `ssk_` key from [scholar-sidekick.com/account](https://scholar-sidekick.com/account); raises rate limits and enables the verifier's LLM screen. Sent as `Authorization: Bearer`. |\n| `RAPIDAPI_KEY` | No | RapidAPI subscription key for paid/managed tiers; when set, calls route through the RapidAPI gateway. |\n| `RAPIDAPI_HOST` | No | RapidAPI host (defaults to `scholar-sidekick.p.rapidapi.com`) |\n| `SCHOLAR_SIDEKICK_URL` | No | Override the API base URL (defaults to `https://scholar-sidekick.com`, or the RapidAPI gateway when `RAPIDAPI_KEY` is set). |\n| `SCHOLAR_SIDEKICK_TIMEOUT_MS` | No | Request timeout in milliseconds (default: 30000) |\n\nNo key at all → anonymous, rate-limited free tier. With both `SCHOLAR_API_KEY` and `RAPIDAPI_KEY` set, RapidAPI takes precedence.\n\n## Supported Citation Styles\n\nScholar Sidekick supports **10,000+ CSL styles**, including all major formats used in academic publishing:\n\n| Style | Keyword |\n| --- | --- |\n| Vancouver | `vancouver` |\n| APA (7th ed.) | `apa` |\n| AMA | `ama` |\n| IEEE | `ieee` |\n| CSE | `cse` |\n| Chicago (author-date) | `chicago-author-date` |\n| Harvard | `harvard-cite-them-right` |\n| MLA | `modern-language-association` |\n| Turabian | `turabian-fullnote-bibliography` |\n| Nature | `nature` |\n| BMJ | `bmj` |\n| Lancet | `the-lancet` |\n\nAny [CSL style ID](https://github.com/citation-style-language/styles) can be passed as the `style` parameter.\n\n## Example Usage\n\nOnce connected, ask your AI assistant:\n\n**Single identifier**\n\n- \"Format 10.1056/NEJMoa2033700 in Vancouver style\"\n- \"Resolve PMID:30049270 and export as BibTeX\"\n- \"Give me a Chicago citation for arXiv:2301.08745\"\n\n**Batch input** (comma- or newline-separated — every tool handles it)\n\n- \"Format these as APA: 10.1056/NEJMoa2033700, PMID:30049270, ISBN:9780192854087\"\n- \"Resolve all of these and tell me which are journal articles vs books: 10.1056/NEJMoa2033700, ISBN:9780192854087, PMC7793608\"\n\n**End-to-end workflow** (the assistant chains `resolveIdentifier` → `formatCitation` → `exportCitation` in one prompt)\n\n- \"Resolve these three identifiers, format each in AMA, and export the set as BibTeX: 10.1056/NEJMoa2033700, PMID:30049270, ISBN:9780192854087\"\n- \"Build me a Nature-style bibliography from this list and give me a `.bib` file at the end: PMID:30049270, arXiv:2301.08745, 10.1038/s41586-021-03819-2\"\n\n**Retraction & open-access checks** (one identifier per call)\n\n- \"Has 10.1016/S0140-6736(20)31180-6 been retracted?\" → returns `isRetracted: true` with the retraction notice and date\n- \"Is the NumPy paper (10.1038/s41586-020-2649-2) open access? Where can I read it for free?\" → returns OA status plus the best legal PDF URL with license and version\n- \"Check whether arXiv:2301.08745 has any corrections or expressions of concern.\" → resolves arXiv → DOI, then queries Retraction Watch\n\n## Supported Identifiers\n\n- DOIs (e.g. `10.1056/NEJMoa2033700`)\n- PubMed IDs (e.g. `PMID:30049270`)\n- PubMed Central IDs (e.g. `PMC7793608`)\n- ISBNs (e.g. `ISBN:9780192854087`)\n- arXiv IDs (e.g. `2301.08745`)\n- ISSNs and eISSNs\n- NASA ADS bibcodes\n- WHO IRIS URLs\n\n## Provenance & Determinism\n\nEvery `formatCitation` and `exportCitation` response is followed by a metadata block so the assistant — and the user — can see exactly which engine produced each citation:\n\n- `formatter` — `builtin` (one of Vancouver, AMA, APA, IEEE, CSE — hand-tuned in TypeScript) or `csl` (citeproc-js with a CSL stylesheet).\n- `styleUsed` — the canonical style ID after alias and dependent-style resolution (e.g. asking for `harvard` resolves to `harvard-cite-them-right`).\n- `requestId` — for support, reproducibility, and log correlation.\n- `warnings` — populated when a fallback was used or the requested style was a dependent of another.\n\nIdentifier resolution is deterministic given the same inputs and pinned upstream metadata. Repeated identical requests are cache-hit on the underlying REST API and surface that via the `x-scholar-cache` header.\n\n## REST API\n\nFor programmatic access outside of MCP clients, the same capabilities are available as a REST API at [scholar-sidekick.com](https://scholar-sidekick.com/docs) — anonymously, with a free first-party `ssk_` key (`Authorization: Bearer`), or via [RapidAPI](https://rapidapi.com/scholar-sidekick-scholar-sidekick-api/api/scholar-sidekick) for paid tiers. Whichever credential you use here works there too.\n\n## Development\n\n```bash\nnpm install\nnpm run build    # Bundle to dist/mcp-server.mjs\nnpm test         # Run tests\nnpm run typecheck\n```\n\n## License\n\nMIT\n\n[![MCP Badge](https://lobehub.com/badge/mcp/mlavercombe-scholar-sidekick-mcp?style=flat)](https://lobehub.com/mcp/mlavercombe-scholar-sidekick-mcp)\n[![M8ven Verified](https://m8ven.ai/badge/mcp/mlava-scholar-sidekick-mcp-1laij3?variant=verified&v=9fd37dea34eaeca534acad5cd1d1c69c)](https://m8ven.ai/mcp/mlava-scholar-sidekick-mcp-1laij3)\n",
  "bytes": 15561,
  "sha": "8a52c80c41690b42c36646ffa27690d52b63e04d1eb93bf82c4e81ec9d93e08c",
  "repo_slug": "mlava/scholar-sidekick-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_mlava_scholar_sidekick_mcp_f46209f1/readme"
}