Number theory tools for mathematical operations including primality testing and primitive roots calculation
This server has two tools with basic functionality but significant quality gaps. Both tools have descriptions and visible schemas, but the descriptions are minimal and the schemas lack essential parameter descriptions. The tool names follow weak verb-noun conventions ('is_prime_tool' is awkwardly named; 'primitive_roots' lacks a clear verb). Parameter documentation is present but generic. No output schema is documented. Error handling exists in the implementation but is not surfaced to the LLM in a recoverable way (e.g., the function returns a string error message, but there's no structured error classification). The server implements read-only operations but fails to annotate them with readOnlyHint. Overall, this is a prototype-quality server missing ~40% of the patterns expected in production tools.
Return if the passed in number is prime
Return the primitive roots of a positive integer n. A primitive root is a number that generates the cyclic group of integers mod n.
Tool names lack clear action verbs. 'is_prime_tool' is awkward (should be 'check_primality' or 'verify_prime'). 'primitive_roots' lacks a verb entirely (should be 'find_primitive_roots' or 'list_primitive_roots'). LLMs rely on verb-noun structure to infer intent.
Parameter descriptions are present but trivial. Both tools have only a single-line description of the input 'n' parameter. No explanation of what 'positive integer' means in context, no guidance on bounds or constraints, no hint about when to call this vs other tools.
No output schema documented. Both tools return strings rather than structured objects. LLMs cannot predict the response format or extract typed fields for downstream chaining. Tool descriptions do not state the output format (is it a single line? multiline? CSV?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 41 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 6 | - | v1 |
No tool annotations. Both tools are read-only (they perform no mutations), but no readOnlyHint is declared. LLMs cannot determine whether a tool is safe to call multiple times or has irreversible side effects.
Error handling is unstructured. Both tools return error strings (e.g., 'The number 0 is not prime', 'Scared to check a number that big') but do not classify errors as retryable, user-fixable, or fatal. LLMs cannot determine whether to retry, ask the user, or abandon the plan.
is_prime_tool: String interpolation bug in return statement. Line 'return "The number {n} is not prime"' is missing f-string prefix, will return the literal string with '{n}' instead of the actual number value.
Parameter bounds not documented. 'n' is described only as 'Positive integer' with no guidance on upper bounds, performance limits, or practical constraints. The primitive_roots function caps at 2^16 internally but this is not documented in the parameter description.