All four tools have empty input schemas (parameters: {}), which is a critical failure. Tool descriptions are present but minimal (10-50 chars), below the 50-200 char baseline for LLM-optimized descriptions. No parameter descriptions exist because there are no parameters. No output schemas are documented. Tools lack error handling guidance, recovery hints, or actionable error messages. The server provides read-only joke APIs with no composition complexity, but the definition quality is severely compromised by schema omission and sparse descriptions.
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: {}). This violates pattern:constrained-input and pattern:tool-description.
Tool descriptions are 10-50 characters, well below the 50-200 char baseline for LLM-optimized descriptions. Descriptions lack context on WHEN to use each tool, what it returns, or how it differs from similar tools.
No output schemas documented. LLMs cannot infer what fields to expect from responses (e.g., does get-chuck-joke return {joke, id, url} or just {text}?). This violates pattern:response-shaper and pattern:tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If an external API (chucknorris.io, icanhazdadjoke.com, yomama-jokes.com) is down or returns unexpected data, the tool will fail silently or crash. No actionable error messages guide the LLM to retry or use an alternative.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). While these tools are read-only, explicit annotation would improve protocol compliance and agent reasoning.