Server defines 4 tools with explicit schemas and basic descriptions. All tools are READ_ONLY and properly typed. However, descriptions are minimal (10-50 chars), parameter descriptions are sparse or missing, and output schemas are undocumented. No error handling guidance, no parameter constraints (enums, ranges), and no composition hints. Naming is verb-based but generic ('search', 'get', 'author', 'structure'). This is typical community-grade work, functional but not production-ready.
Author lookup (free-text query).
Single document by HAL id.
Solr-style search across HAL.
Research-structure (lab/department) lookup.
Parameter descriptions missing or incomplete. 'query' param in search/author/structure lacks guidance on format, Solr syntax, or examples. 'rows' lacks min/max bounds. 'fl', 'fq', 'sort' in search have minimal context.
Tool descriptions are too brief (10-50 chars). 'Solr-style search across HAL' and 'Single document by HAL id' lack WHEN to use, prerequisites, or return value guidance. LLMs cannot distinguish between search/author/structure without richer context.
No output schema documented. Callers do not know what fields to expect from search(), get(), author(), or structure(). This forces LLMs to guess at response structure and breaks tool chaining.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
No parameter constraints (enums, ranges, patterns). 'rows' accepts 1-10000 but is not validated in schema. 'sort' accepts arbitrary strings. LLMs will pass invalid values; no guidance on recovery.
Error handling is minimal. callTool() throws generic errors ('Unknown tool', 'Required argument missing', 'HAL: 500 ...') with no recovery guidance. LLMs cannot self-correct or retry intelligently.