DataCite MCP — DOIs for research datasets (free, no auth)
Three well-named, read-only tools with clear descriptions (avg 156 chars, within baseline 194). All tools have explicit input schemas with typed properties and descriptions. However, output schemas are NOT documented, LLMs cannot predict response structure for downstream chaining. Parameter descriptions lack constraints (e.g., page_size 1-1000 stated but not enforced in schema; resource_type enum not declared). Error handling is minimal (404/429 caught but no recovery guidance). No tool annotations (readOnlyHint, idempotentHint). Composition is sound, each tool has one responsibility and names follow verb_noun pattern.
Fetch a single DOI record. Returns full metadata: title(s), creators with affiliations and ORCIDs, abstract, publisher, year, dates, related identifiers, subjects, license, sizes/formats.
List DataCite-registered data repositories (e.g., Zenodo, Dryad, Figshare). Filter by query. Useful for "where do I deposit a dataset" lookups.
Search DataCite-registered DOIs. Filter by free-text query, resource type (dataset, software, etc.), year, publisher, or affiliation. Returns DOI, title, creators, publisher, type, year, citation count.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting) for downstream tool chaining or data extraction. normalizeDoiSummary() and normalizeDoiFull() exist in code but are not exposed in tool definitions.
Parameter constraints not declared in schema. resource_type should be an enum (Dataset|Software|Text|Image|Sound|Other); page_size range (1-1000) stated in description but not in schema minItems/maxItems. Enums are machine-parseable and prevent LLM hallucination.
Error handling lacks recovery guidance. dcFetch() throws generic errors ('DataCite: not found', 'rate-limit') without actionable next steps. LLM cannot determine if error is retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
No tool annotations. Tools lack readOnlyHint (all are read-only) and idempotentHint (all are idempotent). Annotations help agents reason about retry safety and side effects.
Result limits not enforced or documented. search_dois and list_repositories accept page_size up to 1000 but no guidance on typical result cardinality or recommended limits. Large result sets waste tokens and degrade LLM reasoning.