Research paper search and information extraction server for arXiv
Two tools with basic verb-noun naming (search_papers, extract_info). Both have descriptions (60-80 chars, below the 194-char baseline), but lack depth on WHEN to use them and what they return. Input schemas present with types and defaults, but parameter descriptions are minimal (10-20 chars vs 72-char baseline). No output schema documented. No error handling guidance. search_papers has a WRITE risk but description does not state it modifies state. extract_info returns unstructured JSON string instead of structured object. No pagination, no result limits stated, no chaining IDs for downstream calls.
Search for information about a specific paper across all topic directories.
Search for papers on arXiv based on a topic and store their information.
Output schemas not documented. search_papers returns List[str] (paper IDs only); extract_info returns unstructured JSON string. LLMs cannot plan downstream calls or extract structured data without knowing response fields.
Descriptions lack WHEN/WHY context and state-modification warnings. search_papers (WRITE risk) does not state it creates directories and modifies files. extract_info does not explain when to call it vs search_papers. Descriptions are 60-80 chars vs 194-char baseline.
Parameter descriptions are minimal (10-20 chars). 'topic' and 'paper_id' lack format guidance, constraints, or examples. 'max_results' has no range (min/max bounds). LLMs cannot validate inputs or understand constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
No error handling guidance. extract_info returns bare string 'There's no saved information related to paper {paper_id}.' instead of actionable recovery steps (e.g., 'Paper not found. Try search_papers() first to retrieve and cache papers.').
No pagination or result limits. search_papers accepts max_results but extract_info iterates all directories without bounds. Large paper collections could exhaust context window. No next_cursor or total_count returned.