MCP server for the Elsevier Scopus academic research API — search 100M+ papers, retrieve abstracts, analyze author impact, and track citation trends
Server has 7 well-named tools with complete input schemas and reasonable descriptions (avg 85 chars). All tools follow verb_noun naming (scopus_search, scopus_get_abstract, etc.). Schemas include proper types and enums. However, descriptions lack depth, most are 1-2 sentences without WHEN/WHY guidance, dependency hints, or recovery paths. Parameter descriptions are present but minimal (avg 45 chars vs baseline 72). No output schemas documented. Error handling is absent from tool definitions. No tool annotations (readOnlyHint, etc.). All tools are READ_ONLY but this is not formally declared.
fetch full paper details (abstract, authors, keywords) by ID or DOI
retrieve researcher metrics (h-index, citations, publications)
quick citation count for a paper
year-by-year citation timeline
find papers by topic, author, journal, or year using Boolean queries
find institutional records
find author profiles by name or ORCID
No output schemas documented. LLMs cannot plan downstream calls or extract fields without knowing response structure. All 7 tools lack return type documentation.
Tool descriptions lack WHEN/WHY guidance and recovery hints. E.g., 'fetch full paper details' does not explain when to call this vs scopus_search, or what to do if identifier is invalid. Avg description 85 chars vs baseline 194 chars.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are READ_ONLY but this is not formally declared in schema, forcing LLMs to infer safety from descriptions.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Parameter descriptions are minimal (avg 45 chars). E.g., 'Scopus Boolean query' lacks format guidance. 'Results to return, 1-25 (default: 10)' is good but inconsistent across tools. No dependency hints (e.g., 'If you only have a DOI, use scopus_get_abstract').
No error handling guidance in tool definitions. If a query returns 0 results or an identifier is invalid, LLMs have no recovery path. No pattern for 'user-fixable' vs 'retryable' errors.