PaperMCP has two clearly defined tools with complete input schemas and reasonable descriptions. Both tools follow verb-noun naming conventions (papers.search, papers.analyze) and are actionable. However, there are notable gaps: output schemas are not documented in the tool definitions, parameter descriptions lack depth and constraint details, and error handling is basic. The server demonstrates partial adherence to Arcade patterns but falls short of production-grade quality.
从 URL 分析论文(支持 PDF、arXiv、期刊/网页、DOI),提取标题/作者/摘要,必要时提取正文摘要。
仅使用 arXiv 按关键字/作者/年份检索论文(arXiv-only)
Output schemas are undocumented. Neither tool specifies what fields, types, or structure are returned. The implementation (analyzePaper.ts lines ~90-105) returns complex objects with metadata, but tool definitions do not declare this to the LLM.
Descriptions are in Chinese exclusively, with no English fallback. This breaks international LLM compatibility and is hostile to English-based agent deployments. Tool descriptions MUST be in the client's language or at minimum English.
Parameter descriptions lack actionable constraint details. Example: 'page_size (<=100)' implies a maximum but does not specify minimum (is 1 valid? 0?). 'sort_by' enum has values but no explanation of ranking semantics. LLMs cannot infer valid ranges or decide between enum options without explicit descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 63 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 29 | - | v1 |
Error handling is minimal. analyzePaper.ts catches generic errors and returns 'isError: true' with a message, but does not categorize errors as retryable vs. fatal or guide the LLM on next steps. Examples: if a URL times out, should the agent retry? If a PDF is too large, what should it do?
No output schema documentation means the LLM cannot plan tool chains. If papers.analyze returns a 'url' field, can it be passed back to papers.search? If it returns 'authors' as an array, what is the structure of each author object? Undocumented outputs force LLMs to guess or make erroneous follow-up calls.
Defaults are not documented in tool definitions. The implementation of analyzePaper has defaults (max_content_length defaults to 5000, include_full_text defaults to false) but these are not visible in the tool's parameter schema. Undocumented defaults force LLMs to pass explicit values even for common cases.