Search / io.github.mlava/scholar-sidekick-mcp
Scholar Sidekick
R0· no sign-inCatch AI-fabricated citations (real DOI + fake title). Retraction, open-access, 10,000+ CSL styles.
v0.8.13 · active · repository · website · descriptor JSON · versions
Search / io.github.mlava/scholar-sidekick-mcp
R0· no sign-inCatch AI-fabricated citations (real DOI + fake title). Retraction, open-access, 10,000+ CSL styles.
v0.8.13 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"scholar-sidekick-mcp": {
"type": "http",
"url": "https://scholar-sidekick.com/api/mcp"
}
}
}claude mcp add --transport http scholar-sidekick-mcp https://scholar-sidekick.com/api/mcp[mcp_servers.scholar-sidekick-mcp]
url = "https://scholar-sidekick.com/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"scholar-sidekick-mcp": {
"type": "remote",
"url": "https://scholar-sidekick.com/api/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"scholar-sidekick-mcp": {
"type": "http",
"url": "https://scholar-sidekick.com/api/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=scholar-sidekick-mcp&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vc2Nob2xhci1zaWRla2ljay5jb20vYXBpL21jcCJ9"
}{
"servers": {
"scholar-sidekick-mcp": {
"type": "http",
"url": "https://scholar-sidekick.com/api/mcp"
}
}
}{
"mcpServers": {
"scholar-sidekick-mcp": {
"httpUrl": "https://scholar-sidekick.com/api/mcp"
}
}
}extensions:
"scholar-sidekick-mcp":
enabled: true
name: "scholar-sidekick-mcp"
type: streamable_http
uri: "https://scholar-sidekick.com/api/mcp"
timeout: 300
protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_length7 tools have descriptions over 1,024 characters, which crowds the contexttools.schemasevery tool has an object input schematools.annotations7 of 7 tools declare readOnlyHint or destructiveHinttools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHinttools.token_costabout 5,733 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes4 tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulnsno known advisory in 99 resolved packagesdeps.mcp_sdk_version@modelcontextprotocol/sdk 1.32.1, no known advisorydeps.resolvable[email protected] resolved: 99 packagescheckRetractionchangeddescriptionCheck 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). For multi-paper bibliography audits (clinical guidelines, systematic reviews), loop one call per identifier — the tool intentionally rejects batch input to keep retraction-status results unambiguous per work. 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; loop one call per identifier for multiple papers. 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'). No sibling tool overlaps this — resolveIdentifier returns metadata but not retraction 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; Crossref is queried server-side with its own caching.
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 your tier; Crossref is queried server-side with its own caching.
auditBibliographychangeddescription, output schemaVerify 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, errored, retracted } }. 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 parseErrors and anything past the cap; `summary.retracted` is a separate axis from the verdict counts (an entry can be both matched and retracted), so never sum those fields. A non-zero `truncated` means the audit is incomplete — split the bibliography and call again. Per-entry leniency: one entry that fails to resolve becomes status:'error' without failing the batch. This audits citation IDENTITY (does each identifier resolve to the claimed work, and is it retracted) — it does NOT check whether a source supports the claim it is cited for. Read-only and idempotent. Works anonymously for the non-LLM path; SCHOLAR_API_KEY (a free ssk_ key from https://scholar-sidekick.com/account) or a paid RapidAPI tier raises rate limits and enables the optional LLM screen.
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 parseErrors and anything past the cap; `summary.retracted` is a separate axis from the verdict counts (an entry can be both matched and retracted), so never sum those fields. A non-zero `truncated` means the audit is incomplete — split the bibliography and call again. Per-entry leniency: one entry that fails to resolve becomes status:'error' without failing the batch. This audits citation IDENTITY (does each identifier resolve to the claimed work, and is it retracted) — it does NOT check whether a source supports the claim it is cited for. Read-only and idempotent. Works anonymously for the non-LLM path; SCHOLAR_API_KEY (a free ssk_ key from https://scholar-sidekick.com/account) or a paid RapidAPI tier raises rate limits and enables the optional LLM screen.
auditBibliographychangedinput schemaverifyCitationchangedinput schemaFull history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +website +reachable +uptime-100% +updated-4d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
[email protected] npm98 dependencies, resolved · MCP SDK @modelcontextprotocol/sdk 1.32.1 · advisories checked 2026-10-19
No known advisory affects this dependency graph.
Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://scholar-sidekick.com/api/mcp streamable-http | none | yes | 100% | 1057 ms | 2025-11-25 | 2026-10-20 |
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
scholar-sidekick-mcp | npm | 0.8.13 | – |
auditBibliographyread-only | 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 parseErrors and anything past the cap; `summary.retracted` is a separate axis from the verdict counts (an entry can be both matched and retracted), so never sum those fields. A non-zero `truncated` means the audit is incomplete — split the bibliography and call again. Per-entry leniency: one entry that fails to resolve becomes status:'error' without failing the batch. This audits citation IDENTITY (does each identifier resolve to the claimed work, and is it retracted) — it does NOT check whether a source supports the claim it is cited for. Read-only and idempotent. Works anonymously for the non-LLM path; SCHOLAR_API_KEY (a free ssk_ key from https://scholar-sidekick.com/account) or a paid RapidAPI tier raises rate limits and enables the optional LLM screen. |
checkOpenAccessread-only | 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. |
checkRetractionread-only | 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 your tier; Crossref is queried server-side with its own caching. |
exportCitationread-only | 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. |
formatCitationread-only | 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. |
resolveIdentifierread-only | 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. |
verifyCitationread-only | 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 Stage 3 LLM screen requires authentication — set SCHOLAR_API_KEY (a free ssk_ key from https://scholar-sidekick.com/account) or use a paid RapidAPI tier. SCHOLAR_API_KEY also raises your rate limit. |
Schemas: list_tools.
{
"name": "io.github.mlava/scholar-sidekick-mcp",
"icons": [
{
"src": "https://scholar-sidekick.com/icon-512.png",
"sizes": [
"512x512"
],
"mimeType": "image/png"
},
{
"src": "https://scholar-sidekick.com/icon.svg",
"sizes": [
"any"
],
"mimeType": "image/svg+xml"
}
],
"title": "Scholar Sidekick",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://scholar-sidekick.com/api/mcp",
"type": "streamable-http"
}
],
"version": "0.8.13",
"packages": [
{
"version": "0.8.13",
"transport": {
"type": "stdio"
},
"identifier": "scholar-sidekick-mcp",
"registryType": "npm"
}
],
"repository": {
"url": "https://github.com/mlava/scholar-sidekick-mcp",
"source": "github"
},
"websiteUrl": "https://scholar-sidekick.com/mcp",
"description": "Catch AI-fabricated citations (real DOI + fake title). Retraction, open-access, 10,000+ CSL styles."
}