This is a basic playground server with 3 simple read-only tools. While schemas are present and tools follow the verb-noun pattern, descriptions are extremely brief (10-17 characters), parameter descriptions are minimal, and there is no output schema documentation. Error handling is minimal. The server demonstrates basic MCP understanding but lacks the rigor expected for production use. All tools are READ_ONLY with no state modification, which is positive for safety but limits practical applicability. The descriptions are too terse to guide LLM tool selection effectively.
Generate a random number in the range
Fetches the splitwise expenses
Fetches and returns a random XKCD meme
All tool descriptions are critically brief (<20 chars), violating the 10-1024 char baseline and failing to answer WHAT, WHEN, or WHY the tool should be called. LLMs cannot distinguish this tool from similar ones.
Output schemas are not documented. Callers do not know what fields to expect in responses, forcing them to guess at downstream data extraction. The get-xkcd-meme returns a text blob containing title, alt, and image URL, but this is not formally declared.
get-splitwise-expenses accepts no parameters and reads from a hardcoded local file (data.json). No pagination, no filtering, no limit. If the expense list grows large, the entire dataset is returned, bloating responses and wasting tokens.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 38 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 40 | - | v1 |
generate-random-number has no validation for the logical constraint that 'low' should be less than 'high'. If called with low=10, high=5, it returns a negative or nonsensical result. No error message guides recovery.
get-xkcd-meme has a generic error catch that returns 'Failed to fetch XKCD meme.' This does not tell the LLM whether the error is retryable, user-fixable, or fatal, and does not offer recovery guidance.
Parameter descriptions are minimal (e.g., 'Start of the range', 'End of the range'). They do not specify data types, constraints (e.g., integers only? decimals?), or valid ranges. LLMs cannot reliably infer whether negative numbers are allowed or what happens at boundary conditions.