Math-mcp provides 8 tools with complete input schemas and generally clear descriptions. Naming is verb-based and appropriate (evaluate, solve, simplify, factor, expand, matrix, statistics, units). Descriptions average ~180 chars and include examples, meeting baseline expectations. However, several parameter descriptions are minimal or missing entirely (e.g., 'matrix' tool's 'b' parameter has no description; 'statistics' tool's 'args' is vague). Output schemas are not documented, LLMs cannot predict return structure. Error handling is absent from descriptions. The 'statistics' tool conflates multiple operations (descriptive stats, distributions, regression) into one tool, violating single-responsibility. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all being read-only operations.
Evaluates any mathematical expression using mathjs. Supports arithmetic, trigonometry (sin, cos, tan, pi, e), algebra, calculus (derivative, integrate), complex numbers (2+3i), fractions, BigNumber precision (bignumber()), matrices (det, inv, transpose), logic, and units. Use mode='symbolic' for exact symbolic results via Algebrite. Examples: '2^10', 'sin(pi/4)', 'det([[1,2],[3,4]])', 'derivative("x^3", "x")', 'integrate(x^2, x, 0, 1)'
Expands a factored or compound expression using Algebrite. Examples: '(x+1)^3', '(a+b)*(a-b)', '(x+2)*(x-2)'
Factors a polynomial expression using Algebrite. Returns the factored form. Examples: 'x^2 - 4' → '(x+2)*(x-2)', 'x^3 - 6*x^2 + 11*x - 6', '12' → prime factorization
Performs matrix operations. Ops: multiply, add, subtract, inverse, transpose, determinant, eigenvalues, eigenvectors, rank, norm, trace, cross (3D vectors), dot (vectors). SVD is not currently supported. Binary ops (multiply/add/subtract) require both 'a' and 'b'. Inputs are 2D number arrays. Examples: op='determinant', a=[[1,2],[3,4]]
Simplifies a mathematical expression using mathjs rules. Combines like terms, applies trig identities (sin²+cos²=1), and reduces constants. Examples: 'sin(x)^2 + cos(x)^2', '2*x + 3*x', '3 + 4 * 2'
Output schemas not documented. LLMs cannot predict return structure (e.g., does 'solve' return array of solutions or object with metadata?). Forces trial-and-error parsing.
Parameter descriptions missing or vague. 'matrix' tool's 'b' parameter has no description. 'statistics' tool's 'args' object is undocumented, LLMs cannot infer which keys are valid for each operation.
Single 'statistics' tool combines 20+ distinct operations (mean, median, normal_pdf, binomial_cdf, linear_regression). Violates single-responsibility principle. LLM must reason about which 'op' enum value to use; error messages cannot be specific.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Solves an equation for a variable. Format equation as 'lhs = rhs' (e.g. 'x^2 - 4 = 0'). Returns all solutions including complex ones. Examples: 'x^2 - 4 = 0' with variable 'x', 'x^3 - 6*x^2 + 11*x - 6 = 0' with variable 'x'
Computes descriptive statistics and probability distributions. Descriptive ops use 'data' array: mean, median, mode, std, variance, min, max, sum, quantile (needs args.prob), mad, skewness (n≥3), kurtosis (n≥4). Distribution ops use 'args': normal_pdf/cdf/inv, binomial_pmf/cdf, poisson_pmf/cdf, t_pdf/cdf, chi2_pdf/cdf. Also: linear_regression (uses 'data' as y-values and auto-indexes x as [0,1,2,...,n-1]). Args vary by op — e.g. normal_pdf needs {x, mean, std}, binomial_pmf needs {k, n, p}
Converts between units. Format: '<value> <unit> to <unit>'. Supported: length (km, miles, m, ft, in), mass (kg, lb, g, oz), temperature (degC, degF, K), pressure (Pa, atm, bar, psi), energy (J, kWh, cal), speed (km/h, mph, m/s), area (m^2, acre, ft^2). Examples: '5 km to miles', '100 degF to degC', '1 atm to Pa'
No error handling guidance in descriptions. If 'solve' fails to find solutions or 'matrix' receives non-square matrix for determinant, LLM has no recovery path documented.
No tool annotations despite all tools being read-only. Missing readOnlyHint would help agents understand these are safe to retry without side effects.