Exposes CDLI cuneiform artifact data as MCP tools for AI agents. Built as a proof-of-concept for GSoC 2026 proposal.
Server has well-structured Pydantic schemas with proper type definitions and reasonable descriptions. All three tools are explicitly registered with input schemas. However, descriptions lack LLM-optimization guidance (e.g., no 'when to use' context), parameter descriptions are minimal, and output schemas are not documented. Error handling is structured but lacks recovery guidance. No tool annotations (readOnlyHint, etc.) despite all tools being read-only. Naming is clear and verb-based.
Export artifact data as JSON or CSV with selectable fields and citation-ready formatting.
Fetch complete metadata for one or more CDLI artifacts by ID. Supports batch requests (up to 20 IDs). Returns transliteration, provenance, museum collection, and bibliographic references.
Search the CDLI database for cuneiform artifacts by keyword. Supports filtering by historical period and location. Returns artifact IDs, periods, provenances, and transliteration snippets.
Output schemas not documented. LLMs cannot plan downstream calls or extract fields without knowing response structure. search_artifacts, get_artifact_metadata, and export_artifacts lack documented return types.
Tool descriptions lack 'when to use' context and LLM-optimization. Descriptions are 100-150 chars but do not explain when to call search_artifacts vs get_artifact_metadata, or when export_artifacts is preferred over raw metadata.
No tool annotations despite all tools being read-only. readOnlyHint should be set on all three tools to signal to agents that these are safe, non-destructive operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Error responses lack recovery guidance. _error_response() returns error_code and message but does not guide LLM on next steps. E.g., RATE_LIMITED should suggest 'wait and retry', INVALID_INPUT should suggest 'reformulate query'.
Parameter descriptions are minimal. 'page' is described as 'Page number' but does not explain pagination behavior or when to use it. 'fields' in export_artifacts lists options but does not explain what each field contains.