Two simple, read-only text analysis tools with clear names and basic schemas. Both tools have descriptions (194 and 195 chars respectively, within baseline 34 - 392 range) and explicit input schemas with typed parameters. However, output schemas are completely undocumented, LLMs cannot predict what fields to expect from readability() or text_stats(). Parameter descriptions are minimal (7 - 13 chars), below the 72-char baseline. No error handling guidance beyond a single 'No words to analyze' case in readability(). Tools are well-scoped (single responsibility) but lack the depth expected for production use.
Compute readability scores (keyless, offline): Flesch Reading Ease (0-100, higher = easier) and Flesch-Kincaid Grade Level, with the underlying word/sentence/syllable counts. Uses a syllable-estimation heuristic.
Compute text statistics (keyless, offline): character counts (with/without spaces), word/sentence/paragraph counts, estimated reading time (200 wpm), average word length, and the longest word.
Output schemas completely undocumented. LLMs cannot predict return fields (characters, words_per_sentence, flesch_reading_ease, etc.). Forces agents to guess structure and risks parsing failures.
Parameter descriptions are trivial (7 - 13 chars: 'The text to analyze', 'The text to score'). Baseline is 72 chars. Should explain format, constraints, and use cases.
No error handling guidance. readability() returns {error: 'No words to analyze'} but does not guide LLM on recovery. Other failure modes (empty string, null input) lack actionable messages.
Transport mechanism unknown. No evidence of HTTP, SSE, or STDIO transport in source. Cannot assess remote accessibility or protocol compliance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, idempotentHint). Both tools are read-only and idempotent, should declare this for agent optimization.