An MCP server that provides tools to search arXiv and retrieve paper content
Both tools have minimal descriptions (under 50 chars) and lack parameter descriptions entirely. The 'search' tool accepts a free-form query string with no constraints, format guidance, or examples of valid input. The 'get' tool accepts a URL with no validation hints or error recovery guidance. Neither tool documents output schema structure, search returns a list of dicts with title/abstract/url, but this is inferred from code, not declared. No error handling, no pagination for search results (hardcoded to 50), no input validation. Tool names are acceptable (verb_noun pattern), but descriptions are too terse to guide LLM selection. Schemas are partially visible in code but not formally declared in tool registration.
Get the content of the given URL from arxiv.
Search Arxiv for the given query
Tool descriptions are under 50 characters and lack context for LLM selection. 'Search Arxiv for the given query' does not explain when to use this vs. other search tools, what the output contains, or how many results are returned.
Parameter 'query' in search tool has no description. LLMs cannot infer whether to pass natural language, boolean operators, field-specific syntax (e.g., 'author:Einstein'), or free text. No format constraints or examples.
Output schema not documented. Search returns a list of dicts with title, abstract, url fields, but this structure is inferred from code, not declared. LLMs cannot plan downstream tool calls without knowing the response shape.
No pagination or result limit documentation. Search hardcodes size=50 in the API call, but the tool description does not state this limit. If arXiv returns fewer results, the LLM has no way to know whether more exist or if pagination is needed.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If the arXiv API is down, the network fails, or the URL is malformed, the tool will raise an unhandled exception. LLMs receive a stack trace with no actionable next step.