MCP server that prevents citation hallucination by verifying academic citations against 9 authoritative databases
The server demonstrates good definition quality with proper verb-noun naming (verify*, find*, batch*), clear descriptions that state WHAT/WHEN/WHY, comprehensive schema definitions using Zod with type constraints, and appropriate tool annotations. All three tools follow consistent patterns. However, descriptions lack actionable guidance for LLM tool selection (e.g., when to prefer verifyCitation over findVerifiedPapers), parameter descriptions are minimal in some cases, and output schemas are not formally documented. The batch tool and search tool both demonstrate pagination and filtering best practices. Security-wise, all tools are READ_ONLY with no credential parameters.
Verify multiple citations in a single call. More efficient than calling verifyCitation multiple times. Returns verification status for each citation.
Search multiple academic databases (CrossRef, OpenAlex, PubMed, zbMATH, ERIC, HAL, INSPIRE-HEP, Semantic Scholar, DBLP) for papers and return only verified, real citations with DOIs.
CRITICAL: Use this to verify ANY academic citation before mentioning it. Checks multiple databases (CrossRef, OpenAlex, PubMed, zbMATH, ERIC, HAL, INSPIRE-HEP, Semantic Scholar, DBLP) if a paper exists. Returns null if not found.
Output schemas not formally documented in tool definitions. Tool descriptions mention returned fields (e.g., 'verified: true', 'doiUrl') but the actual response structure is not visible in the schema definitions. LLMs cannot reliably plan downstream actions without explicit return type documentation.
Parameter descriptions lack actionable constraints. For example, 'authors' is described as 'Author names (last names sufficient)' but does not clarify: required count, name format (last-only or full?), or handling of special characters. 'journal' lacks any guidance on expected format or common values.
Tool descriptions lack guidance on when to choose one tool over another. All three tools can search/verify citations, but descriptions do not explain: use verifyCitation for single papers you remember, use findVerifiedPapers for discovery. This forces LLMs to guess.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
No documented error handling guidance. Tool descriptions do not explain what happens if no papers are found, how partial matches are ranked, or what 'returns null if not found' means for downstream processing. Error responses should guide LLM recovery (pattern:recovery-guide).
Missing per-item success/failure in batchVerifyCitations. Tool description says 'Returns verification status for each citation' but does not document whether the response includes per-citation error messages or a blanket error if any single citation fails. If one citation fails, can the LLM use the others?