MCP server for semantic search and analysis of quantitative finance research papers from arXiv, OpenAlex, and Semantic Scholar. Provides tools for searching papers, listing recent papers, retrieving paper details, and generating alpha ideas from research vault.
Server has 6 tools with basic naming and descriptions, but significant gaps in schema completeness and parameter documentation. Tool names follow verb_noun convention (search_papers, list_recent_papers, get_paper, get_vault_stats, list_pending_papers, mark_paper_analyzed). Descriptions are present but brief (avg ~80 chars, below the 194-char baseline). Input schemas are visible for all tools with type declarations, but parameter descriptions are minimal or missing context. Output schemas are not documented. Error handling and recovery guidance are absent. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications in metadata.
Retrieve full details and analysis of a specific paper by arXiv ID.
Get statistics about the research vault: total papers, processed count, date range, top categories, and papers per year.
List papers that have been indexed but not yet fully analyzed (abstract-only entries). Returns papers pending full Claude analysis.
List the most recently published papers in the vault, optionally filtered by category.
Record that a paper has been fully analyzed and written to the vault. Called after Claude completes full analysis.
Search the quant research vault using semantic similarity. Returns papers ranked by relevance to your query.
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields (e.g., what fields does get_paper return? Does search_papers return arxiv_id for chaining to get_paper?).
Tool annotations missing. mark_paper_analyzed is destructive (WRITE risk) but lacks destructiveHint. All READ_ONLY tools lack readOnlyHint. Agents cannot infer safety/idempotency without explicit annotations.
Parameter descriptions lack actionable constraints. 'limit' params have no min/max bounds (e.g., can limit be 0? 1000000?). 'category' in list_recent_papers says 'e.g. q-fin.TR' but should declare valid enum or pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If arxiv_id is invalid in get_paper, what error is returned? Can the agent retry? Should it search first? No guidance.
Pagination not documented. list_recent_papers and list_pending_papers accept 'limit' but no offset/cursor. Large result sets will blow context window. No total_count or next_cursor in response schema.