Scholar Sidekick

io.github.mlavaPublished by GitHub account mlavav0.8.13Updated Nov 6, 2026

Catch AI-fabricated citations (real DOI + fake title). Retraction, open-access, 10,000+ CSL styles.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & Memory

Overview

AI-generated overview

Checks scholarly citations for AI-fabricated titles, retractions and open access, and resolves identifiers into formatted or exportable references.

What you can do
  • Verify a single claimed citation against the record at its identifier, or audit a whole bibliography (BibTeX, RIS, CSL JSON) with per-entry verdicts
  • Check retraction, correction and expression-of-concern status, and open-access status with the best legal version
  • Resolve DOIs, PMIDs, PMCIDs, ISBNs, arXiv IDs, ISSNs, ADS bibcodes and WHO IRIS URLs to CSL JSON metadata
  • Format identifiers in Vancouver, AMA, APA, IEEE, CSE or any CSL style, and export to BibTeX, RIS, EndNote, RefWorks, MEDLINE, Zotero RDF, CSV or text
When to use it
Useful when an assistant drafts or reviews academic references and you need to catch invented titles attached to real identifiers, screen a reference list before submission, or turn raw identifiers into a styled, exportable bibliography.
Requirements
Runs as a hosted Streamable HTTP endpoint or as a local npm package via npx (Node.js). No key is needed for the anonymous, rate-limited free tier; optional SCHOLAR_API_KEY or RAPIDAPI_KEY raise limits. Needs outbound HTTPS to the Scholar Sidekick API.
Before you install
All tools are described as read-only, but citation text and identifiers you submit are sent to the third-party Scholar Sidekick API (and to RapidAPI if that key is used). Optional keys are passed as environment variables or a bearer header; keep them out of shared configs. Bibliography audits are capped at 25 entries per call.

Installation

In SourceWeft

  1. Open Scholar Sidekick in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.mlava%2Fscholar-sidekick-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "scholar-sidekick": {
      "type": "http",
      "url": "https://scholar-sidekick.com/api/mcp"
    }
  }
}

README

Scholar Sidekick MCP Server

MCP server for Scholar Sidekick — 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.

Highlights

  • 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) — real DOI + invented title — that simple identifier resolution cannot catch. Long-form explainer at scholar-sidekick.com/citation-integrity.
  • 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.
  • 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.
  • 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).
  • 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.
  • 10,000+ citation styles — five hand-tuned builtins (Vancouver, AMA, APA, IEEE, CSE) plus any CSL style ID, with alias and dependent-style resolution.
  • Nine export formats — BibTeX, RIS, CSL JSON, EndNote (XML/Refer), RefWorks, MEDLINE, Zotero RDF, CSV, plain text.
  • Composable workflow — chain resolveIdentifier → formatCitation → exportCitation in one prompt for an end-to-end "raw IDs → exportable bibliography" pipeline.
  • 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.
  • 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.
  • 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.
  • REST API twin — the same endpoints are available as the Scholar Sidekick REST API for non-MCP integrations.

Tools

ToolDescription
verifyCitationVerify 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.
auditBibliographyRun 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.
resolveIdentifierResolve 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.
formatCitationFormat 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.
exportCitationExport 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.
checkRetractionCheck 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.
checkOpenAccessCheck 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.

All seven tools are read-only (readOnlyHint: true, destructiveHint: false). The exact tools/list payload — descriptions, JSON Schemas, and annotations — is committed as tools.json and ships in the npm tarball, so you can review the full tool surface without running anything.

Setup

No key required. The server works anonymously against the public Scholar Sidekick API (https://scholar-sidekick.com) at a rate-limited free tier — just install and go. To raise your limits, create a free first-party ssk_ key at scholar-sidekick.com/account and set SCHOLAR_API_KEY. For paid/managed tiers, subscribe on RapidAPI and set RAPIDAPI_KEY (which routes calls through the RapidAPI gateway).

Prefer zero install? There's also a hosted HTTP endpoint at https://scholar-sidekick.com/api/mcp (Streamable HTTP) — connect any HTTP-capable MCP client directly, no npx needed. See Hosted HTTP endpoint below. The stdio package documented here is the local-install alternative (and the path for RapidAPI-keyed users).

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows). No key, no env block:

json
{  "mcpServers": {    "scholar-sidekick": {      "command": "npx",      "args": ["-y", "scholar-sidekick-mcp@latest"]    }  }}

Only if you want higher rate limits, add an env block with a free ssk_ key from scholar-sidekick.com/account:

json
"env": { "SCHOLAR_API_KEY": "ssk_your-first-party-key" }

Claude Code

bash
# Anonymous (no key):claude mcp add scholar-sidekick -- npx -y scholar-sidekick-mcp@latest
# With a free first-party key for higher limits:claude mcp add scholar-sidekick \  -e SCHOLAR_API_KEY=ssk_your-first-party-key \  -- npx -y scholar-sidekick-mcp@latest

Claude Code plugin (server + skill in one step)

This repo is also a Claude Code plugin marketplace. Installing the plugin wires up the MCP server and the companion agent skill together — no separate claude mcp add, no env block:

bash
/plugin marketplace add mlava/scholar-sidekick-mcp/plugin install scholar-sidekick@scholar-sidekick

The plugin runs the server anonymously (no key). For higher rate limits, add a free ssk_ key from scholar-sidekick.com/account via claude mcp add as shown above, or use the hosted endpoint below.

Grok Build plugin

The grok-plugin/ folder is a Grok Build plugin: the hosted MCP server plus the same agent skill. No key, nothing runs locally:

bash
grok plugin install scholar-sidekick --trust

Cursor / VS Code / Windsurf

Add to .cursor/mcp.json or .vscode/mcp.json. No key needed:

json
{  "mcpServers": {    "scholar-sidekick": {      "command": "npx",      "args": ["-y", "scholar-sidekick-mcp@latest"]    }  }}

For higher rate limits, add "env": { "SCHOLAR_API_KEY": "ssk_your-first-party-key" }.

Run in a container (sandboxed)

The server speaks MCP over stdio and needs outbound HTTPS to the Scholar Sidekick API and nothing else — no filesystem access, no shell. If your policy is that MCP servers don't get host access, build the image in this repo and run it isolated:

bash
docker build -t scholar-sidekick-mcp .
json
{  "mcpServers": {    "scholar-sidekick": {      "command": "docker",      "args": [        "run", "-i", "--rm",        "--read-only", "--cap-drop", "ALL", "--security-opt", "no-new-privileges",        "scholar-sidekick-mcp"      ]    }  }}

-i is required — that's the stdio pipe. Add "-e", "SCHOLAR_API_KEY", to the args only if you are passing a key for higher limits. No image is published to a registry; build it locally so you're running a bundle you built from source you can read.

Agent skill (optional)

Install a companion Agent Skill that teaches Claude Code, Cline, and other agents when and how to use these tools — it complements the server config above:

bash
npx skills add mlava/scholar-sidekick-mcp

Hosted HTTP endpoint (no install)

Don't want to run a local stdio server? Scholar Sidekick is also a hosted Streamable HTTP MCP at https://scholar-sidekick.com/api/mcp — the same seven tools, no npx, no local process. It works anonymously (rate-limited free tier); add an Authorization: Bearer ssk_… header (a free key from scholar-sidekick.com/account) for higher limits.

Point any HTTP-capable MCP client at it:

json
{  "mcpServers": {    "scholar-sidekick": {      "type": "http",      "url": "https://scholar-sidekick.com/api/mcp"    }  }}

In Claude Desktop, use Settings → Connectors → Add custom connector (or "Add HTTP server") and paste the URL. Add the bearer token in the client's header/auth field if you have one.

Discovery: /.well-known/mcp.json (SEP-1649 server card) lists this endpoint plus the no-auth ChatGPT Apps endpoint at /api/apps/mcp. The stdio package above remains the local-install alternative and the path for RapidAPI-keyed users.

Environment Variables

VariableRequiredDescription
SCHOLAR_API_KEYNoFree first-party ssk_ key from scholar-sidekick.com/account; raises rate limits and enables the verifier's LLM screen. Sent as Authorization: Bearer.
RAPIDAPI_KEYNoRapidAPI subscription key for paid/managed tiers; when set, calls route through the RapidAPI gateway.
RAPIDAPI_HOSTNoRapidAPI host (defaults to scholar-sidekick.p.rapidapi.com)
SCHOLAR_SIDEKICK_URLNoOverride the API base URL (defaults to https://scholar-sidekick.com, or the RapidAPI gateway when RAPIDAPI_KEY is set).
SCHOLAR_SIDEKICK_TIMEOUT_MSNoRequest timeout in milliseconds (default: 30000)

No key at all → anonymous, rate-limited free tier. With both SCHOLAR_API_KEY and RAPIDAPI_KEY set, RapidAPI takes precedence.

Supported Citation Styles

Scholar Sidekick supports 10,000+ CSL styles, including all major formats used in academic publishing:

StyleKeyword
Vancouvervancouver
APA (7th ed.)apa
AMAama
IEEEieee
CSEcse
Chicago (author-date)chicago-author-date
Harvardharvard-cite-them-right
MLAmodern-language-association
Turabianturabian-fullnote-bibliography
Naturenature
BMJbmj
Lancetthe-lancet

Any CSL style ID can be passed as the style parameter.

Example Usage

Once connected, ask your AI assistant:

Single identifier

  • "Format 10.1056/NEJMoa2033700 in Vancouver style"
  • "Resolve PMID:30049270 and export as BibTeX"
  • "Give me a Chicago citation for arXiv:2301.08745"

Batch input (comma- or newline-separated — every tool handles it)

  • "Format these as APA: 10.1056/NEJMoa2033700, PMID:30049270, ISBN:9780192854087"
  • "Resolve all of these and tell me which are journal articles vs books: 10.1056/NEJMoa2033700, ISBN:9780192854087, PMC7793608"

End-to-end workflow (the assistant chains resolveIdentifier → formatCitation → exportCitation in one prompt)

  • "Resolve these three identifiers, format each in AMA, and export the set as BibTeX: 10.1056/NEJMoa2033700, PMID:30049270, ISBN:9780192854087"
  • "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"

Retraction & open-access checks (one identifier per call)

  • "Has 10.1016/S0140-6736(20)31180-6 been retracted?" → returns isRetracted: true with the retraction notice and date
  • "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
  • "Check whether arXiv:2301.08745 has any corrections or expressions of concern." → resolves arXiv → DOI, then queries Retraction Watch

Supported Identifiers

  • DOIs (e.g. 10.1056/NEJMoa2033700)
  • PubMed IDs (e.g. PMID:30049270)
  • PubMed Central IDs (e.g. PMC7793608)
  • ISBNs (e.g. ISBN:9780192854087)
  • arXiv IDs (e.g. 2301.08745)
  • ISSNs and eISSNs
  • NASA ADS bibcodes
  • WHO IRIS URLs

Provenance & Determinism

Every formatCitation and exportCitation response is followed by a metadata block so the assistant — and the user — can see exactly which engine produced each citation:

  • formatter — builtin (one of Vancouver, AMA, APA, IEEE, CSE — hand-tuned in TypeScript) or csl (citeproc-js with a CSL stylesheet).
  • styleUsed — the canonical style ID after alias and dependent-style resolution (e.g. asking for harvard resolves to harvard-cite-them-right).
  • requestId — for support, reproducibility, and log correlation.
  • warnings — populated when a fallback was used or the requested style was a dependent of another.

Identifier 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.

REST API

For programmatic access outside of MCP clients, the same capabilities are available as a REST API at scholar-sidekick.com — anonymously, with a free first-party ssk_ key (Authorization: Bearer), or via RapidAPI for paid tiers. Whichever credential you use here works there too.

Development

bash
npm installnpm run build    # Bundle to dist/mcp-server.mjsnpm test         # Run testsnpm run typecheck

License

MIT

[MCP Badge] [M8ven Verified]

Source: README.md at commit 2cc6f74

Tools

7

verifyCitation

Verify Citation

Verify a claimed citation against the resolved record at its identifier. Detects the dominant AI-driven fabrication pattern documented by Topaz et al. (Lancet 2026): a real, resolvable identifier (DOI / PMID / PMCID / arXiv / etc.) paired with a title that does NOT correspond to the paper at that identifier. Use when the user pastes a citation and asks 'is this real?' or 'check this DOI' — most fabricated citations resolve cleanly under doi.org but their cited title and the resolved title disagree. Single citation per call. Required: `title` plus exactly one identifier (doi, pmid, pmcid, isbn, arxiv, issn, ads, or whoIrisUrl). Optional refinements: author (first-author family name), year, container (journal). Set `screenWithLlm: true` to invoke the Stage 3 LLM screen on low-confidence mismatches (catches informal-abbreviation false positives); LLM access is gated to authenticated first-party keys and paid RapidAPI tiers — anonymous callers get 400 LLM_SCREEN_FORBIDDEN. Returns: { verdict: 'matched' | 'mismatch' | 'not_found' | 'ambiguous', confidence: 'high' | 'medium' | 'low', matched: <resolved record or null>, mismatches: [{field, claimed, resolved, similarity}], candidates: [{item, registries, score}] (when title-search ran), _provenance: {stages_run, resolved_via, registries_searched, llm_screen} }. Verdict semantics: 'matched' = claim agrees with resolved record; 'mismatch' = identifier resolves but title does not match (Topaz fabrication pattern); 'ambiguous' = identifier resolves to one paper but the claimed title matches a DIFFERENT paper found via title-search (CITADEL 'citation error' subtype — wrong identifier for a real paper); 'not_found' = neither the identifier nor the title resolves anywhere. No sibling tool overlaps: resolveIdentifier returns metadata for a known-good identifier; verifyCitation is the only tool that cross-checks claimed title vs resolved metadata. Read-only and idempotent — safe to retry. Works anonymously for the non-LLM path; the

ParametersadsdoiisbnissnpmidyeararxivpmcidtitlerequiredauthorcontainerwhoIrisUrl+2 more

auditBibliography

Audit Bibliography

Verify a WHOLE bibliography in one call — the batch counterpart to verifyCitation. Each entry runs the same fabrication check (real, resolvable identifier paired with a title that does NOT match the resolved paper; Topaz et al., Lancet 2026) plus a retraction lookup, and the tool returns a per-entry verdict table and a corpus summary. Use when the user pastes a reference list, a .bib / .ris file, or asks to 'check all these citations at once' / 'audit my bibliography' / 'which of these references are fake or retracted'. Input: EITHER `bibliography` (raw BibTeX / RIS / CSL-JSON text — format auto-detected) OR `claims` (an array of pre-parsed {title + identifier} objects), not both. Capped at 25 entries per call; excess is dropped and reported via `truncated`. `checks` defaults to ['retraction'] (pass [] to skip); `screenWithLlm` opt-in per entry (same auth gating as verifyCitation). Returns: { format, entries: [{ index, sourceKey?, status: 'ok'|'error', verdict: 'matched' | 'mismatch' | 'not_found' | 'ambiguous', confidence, matched, mismatches, retraction: { checked, doi, isRetracted, hasCorrections, hasConcern, notices } | null, _provenance }], parseErrors: [{ index, error, message }], truncated, summary: { total, matched, mismatch, ambiguous, not_found, not_checked, errored, retracted } }. `not_checked` counts entries declined before a verdict (no identifier, container-only identifier, too sparse) — report them as unverified, never as suspect. Reading the result: `index` is 1-BASED (entry 1 is the first reference) — do not add 1 again when reporting it. `sourceKey` is the entry's own key in the source file (BibTeX cite key, RIS `ID`, CSL-JSON `id`) and is the reliable way to point a user at the offending reference; it is absent on the claims[] path. `entries` and `parseErrors` share one index space, so a given input position appears in exactly one of them — report parseErrors as UNCHECKED, never as clean. `summary.total` counts verifiable entries only, excluding p

ParameterschecksclaimsformatbibliographyscreenWithLlmsemanticTitle

checkRetraction

Check Retraction

Check whether a single scholarly work has been retracted, corrected, or had an expression of concern raised. Use when the user asks 'has this paper been retracted?' or wants to verify a paper's standing before citing it (clinical, regulatory, evidence-synthesis contexts). To check a WHOLE reference list for retractions (e.g. 'check all these citations for retractions' at the end of a literature review, a guideline or a systematic review), use auditBibliography instead — one call runs the retraction check plus the fabrication check on up to 25 entries. Sourced from Crossref `updated-by` (which mirrors Retraction Watch). Resolves DOI/PMID/PMCID/arXiv/ADS inputs to a DOI before lookup; ISBN inputs always return doi=null and reason='no_doi' since books are not in the retraction graph. arXiv inputs check the linked published-journal DOI when arXiv records one; a preprint without one returns doi=null and reason='no_doi' (preprints are outside the Crossref retraction graph — arXiv marks withdrawals on the abstract page instead). Single identifier per call — does NOT accept comma/newline batches; for a handful of papers loop one call per identifier, for a bibliography use auditBibliography. Returns: { doi, resolvedFrom?, reason?, result } where result has isRetracted, hasCorrections, hasConcern (booleans), notices (array of {type, label, doi, date, source} where type is a raw Crossref update type such as 'retraction', 'correction', 'erratum' or 'expression_of_concern'), and title; result is null when no DOI could be resolved and reason explains why ('no_doi'). resolveIdentifier returns metadata but not retraction status; auditBibliography includes this check for every entry of a bibliography. Read-only and idempotent — safe to retry. Works anonymously against the public Scholar Sidekick API (rate-limited free tier); set SCHOLAR_API_KEY (a free ssk_ key from https://scholar-sidekick.com/account) for higher limits, or RAPIDAPI_KEY for paid RapidAPI tiers. Rate limits follow y

Parametersidrequired

checkOpenAccess

Check Open Access

Check whether a single scholarly work is openly accessible and where to find the best legal version. Use when the user asks 'is this open access?', 'where can I read this for free?', or wants the OA license/version before reusing or redistributing. Sourced from Unpaywall. Resolves DOI/PMID/PMCID/arXiv/ISBN/ADS inputs to a DOI before lookup; inputs that don't map to a DOI return doi=null and reason='no_doi'. arXiv inputs check the linked published-journal DOI when arXiv records one; a preprint without one returns doi=null and reason='no_doi' (Unpaywall does not index arXiv preprints, which are freely readable on arXiv regardless). Single identifier per call — does NOT accept comma/newline batches; loop one call per identifier for multiple papers. Returns: { doi, resolvedFrom?, reason?, result } where result has isOa (boolean), oaStatus ('gold' | 'green' | 'hybrid' | 'bronze' | 'closed'), title, bestLocation ({url, hostType: 'publisher' | 'repository', license, version: 'submittedVersion' | 'acceptedVersion' | 'publishedVersion'} or null), and locations (array of the same shape); result is null when no DOI could be resolved and reason explains why ('no_doi'). No sibling tool overlaps this — resolveIdentifier returns metadata but not OA status. Read-only and idempotent — safe to retry. Works anonymously against the public Scholar Sidekick API (rate-limited free tier); set SCHOLAR_API_KEY (a free ssk_ key from https://scholar-sidekick.com/account) for higher limits, or RAPIDAPI_KEY for paid RapidAPI tiers. Rate limits follow your tier; Unpaywall is queried server-side with its own caching.

Parametersidrequired

resolveIdentifier

Resolve Identifier

Resolve scholarly identifiers to structured CSL JSON metadata (title, authors, journal, year, identifiers). Use when the user wants raw bibliographic data to inspect, transform, or feed into another tool — not a formatted citation. Common single-shot conversions: PMID → PMCID, arXiv → DOI, ISBN → CSL JSON, WHO IRIS URL → structured metadata. Accepts DOI, PMID, PMCID, ISBN, arXiv ID, ISSN, NASA ADS bibcode, or WHO IRIS URL, with or without prefixes (PMID:, arXiv:, ISBN hyphens, https://doi.org/...). Pass a single identifier or a comma/newline-separated batch — one round trip per call. Returns: a JSON array of CSL items, each with id, type, title, author[], issued.date-parts, container-title, DOI/PMID/PMCID/ISBN/ISSN/URL when available. Use formatCitation instead when the user wants a finished citation string in a specific style; use exportCitation when they want a downloadable bibliography file. Read-only and idempotent — safe to retry. Works anonymously against the public Scholar Sidekick API (rate-limited free tier); set SCHOLAR_API_KEY (a free ssk_ key from https://scholar-sidekick.com/account) for higher limits, or RAPIDAPI_KEY for paid RapidAPI tiers. Rate limits follow your tier; the underlying REST API caches repeated identical requests and surfaces cache state in the x-scholar-cache response header.

Parameterstextrequired

formatCitation

Format Citation

Format scholarly identifiers into a finished citation in a specific style. Use when the user wants a paste-ready citation string for a manuscript, slide, message, footnote, or in-line reference. Style defaults to vancouver if unspecified; ask the user before defaulting if any ambiguity exists (e.g. 'Harvard' and 'Chicago' have multiple variants — confirm which one). Supports five hand-tuned builtins (vancouver, ama, apa, ieee, cse) plus any of 10,000+ CSL style IDs (chicago-author-date, harvard-cite-them-right, modern-language-association, nature, bmj, the-lancet, etc.). Alias and dependent-style resolution apply, so 'harvard' resolves to 'harvard-cite-them-right' and the canonical ID is reported back as styleUsed. Output defaults to text; pass output=html for marked-up HTML or output=json for structured CSL items. Accepts the same identifier formats as resolveIdentifier (DOI/PMID/PMCID/ISBN/arXiv/ISSN/ADS/WHO IRIS, prefixes tolerated), single or comma/newline-separated batch — one round trip per call. Returns: one of { text, html, items } depending on the output parameter, followed by a metadata block ({formatter: 'builtin' | 'csl', styleUsed, requestId, warnings?}) appended as a second text content item — surface this to the user when they care about reproducibility. Use resolveIdentifier instead when the user wants raw metadata to inspect or transform; use exportCitation when they want a downloadable bibliography file. Read-only and idempotent — safe to retry. Works anonymously against the public Scholar Sidekick API (rate-limited free tier); set SCHOLAR_API_KEY (a free ssk_ key from https://scholar-sidekick.com/account) for higher limits, or RAPIDAPI_KEY for paid RapidAPI tiers. Rate limits follow your tier.

Parameterslangtextrequiredstyleoutputfootnote

exportCitation

Export Citation

Export scholarly identifiers to a bibliography file format ready to write to disk or paste into a reference manager. Use when the user wants a file (.bib, .ris, .nbib, .xml, .rdf, .csv) for Zotero, Mendeley, EndNote, RefWorks, BibTeX/LaTeX, Pandoc, or Excel. Format parameter is required: bib (BibTeX — LaTeX), ris (RIS — most widely supported by reference managers), csl (CSL JSON — Pandoc/Quarto), endnote-xml, endnote-refer, refworks, medline (NBIB — PubMed round-trips, clinical workflows), zotero-rdf, csv (spreadsheet-friendly), or txt (plain-text bibliography rendered with the optional style parameter — txt is the only format that uses style; the others have their own structured shape and ignore it). Accepts the same identifier formats as resolveIdentifier (DOI/PMID/PMCID/ISBN/arXiv/ISSN/ADS/WHO IRIS, prefixes tolerated), single or comma/newline-separated batch — one round trip per call. Returns: { content: string, format: string } where content is the entire bibliography in the requested format as a single string — write it to a file (.bib/.ris/.nbib/etc.) or paste it directly into the target tool. Use formatCitation instead when the user wants in-line citation text (manuscript, slide); use resolveIdentifier when they want raw structured metadata. Read-only and idempotent — safe to retry. Works anonymously against the public Scholar Sidekick API (rate-limited free tier); set SCHOLAR_API_KEY (a free ssk_ key from https://scholar-sidekick.com/account) for higher limits, or RAPIDAPI_KEY for paid RapidAPI tiers. Rate limits follow your tier.

Parameterslangtextrequiredstyleformatrequired

Version history

3
  1. v0.8.13LatestOct 16, 2026
  2. v0.8.12Oct 12, 2026
  3. v0.8.11Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts