{"name":"io.github.laibniz/scholarfetch","slug":"laibniz-scholarfetch","title":"ScholarFetch","description":"Multi-engine scholarly research server for search, traversal, full text, and reading lists.","url":"https://mcp.market/server/laibniz-scholarfetch","rating":null,"grade":"C","score":67,"certified":false,"status":"active","category":"search","tags":["search"],"presence":{"score":11,"stars":1,"forks":0,"downloads_week":null,"last_push_at":"2026-03-23T18:08:05.000Z","license":"Apache-2.0"},"uptime":{"percent":96,"checks":28,"ok":27,"last_checked_at":"2026-11-04T06:10:39.472Z","last_ok_at":"2026-11-04T06:10:39.472Z","latency_ms":324},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/laibniz/scholarfetch","website":null,"version":"0.2.1","remotes":[{"type":"streamable-http","url":"https://laibniz-scholarfetch-web.hf.space/mcp/"}],"packages":[],"tools":[{"name":"scholarfetch_abstract","description":"Read 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"doi":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Doi"},"author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Author Name"},"candidate_index":{"default":1,"title":"Candidate Index","type":"integer"},"paper_index":{"default":1,"title":"Paper Index","type":"integer"},"engines":{"default":"","title":"Engines","type":"string"}},"title":"scholarfetch_abstractArguments"}},{"name":"scholarfetch_article_text","description":"Read 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"doi":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Doi"},"author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Author Name"},"candidate_index":{"default":1,"title":"Candidate Index","type":"integer"},"paper_index":{"default":1,"title":"Paper Index","type":"integer"},"engines":{"default":"","title":"Engines","type":"string"}},"title":"scholarfetch_article_textArguments"}},{"name":"scholarfetch_author_candidates","description":"Disambiguate 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`.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"title":"Name","type":"string"},"limit":{"default":10,"title":"Limit","type":"integer"},"engines":{"default":"","title":"Engines","type":"string"}},"required":["name"],"title":"scholarfetch_author_candidatesArguments"}},{"name":"scholarfetch_author_papers","description":"Expand 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`.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"author_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Author Id"},"author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Author Name"},"candidate_index":{"default":1,"title":"Candidate Index","type":"integer"},"limit":{"default":50,"title":"Limit","type":"integer"},"filters":{"default":"","title":"Filters","type":"string"},"engines":{"default":"","title":"Engines","type":"string"}},"title":"scholarfetch_author_papersArguments"}},{"name":"scholarfetch_doi_lookup","description":"Enrich 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"doi":{"title":"Doi","type":"string"},"engines":{"default":"","title":"Engines","type":"string"}},"required":["doi"],"title":"scholarfetch_doi_lookupArguments"}},{"name":"scholarfetch_references","description":"Expand 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"doi":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Doi"},"author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Author Name"},"candidate_index":{"default":1,"title":"Candidate Index","type":"integer"},"paper_index":{"default":1,"title":"Paper Index","type":"integer"},"engines":{"default":"","title":"Engines","type":"string"}},"title":"scholarfetch_referencesArguments"}},{"name":"scholarfetch_saved_add","description":"Add 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"collection":{"default":"default","title":"Collection","type":"string"},"paper_json":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Paper Json"},"doi":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Doi"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Query"},"result_index":{"default":1,"title":"Result Index","type":"integer"},"author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Author Name"},"candidate_index":{"default":1,"title":"Candidate Index","type":"integer"},"paper_index":{"default":1,"title":"Paper Index","type":"integer"},"engines":{"default":"","title":"Engines","type":"string"}},"title":"scholarfetch_saved_addArguments"}},{"name":"scholarfetch_saved_clear","description":"Clear all papers from a named in-memory reading list. Useful when restarting a research branch.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"collection":{"default":"default","title":"Collection","type":"string"}},"title":"scholarfetch_saved_clearArguments"}},{"name":"scholarfetch_saved_export","description":"Export 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"collection":{"default":"default","title":"Collection","type":"string"},"format":{"default":"citations","title":"Format","type":"string"},"style":{"default":"harvard","title":"Style","type":"string"},"include_references":{"default":false,"title":"Include References","type":"boolean"},"engines":{"default":"","title":"Engines","type":"string"}},"title":"scholarfetch_saved_exportArguments"}},{"name":"scholarfetch_saved_list","description":"List all papers currently saved in a named in-memory reading list. Use this to inspect the working set before exporting or removing items.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"collection":{"default":"default","title":"Collection","type":"string"}},"title":"scholarfetch_saved_listArguments"}},{"name":"scholarfetch_saved_remove","description":"Remove one paper from a named in-memory reading list by DOI or exact title.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"collection":{"default":"default","title":"Collection","type":"string"},"doi":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Doi"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Title"}},"title":"scholarfetch_saved_removeArguments"}},{"name":"scholarfetch_search","description":"Start 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"title":"Query","type":"string"},"limit":{"default":20,"title":"Limit","type":"integer"},"engines":{"default":"","title":"Engines","type":"string"}},"required":["query"],"title":"scholarfetch_searchArguments"}}],"scan":{"score":67,"grade":"C","scanned_at":"2026-09-27T23:35:00.310Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-09-27T23:35:00.288Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 469ms"]},"poisoning":{"score":15,"max":15,"notes":["12 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 1 write-action tools with no auth"]},"maintenance":{"score":4,"max":15,"notes":["last push 188 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://laibniz-scholarfetch-web.hf.space/mcp/","reachable":true,"authRequired":false,"latencyMs":469,"serverInfo":{"name":"ScholarFetch FastMCP","version":"1.12.4"}}],"packages":[],"repo":{"found":true,"owner":"laibniz","repo":"scholarfetch","archived":false,"pushedAt":"2026-03-23T18:08:05Z","stars":1,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/78914897?v=4","ownerCreatedAt":"2021-02-11T13:47:27Z","license":"Apache-2.0"},"icon":{"url":"https://laibniz-scholarfetch-web.hf.space/favicon.ico","source":"site"},"presence":{"stars":1,"forks":0,"downloadsWeek":null,"license":"Apache-2.0","lastPushAt":"2026-03-23T18:08:05.000Z","score":11}}}},"grade_history":[],"reviews":[]}