AI-operable research workspace for Zotero, Obsidian, and NotebookLM. Use any two, or all three, through CLI, MCP, REST, and dashboard.
The search_papers tool has a well-structured schema with 13 parameters, all with type definitions and descriptions. However, the tool description itself is minimal (49 characters), and several parameter descriptions are vague or lack actionable constraints. The server uses fastmcp, which provides basic tool registration, but lacks sophisticated error handling patterns and composition guidance. The tool is READ_ONLY (safe), but descriptions do not explicitly state this or explain when to call it vs. other discovery tools. Overall: functional definitions with room for LLM-optimization in descriptions and error recovery paths.
Search for academic papers across multiple backends.
Tool description is too brief (49 chars, well below the 194-char baseline for A+ tools). Does not explain WHEN to use this tool, what it returns, or how it differs from other search methods.
Several parameter descriptions lack actionable constraints or examples. E.g., 'backends' is described as 'List of search backends to use (optional)' but does not enumerate valid backends (arxiv, pubmed, google-scholar, crossref, etc.). LLM cannot infer which backends exist.
Parameter 'rank_by' defaults to 'smart' but no enum is specified. LLM cannot know valid ranking strategies. Description should list: 'smart, relevance, citations, recency, impact'.
No output schema is documented. LLM does not know what fields search_papers returns. Rubric requires: 'Document the output schema so LLMs can plan downstream calls and extract the right data.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Parameters 'year_from', 'year_to', 'min_citations', 'min_confidence' lack range constraints. Descriptions should specify: year_from: '1900-2100', min_citations: '0-100000', min_confidence: '0.0-1.0', etc.
No error handling guidance. What happens if no results are found? If a backend is unavailable? If the search query is malformed? Rubric requires: 'Error responses must tell the LLM what to do next.' Currently missing recovery paths.
No pagination or result limiting is mentioned in the tool description or parameters. The input has 'limit' (good), but the description does not warn that large result sets may exhaust context or state a soft cap (e.g., 'max 100 results').
Tool name 'search_papers' is clear and action-oriented (verb-noun), but the description does not answer: 'When should the LLM call this instead of other discovery tools?' E.g., is this for academic papers only, or also preprints? Does it cover books or reports?