Every expression is now evaluated by eight independent engines, and every result carries the name of the engine that produced it.
pari, ntl and symengine were already answering — the client just did not know them: they fell through the fallback path, returned unlabelled and out of order, while the tool description still announced five. Engine labels are now derived in code, so the next engine is a one-line change.
The eight: exact symbolic · multiprecision balls · interval · arbitrary-precision binary floats · PARI/GP (built without GMP) · NTL RR · deferred symbolic (rewrites before evaluating) · IEEE-754 double.
Also included, never released here (0.3.0): symbolic / symbolic_latex in the output schema — the closed form, published when the printed digits are only a truncation of it — and the per-engine exact / digits precision contract.
Published on npm as ultimath-mcp@0.6.0.