Ultimath
The Ultimath server evaluates mathematical expressions across multiple independent numeric engines simultaneously to detect floating-point errors and verify numeric reliability.
evaluate: Run any math expression through 4 independent engines (multiprecision, exact decimal, IEEE-754 double, interval arithmetic) in parallel and compare results side by side. When engines disagree, it flags numerically unreliable values (e.g., floating-point sensitivity, catastrophic cancellation, singularities, branch cuts).list_functions: List all supported mathematical functions with name, arity, category, and description — optionally filtered by category (algebraic, trigonometric, hyperbolic, exponential, special, rounding, introspection).
Supported operations:
Arithmetic (
+,-,*,/,%), powers (x^y), roots (sqrt), factorial (!)Trigonometry (
sin,cos,tan), exponentials/logarithms (exp,ln,log)Complex numbers (e.g.
3+2i), alternate base literals (e.g.0xFF,0b1010)Built-in constants:
pi,e,PHI
Output control: Specify precision (1–50 decimal digits) and format (fixed, scientific, auto). Each engine returns structured diagnostics and warnings (e.g. precision loss, overflow, ULP errors).
Notes: Multiplication must be explicit (e.g. 2*pi). No type casts or constructors — complex numbers use 1+2i notation. Expressions are not stored; only anonymized usage metrics are retained.
Ultimath MCP
Stop hallucinating numbers. An MCP server that runs every math expression through eight independent engines in parallel — exact symbolic, ball, interval, three different arbitrary-precision floats, deferred symbolic and IEEE 754, each with its own failure modes — and returns all eight readings side by side, so when they disagree you know the answer is numerically unreliable.
Engine | What it does |
Exact symbolic | Exact arithmetic: decides a value instead of approximating it |
Multiprecision | Ball arithmetic, rigorous radius carried through |
Interval | Rigorous lower/upper bounds (guaranteed enclosure) |
Binary float | Arbitrary-precision binary floats, no GMP below |
PARI/GP | Built without GMP: its own integer and transcendental kernels |
NTL RR | Exact integer mantissa × 2^e; only operations round |
Deferred symbolic | Rewrites before evaluating: a cancellation never rounds |
IEEE-754 double | Standard hardware floating point |
What each engine stands behind
Reading eight numbers is only half the answer. Each engine also says how far it underwrites its own — and the three answers are not degrees of one another:
Field | What the engine is saying |
| It holds the value. The reading is a truncation of it: every further digit you ask for is a digit of the number, not a closer approximation. |
| Its own error bound covers the first |
neither | It carries no error bound. It printed as many digits as you asked for and can say nothing about any of them. |
That last row is not 0, and it is the reason the other engines exist. Five of
the eight are there by construction.
On exp(pi*sqrt(163)) - 262537412640768744, one engine prints 63 digits of
which 34 are right — and says nothing about it. Two others prove 33 and stop.
One holds the value exactly. Reading the eight numbers alone would not tell you
which was which.
No engine is ever asked about another: each statement is about itself.
Related MCP server: mcp-abacus
The exact engine
calcium settles an equality rather than comparing digits, reaches poles the
others can only approach (tan(pi/2) is uinf), and when the printed digits
are just a truncation it also returns the closed form — sqrt(2)+1 comes back
with Add(Sqrt(2), 1), in plain form and in LaTeX, and acosh(0.5) with
Div(Mul(NumberI, Pi), 3) — the named value, not the field element it is
stored in.
The closed form is opt-in on the HTTP API ("closed_form": true) because
proving one costs more than reading the digits. This client always asks for
it: quoting an exact value is what its output schema promises.
Tools
evaluate— evaluate an expression on all eight engines and compare. Supports arithmetic, trig (sin,cos,tan), exp/log (exp,ln,log), roots and powers (sqrt,x^y), factorial, complex numbers (3+2i), alternate bases (0xFF,0b1010), and constants (pi,e, golden ratioPHI).list_functions— list every function the engines expose (name, arity, category, description). Optionally filter by category.
Comparisons do not mean the same thing on every engine. On the enclosure engines,
!=,<and>are true only once proven;==,<=and>=are true as soon as they are not disproven. A true==there is not a proof of equality — calcium decides that one exactly — but a true!=is a proof of difference.
Multiplication must be explicit: write
2*pi,2*sin(x),(a+b)*(c+d). Adjacency is not a product (2piis an error). Expressions are purely mathematical — no type casts or constructors; write a complex number as1+2i.
Setup
Get a free API key at https://ultimath.ai.
Add the server to your MCP client config (example for Claude Desktop):
{
"mcpServers": {
"ultimath": {
"command": "npx",
"args": ["-y", "ultimath-mcp"],
"env": {
"ULTIMATH_API_KEY": "your_api_key_here"
}
}
}
}That's it — npx fetches and runs the server on demand.
Requirements
Node.js ≥ 18
An Ultimath API key (
ULTIMATH_API_KEY)
Links
Website: https://ultimath.ai
Under the hood
Ultimath's engines build on FLINT/Arb, Calcium, GMP/MPFR and MPFI — full credits at https://ultimath.ai/credits.
Privacy
Ultimath stores only a hash of your API key and basic usage metrics to run and secure the service; expressions are evaluated, not retained for training. Full policy: https://ultimath.ai/privacy/
License
MIT
Available Tools
2 toolsevaluateEvaluate & cross-check a math expressionARead-only
Verify any numeric result that has to be trusted, via the Ultimath API (https://ultimath.ai). Use this whenever the correctness of a number matters — floating-point-sensitive expressions, catastrophic cancellation, values near singularities or branch cuts, ties, or any computation where a single method could be silently wrong. Prefer it over computing by hand or running code: it evaluates the expression on 8 independent engines (exact symbolic, multiprecision ball, interval arithmetic, three different arbitrary-precision floats, deferred symbolic rewriting, IEEE 754 double) in parallel and returns every result plus per-engine precision diagnostics, so disagreement exposes an unreliable value that a single calculation would hide.
The 8 engines are independent and each computes with its own native primitive — so divergence between them (at poles, singularities, branch cuts, or ties like round(2.5)) is the backends' real behavior, NOT a bug. Agreement across engines is a confidence signal; divergence flags a value that is convention-dependent or near a domain edge — verify it rather than trust a single column.
One engine (calcium) is exact rather than numeric: it decides a value instead of approximating it, so it reaches poles the others can only approach (tan(pi/2) is uinf), and when the printed digits are only a truncation it also returns the closed form in symbolic / symbolic_latex (sqrt(2)+1 carries Add(Sqrt(2), 1)). Prefer that closed form when quoting an exact value.
A comparison does not mean the same thing on every engine. On the enclosure engines (flint, mpfi) !=, < and > return true only once the property is PROVEN, while ==, <= and >= return true as soon as it is not disproven. So a true == there is not a proof of equality — calcium decides that one exactly — but a true != IS a proof of difference. Each pair is complementary: a == b and a != b are never both false.
A value that is real comes back as a plain real number: an engine drops a zero imaginary part only when it PROVES the value real. So a trailing +0i is NOT decoration — it means that engine did not establish realness, and a visible residue (e.g. 4.3e-17i on the double engine) is genuine numerical error. Do not strip either one when reporting a result.
Supports: arithmetic, trigonometry (sin, cos, tan), exponentials and logs (exp, ln, log), roots and powers (sqrt, x^y), factorial, complex numbers (3+2i), arbitrary bases (0xFF, 0b1010), constants (pi, e, the golden ratio PHI). Multiplication must be EXPLICIT: write 2pi, 2(3+4), (a+b)(c+d), 2sin(x) — adjacency is NOT a product (2pi is an error). Precedence, tightest first: postfix factorial ! (2^3! = 2^(3!) = 64), then powers ^, then * / %, then + -. Note: expressions are mathematical only — there are no type casts ((int)x) or constructors (complex(1,2)); write a complex number as 1+2i or (re, im). Call list_functions for the authoritative list of available functions.
Inputs: expression (required), format, precision. Returns: ms, trace, result, engines, +4 more
list_functionsList available functionsARead-only
List all mathematical functions available via the Ultimath API (https://ultimath.ai). Returns name, arity, category, and description for each function. Use this to discover what functions you can pass to the evaluate tool. Optionally filter by category (algebraic, trigonometric, hyperbolic, exponential, special, rounding, introspection). Every function is available on all 8 engines, but each computes it with its own native primitive — so results may diverge at poles, branch cuts, or ties, and that divergence is honest backend behavior, not a bug.
Inputs: category.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 2 tools
evaluate performs mathematical computation and returns multi-engine results, while list_functions only returns metadata about supported functions. There is no overlap or ambiguity between the two operations.
Both names are imperative and clear, but evaluate is a bare verb while list_functions follows a verb_noun pattern. This is a minor stylistic inconsistency that does not create confusion.
Two tools is below the typical 3–15 range, but the server's scope is narrow: one computational entry point plus one discovery helper. Each tool is necessary, so the count is slightly under but reasonable.
The core workflow is complete: discover functions with list_functions, then evaluate expressions with evaluate. Since this is a stateless computation service, lifecycle operations do not apply; the main minor gap is that supported constants are documented only in evaluate's description rather than being discoverable through list_functions.
Maintenance
Related MCP Connectors
Educational MCP server with 17 math/stats tools, visualizations, and persistent workspace
Deterministic signed verification of numeric & financial claims for AI agents & spreadsheets.
This MCP server enables users to perform scientific computations regarding linear algebra and vect…
MCP-native AI evaluation: rubric audits, eval suites, and proof reports for AI/LLM output.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server that gives small LLMs verified symbolic-math & logic tools.614 PyPI2Apache 2.0
- AlicenseAqualityBmaintenancePure-Python MCP server for type-faithful calculation — evaluate expressions under fixed-point, IEEE-754 double, or exact rational arithmetic, with every answer labelled with its precision (exact vs inexact).61GPL 3.0
- AlicenseAqualityDmaintenanceAn MCP server that provides structural load and stability math (tipping, support reactions, beam checks) that language models often get wrong, enabling AI assistants to compute accurate engineering estimates.321 PyPIMIT
- AlicenseAqualityBmaintenanceAn MCP server that performs exact arithmetic calculations, avoiding the pitfalls of float64 and unsafe eval, with resource limits for safe execution.136 PyPIMIT