Raw schema
{
"type": "object",
"properties": {
"expression": {
"type": "string",
"minLength": 1,
"description": "One mathematical expression per call โ neither `;` nor newlines separate statements. Inside matrices, `;` separates rows (e.g. `[1, 2; 3, 4]`). Supports arithmetic (+, -, *, /, ^, %), functions across arithmetic/trig (sin, cos, sqrt, log, abs, round), statistics (mean, median, std, variance โ std and variance return the sample (n โ 1) form by default; pass \"uncorrected\" for the population form, e.g. `std([2, 4, 6], \"uncorrected\")`), combinatorics (factorial, permutations, combinations), and matrix (det, inv, transpose), plus constants (pi, e, phi, i), units (5 kg to lbs), and variables (when scope is provided). Standard notation `ln` and `arc*` (e.g. `arcsin`, `arctan`) is accepted alongside the math.js names `log` and `asin`/`atan`; common synonyms such as `stdev`, `permute`, `nCr`, and `length`/`len` resolve to their math.js names (`std`, `permutations`, `combinations`, `count`)."
},
"operation": {
"default": "evaluate",
"description": "Operation to perform. \"evaluate\" computes a numeric result (default). \"simplify\" reduces an algebraic expression symbolically (e.g., \"2x + 3x\" -> \"5 * x\"). Supports algebraic and trigonometric identities. When the simplifier cannot reduce the expression further (e.g. rational expressions requiring polynomial factoring), the result is returned unchanged and unchanged: true is set in the output. \"derivative\" computes the symbolic derivative (requires the variable parameter).",
"type": "string",
"enum": [
"evaluate",
"simplify",
"derivative"
]
},
"variable": {
"description": "Variable to differentiate with respect to. Required when operation is \"derivative\". Empty string is treated as omitted. Example: \"x\".",
"anyOf": [
{
"type": "string",
"const": "",
"description": "Empty string โ treated as omitted."
},
{
"type": "string",
"maxLength": 50,
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$",
"description": "Variable identifier (alphanumeric and underscores, max 50 chars)."
}
]
},
"scope": {
"description": "Variable assignments for evaluate; simplify and derivative ignore them. Example: { \"x\": 5, \"y\": 3 } makes \"x + y\" evaluate to 8.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"precision": {
"description": "Significant digits (1โ16) for numeric results. Omit for full precision. Empty string is treated as omitted. Fraction results always print exactly, and symbolic operations (simplify, derivative) ignore it.",
"anyOf": [
{
"type": "string",
"const": "",
"description": "Empty string โ treated as omitted."
},
{
"type": "integer",
"minimum": 1,
"maximum": 16,
"description": "Significant digits (integer, 1โ16)."
}
]
},
"numericType": {
"default": "number",
"description": "Numeric type for evaluate. \"number\" (default): 64-bit IEEE 754 float โ fastest, about 16 significant digits; a value past about 1.8e308 (171!, 2^1024, exp(1000)) overflows and fails with undefined_result. \"BigNumber\": decimal with 64 significant digits and a much wider exponent range, slower than \"number\" โ retry an overflow with it; results are 64-digit approximations (10000!/9999! returns 9999.99โฆ96, which precision: 16 rounds to 10000). Division by zero, 0/0, and log(0) are undefined in every numeric type, so another numeric type does not fix them. \"Fraction\": exact rational arithmetic (0.1 + 0.2 returns 3/10); fails with fraction_unsupported when the result has no exact rational value (sqrt(2), sin(1), log(3)), the expression calls a function Fraction mode cannot compute (sqrt(4), 5!, combinations(5, 2)), or it uses a value Fraction mode holds only as a rounded float (pi, e, 2^(1/2), a complex number with a non-integer part, number(x), random()) โ use \"number\" or \"BigNumber\" for those. A unit conversion with an irrational factor (30 deg to rad) returns a close rational approximation, not an exact value. Ignored for symbolic operations (simplify, derivative).",
"type": "string",
"enum": [
"number",
"BigNumber",
"Fraction"
]
}
},
"required": [
"expression"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}