Spring Boot research discovery and MCP backend for scholarly metadata search, paper details retrieval, legal full-text access verification, and citation export
OpenScholar MCP demonstrates solid definition quality with well-structured tool schemas and comprehensive parameter documentation. All 6 tools have clear descriptions (avg 180 chars) and properly typed input schemas with constraints. Tool names follow verb_noun convention (search_, get_, resolve_, export_). However, output schemas are not explicitly documented in the source, and error handling guidance is minimal. The server correctly uses tool annotations (readOnlyHint) for all read-only operations, aligning with current MCP patterns. Parameter descriptions are detailed and include constraints (e.g., 'between 1 and 25 items'), supporting LLM reasoning. No security issues detected, no credentials exposed as parameters.
Export citations for one or more OpenScholar papers in BibTeX or CSL JSON format.
Read the stored legal full-text or landing-page resolution for one canonical OpenScholar paper. This database-only tool never fetches bytes or contacts a provider; NOT_YET_RESOLVED means verification has not been run through the REST/UI workflow yet.
Read the caller's saved-paper library, organized by collection, with optional filtering and pagination.
Read canonical stored metadata, identifiers, authorship, provenance, freshness, and the stored legal-access resolution, including coverage, warnings, and locations, for one OpenScholar paper UUID. This tool does not contact providers.
Resolve one DOI, arXiv, or OpenAlex work identifier to a canonical OpenScholar paper UUID. This owner-scoped database lookup only returns papers already visible in the caller's research history or saved library and never contacts a provider.
Output schemas not documented in source. LLMs cannot plan downstream tool calls or extract required fields without knowing response structure (e.g., what fields does search_research return? Is there pagination metadata?).
Error handling lacks recovery guidance. Tools return errors but do not tell LLMs what to do next (e.g., 'Paper not found. Try search_research() first' or 'Invalid identifier format, expected DOI, arXiv, or OpenAlex ID').
search_research returns results with 'cursor' for pagination but response structure (total count, result array field name, per-item fields) is not documented. LLMs cannot reliably extract or chain results.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Search scholarly metadata through OpenScholar's bounded provider/cache/local pipeline. Provider-reported access links are discovery hints; use get_legal_full_text for verified legal locations.
export_citations accepts 'format' as free-form string ('bibtex or csl-json') but should declare as enum constraint. LLMs may hallucinate invalid formats like 'bibtex-json' or 'apa'.
resolve_paper_identifier description mentions 'canonical URL' as valid input but does not specify URL format or domain restrictions. LLMs may pass arbitrary URLs.