math-reasoning-mcp
Click on "Deploy 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., "@math-reasoning-mcpWhat's the Laplace transform of t^2 e^{-3t} sin(2t)?"
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.
Math Reasoning MCP

A Model Context Protocol (MCP) server that gives AI agents a deterministic mathematical brain. Instead of hallucinating algebra, the agent delegates symbolic computation to a SymPy engine over JSON-RPC — getting exact, verifiable results every time.
Built for engineers, researchers, and students working in Algebra, Calculus, Signals & Systems, and Digital Signal Processing (DSP).
Why This Exists
Large Language Models are statistical text predictors. They can describe a Laplace transform, but when asked to execute one — especially a multi-step derivation involving chain rules, frequency shifts, and polynomial expansion — they routinely:
Drop negative signs
Hallucinate polynomial terms
Produce plausible-looking but wrong final answers
Models with built-in code execution (like Gemini) work around this by writing and running Python scripts in a proprietary sandbox. This MCP provides the same deterministic SymPy power as a universal, open standard — pluggable into any AI agent, no proprietary sandbox required.
Related MCP server: ReasonForge
Proof of Value
Problem: Compute the Laplace Transform of $f(t) = t^2 e^{-3t} \sin(2t)$ and find the system poles.
Raw LLM (no tools) | With Math MCP | |
Accuracy | ❌ Fails on the 2nd-derivative chain rule. Wrong poles. | ✅ Exact: $\frac{4(3(s+3)^2 - 4)}{((s+3)^2 + 4)^3}$, poles at $-3 \pm 2i$ |
Tokens | ~800+ (lengthy, incorrect derivation) | ~150 (two tool calls + final answer) |
Time | Slow (multi-step generation) | < 2 seconds |
21 Tools
📐 Core Algebra & Calculus
Tool | Description | Example |
| Convert LaTeX → SymPy |
|
| Simplify expressions |
|
| Solve for a variable |
|
| Numeric evaluation |
|
| Symbolic derivative (nth-order) |
|
| Symbolic integral |
|
| Partial fractions |
|
📡 Signals & Continuous Transforms
Tool | Description | Example |
| $f(t) \to F(s)$ |
|
| $F(s) \to f(t)$ |
|
| $f(t) \to F(\omega)$ |
|
| $F(\omega) \to f(t)$ | Inverse of the above |
| $(f * g)(t)$ with Heaviside support | Causal signals handled automatically |
💻 Discrete-Time & DSP
Tool | Description | Example |
| One-sided Z-transform |
|
| Discrete-Time Fourier Transform |
|
| Numerical FFT (numpy) |
|
| ADC quantization simulation |
|
⚙️ System Analysis
Tool | Description | Example |
| Poles & zeros of $H(s)$ or $H(z)$ |
|
| Prove/disprove linearity |
|
| Prove/disprove TI |
|
Both check_linearity and check_time_invariance support:
Memoryless systems: expressions in
xandt(e.g.,x**2,t*x + 5)Difference equations: expressions in
x_n,x_n1,x_n2,n(e.g.,x_n + x_n1)
check_linearity also detects affine systems (constant offset makes it non-linear).
🧮 Step-by-Step Solvers
Tool | Description |
| Derives the Laplace transform showing each property applied (linearity, frequency shift, time multiplication) with verification |
| Solves equations showing expansion, factoring, discriminant analysis, and verification of each root |
These tools don't just return the answer — they show the derivation, making them ideal for education and debugging.
Testing
55 tests covering all 21 tools, edge cases, and error handling:
uv run pytest tests/ -vtests/test_tools.py 55 passed in 4.38sTests cover:
All core algebra operations (simplify, solve, differentiate, integrate)
All transform tools (Laplace, Fourier, Z-transform, FFT)
System analysis (linearity, time-invariance) for both memoryless and memory systems
Affine vs. linear detection
Step-by-step output structure
Structured error handling for malformed input
Installation
Requires uv.
git clone https://github.com/TeleEng/math-reasoning-mcp.git
cd math-reasoning-mcp
uv syncUsage
Add to your MCP client configuration:
{
"mcpServers": {
"math-reasoning": {
"command": "uv",
"args": [
"run",
"--directory",
"<absolute-path-to-this-repository>",
"math-reasoning-mcp"
]
}
}
}Compatible with any MCP client: Claude Desktop, Cursor, Windsurf, Antigravity, custom agents, etc.
Architecture
┌──────────────┐ JSON-RPC ┌──────────────────┐
│ AI Agent │ ◄──── MCP ──────► │ Math MCP Server │
│ (any LLM) │ (stdio/SSE) │ (SymPy+NumPy) │
└──────────────┘ └──────────────────┘
│ │
Reads files, Deterministic
understands symbolic math
context engineTech Stack
SymPy — Symbolic mathematics engine
NumPy — Numerical computation (FFT, quantization)
MCP SDK — Model Context Protocol server framework
uv — Fast, reproducible Python dependency management
pytest — Test framework (55 tests)
License
MIT
Available Tools
21 toolscheck_linearityA
Checks if a system is linear using the superposition principle.
For system_type='memoryless': expression is in terms of 'x' and optionally 't'. Example: 'x**2', '3x', 'tx + 5'
For system_type='difference': expression is a difference equation in terms of 'x_n', 'x_n1' (x[n-1]), 'x_n2' (x[n-2]), 'y_n1' (y[n-1]), etc. Example: 'x_n + x_n1' (y[n] = x[n] + x[n-1])
Returns whether the system is linear with a symbolic proof.
| Name | Required | Description | Default |
|---|---|---|---|
| system_type | No | memoryless | |
| system_expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It states that the tool returns a boolean result with a symbolic proof and explains the accepted expression formats for both system types. It does not cover error behavior or limitations, but the core behavior is well disclosed.
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 efficient and scannable: a one-sentence purpose, then a clearly separated breakdown by system_type with concrete examples. Every sentence earns its place, and the examples are highly relevant to correct invocation.
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?
For a tool with no annotations, 0% schema parameter coverage, and a somewhat nuanced mathematical input, the description is remarkably complete. It defines the valid expression grammar for both supported system types, explains what the tool returns, and provides enough examples. The output schema can supply the formal return structure.
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%, and the description fully compensates. It explains system_type values and gives detailed syntax rules and examples for system_expression in both memoryless and difference cases. An agent could construct valid inputs from this description alone.
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 opens with a specific verb and resource: 'Checks if a system is linear' and names the method (superposition principle). It is clearly distinct from sibling tools like transformation tools or check_time_invariance, so an agent can identify what this tool is for.
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 clear usage context by explaining exactly how to express memoryless systems and difference equations, with examples for each system_type. It does not explicitly state when not to use the tool or mention alternatives such as check_time_invariance, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_time_invarianceA
Checks if a system is time-invariant.
For system_type='memoryless': expression is in terms of 'x' and 't'. Computes y(t-t0) and T{x(t-t0)} and checks equality.
For system_type='difference': expression is in terms of 'x_n', 'x_n1', 'n'. A system depending explicitly on 'n' is time-variant. Computes y[n-n0] and T{x[n-n0]} and checks equality.
Returns whether the system is time-invariant with a symbolic proof.
| Name | Required | Description | Default |
|---|---|---|---|
| system_type | No | memoryless | |
| system_expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description itself fully discloses the algorithm: it computes y(t-t0) vs T{x(t-t0)} for memoryless systems and y[n-n0] vs T{x[n-n0]} for difference systems. It also states the return value includes a symbolic proof, giving the agent a clear behavioral model.
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 well-organized into a one-line summary followed by clear sections for each system_type. The repeated computation phrasing could be slightly more compact, but every sentence contributes useful information and the structure aids scanning.
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?
For a two-parameter tool with no annotations, the description supplies enough context to call it correctly: supported system types, expected expression variables, the equality check performed, and the symbolic-proof return. The existence of an output schema means return details are not required in the 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 for both parameters. It explains system_type values ('memoryless' and 'difference') and specifies what variables the system_expression should contain in each mode. This adds meaning far beyond the bare schema property names.
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 opens with a specific verb and resource: 'Checks if a system is time-invariant.' It clearly identifies the tool's purpose and distinguishes it from siblings like check_linearity because time invariance is a distinct property. The detailed per-system_type behavior further clarifies what the tool operates on.
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 clear context on how to use the tool for each supported system_type, including expected variable conventions. It does not explicitly mention alternative tools or exclusion criteria, so it stops short of full when-to-use-versus-alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute_fftB
Computes the Fast Fourier Transform (FFT) of a discrete numerical sequence using numpy. Returns complex-valued frequency bins.
| Name | Required | Description | Default |
|---|---|---|---|
| sequence | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add useful behavior: the implementation uses numpy and the output consists of complex-valued frequency bins. However, it does not disclose constraints like input length handling, normalization, or behavior on empty/non-finite sequences.
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 concise sentences with no filler. It front-loads the main operation in the first sentence and adds a directly relevant output detail in the second.
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?
For a single-parameter FFT utility with an output schema present, the description covers the core input and output semantics adequately. It would be more complete with an example or a brief note on normalization, but the tool is simple enough that an agent can likely invoke it correctly with the given information.
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 partially compensates by identifying `sequence` as a discrete numerical sequence and implying numpy-compatible input. It does not elaborate on required formatting, length constraints, or whether complex input is allowed, but the single parameter is fairly self-explanatory from its name and type.
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 computes the Fast Fourier Transform of a discrete numerical sequence and returns complex-valued frequency bins. It partially distinguishes itself from sibling symbolic/continuous transform tools via 'discrete numerical sequence' and 'using numpy', but it does not explicitly name alternatives or contrast with them.
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?
No usage guidance is provided. The description does not mention when to prefer compute_fft over sibling tools like fourier_transform_signal or dtft_signal, and it gives no exclusions or alternative tool recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continuous_convolutionA
Computes the continuous-time convolution (f * g)(t) for causal signals. Automatically handles Heaviside (unit step) functions. Signals are assumed causal (zero for t < 0) unless they already contain Heaviside terms.
| Name | Required | Description | Default |
|---|---|---|---|
| f_t | Yes | ||
| g_t | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses two important behavioral traits: Heaviside terms are handled automatically, and signals without Heaviside terms are assumed zero for t < 0. It does not mention output formatting or edge cases, but the output schema covers return structure.
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?
Two short sentences front-load the operation and then add the two necessary caveats: Heaviside handling and causality. There is no filler, redundancy, or irrelevant detail.
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?
For a symbolic convolution tool, the description provides the core mathematical meaning, causality assumption, and Heaviside handling, and an output schema exists so return values need not be described. The main missing piece is explicit parameter format, which leaves the agent to infer how the f_t and g_t strings should be written.
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 input schema contains only two untyped string fields with 0% description coverage, so the description must compensate. It establishes that f_t and g_t are continuous-time causal signal expressions and that Heaviside terms may be embedded, but it gives no concrete syntax, variable conventions, or examples for these strings.
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 ('computes') and identifies the exact operation by name and formula: continuous-time convolution (f * g)(t). It also sets the scope to causal signals, which clearly distinguishes it from the transform and discrete-analysis siblings such as laplace_transform_signal, dtft_signal, and compute_fft.
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 states the tool is for causal continuous-time signals and explains the Heaviside/causality assumption, giving the agent a clear context for when to invoke it. However, it does not name alternative tools or explicitly say when not to use it, so some usage routing is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
differentiateB
Computes the nth-order derivative of an expression with respect to a variable.
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | ||
| variable | Yes | ||
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly describes the core operation, but it omits input syntax constraints, validation behavior, and how invalid expressions or variables are handled. The absence of side effects is implicit but not explicitly stated.
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 with no fluff. The core action is front-loaded, and every word contributes meaningful information.
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 existence of sibling tools like parse_latex_to_sympy, the description does not clarify what input format 'expression' expects or whether preprocessing is needed. Order constraints and edge cases are also missing. The output schema exists, so return-value documentation is not required, but the input-side context is incomplete for an agent to invoke this tool reliably.
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 supply parameter meaning. It does connect 'expression', 'variable', and 'nth-order' to the operation, but it provides no format details, constraints on the order value, or examples. This is adequate but minimal.
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 states a specific verb ('Computes'), a clear resource ('nth-order derivative of an expression'), and the target ('with respect to a variable'). This unambiguously distinguishes it from siblings like integrate_expression, solve_equation, and simplify_expression without requiring schema inspection.
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?
No guidance is provided about when to use this tool versus alternatives such as integrate_expression or evaluate_expression. The description does not mention exclusions, prerequisites, or input-preparation steps, leaving the agent to infer usage purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dtft_signalC
Computes the Discrete-Time Fourier Transform (DTFT) of x[n]. Returns X(W) where W is omega.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description only mentions computation and return value. It does not disclose any behavioral aspects such as input format requirements, symbolic vs numerical computation, error handling, or side effects.
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 concise, consisting of two short sentences with no redundant information. It directly states the action and the return value.
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 complexity of DTFT, the description lacks essential context such as expected input format, variable conventions, and return structure. There is no output schema provided, leaving the agent to guess the result format.
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 only parameter 'expression' has no description in the schema or the tool description. The description references x[n] but does not clarify what the expression should contain (e.g., symbolic function, variable names, or format).
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 computes the Discrete-Time Fourier Transform (DTFT) of x[n], which is a specific operation on a specific resource. It distinguishes itself from sibling transforms like continuous Fourier, Laplace, and Z transforms.
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 usage for discrete-time signals but does not explicitly state when to prefer DTFT over alternatives. No direct comparison or guidance is provided, so usage is inferred rather than explicitly communicated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_expressionA
Evaluates a symbolic expression to a numeric result (floating-point).
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does reveal an important trait: the result is a floating-point numeric value, not a symbolic result. However, it does not disclose behavior for invalid expressions, undefined variables, precision limits, or error handling, which would be useful for an agent invoking the tool.
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, front-loaded sentence with no filler or redundant phrasing. It earns its place by stating the core action and result type. However, it is slightly too brief to address the missing parameter semantics, though conciseness itself is strong.
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 tool is simple with one required parameter and an output schema, which reduces the need to describe return values. The description captures the basic purpose, but the lack of expression syntax guidance and error-behavior context leaves a moderate gap. It is minimally adequate but not fully 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?
Schema description coverage is 0%, so the description must compensate for the undocumented 'expression' parameter. It only restates 'symbolic expression' without explaining the expected syntax, grammar, supported functions, or whether variables are allowed. The agent cannot fully infer how to construct the expression string.
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 ('Evaluates') and resource ('symbolic expression'), and clearly specifies the output ('numeric result (floating-point)'). This distinguishes it from siblings like solve_equation, simplify_expression, and parse_latex_to_sympy, which perform different operations on expressions.
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 intended use is implied: use this tool when you need a numeric value from a symbolic expression. However, the description does not explicitly state when not to use it or mention alternatives such as simplify_expression for algebraic manipulation or solve_equation for equations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fourier_transform_signalB
Computes the continuous Fourier transform of a signal f(t). Returns F(w).
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It only says the transform is computed and F(w) is returned, but it omits whether the computation is symbolic, what assumptions are made, how invalid expressions are handled, or any other operational behavior beyond the basic operation.
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 and front-loaded: the first sentence states the operation and the second states the result. There is no filler or redundant material, making it easy for an agent to parse quickly.
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 this is a single-parameter math tool with an output schema, the basic input-to-output contract is communicated: f(t) produces F(w). However, the description leaves gaps around when to choose this tool, how to format the expression argument, and what limitations or assumptions apply, so completeness is only moderate.
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 is the only source of meaning for the required 'expression' parameter. It does indicate that the expression represents the signal f(t), which is useful, but it does not specify the expected syntax, the independent variable, or how multi-variable expressions are interpreted.
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 states a specific verb ('Computes') and resource ('continuous Fourier transform of a signal f(t)'), and clarifies the output as F(w). The qualifier 'continuous' helps distinguish it from discrete transforms like compute_fft and dtft_signal, though no sibling is explicitly named.
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 no explicit guidance about when to use this tool versus alternatives such as laplace_transform_signal, inverse_fourier_transform_signal, or compute_fft. The word 'continuous' is the only implicit hint, but there is no stated decision rule or exclusion context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
integrate_expressionA
Computes the indefinite integral of an expression with respect to a variable.
| Name | Required | Description | Default |
|---|---|---|---|
| variable | Yes | ||
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the core operation and does not disclose output behavior, supported input formats, limitations, or whether an integration constant is returned. 'Computes the indefinite integral' is essentially the operation itself, not an additional behavioral trait.
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 focused sentence that front-loads the operation and contains no redundant information. Every word contributes to understanding what the tool does.
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?
For a simple two-parameter symbolic computation tool, this is minimally viable: it names both parameters and the operation. However, with no annotations, no schema descriptions, and no output-schema details, key operational aspects like input formatting and error behavior are left to inference.
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 schema has 0% parameter description coverage; the description does clarify that 'expression' is the integrand and 'variable' is the integration variable. However, it gives no details about accepted expression syntax, variable notation, or whether expressions must be in a particular format such as SymPy.
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 ('Computes') and clearly names the resource ('the indefinite integral of an expression with respect to a variable'). This distinguishes it from sibling tools like differentiate, which compute derivatives, and solve_equation.
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 purpose implies when to use this tool—whenever an antiderivative is needed—but it provides no explicit guidance about alternatives or when not to use it. There is no mention of sibling tools or exclusions, leaving usage context mostly implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inverse_fourier_transform_signalA
Computes the Inverse Fourier transform of F(w). Returns f(t).
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It states the core operation and return value but does not mention input syntax, variable naming conventions, assumptions about the transform, or possible failure cases. Basic transparency is present, but little depth is added beyond the headline behavior.
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 short sentences with no filler. The operation appears first and the return value second, making it immediately scannable and information-dense.
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?
For a one-parameter mathematical transform tool with an output schema, the description covers the essential operation and result. However, it lacks guidance on how to format the expression, which variable represents frequency, and when the transform is appropriate, leaving an agent to infer important invocation details.
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 schema only provides the parameter name 'expression' with no description coverage. The description adds meaning by indicating that the parameter represents F(w), the frequency-domain function to be transformed. It does not explain the expression syntax or expected variables, but for a single parameter this is a useful supplement.
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 'Computes' and clearly identifies the resource as the 'Inverse Fourier transform of F(w)', with the return value stated as 'f(t)'. This clearly distinguishes it from sibling tools like fourier_transform_signal, which performs the forward transform.
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 its use case: when the time-domain function f(t) is needed from a frequency-domain F(w). However, it does not explicitly state when to use this tool versus alternatives such as fourier_transform_signal or inverse_laplace_transform_signal, nor does it provide any exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inverse_laplace_transform_signalB
Computes the Inverse Laplace transform of F(s). Returns f(t).
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It states the basic input/output relationship but does not disclose symbolic vs. numeric behavior, assumed variable conventions, limitations, or failure conditions. This is minimal disclosure for a transform tool.
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?
Two short sentences with zero filler; the core operation and result are stated immediately. This is appropriately sized for the tool's single-parameter interface.
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?
Although an output schema exists and reduces the need to describe return values, the description lacks input-syntax guidance, convention details, and any relation to signal-processing usage. For a tool with no annotations and a single minimally documented parameter, this is not complete enough for reliable invocation.
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 coverage, the description must compensate for the undocumented 'expression' parameter. It does add meaning by indicating the expression is F(s) and the output is f(t), but it stops short of specifying the expected string syntax or variable-naming conventions. Thus it provides partial parameter semantics.
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 names a specific operation ('Computes the Inverse Laplace transform') and the output ('Returns f(t)'), clearly distinguishing it from sibling tools like laplace_transform_signal and inverse_fourier_transform_signal. The verb and resource are explicit 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 operation implies when to use the tool: when an inverse Laplace transform of an expression in s is needed. However, the description gives no explicit guidance about when not to use it or which sibling tools might be more appropriate for alternative transforms or preprocessing steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
laplace_transform_signalA
Computes the Laplace transform of a causal signal f(t). Returns F(s) and the convergence condition.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the return value (F(s) and convergence condition) but does not mention any assumptions about the input format, handling of non-causal signals, or potential errors. No annotations are provided to supplement.
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 concise, consisting of two clear sentences that don't waste words. It front-loads the main action and then specifies the output.
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 provides the basic output but lacks details about input format, edge cases, or limitations. Given that there is no output schema, the description could be more informative to fully understand the tool's behavior.
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 sole parameter 'expression' has no schema description, and the tool description does not elaborate on what constitutes a valid expression. It is unclear if it expects a symbolic expression string, a function, or a specific notation.
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?
Clearly states that the tool computes the Laplace transform of a causal signal, with a specific verb 'computes' and resource 'Laplace transform of a causal signal f(t)'. It also mentions the output includes F(s) and convergence condition, which helps distinguish from other transforms.
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 use case (when a Laplace transform is needed), but does not explicitly contrast with alternative tools like inverse Laplace or Fourier transform. It does not provide selection criteria compared to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_latex_to_sympyA
Parses a LaTeX math string into a SymPy expression string, which can be used in other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| latex_str | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of explaining behavior. It clearly states the input-to-output transformation and the output type, but it does not disclose parser limitations, supported LaTeX syntax, or error behavior on invalid input. The core conversion behavior is transparent, though edge-case behavior is not.
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 focused sentence with no redundant wording. The primary action and input/output are front-loaded, and the downstream-use note adds context without bloating the description.
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?
For a simple single-parameter conversion tool, the description covers the essential details: input format, output format, and how the result is intended to be used. An output schema is present, so return-value documentation is less critical. It could mention error handling or supported LaTeX subset, but the current description is sufficient for successful invocation in most expected cases.
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 schema provides only the parameter name 'latex_str' and type string, with zero descriptive coverage. The description's 'LaTeX math string' clarifies that the argument should be a mathematical expression in LaTeX, not just any LaTeX text. It lacks examples or delimiter/escaping guidance, but for a single obvious parameter this is adequate.
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 names a specific verb ('Parses'), a clear input ('LaTeX math string'), and a concrete output ('SymPy expression string'), and it positions the tool as a preprocessing step for other tools. This distinguishes it from the sibling tools, which perform algebraic/transform operations rather than format conversion.
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 phrase 'can be used in other tools' implies the intended usage context: convert LaTeX before feeding the result into SymPy-based sibling tools. It does not explicitly state when not to use the tool or name alternative conversion tools, but none of the siblings appear to provide this functionality, so the usage context is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
partial_fraction_decompositionB
Performs Partial Fraction Decomposition on a rational function (crucial for inverse transforms).
| Name | Required | Description | Default |
|---|---|---|---|
| variable | Yes | ||
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only names the operation and domain, without explaining input assumptions, how the decomposition is returned, or how improper/non-rational inputs are handled. There is no contradiction, but significant behavioral context is missing.
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, front-loaded sentence with no filler. The parenthetical usage hint is useful and earns its place. It could be slightly more informative without losing conciseness, so it is not a perfect 5.
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 this is a simple two-parameter tool and an output schema exists, the description provides a minimally viable picture: the operation, the domain, and one key use case. However, zero parameter documentation and no guidance on edge cases or input formatting leave noticeable gaps for an agent deciding how to call it.
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 for the lack of parameter documentation. It never explicitly explains 'expression' or 'variable', though 'rational function' indirectly hints that 'expression' is the function to decompose. The parameter names are somewhat self-explanatory, but the description adds little value beyond them.
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 states a specific action, 'Performs Partial Fraction Decomposition on a rational function', which clearly identifies the tool's purpose. The parenthetical '(crucial for inverse transforms)' connects it to relevant siblings without confusing the core operation. It does not explicitly name a sibling alternative, so it stops short of a 5.
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 phrase 'crucial for inverse transforms' implies a use case and links it to sibling tools like inverse_laplace_transform_signal. However, it does not explicitly say when to choose this tool over alternatives, nor does it mention exclusions or prerequisites beyond the expression being a rational function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poles_and_zerosA
Finds the poles and zeros of a system transfer function H(s) or H(z).
| Name | Required | Description | Default |
|---|---|---|---|
| variable | Yes | ||
| transfer_function | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It clearly states a non-destructive computation operation and hints at domain support (s or z). However, it does not disclose details such as how non-rational transfer functions are handled, whether results are symbolic/numeric, or what specific output structure is returned (though an output schema exists).
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 with no filler. It front-loads the core action and the resource, and every word contributes meaning.
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?
For a tool with no annotations and 0% schema description coverage, the description is thin. It omits critical input semantics, especially the meaning of 'variable', and provides no usage context. The presence of an output schema reduces the need to document return values, but the input side remains under-specified.
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. The 'transfer_function' parameter is somewhat self-explanatory from the description, but the 'variable' parameter is not explained at all. The phrase 'H(s) or H(z)' hints that variable selects the domain, but this mapping is not explicit enough for reliable invocation.
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 ('finds') and resource ('poles and zeros of a system transfer function H(s) or H(z)'). It clearly differentiates this tool from siblings like laplace_transform_signal or partial_fraction_decomposition, which perform different mathematical 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 intended use is implied: use when you need poles and zeros of a transfer function. However, there is no explicit guidance on when to prefer this tool over alternatives, nor any mention of when not to use it. This is adequate but minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simplify_expressionC
Simplifies a mathematical expression using algebraic identities.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It communicates that the tool simplifies expressions but does not explain whether it returns a simplified form, operates on symbolic expressions, or what happens with invalid or non-simplifiable inputs.
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 concise sentence with no redundancy. It is front-loaded with the action and resource, though it could have used its brevity to add more useful context without becoming verbose.
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?
For a one-parameter tool this is simple in shape, but the overall context is incomplete: no input format guidance, no usage alternatives, and no behavioral detail. The presence of an output schema reduces the need to describe return values, but the description still leaves an agent guessing about how to correctly invoke the 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?
The schema has 0% description coverage for the single parameter, and the description only repeats the notion of a 'mathematical expression' without specifying syntax, accepted formats (e.g., plain math vs. LaTeX), variable conventions, or constraints. The description fails to compensate for the lack of schema-level 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 a specific action ('Simplifies'), a resource ('a mathematical expression'), and a method ('using algebraic identities'). It effectively distinguishes this from siblings like solve_equation or evaluate_expression, though it does not explicitly name a distinct sibling alternative.
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?
No guidance is given about when to use this tool versus alternatives such as evaluate_expression or step_by_step_algebra. There is no mention of prerequisites, input format expectations, or scenarios where simplification would or would not be appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_equationB
Solves an equation for a given variable. Pass equation as 'lhs - rhs' (set equal to 0) or use Eq(lhs, rhs).
| Name | Required | Description | Default |
|---|---|---|---|
| equation | Yes | ||
| variable | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It usefully reveals the accepted input conventions ('lhs - rhs' set to zero, or Eq(lhs, rhs)), which goes beyond the schema, but it does not describe the return format, failure cases, or solver limitations. This is partial disclosure, not a 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?
Two sentences with no filler: the first states the purpose, the second gives the essential input syntax. It is front-loaded and every sentence earns its place.
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?
For a two-parameter tool with an output schema, the description is nearly sufficient: it tells the agent how to encode the equation and identifies the variable. However, it lacks an example, does not fully clarify the variable parameter's expected form, and mentions no unsupported equation cases, making it minimally adequate rather than 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?
The schema has 0% description coverage, so the description must compensate. It explains the equation parameter's expected format concretely and mentions the variable, but it does not specify exactly how the variable string should be provided or whether it must match a symbol in the equation. It partially compensates but leaves meaningful gaps.
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 ('solves') and a clear resource ('an equation for a given variable'), making the tool's core purpose obvious. It does not explicitly differentiate from sibling tools, but the operation is distinct enough from simplify, differentiate, and integrate that an agent can infer its role.
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 no guidance on when to use solve_equation versus siblings such as evaluate_expression or simplify_expression. It explains how to format the equation, but offers no alternatives, exclusions, or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_by_step_algebraA
Solves an equation step-by-step, showing intermediate algebraic manipulations. Returns the solution process including factoring, simplification, and final roots.
| Name | Required | Description | Default |
|---|---|---|---|
| variable | Yes | ||
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and it does so well: it discloses that the tool returns the full solution process, not just the answer, and enumerates the kinds of manipulations included. It does not discuss edge cases or input constraints, but the main behavioral trait for a step-by-step solver is clearly stated.
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?
Two compact sentences with no filler. The primary action is front-loaded and the second sentence adds valuable output detail without redundancy.
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 plus output schema give a workable picture for a simple two-parameter tool, but there are gaps: no parameter format guidance and no usage differentiation from solve_equation. Given the low schema coverage and sibling ambiguity, it is adequate but not 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?
Schema description coverage is 0%, and the description does not explain the two parameters. It mentions 'equation' and 'variable' indirectly, but never states that expression should hold the equation and variable should name the unknown, nor what syntax is expected.
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?
States a specific verb and resource: solves an equation, and adds the distinguishing detail 'step-by-step, showing intermediate algebraic manipulations.' It further enumerates returned elements (factoring, simplification, final roots), which separates it from siblings like solve_equation.
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 this tool should be used when a worked solution with intermediate steps is desired, but it never explicitly contrasts it with alternatives such as solve_equation or simplify_expression. No when-not-to-use or selection conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_by_step_laplaceA
Solves the Laplace transform of f(t) step-by-step, showing each transformation property applied (linearity, frequency shift, time multiplication). Returns both the derivation steps and the final answer.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly discloses that the tool returns both derivation steps and the final answer, and it lists the transformation properties it shows. This is substantive behavioral information, though it does not mention limits or special 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, front-loads the core action, and then efficiently adds the step-by-step behavior, properties covered, and return value. No unnecessary 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?
The description is adequate for a simple one-parameter math tool and the output schema covers return values, but it omits input format details and does not explicitly contrast with laplace_transform_signal, so an agent has to infer some usage context.
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 schema has only one parameter, 'expression', with 0% schema description coverage. The description adds meaning by identifying it as f(t), the function to transform, but does not explain expected syntax, variable conventions, or whether LaTeX/plain math input is used.
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 ('Solves'), names the exact resource ('Laplace transform of f(t)'), and clarifies the step-by-step nature. It further distinguishes the tool from the sibling laplace_transform_signal by emphasizing derivation steps rather than a direct result.
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 step-by-step phrasing implies this tool is for cases where a derivation is wanted, but there is no explicit statement about when not to use it or which sibling alternative is appropriate for just obtaining the transform. Context is implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uniform_quantizationA
Simulates uniform quantization of a continuous value. Returns the quantized value, quantization error, step size (Δ), and theoretical maximum SQNR.
| Name | Required | Description | Default |
|---|---|---|---|
| bits | Yes | ||
| v_max | Yes | ||
| v_min | Yes | ||
| value | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It does disclose that the operation is a simulation and lists the numeric outputs, but it does not mention rounding behavior, boundary handling, or out-of-range behavior. Basic behavior is clear, but edge-case behavior is not.
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, front-loaded sentence with no filler. It immediately states what the tool does and what it returns, making the core information easy to scan.
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?
With no annotations, four required parameters, and zero schema description coverage, the description leaves important semantic gaps. The output schema helps with return values, but the description does not provide enough guidance for an agent to confidently construct valid and correct arguments.
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 for missing parameter documentation. It adds meaning to 'value' by calling it a continuous value, but it never explains bits, v_min, or v_max roles. An agent would still need to infer parameter semantics from domain knowledge.
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 names a specific operation ('simulates uniform quantization') and enumerates the outputs: quantized value, quantization error, step size, and theoretical maximum SQNR. This clearly distinguishes it from the algebraic and transform-oriented sibling tools.
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?
No explicit when-to-use or when-not-to-use guidance is given, and no alternative quantization tool is named. The intended use is only implied by the phrase 'simulates uniform quantization,' so the agent must infer the usage context from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
z_transform_signalA
Computes the one-sided Z-transform of a discrete signal x[n]. Returns X(z).
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior. It discloses the core computation and return value, but it does not mention accepted expression syntax, domain assumptions (e.g., x[n]=0 for n<0 for one-sided), ROC, or error behavior.
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?
Two short sentences with the operation front-loaded and no filler. 'Returns X(z)' adds a clear output statement without wasting space.
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?
For a one-parameter transform tool with an output schema, the definition is mostly sufficient, but it lacks parameter-format guidance and does not explicitly route between similar transforms. The discrete-signal phrase provides some context, but the expression input remains underspecified.
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 only parameter 'expression' has 0% schema description coverage, and the tool description does not explain how to encode x[n] in the string (e.g., function of n, variable names, supported syntax). It only hints that expression represents the discrete signal.
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 names a specific mathematical operation ('Computes the one-sided Z-transform') and the target signal type ('a discrete signal x[n]'), clearly distinguishing it from Laplace/Fourier/DTFT siblings. It also states the output X(z), so an agent knows what the tool produces.
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?
It gives clear context for use by specifying 'discrete signal x[n]' and 'one-sided,' which tells an agent when a Z-transform is appropriate. It does not explicitly name alternatives or state when not to use it, so it stops short of full routing guidance.
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.
21 tool updates
v0.1.0- First observed
check_linearity - First observed
check_time_invariance - First observed
compute_fft - First observed
continuous_convolution - First observed
differentiate - First observed
dtft_signal - First observed
evaluate_expression - First observed
fourier_transform_signal - First observed
integrate_expression - First observed
inverse_fourier_transform_signal - First observed
inverse_laplace_transform_signal - First observed
laplace_transform_signal - First observed
parse_latex_to_sympy - First observed
partial_fraction_decomposition - First observed
poles_and_zeros - First observed
simplify_expression - First observed
solve_equation - First observed
step_by_step_algebra - First observed
step_by_step_laplace - First observed
uniform_quantization - First observed
z_transform_signal
TDQS
Scored across 21 tools
Each tool targets a distinct operation or transform family, and the descriptions clearly separate direct computation from step-by-step variants. The main ambiguity is between solve_equation/step_by_step_algebra and laplace_transform_signal/step_by_step_laplace, but the stated outputs make the distinction usable.
Transform and check tool families are consistent (laplace_transform_signal, inverse_laplace_transform_signal, check_linearity, check_time_invariance), but the overall set mixes verb_noun names, bare verbs like differentiate, and noun-phrase names like poles_and_zeros and uniform_quantization. The naming is readable and snake_case throughout, but not a uniform verb_noun pattern.
With 21 tools, the server is on the heavy side and overlaps somewhat with redundant step-by-step variants. Most tools do serve distinct math or signals purposes, but the count sits in the borderline 16-25 range rather than being tightly scoped.
Core algebra, calculus, convolution, and major transforms are covered, including inverse Laplace and Fourier transforms. However, there are notable gaps such as inverse Z-transform, inverse DTFT, definite integration, limits, and series support, which leave dead ends for some signal workflows.
Maintenance
Related MCP Connectors
Precision math engine for AI agents. 203 exact methods. Zero hallucination.
Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.
AI-callable calculators and engineering models with real formulas. No hallucinated math.
Scientific compute for AI agents: symbolic, numerical, quantum, chemistry, ODE. Paid via x402.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables LLMs to autonomously perform symbolic mathematics and computer algebra through SymPy's functionality for manipulating mathematical expressions and equations.3284Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides a suite of deterministic math tools powered by SymPy to handle algebra, calculus, linear algebra, and statistics via the Model Context Protocol. It enables smaller language models to delegate complex computations to a verified symbolic backend for accurate and reliable results.Apache 2.0
- AlicenseAqualityDmaintenanceA secure mathematical computation sandbox that enables LLMs to perform symbolic math operations like algebra, calculus, and equation solving via SymPy. It features low-latency execution through pre-warmed process pools and provides standardized JSON outputs for reliable agent integration.12MIT
- AlicenseNot gradedqualityAmaintenanceProvides a token-efficient exact math engine for AI agents, enabling computation of derivatives, integrals, equations, and optimized Python/NumPy code via a single MCP tool.4MIT