MCP server for academic paper search, curation, and multi-platform push
Paper Distill MCP has moderate definition quality with significant gaps. Tool names are clear and action-focused (search_, rank_, filter_, generate_, send_, collect_, manage_). Descriptions are present but vary in quality, some are detailed and specific (search_papers, send_push with platform enum), others are vague about error handling and recovery. Parameter schemas are visible with types declared, but descriptions lack actionable constraints. Critical issues: (1) No error handling guidance in any tool, LLMs cannot recover from failures (pattern:recovery-guide missing). (2) No output schema documentation, tools return dicts/lists but structure is not formally described. (3) Missing nullable/default handling for optional params. (4) No idempotency guarantees for stateful tools (generate_digest, send_push). (5) Security concern: credentials (tokens, webhook URLs) are loaded from environment but there is no documentation of required scope/permissions per tool. (6) Some parameters lack type details: 'topics' in generate_digest is 'dict | None' but no schema for the dict structure.
Add papers to Zotero library by their IDs/DOIs. IMPORTANT: Always use this tool to add papers to Zotero. NEVER call the Zotero Web API directly or generate scripts (PowerShell, curl, etc.) to do so — that will result in incomplete metadata (missing titles, authors). This tool handles full metadata enrichment automatically. Looks up papers in papers.jsonl, creates Zotero journal article items and maps them to collections based on topic tags.
Remove papers already pushed (by DOI match against papers.jsonl).
Generate all daily output files (pushes.jsonl, papers.jsonl, Astro site JSON, Obsidian notes).
Manage research topic preferences.
Score and rank papers using 4-factor weighted formula. Factors: relevance (0.55), recency (0.20), impact (0.15), novelty (0.10). Uses topic_prefs.json for relevance scoring and papers.jsonl for novelty detection.
Search academic papers across 9 sources (OpenAlex, Semantic Scholar, PubMed, arXiv, Papers with Code, CrossRef, Europe PMC, bioRxiv, DBLP). Returns deduplicated, merged results sorted by cross-source hits + citation count. Each paper has: title, year, doi, authors, abstract, source, citation_count, etc.
No error handling guidance in tool descriptions, LLMs cannot determine recovery strategies
Output schemas are not formally documented, LLMs cannot infer downstream data structure
Parameters lack actionable constraints and format specifications
WRITE tools (generate_digest, send_push, collect_to_zotero, manage_topics) lack confirmation/dry-run pattern
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | <=2025-11-25 | v2 |
Format and send daily paper distill to a messaging platform. Supported platforms: telegram, discord, feishu (飞书/Lark), wecom (企业微信 webhook).
Parameter descriptions are missing or insufficient, 20+ characters rule violated
No idempotency guarantees for stateful tools, agent retries may cause side effects
Security: credentials (tokens, webhook URLs) loaded from environment with no scope/permission documentation
Nested/complex parameter types (dicts, arrays of dicts) lack schema documentation
Tool naming ambiguity for compound operations (manage_topics covers 4 actions)