SciMath MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SciMath MCPCalculate the derivative of x^3*sin(x)"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SciMath MCP
SciMath is a local, read-only Model Context Protocol server for reliable engineering and scientific computation. It moves arithmetic and mathematical manipulation out of an LLM's reasoning and into established numerical, symbolic, unit, and uncertainty libraries.
It is designed specifically for tool-calling agents—including smaller quantized local models—so the model chooses and explains a calculation while mature libraries execute it reproducibly.
What it provides
Exact and arbitrary-precision arithmetic with SymPy.
Unit-aware formulas and dimensional validation with Pint.
Equations, calculus, and exact linear algebra.
Descriptive statistics, regression, confidence intervals, and Welch t-tests.
First-order propagation of independent measurement uncertainties.
Physical constants from SciPy's bundled CODATA table.
Structured MCP output containing exact values, approximations, normalized inputs, metadata, and warnings.
Every expression is parsed by an AST allowlist. Python eval, attribute access, imports,
comprehensions, indexing, assignment, and arbitrary function calls are not available. Each
calculation runs in a disposable subprocess with input, result-size, complexity, and time limits.
Related MCP server: Math MCP Server
Tools
Tool | Purpose |
| Arithmetic, scientific functions, high precision, and unit-aware formulas |
| Compatible unit conversion and dimensional validation |
| Real or complex algebraic equations and systems |
| Derivatives, integrals, limits, and series |
| Exact matrix operations plus condition-number warnings |
| Summaries, correlation, regression, intervals, and Welch t-tests |
| Measurement uncertainty with optional units |
| CODATA constant lookup with uncertainty and unit conversion |
Run locally
Prerequisites: Python 3.12 or newer and uv.
uv sync --all-groups
PYTHONPATH=src uv run python -m scimath_mcpInstall a stable executable:
uv tool install --force /absolute/path/to/scimath-mcpThen register the same stdio executable in each client:
codex mcp add scimath -- "$HOME/.local/bin/scimath-mcp"
claude mcp add --scope user scimath -- "$HOME/.local/bin/scimath-mcp"
opencode mcp add scimath -- "$HOME/.local/bin/scimath-mcp"Verify with codex mcp get scimath, claude mcp get scimath, and opencode mcp list. The
executable requires no network access. After changing the source, rerun the uv tool install
command to refresh the installed wheel.
See Client setup for complete JSON/TOML examples and troubleshooting.
Expression syntax
Use explicit multiplication (2*x). Both ** and ^ mean exponentiation. Common functions
include sqrt, cbrt, exp, ln, log, log10, sin, cos, tan, inverse and hyperbolic
trigonometry, factorial, gamma, erf, floor, ceil, min, and max. Constants include
pi, tau, e, phi, and complex I in unitless calculations.
Put dimensionful values in the variables object:
{
"expression": "M*c/I",
"variables": {
"M": "12.4 kN*m",
"c": "75 mm",
"I": "8.7e-6 m^4"
},
"output_unit": "MPa"
}Reliability boundary
SciMath makes the execution of a supplied formula reproducible. It cannot prove that an LLM selected the correct physical model, sign convention, branch, domain, units, or statistical assumptions. Consumers should show normalized inputs and warnings for consequential work.
Documentation
Client setup — Codex CLI, Claude Code, and OpenCode.
Tool reference — inputs, operations, limits, and examples.
Architecture — trust boundaries and request lifecycle.
Design notes — reviewed community projects and design decisions.
Security — threat model, reporting, and numerical safety.
Contributing — development workflow and release checks.
Tests
uv run pytest
uv run ruff check .
uv build --clearLicense
MIT
Available Tools
8 toolscalculateARead-onlyIdempotent
Evaluate one arithmetic/scientific expression safely. Use explicit * and variables.
For dimensional work, pass original unit-bearing variable strings (for example 12.4 kN*m)
and always set output_unit; never add manual conversion factors to the expression. Returns
exact and high-precision numeric forms when unitless.
| Name | Required | Description | Default |
|---|---|---|---|
| precision | No | ||
| variables | No | ||
| angle_unit | No | radians | |
| expression | Yes | ||
| output_unit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | Output unit, when dimensionful. |
| exact | No | Exact symbolic result when available. |
| result | Yes | Primary result; strings preserve mathematical precision. |
| details | No | |
| warnings | No | |
| operation | Yes | Operation actually performed. |
| approximate | No | Numerical approximation at the requested precision. |
| normalized_input | No | Canonical input used by the computation engine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior, lowering the bar. The description adds useful context about return forms (exact/high-precision when unitless) and cautions about conversion factors, which goes beyond the annotations. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the core purpose. Every sentence adds value—purpose, dimensional guidance, and return behavior—with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and annotations, the description covers the key behavioral aspects: evaluation, dimensional handling, and return forms. It misses details on precision and angle_unit, but those are secondary and reasonably inferable from schema defaults. Overall, it provides enough context for correct invocation in most scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for expression (explicit *), variables (unit-bearing strings), and output_unit (always set). However, it omits semantics for precision and angle_unit, leaving those to schema defaults and names, which is only partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool evaluates one arithmetic/scientific expression safely, which distinguishes it from sibling tools like solve (equations) and convert_units (unit conversion). The focus on expression evaluation is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for dimensional work, instructing to pass unit-bearing variables, set output_unit, and avoid manual conversion factors. However, it does not explicitly name alternatives or explain when not to use this tool, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculusARead-onlyIdempotent
Differentiate, integrate, take a limit, or expand a series symbolically. For definite
integrals provide both bounds; for limits and series provide point. order selects derivative
order or the number of series terms.
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | ||
| point | No | ||
| variable | No | x | |
| direction | No | +- | |
| operation | Yes | ||
| precision | No | ||
| expression | Yes | ||
| lower_bound | No | ||
| upper_bound | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | Output unit, when dimensionful. |
| exact | No | Exact symbolic result when available. |
| result | Yes | Primary result; strings preserve mathematical precision. |
| details | No | |
| warnings | No | |
| operation | Yes | Operation actually performed. |
| approximate | No | Numerical approximation at the requested precision. |
| normalized_input | No | Canonical input used by the computation engine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is read-only, idempotent, and non-destructive. The description adds the crucial behavioral detail that all operations are symbolic, which affects user expectations about output type and computational nature. It also clarifies operation-specific parameter requirements, going beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences that front-load the core functionality. Every sentence adds value, and the parameter guidance is embedded naturally without waste. It achieves high information density without becoming bulky.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, 4 operations) and the presence of an output schema, the description covers the most critical usage aspects: which parameters are needed for each operation and what `order` means. It does not mention `direction` or `precision`, but those are less critical and have schema defaults/enums. Overall, it is sufficient for an agent to invoke the tool correctly for typical calculus tasks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains `order` (derivative order vs series terms), and implicitly clarifies `lower_bound`/`upper_bound` for definite integrals and `point` for limits/series. It does not explain `direction` (for one-sided limits) or `precision`, but the main non-obvious parameters are handled well given the tool's complexity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it performs symbolic differentiation, integration, limits, and series expansion. The verb 'Differentiate, integrate, take a limit, or expand a series' is specific and distinguishes it from sibling tools like calculate or solve. The scope is precisely defined and not a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage instructions: for definite integrals provide bounds, for limits/series provide a point, and `order` has operation-specific meaning. This helps the agent invoke it correctly. It does not explicitly exclude alternatives (e.g., numeric vs symbolic) but the context is clear enough for a specialized calculus tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_unitsARead-onlyIdempotent
Convert a dimensionful value such as 32 degF, 120 km/hour, or 5 psi to a compatible
target unit. Dimensional mismatches are errors rather than guessed conversions.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| to_unit | Yes | ||
| precision | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | Output unit, when dimensionful. |
| exact | No | Exact symbolic result when available. |
| result | Yes | Primary result; strings preserve mathematical precision. |
| details | No | |
| warnings | No | |
| operation | Yes | Operation actually performed. |
| approximate | No | Numerical approximation at the requested precision. |
| normalized_input | No | Canonical input used by the computation engine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable behavioral context beyond annotations by specifying that dimensional mismatches are errors rather than guessed conversions, which clarifies failure semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is front-loaded with the primary action and supported by relevant examples. Every part adds value, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, an output schema, and strong annotations, the description covers the essential operation and error behavior. It does not discuss the precision parameter's effect, but this is a minor omission given the compactness and clarity of the overall description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies 'value' with examples like '32 degF' and implies 'to_unit' is the target unit, but it does not explicitly describe the 'precision' parameter. The examples help map 'value' and 'to_unit', but precision remains undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Convert') and identifies the resource ('a dimensionful value') with concrete examples. It clearly distinguishes itself from sibling tools like calculate or physical_constant by focusing on unit conversion and explicitly stating that dimensional mismatches are errors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes when to use this tool: when converting a value from one unit to a compatible target unit. It does not name alternative tools explicitly but provides unambiguous usage context through examples and the error condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_algebraARead-onlyIdempotent
Perform exact matrix and linear-algebra operations on matrices up to 25x25. Supply
other_matrix for multiplication or as the right-hand side of solve. String entries such as
1/3 preserve exact values. Condition-number results include numerical-stability warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| matrix | Yes | ||
| operation | Yes | ||
| precision | No | ||
| other_matrix | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | Output unit, when dimensionful. |
| exact | No | Exact symbolic result when available. |
| result | Yes | Primary result; strings preserve mathematical precision. |
| details | No | |
| warnings | No | |
| operation | Yes | Operation actually performed. |
| approximate | No | Numerical approximation at the requested precision. |
| normalized_input | No | Canonical input used by the computation engine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, the description adds rich behavioral context: exact arithmetic, the 25x25 matrix size limit, preservation of exact fractional string entries, and numerical-stability warnings for condition numbers. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, information-dense sentences, front-loaded with the core purpose and followed by practical details. Every sentence earns its place and there is no filler or tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers key constraints and behavioral caveats for a complex matrix tool, while the output schema handles return details. It omits precision semantics and explicit alternative-tool guidance, but the operation enum and annotations fill many gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies matrix (size limit, exact string entries) and other_matrix (multiplication or solve RHS), but the precision parameter is not explained. Since schema description coverage is 0%, the description only partially compensates for the lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs exact matrix/linear-algebra operations on matrices up to 25x25, and mentions matrix inputs, other_matrix, and condition-number warnings. It does not explicitly contrast with sibling tools like solve or calculate, so it misses the full sibling-differentiation criterion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: the tool is for exact matrix operations. It gives parameter-level guidance (other_matrix for multiplication or solve RHS, string entries preserve exact values), but it does not state when to choose this tool over alternatives or mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
physical_constantARead-onlyIdempotent
Look up a physical constant from SciPy's bundled CODATA table by common alias or name. Returns its value, unit, standard uncertainty, source metadata, and an optional compatible unit conversion. Examples: c, G, hbar, Boltzmann constant, electron mass.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| precision | No | ||
| output_unit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | Output unit, when dimensionful. |
| exact | No | Exact symbolic result when available. |
| result | Yes | Primary result; strings preserve mathematical precision. |
| details | No | |
| warnings | No | |
| operation | Yes | Operation actually performed. |
| approximate | No | Numerical approximation at the requested precision. |
| normalized_input | No | Canonical input used by the computation engine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior. The description adds useful behavioral context beyond annotations: it returns value, unit, standard uncertainty, source metadata, and optional unit conversion. It also notes alias support and gives examples. This enriches the agent's understanding without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and includes concrete examples. Every sentence contributes value, with no redundant or vague filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since an output schema exists, the return values are structurally documented. The description covers the tool's domain, source, alias behavior, and optional unit conversion, which is adequate for a simple lookup. However, the omission of precision semantics is a minor gap given the three-parameter schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only hints at 'optional compatible unit conversion' (mapping to output_unit) and implicitly covers 'query' via the lookup phrase. The 'precision' parameter is entirely undocumented, and no parameter names or formats are given. This leaves the agent with gaps for two of three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Look up') and resource ('SciPy's bundled CODATA table') with a scope ('by common alias or name'). It distinguishes itself from siblings like calculate and convert_units by focusing on physical constant retrieval, and the examples (c, G, hbar) reinforce its domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the primary use case (looking up physical constants) but does not explicitly contrast with sibling tools like convert_units or calculate. It doesn't state when to prefer this over alternatives or mention any exclusions (e.g., 'not for general unit conversion'). The context is clear but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propagate_uncertaintyBRead-onlyIdempotent
Propagate independent standard uncertainties through an expression. Each measurement has value, uncertainty, and optional unit. Returns nominal value, standard uncertainty, relative uncertainty, and a coverage interval; use output_unit when the result is dimensionful.
| Name | Required | Description | Default |
|---|---|---|---|
| precision | No | ||
| angle_unit | No | radians | |
| expression | Yes | ||
| output_unit | No | ||
| measurements | Yes | ||
| coverage_factor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | Output unit, when dimensionful. |
| exact | No | Exact symbolic result when available. |
| result | Yes | Primary result; strings preserve mathematical precision. |
| details | No | |
| warnings | No | |
| operation | Yes | Operation actually performed. |
| approximate | No | Numerical approximation at the requested precision. |
| normalized_input | No | Canonical input used by the computation engine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare the tool read-only, idempotent, and non-destructive. The description adds the behavioral assumption of independent uncertainties and the note that output_unit is needed for dimensionful results. It does not contradict any annotations, but it also doesn't disclose potential limitations or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the core function. It avoids redundancy and every clause contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the presence of an output schema, the description is not fully complete. It lacks details on how to structure the expression, how measurements map to variable names, and the role of coverage_factor and precision. These are essential for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It explains that each measurement consists of value, uncertainty, and optional unit, and it gives guidance on output_unit. However, it leaves parameters like expression, precision, angle_unit, and coverage_factor without semantic explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: propagating independent standard uncertainties through an expression. It specifies the key resource (uncertainty propagation) and distinguishes it from sibling tools like calculate or statistics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It neither names sibling tools nor explains the circumstances that call for uncertainty propagation over other calculations. The only instruction ('use output_unit when the result is dimensionful') is parameter-specific, not about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solveARead-onlyIdempotent
Solve up to eight algebraic equations for explicitly named variables. Each equation may
use left = right or a zero-valued expression. Returns every solution in exact and numerical
form; choose the real or complex domain explicitly.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | real | |
| equations | Yes | ||
| precision | No | ||
| variables | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | Output unit, when dimensionful. |
| exact | No | Exact symbolic result when available. |
| result | Yes | Primary result; strings preserve mathematical precision. |
| details | No | |
| warnings | No | |
| operation | Yes | Operation actually performed. |
| approximate | No | Numerical approximation at the requested precision. |
| normalized_input | No | Canonical input used by the computation engine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description adds valuable behavioral details: the exact/numerical output format, the ability to choose real or complex domain, the equation format ('left = right' or zero-valued), and the capacity limit of eight equations. This contextualizes the tool's behavior without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and every phrase adds value. It avoids redundancy and is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (algebraic solving) and the presence of an output schema, the description covers key aspects: input format, output form, domain selection, and capacity. It does not explicitly mention edge cases like no solutions or infinite solutions, but the output schema may handle these, making the description reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining the 'equations' format, 'variables' as explicitly named, and 'domain' with real/complex choice. It also implies precision via 'numerical form,' but does not explicitly explain the 'precision' integer parameter, which is a minor gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'solve[s] up to eight algebraic equations for explicitly named variables,' which is a specific verb+resource action. It also distinguishes from sibling tools like calculate and calculus by focusing on equation solving rather than arithmetic or calculus operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when solving algebraic equations for named variables, with domain selection as required. However, it does not explicitly mention exclusions or alternative tools, so there is no direct when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statisticsARead-onlyIdempotent
Compute descriptive statistics, Pearson correlation, linear regression, a Student-t confidence interval for a mean, or an independent Welch t-test. Provide data_y for paired correlation/regression or the second t-test sample.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| data_y | No | ||
| operation | Yes | ||
| precision | No | ||
| confidence | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| unit | No | Output unit, when dimensionful. |
| exact | No | Exact symbolic result when available. |
| result | Yes | Primary result; strings preserve mathematical precision. |
| details | No | |
| warnings | No | |
| operation | Yes | Operation actually performed. |
| approximate | No | Numerical approximation at the requested precision. |
| normalized_input | No | Canonical input used by the computation engine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds a note about data_y behavior, but does not disclose side effects, edge cases, or other operational details. It does not contradict annotations, and with annotations present, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and every word contributes. It lists operations in a compact list and adds a single actionable note about data_y, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and annotations cover safety, the description provides sufficient context for the core operations and the key data_y nuance. It is slightly thin on optional parameters (precision, confidence), but their defaults in the schema mitigate the gap, making it generally complete for a read-only statistical tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that data_y is used for paired correlation/regression or the second t-test sample, adding meaning beyond the bare schema. However, it does not explain precision or confidence parameters, which remain undocumented in both schema and description, so compensation is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly lists the specific statistical operations (descriptive statistics, Pearson correlation, linear regression, confidence interval, Welch t-test) with a clear verb 'Compute'. It distinguishes itself from sibling tools by naming statistical tests, but does not explicitly contrast with non-statistical tools like calculate or linear_algebra, so it lacks full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence provides concrete guidance on when to supply data_y ('for paired correlation/regression or the second t-test sample'), which helps usage. It implies the tool is for statistics but does not explicitly state when not to use it or name alternatives, but the context is clear enough for a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.1- First observed
calculate - First observed
calculus - First observed
convert_units - First observed
linear_algebra - First observed
physical_constant - First observed
propagate_uncertainty - First observed
solve - First observed
statistics
TDQS
Scored across 8 tools
Each tool has a clear, non-overlapping purpose: calculate evaluates expressions, solve handles equations, calculus does symbolic differentiation/integration, linear_algebra handles matrix operations, etc. Even superficially similar tools like calculate and calculus are distinct in scope.
All names use lowercase with underscores for multi-word tools, but the pattern is mixed: some are verbs (calculate, solve), some are noun phrases (linear_algebra, physical_constant). This is mostly consistent but deviates from a uniform verb_noun style.
With 8 tools, the set is well-scoped for scientific mathematical computation. Each tool covers a major area (arithmetic, units, equations, calculus, linear algebra, statistics, uncertainty, constants) without redundancy or bloat.
The tool surface covers the core scientific computing workflow: expression evaluation, unit conversion, equation solving, symbolic calculus, matrix operations, statistical analysis, uncertainty propagation, and constants lookup. Minor gaps like numeric root-finding or optimization exist, but the set is comprehensive for typical math/science use.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI-callable calculators and engineering models with real formulas. No hallucinated math.
Precision math engine for AI agents. 203 exact methods. Zero hallucination.
Exact statistics & probability: distributions, hypothesis tests, CIs, Bayesian updates, regression.
Scientific compute for AI agents: symbolic, numerical, quantum, chemistry, ODE. Paid via x402.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables physicists to perform computer algebra calculations, create scientific plots, solve differential equations, work with tensor algebra and quantum mechanics, and parse natural language physics problems. Supports unit conversion, physical constants, and generates comprehensive reports with optional GPU acceleration.10MIT
- AlicenseBqualityAmaintenanceProvides secure mathematical computation capabilities including expression evaluation, symbolic math (derivatives, simplification), matrix operations, statistics, and unit conversion, with multi-tier acceleration through WebAssembly and WebWorkers for high-performance calculations.7190ISC
- FlicenseNot gradedqualityCmaintenanceProvides exact arithmetic and verification tools using SymPy and fractions to solve math competition problems precisely. It enables users to perform rigorous calculations and export notebook-ready Python code for further analysis.-
- AlicenseNot gradedqualityCmaintenanceProvides deterministic tools for symbolic math, equation solving, relation verification, reasoning structure audits, and validated CAD primitives, returning evidence artifacts for every result.MIT