Math functionality for MCP - provides mathematical operations and calculations
16 math tools with complete schemas and basic descriptions. All tools have input schemas with proper type definitions (array of numbers). Descriptions are present but generic and lack LLM-optimization guidance. No parameter-level descriptions beyond the array itself. No output schema documentation. No error handling guidance. Tools follow a simple verb_noun pattern (sum, divide, sqrt) but lack context on when to use each vs alternatives. No tool annotations (readOnlyHint, etc.). Composition is sound, each tool does one thing, but descriptions don't explain dependencies or prerequisites.
Calculate the average of a list of numbers
Compare a list of numbers, returning a string of the numbers in ascending order separated by '<'
Divide two numbers, returning the result
Find the maximum value in a list of numbers
Calculate the median of a list of numbers
Find the minimum value in a list of numbers
Calculate the mode of a list of numbers
Convert a list of numbers to percentages
Raise a number to the power of another number
No output schema documentation. Tools return MathResult with 'result' (string), 'operation', and 'numbers' fields, but LLMs cannot see this structure in tool definitions. Agents cannot plan downstream operations or extract typed fields.
Descriptions are generic and lack LLM-optimization. 'Sum a list of numbers' (24 chars) and 'Divide two numbers, returning the result' (40 chars) do not explain when to use sum vs product, or divide vs quotient. Baseline for A+ tools is 50-200 chars with context on selection criteria.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Multiply a list of numbers
Divide two numbers, returning the quotient
Calculate the range of a list of numbers
Find the remainder of two numbers
Find the square root of a number
Subtract two numbers, returning the difference
Sum a list of numbers
No error handling guidance. Code asserts on invalid inputs (e.g., 'Division by zero', 'Square root of negative number') but tool descriptions do not explain what errors are possible or how to recover. LLMs receive raw assertion failures with no actionable next step.
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint. All 16 tools are read-only and idempotent, but this is not declared in the Tool definition. Agents cannot infer safety properties.
Parameter descriptions are minimal. The 'numbers' parameter in all tools has a description (e.g., 'A list of numbers to sum'), but no guidance on array length constraints. Tools assert len(numbers)==2 for binary ops, but LLMs cannot see these constraints in the schema. Baseline: 100% of A+ tools have per-param descriptions with constraints.