ScholarFetch
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Multi-engine scholarly research server for search, traversal, full text, and reading lists.
| Author | io.github.laibniz |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 126 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"ScholarFetch": {
"url": "https://laibniz-scholarfetch-web.hf.space/mcp/",
"transport": "streamable-http"
}
}
}
Measured tools (12)
scholarfetch_searchStart a research traversal from keywords, a DOI, or a person name. Returns deduplicated paper records that you can inspect, save, expand through references, or use as seeds for author exploration. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.
Parameters:
query(required) — stringlimit— integerengines— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
scholarfetch_doi_lookupEnrich one known DOI with metadata, reading links, and full-text availability signals. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.
Parameters:
doi(required) — stringengines— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
scholarfetch_author_candidatesDisambiguate a human author name into ranked identity candidates. Use this before `scholarfetch_author_papers` when the name is ambiguous and you need a stable `candidate_index`. If you pass `engines`, it must include `openalex`.
Parameters:
name(required) — stringlimit— integerengines— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
scholarfetch_author_papersExpand one author into a deduplicated paper list. This is the main author->paper traversal tool and supports research filters. Use `author_id` when you already know the exact author, or `author_name` plus `candidate_index` after `scholarfetch_author_candidates`. Supported comma-separated `filters`: year>=YYYY, year<=YYYY, year=YYYY, has:abstract, has:doi, has:pdf, venue:<text>, title:<text>, doi:<text>. If you pass `engines`, it must include `openalex`.
Parameters:
limit— integerengines— stringfilters— stringauthor_idauthor_namecandidate_index— integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
scholarfetch_abstractRead the best abstract available for a paper. Use with a DOI or with author_name + candidate_index + paper_index after author_papers. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.
Parameters:
doiengines— stringauthor_namepaper_index— integercandidate_index— integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
scholarfetch_article_textRead full paper text when machine-readable content is recoverable. Use with a DOI or with author_name + candidate_index + paper_index. Uses Elsevier first, then open-access fallbacks such as Springer OA, Europe PMC, arXiv PDF, and generic PDF URLs when text is recoverable. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.
Parameters:
doiengines— stringauthor_namepaper_index— integercandidate_index— integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
scholarfetch_referencesExpand a paper into its references. Use with a DOI or with author_name + candidate_index + paper_index. This is the main edge-expansion tool for traversing the literature graph. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.
Parameters:
doiengines— stringauthor_namepaper_index— integercandidate_index— integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
scholarfetch_saved_addAdd one paper to a named in-memory reading list on the MCP server. Best input is paper_json copied from another ScholarFetch tool result, but DOI, query+result_index, or author_name+candidate_index+paper_index also work. Reuse the same collection name across calls to keep one research session together.
Parameters:
doiqueryengines— stringcollection— stringpaper_jsonauthor_namepaper_index— integerresult_index— integercandidate_index— integer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
scholarfetch_saved_listList all papers currently saved in a named in-memory reading list. Use this to inspect the working set before exporting or removing items.
Parameters:
collection— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
scholarfetch_saved_removeRemove one paper from a named in-memory reading list by DOI or exact title.
Parameters:
doititlecollection— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
scholarfetch_saved_clearClear all papers from a named in-memory reading list. Useful when restarting a research branch.
Parameters:
collection— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
scholarfetch_saved_exportExport the current reading list as citations, abstracts, BibTeX, or an aggregated full-text corpus. Valid `format` values: citations, abstracts, bib, fulltext. Valid `style` values when `format=citations`: harvard, apa, ieee. Use `include_references=true` with `format=fulltext` when you want a richer downstream synthesis corpus.
Parameters:
style— stringformat— stringengines— stringcollection— stringinclude_references— boolean
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.