Automated academic paper full-text fetcher with HKU EZproxy support
The server defines three tools with generally clear naming and reasonable descriptions. All tools follow verb_noun conventions (fetch_paper, search_papers, get_paper_metadata). Descriptions are present and contextually helpful (avg ~150 chars), exceeding the 10-char minimum. Input schemas are explicitly defined with proper JSON Schema types. However, there are notable gaps: parameter descriptions lack detail on formats/constraints (e.g., 'year_range' accepts '2020-2024' or '2020-' per description but no regex/pattern constraint); output schemas are not formally documented (tools return markdown/JSON strings rather than structured objects); error handling is present in code but not surfaced in tool descriptions; and no tool annotations (readOnlyHint, idempotentHint) are declared despite all being safe, read-only operations.
Fetch an academic paper's full text by DOI or URL. Uses Open Access sources (Unpaywall, arXiv) first, then falls back to HKU EZproxy for paywalled content. Results are cached locally.
Get metadata for a paper by DOI from Semantic Scholar. Returns title, authors, year, abstract, citation count, and identifiers. Lighter than fetch_paper - does not download full text.
Search for academic papers via Semantic Scholar. Returns a list of papers with titles, authors, DOIs, and citation counts. Use the DOIs from results with fetch_paper to get full text.
Output schemas not formally documented. All three tools return unstructured markdown/JSON strings ('return str') rather than documented structured objects. LLMs cannot infer which fields to expect or plan downstream calls.
Parameter format constraints not specified in descriptions. 'year_range' accepts '2020-2024' or '2020-' but these formats are only mentioned in the description text, not enforced via JSON Schema regex/pattern. No validation description for 'identifier' (DOI vs URL format distinction).
Tool annotations missing. All three tools are read-only/idempotent but do not declare readOnlyHint or idempotentHint. This prevents clients from showing safety indicators and allows agents to plan retries without understanding consequence.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 66 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 59 | - | v1 |
Error recovery guidance not in tool descriptions. Code checks 'login_needed' and returns a login hint for fetch_paper, but the tool description does not document this error path or hint users when HKU EZproxy login is required. LLMs cannot predict this scenario.
Result limits not enforced or documented. search_papers defaults limit=10 but max is 100 (noted in param description). No description of pagination strategy or guidance for multi-result handling. If limit=100, context window impact not addressed.