Catalogue of Life — global taxonomic index of known species (~2.2M accepted names)
Server defines 8 tools with complete input schemas and basic descriptions. All tools are READ_ONLY and follow a consistent naming pattern (verb_noun). However, descriptions are terse (10-80 chars, well below the 194-char baseline), parameter descriptions are sparse or missing, and output schemas are entirely undocumented. No error handling guidance, no parameter constraints (enums), and no indication of what fields agents should expect in responses. The implementation is functional but lacks LLM-optimization for tool selection and parameter reasoning.
Direct child taxa.
Taxonomic classification chain (kingdom → species) for a taxon id.
Exact scientific-name match (0 or 1 hit + alternatives).
Name-usage search.
Synonyms of a taxon.
Taxon by id.
Single name-usage by id.
Vernacular (common) names for a taxon.
Output schemas completely undocumented. LLMs cannot plan downstream tool calls or extract required fields (e.g., taxon IDs for chaining). Agents must guess what fields are returned.
Parameter descriptions missing or trivial. 'id' parameter appears in 6 tools with no description of what ID format is expected (taxon ID? name-usage ID?). 'dataset' parameter lacks guidance on valid values beyond default '3LR'.
Tool descriptions too brief (10-80 chars vs. 194-char baseline). 'Taxon by id' and 'Synonyms of a taxon' lack context for when to use them vs. similar tools. No guidance on prerequisites or expected use patterns.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
No error handling guidance. Code throws generic errors ('Catalogue of Life: not found', 'Catalogue of Life: 404 ...') with no recovery hints. LLMs cannot self-correct or suggest alternatives.
No parameter constraints (enums, ranges, patterns). 'rank' and 'status' in search tool accept free-form strings with only examples in descriptions. LLMs may hallucinate invalid values like 'subspecies' or 'uncertain'.