Descriptions are present but minimal (10-50 chars), below the 50-200 char LLM-optimized baseline. No parameter descriptions exist (N/A since no params). No output schemas documented. No error handling guidance. Tools lack composition hints (e.g., which joke APIs are available, rate limits, fallback behavior). No security considerations (external API calls unvalidated). Naming is acceptable (verb_noun pattern: get_*) but descriptions are too terse to guide LLM selection.
Get all available categories for Chuck Norris jokes
Get a random Chuck Norris joke
Get a random dad joke
Get a random Yo Mama joke
All tools have empty input schemas (parameters: {}).
Descriptions are 10-50 characters, well below 50-200 char LLM-optimized baseline. Too terse to guide tool selection or explain when to use each joke API.
No output schemas documented. LLMs cannot predict response structure (e.g., is it a string, object with fields, array?). Breaks downstream tool chaining.
No error handling guidance. If external API fails (timeout, 5xx, rate limit), LLM receives raw error with no recovery hint.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
No rate limiting, timeout handling, or fallback strategy for external API calls. Unvalidated fetch() calls risk hanging or overwhelming upstream services.