MCP server for searching and extracting academic papers from arXiv, with support for organizing papers by topic and providing detailed paper information
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation, error handling, and output structure. search_papers has a clear description and proper input schema with types. extract_info lacks output schema documentation. Neither tool documents error cases or recovery paths. Parameter descriptions are minimal (e.g., 'The topic to search for' lacks format/constraint guidance). No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Output is unstructured (plain strings/lists) rather than typed objects. Missing pagination guidance for search_papers despite max_results parameter. No validation or error recovery guidance in descriptions.
Search for information about a specific paper across all topic directories.
Search for papers on arXiv based on a topic and store their information.
extract_info returns unstructured string instead of typed object. LLM cannot reliably parse JSON string response or chain to downstream tools. Should return structured {title, authors, summary, pdf_url, published} object.
No output schema documented for either tool. search_papers returns List[str] (paper IDs only) but description does not state this. extract_info returns JSON string but no schema provided. LLMs cannot plan downstream calls without knowing response structure.
Parameter descriptions lack format/constraint guidance. 'topic' has no guidance on length, format, or examples. 'max_results' lacks min/max bounds (should be 1-100 or similar). 'paper_id' format undefined (arXiv ID format not specified).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
No error handling guidance. extract_info returns plain string 'There's no saved information...' but does not guide LLM on recovery (e.g., 'Try search_papers first'). search_papers has no documented failure modes (network error, invalid topic, API rate limit).
search_papers modifies state (writes to disk) but description does not declare this. LLM cannot determine if tool is safe to retry or has side effects. Missing destructiveHint/idempotentHint annotations.