Skip to main content
Glama
agmonetti

mathmethods-mcp

Mathematical/Numerical Methods - MCP Server

MCP Server License CI npm version PyPI M8ven Live Monitored Mathmethods Mcp on AI Agents Listing

A Model Context Protocol server that exposes a numerical-methods core as tools an LLM agent can call directly from a chat (VS Code, Zed, Claude, opencode, etc.). It is built on top of the numerical-methods engine of the academic project modeladoYsimulacion-web (UADE); the math core is vendored into this repository so the server is fully self-contained.

Installation and Usage

Runs on-demand without any global installation:

Claude Code (One-liner CLI)

claude mcp add mathmethods npx -y @agmonetti/mathmethods-mcp

Claude Desktop & Cursor (JSON Configuration)

Add to your claude_desktop_config.json or .cursor/mcp.json:

{
  "mcpServers": {
    "mathmethods": {
      "command": "npx",
      "args": ["-y", "@agmonetti/mathmethods-mcp"]
    }
  }
}

2. Install Globally from NPM

Ideal for instant startup without network latency on every invocation:

npm install -g @agmonetti/mathmethods-mcp
{
  "mcpServers": {
    "mathmethods": {
      "command": "mathmethods-mcp"
    }
  }
}

3. Run with UVX (Direct Python)

Any MCP client can also run the Python package directly with Astral's uvx:

claude mcp add mathmethods-mcp -- uvx mathmethods-mcp
{
  "mcpServers": {
    "mathmethods": {
      "command": "uvx",
      "args": ["mathmethods-mcp"]
    }
  }
}
git clone https://github.com/agmonetti/mathmethods-mcp.git
cd mathmethods-mcp
uv sync --extra dev
uv run server.py

Every client config above also works with uv run --frozen --project <checkout> python <checkout>/server.py in place of npx -y @agmonetti/mathmethods-mcp or uvx mathmethods-mcp.

Related MCP server: Math MCP Server

Tools

Root finding

Tool

What it does

root_bisection

Bisection on [a, b] (sign change or endpoint root)

root_newton_raphson

Newton–Raphson with numeric derivative

root_punto_fijo

Fixed-point iteration x = g(x)

root_aitken

Aitken Δ² acceleration of fixed point

root_comparar

All four methods compared on the same problem

Numerical integration

Tool

What it does

integral_rectangulo

Composite midpoint rule

integral_trapecio

Composite trapezoidal rule

integral_simpson13

Composite Simpson 1/3 (n even)

integral_simpson38

Composite Simpson 3/8 (n multiple of 3)

integral_comparar

All four rules compared (n multiple of 6)

Differentiation

Tool

What it does

finite_differences

Forward/backward/central 1st & 2nd derivatives

ODE and interpolation

Tool

What it does

ode_rk4

Runge–Kutta 4 (4th order)

ode_heun

Heun predictor–corrector (2nd order)

ode_euler

Explicit Euler (1st order)

interpolation_lagrange

Lagrange interpolating polynomial

Monte Carlo

Tool

What it does

mc_hit_or_miss_1d

Hit-or-miss estimator (correct for sign-changing f)

mc_valor_promedio_1d

Mean-value estimate of ∫ₐᵇ f(x) dx

mc_valor_promedio_2d

Mean-value estimate of a double integral

mc_valor_promedio_3d

Mean-value estimate of a triple integral

mc_estadistico_1d

M×N replicated experiment with statistical analysis

mc_convergencia_1d

Running average showing the estimate converging

Dynamic systems

Tool

What it does

dynamic_1d_solve

Equilibria, stability, phase portrait and time series

dynamic_1d_equilibria

Find and classify the equilibria of x' = f(x)

dynamic_1d_bifurcation

Equilibria vs parameter (bifurcation diagram)

dynamic_2d_linear_solve

Linear X' = A·X + B: classification, eigenvalues, analytic solution

dynamic_2d_nonlinear_solve

Nonlinear x' = f(x,y): equilibria, Jacobian, nullclines

dynamic_2d_conservative_solve

Divergence-free check, Hamiltonian/energy, closed orbits

dynamic_2d_lanchester_solve

Lanchester combat model with analytic time-to-annihilation

dynamic_2d_nonhomogeneous_solve

Non-homogeneous X' = A·X + B(t) with time-varying forcing

Math expressions use Python/SymPy syntax: x**2, sin(x), exp(x), sqrt(x), log(x). Common shorthand is accepted too: e^x, sen(x), ln(x) and the caret ^ for powers. The Greek combat parameters of Lanchester use the Unicode symbols α β γ ε μ δ.

Plots (optional)

Every tool accepts a plot=False | True flag. With plot=True the response contains the usual JSON plus a rendered PNG (an MCP image content block): phase portraits, solution curves, bifurcation diagrams, Monte Carlo convergence, and so on.

"Solve y' = y, y(0)=1 on [0,1] with RK4 and show me the plot."

Plotting needs the optional viz extra (Matplotlib), which is not part of the default install so the stdio server startup stays light:

pip install "mathmethods-mcp[viz]"    # pip
uvx --from "mathmethods-mcp[viz]" mathmethods-mcp   # uv
uv sync --extra viz                   # from a checkout

If plot=True is used without the extra, the tool returns a clear error telling you how to install it. Clients that do not render images still receive the JSON result alongside the image, so nothing is lost.

Project layout

mathmethods-mcp/
├── server.py                 # FastMCP app + all tools
├── mathmethods/
│   ├── compiler.py           # hardened expression validation (whitelist, caps)
│   ├── plots.py              # optional PNG rendering (plot=True), lazy matplotlib
│   ├── server.py             # FastMCP app and tool definitions
│   └── core/                 # vendored math core (from modeladoYsimulacion-web)
│       ├── root_finding.py   ├── integration.py
│       ├── ode.py            ├── interpolation.py
│       ├── differentiation.py├── monte_carlo.py
│       ├── dynamic_1d.py     ├── dynamic_2d_linear.py
│       ├── dynamic_2d_non_homogeneous.py ├── dynamic_2d_nonlinear.py
│       ├── dynamic_2d_conservative.py ├── dynamic_2d_lanchester.py
│       └── utils.py
├── tests/                    # test_tools.py + test_dynamic_tools.py + test_plots.py
├── mcp.example.json          # server registration template (copy to .vscode/mcp.json)
├── requirements.txt
└── pyproject.toml

Install

cd mathmethods-mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

After creating the venv, verify it is isolated (venv/bin/python -c "import sys; print(sys.prefix)" should print the venv path, not /usr). If your system Python produces a broken venv, try python3 -m venv --copies venv.

Run

Local (STDIO) — default transport, used by VS Code / Claude Desktop:

uv run python server.py

Remote (Streamable HTTP) — the server prints a URL such as http://127.0.0.1:8000/mcp:

MCP_TRANSPORT=streamable-http uv run python server.py

The transport can also be chosen with the MCP_TRANSPORT environment variable (stdio | streamable-http | sse), and the HTTP host/port with MCP_HTTP_HOST / MCP_HTTP_PORT (defaults 127.0.0.1:8000).

Connect from a client

Every client registers the same command, uvx mathmethods-mcp (no paths, no venv). If the server is not published yet or you work from a checkout, use uv run --frozen --project <PROJ> python <PROJ>/server.py instead.

Remote (Streamable HTTP) — optional; start it once in a terminal, then point the client at http://127.0.0.1:8000/mcp:

MCP_TRANSPORT=streamable-http uvx mathmethods-mcp

Create .vscode/mcp.json (git-ignored) — or copy mcp.example.json:

{
  "servers": {
    "mathmethods-stdio": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@agmonetti/mathmethods-mcp"]
    },
    "mathmethods-http": {
      "type": "http",
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}

Open the file and press Start next to the server you want; reload the window if it doesn't appear (Developer: Reload Window).

Add the entry under context_servers (note: not mcp_servers) in ~/.config/zed/settings.json or the project-level .zed/settings.json:

{
  "context_servers": {
    "mathmethods": {
      "command": "npx",
      "args": ["-y", "@agmonetti/mathmethods-mcp"]
    }
  }
}

You can also manage them via Settings → AI → MCP Servers.

Both opencode and the OpenChamber desktop app share the same configuration format. Add the entry under mcp in opencode.json (project root) or in the global ~/.config/opencode/opencode.jsonc:

{
  "mcp": {
    "mathmethods": {
      "type": "local",
      "command": ["npx", "-y", "@agmonetti/mathmethods-mcp"],
      "enabled": true
    }
  }
}

Or register it with the CLI (equivalent):

opencode mcp add mathmethods -- npx -y @agmonetti/mathmethods-mcp

For a remote server running on http://127.0.0.1:8000/mcp:

{
  "mcp": {
    "mathmethods": {
      "type": "remote",
      "url": "http://127.0.0.1:8000/mcp",
      "enabled": true
    }
  }
}

Verify with opencode mcp list.

Add the entry under mcpServers in the Antigravity config file, typically ~/.gemini/antigravity/mcp_config.json:

{
  "mcpServers": {
    "mathmethods": {
      "command": "npx",
      "args": ["-y", "@agmonetti/mathmethods-mcp"]
    }
  }
}

If the file path differs on your install, use the in-IDE Settings → Integrations → MCP Servers panel instead, which writes the same format.

The GitHub Copilot CLI (copilot) lets you add a server interactively:

copilot

then inside the session:

/mcp add
  Server name:  mathmethods
  Server type:  1 (Local/STDIO)
  Command:      npx -y @agmonetti/mathmethods-mcp

Press Ctrl+S to save. The settings are stored in ~/.copilot/mcp-config.json (top-level mcpServers); check the connection with /mcp show.

Both use the mcpServers format. In Claude Desktop, edit claude_desktop_config.json; in Claude Code:

claude mcp add mathmethods npx -y @agmonetti/mathmethods-mcp
{
  "mcpServers": {
    "mathmethods": {
      "command": "npx",
      "args": ["-y", "@agmonetti/mathmethods-mcp"]
    }
  }
}

Verify with the MCP Inspector

npx @modelcontextprotocol/inspector node server.py   # or
npx @modelcontextprotocol/inspector --transport http http://127.0.0.1:8000/mcp

Example usage

Ask your agent things like:

  • "Find the root of x^3 - 3x + 1 in [0, 1]."

  • "Integrate sin(x)/x from 0 to 1 using Simpson with n=10."

  • "Solve y' = y with y(0)=1 from x=0 to x=1 with step 0.1 (RK4)."

  • "Build the Lagrange polynomial through (0,1), (1,3), (2,7) and evaluate at 1.5."

  • "Estimate the integral of sin(x) over [0, 2pi] with Monte Carlo hit-or-miss."

  • "Find the equilibria of the logistic model x' = mu*x*(1 - x/K) with K=2, mu=1."

  • "Classify the 2D system x' = 2x - y, y' = x + 2y and sketch its trajectories."

  • "Simulate a Lanchester battle x'=-αy, y'=-βx with α=1, β=2, 100 vs 80 soldiers."

Security

The server is read-only: the tools only compute numbers, they never touch the filesystem, the network or any destructive operation. Still, the inputs are driven by an LLM, so defense in depth is applied:

  • Expression hardening (mathmethods/compiler.py + mathmethods/core/utils.py): length cap, symbol whitelist, function whitelist, and a lexical gate that rejects attribute access (./__) and unknown tokens BEFORE SymPy parses. SymPy's sympify/parse_expr can execute arbitrary Python (verified RCE), so every parse site — in this project and in the upstream backend — routes through the gate.

  • Input caps: iteration/subinterval/step/point counts are bounded to avoid pathological CPU/RAM usage.

  • Exact tool descriptions: the LLM picks tools by their metadata, so descriptions stay accurate (guards against tool-poisoning attacks).

  • Prompt injection: even if the model is tricked, the worst it can do is ask for another computation. There are no privileged side channels.

Known limitations

  • The vendored core is inherited from the upstream project and kept as-is (Spanish identifiers, etc.).

  • dynamic_2d_nonhomogeneous_solve with time-varying forcing on a non-diagonal matrix A shows the homogeneous solution only (the particular term is computed for diagonal systems); the numeric RK4 trajectory is always correct.

  • The 1D bifurcation table is downsampled to 300 rows for readability.

Available Tools

29 tools
dynamic_1d_bifurcationA

Bifurcation analysis of x' = f(x; bif_param): equilibria vs parameter sweep.

Args: func_str: f(x) used when model is 'custom'. model: 'custom' | 'malthus' | 'verhulst' | 'newton'. params: values of the other model parameters, e.g. {'K': 2.0}. bif_param: name of the bifurcation parameter swept between bif_min and bif_max. bif_min, bif_max, bif_steps: parameter sweep range/resolution. x_min, x_max, n_phase: state window for finding equilibria. phase_params: optional explicit parameter values for phase slices. control_enabled: add a constant control term -h (verhulst/custom only). plot: When True, also return a PNG of the bifurcation diagram.

Returns: Dict with the equilibria-vs-parameter table, exact symbolic analysis and phase slices. With plot=True a list [dict, Image] is returned.

NameRequiredDescriptionDefault
plotNo
modelNocustom
x_maxNo
x_minNo
paramsNo
bif_maxNo
bif_minNo
n_phaseNo
func_strNox
bif_paramNor
bif_stepsNo
phase_paramsNo
control_enabledNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose a valuable behavioral trait: plot=True changes the return shape to [dict, Image]. However it says nothing about runtime cost, numeric failure modes, or permission requirements for this heavy sweep tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a compact docstring: a one-line summary followed by tightly grouped Args and a Returns block. Size is proportionate to a 13-parameter tool with no wasted prose, though the Args grouping (bif_min, bif_max, bif_steps) is slightly terse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 13 parameters, no annotations and no output schema, the description supplies both the argument semantics and the return contract (table + symbolic analysis + phase slices, or [dict, Image]). Missing only operational caveats, which for a complex analysis tool would be a nice-to-have.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it largely does: nearly all 13 parameters are annotated with meaning and constraints (model enum values, the role of bif_param, sweep range/resolution, control term scope). Only phase_params ('explicit parameter values for phase slices') remains somewhat vague.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line gives a precise verb (bifurcation analysis), the exact system class (x' = f(x; bif_param)), and the deliverable (equilibria vs parameter sweep). This clearly separates it from dynamic_1d_solve and dynamic_1d_equilibria, which lack the sweep dimension.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the purpose rather than stated. The only conditional guidance is embedded notes such as 'func_str used when model is custom' and 'control_enabled ... verhulst/custom only', but there is no explicit when-to-use-this-vs-alternatives framing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dynamic_1d_equilibriaB

Find the equilibria of x' = f(x) and classify their stability.

With plot=True a PNG of f(x) with the equilibria and the time series is returned as [dict, Image] alongside the numeric result.

NameRequiredDescriptionDefault
plotNo
modelNocustom
x_maxNo
x_minNo
paramsNo
n_phaseNo
func_strNox
control_enabledNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the plot=True return shape as [dict, Image] alongside the numeric result, but omits other behavioral details such as the output dict structure, stability classification method, and any parameter 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose and then the plot-specific return behavior. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters with zero schema descriptions, no annotations, and no output schema, the description is not complete enough. It partially documents return behavior but leaves parameter semantics and usage context absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are 8 parameters. The description explains only plot's effect and gives no meaning for model, func_str, params, x_min, x_max, n_phase, or control_enabled, leaving most parameters undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: find equilibria of x' = f(x) and classify their stability. Clear what the tool does, but it does not differentiate itself from siblings like dynamic_1d_solve, dynamic_1d_bifurcation, or root_bisection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use, when-not-to-use, or alternative guidance. The description implies equilibrium analysis but gives no conditions for choosing this tool over other dynamic or root-finding siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dynamic_1d_solveA

Analyze the 1D autonomous system x' = f(x): equilibria, stability, phase portrait and time series.

Args: func_str: f(x) used when model is 'custom'. model: 'custom' | 'malthus' (rx) | 'verhulst' (mux*(1-x/K)) | 'newton' (-k*(x-Ta)). params: parameter values, e.g. {'r': 1.5} or {'mu': 1.0, 'K': 2.0}. x_min, x_max: state window. t_max: final time of the time series. n_phase: resolution of the phase analysis. n_time: number of time steps. initial_conditions: starting states, e.g. [0.1, 1.0]. control_enabled: add a constant control term -h (verhulst/custom only). plot: When True, also return a PNG of f(x) and the time series.

Returns: Dict with equilibria, their stability, the phase portrait data and time solutions. With plot=True a list [dict, Image] is returned.

NameRequiredDescriptionDefault
plotNo
modelNocustom
t_maxNo
x_maxNo
x_minNo
n_timeNo
paramsNo
n_phaseNo
func_strNox
control_enabledNo
initial_conditionsNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose useful traits beyond the schema: the built-in model formulas, that control adds a -h term and only applies to verhulst/custom, and that plot=True changes the return to [dict, Image]. However it says nothing about numerical method, accuracy/limits, error behavior, or what 'phase portrait data' actually contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Docstring structure with a front-loaded one-line summary followed by Args and Returns is easy to parse, and given 0% schema coverage most lines earn their place. It is slightly verbose in the model enumeration, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter compute tool with no annotations and no output schema, the definition covers parameters and the return shape (including the plot=True variant), which is what an agent most needs. It is thin on failure modes and the exact structure of the returned dict, but the core invocation contract is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 11 parameters, so the description must compensate entirely, and it does: every parameter is given meaning, with formulas for each model value and concrete examples for params ({'r': 1.5}) and initial_conditions ([0.1, 1.0]). This is substantially more useful than the bare titles ('T Max', 'N Phase') in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line gives a specific verb and resource: 'Analyze the 1D autonomous system x' = f(x)' and enumerates the outputs (equilibria, stability, phase portrait, time series). This clearly separates it in spirit from narrower siblings like dynamic_1d_equilibria or dynamic_1d_bifurcation, but it never names or contrasts with those alternatives, so it stops short of explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no statement of when to prefer this over dynamic_1d_equilibria or dynamic_1d_bifurcation, and no prerequisites or exclusions. The parameter notes imply capabilities (e.g. control_enabled requires verhulst/custom) but the description never tells the agent when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dynamic_2d_conservative_solveB

Analyze a 2D system checking conservativeness (divergence-free), Hamiltonian/energy and closed orbits.

Args: eq_x, eq_y: Math expressions for x' and y'. mu: parameter value. x0..y_max, cantidad_trayectorias: integration and portrait settings. plot: When True, also return a PNG phase portrait.

Returns: Dict with the divergence check, the Hamiltonian reconstruction, the equilibrium classification and the trajectories. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
hNo
muNo
t0No
x0No
y0No
eq_xNoy
eq_yNox - x**3
plotNo
t_finNo
x_maxNo
x_minNo
y_maxNo
y_minNo
cantidad_trayectoriasNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It does disclose the important behavioral quirk that plot=True changes the return type from a dict to [dict, Image], which is genuinely useful. However it says nothing about the numeric integration approach, failure modes for non-conservative inputs, or cost, so it is only partially transparent for a 14-parameter tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the Args/Returns block is a clean, scannable structure. It is appropriately sized for a 14-parameter tool with no wasted filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema the description correctly explains the return payload (divergence check, Hamiltonian, equilibrium classification, trajectories) and the plot=True variant. But given 14 parameters at 0% schema coverage, several inputs remain unexplained, leaving the definition only partially complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate for all 14 parameters. It only meaningfully explains eq_x, eq_y, mu and plot; x0, y0 and the portrait bounds are lumped into a vague 'integration and portrait settings' phrase, and h, t0 and t_fin are never mentioned at all. This leaves several parameters undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Analyze a 2D system checking conservativeness (divergence-free), Hamiltonian/energy and closed orbits.' This clearly separates it from the linear/nonlinear/nonhomogeneous 2D solvers among its siblings by naming the conservative-systems focus, though it never names a specific alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the framing ('checking conservativeness'), so an agent can infer this tool is for divergence-free/Hamiltonian systems, but there is no explicit when-to-use vs when-not, and no mention of the sibling solvers it competes with.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dynamic_2d_lanchester_solveB

Simulate a Lanchester combat model x' = f(x,y), y' = g(x,y) with analytic time-to-annihilation.

Args: eq_x, eq_y: Math expressions (classic default is x'=-αy, y'=-βx). alpha, beta, gamma, epsilon, mu, delta: Greek parameter values. x0, y0: initial force sizes. t0, t_fin, h: simulation grid. plot: When True, also return a PNG phase portrait of the battle.

Returns: Dict with the analytic winner/survivors, state equation and the numerical trajectories. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
hNo
muNo
t0No
x0No
y0No
betaNo
eq_xNo-α * y
eq_yNo-β * x
plotNo
alphaNo
deltaNo
gammaNo
t_finNo
epsilonNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose a key behavioral trait: the return type switches to [dict, Image] when plot=True, and results include analytic winner/survivors plus trajectories. It does not state the integration scheme, accuracy/step-size behavior, or failure modes (e.g. non-terminating battles), so the disclosure is partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in one sentence, then Args and Returns are cleanly sectioned with no padding. The restatement of the schema defaults ('classic default is x'=-αy, y'=-βx') is mildly redundant but harmless.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter tool with no annotations and no output schema, the description does cover the return structure and most parameter groupings. It falls short on the six free coefficients whose role in the equations is undefined and on how this model class relates to its 2D solver siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it names all 14 arguments and gives semantics for x0/y0 (initial force sizes), t0/t_fin/h (simulation grid) and plot. The six Greek parameters are lumped as 'Greek parameter values' without saying which term each multiplies (gamma, epsilon, mu, delta roles are never defined), leaving a real gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb (simulate) plus the exact model class and ODE form, and 'Lanchester' plus 'analytic time-to-annihilation' distinguishes it from generic siblings like dynamic_2d_linear_solve. However, it never explicitly contrasts itself with the other four 2D solvers, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this tool over dynamic_2d_nonlinear_solve, dynamic_2d_conservative_solve or dynamic_2d_linear_solve, and no preconditions or exclusions. The 'classic default' note is a parameter hint, not usage guidance, so the agent gets no routing help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dynamic_2d_linear_solveA

Solve and classify the linear 2D system X' = A·X + B with constant matrix A.

Args: a, b, c, d: entries of A = [[a, b], [c, d]]. e, f: constant forcing vector B = [e, f]. x0, y0, t0, t_fin, h: initial condition and integration grid. x_min..y_max: window for the phase portrait. cantidad_trayectorias: number of sample trajectories. plot: When True, also return a PNG phase portrait.

Returns: Dict with the classification, eigenvalues, nullclines, analytic solution and trajectories. With plot=True a list [dict, Image] is returned.

NameRequiredDescriptionDefault
aNo
bNo
cNo
dNo
eNo
fNo
hNo
t0No
x0No
y0No
plotNo
t_finNo
x_maxNo
x_minNo
y_maxNo
y_minNo
cantidad_trayectoriasNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does so reasonably well: it discloses the return payload (classification, eigenvalues, nullclines, analytic solution, trajectories) and the important behavior change under plot=True (returns [dict, Image] instead of a dict). It does not mention numerical caveats (step size/stiffness sensitivity of h) or that 'analytic solution' coexists with numerical integration, which would be valuable for a solver.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first line, followed by a structured Args/Returns block with no filler. The only minor inefficiency is the grouped argument lines (e.g. 'x0, y0, t0, t_fin, h'), which compress several distinct semantics into one clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter tool with no output schema and no annotations, the description covers both inputs and the shape of the return value, including the plot=True variant. What is still missing is sibling selection guidance and any note on integration accuracy/limits, but the core is complete enough to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 17 parameters, so the description must compensate and largely does: a,b,c,d are mapped to matrix entries, e,f to the forcing vector, x0/y0/t0/t_fin/h to the initial condition and integration grid, x_min..y_max to the phase-portrait window, cantidad_trayectorias to trajectory sampling, and plot to the PNG output. It is grouped rather than per-parameter and leaves the roles of t0 and t_fin versus h slightly implicit, so it stops short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (solve and classify) and a precise resource scope (linear 2D system X' = A·X + B with constant matrix A), which is enough to distinguish it from the 1D solvers. However, it never differentiates itself from the close 2D siblings (dynamic_2d_nonhomogeneous_solve, dynamic_2d_conservative_solve, dynamic_2d_nonlinear_solve), which is a real ambiguity given the dense sibling cluster.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative-tool guidance anywhere. With six 2D dynamic siblings, the agent is left to infer selection purely from the math formula in the opening line. Only implied usage is present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dynamic_2d_nonhomogeneous_solveA

Solve the non-homogeneous 2D system X' = A·X + B(t) with constant or time-varying forcing.

Args: a, b, c, d: entries of A = [[a, b], [c, d]]. e, f: forcing components B(t); a number or an expression in t (e.g. "sin(2*t)"). x0, y0, t0, t_fin, h: integration settings. x_min..y_max, cantidad_trayectorias: portrait settings. plot: When True, also return a PNG phase portrait.

Returns: Dict with the classification, equilibrium/particular solution, analytic solution and trajectories. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
aNo
bNo
cNo
dNo
eNo
fNo
hNo
t0No
x0No
y0No
plotNo
t_finNo
x_maxNo
x_minNo
y_maxNo
y_minNo
cantidad_trayectoriasNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the return shape (a dict with classification, particular solution, analytic solution, trajectories, and a [dict, Image] variant when plot=True), which is valuable. It says nothing about error conditions, when an analytic solution is unavailable, or performance/step-size constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the governing equation, then cleanly organized into Args and Returns sections with grouped parameter lines. Little waste, though the grouping shorthand (e.g., 'x_min..y_max') is compact to the point of requiring schema lookup for exact names.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter tool with no output schema and no annotations, the description does substantial work: it covers parameter meaning and return values including the plot variant. Remaining gaps are what 'classification' contains and solver/step-size caveats, but an agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: it maps all 17 params into meaningful groups (a–d as matrix entries, e/f as forcing components with a format example like "sin(2*t)", x0/y0/t0/t_fin/h as integration settings, x_min..y_max and cantidad_trayectorias as portrait settings). The grouping is terse and omits defaults or validity ranges, so it is not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Solve the non-homogeneous 2D system X' = A·X + B(t)') and states the scope ('constant or time-varying forcing'), which clearly identifies the mathematical problem. However, it never explicitly names or contrasts with the close siblings (dynamic_2d_linear_solve, dynamic_2d_nonlinear_solve, dynamic_2d_conservative_solve), leaving sibling differentiation to inference from the equation form.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the equation form makes it clear this tool is for non-homogeneous forced 2D systems, but there is no explicit when-to-use/when-not guidance and no mention of the alternative 2D solvers an agent should pick instead. Adequate but with a clear routing gap for a family of five similar dynamic_2d tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dynamic_2d_nonlinear_solveB

Solve and analyze the nonlinear 2D system x' = f(x,y), y' = g(x,y).

Args: eq_x, eq_y: Math expressions for f and g (variables x, y, mu and extra params). params: extra parameter values (e.g. {'alpha': 0.5}). mu: bifurcation parameter value. x0..y_max, cantidad_trayectorias: integration and portrait settings. plot: When True, also return a PNG phase portrait.

Returns: Dict with equilibria, Jacobian-based classification, nullclines and trajectories. With plot=True a list [dict, Image] is returned.

NameRequiredDescriptionDefault
hNo
muNo
t0No
x0No
y0No
eq_xNoy - x
eq_yNox**2 - 1
plotNo
t_finNo
x_maxNo
x_minNo
y_maxNo
y_minNo
paramsNo
cantidad_trayectoriasNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose the return structure (equilibria, Jacobian classification, nullclines, trajectories) and the plot=True branch returning [dict, Image], which is genuinely useful. However, it omits any note on numerical caveats, integration settings behavior, or what 'analyze' actually computes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, followed by compact Args and Returns blocks. Most lines carry information, though the grouped parameter line trades precision for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema the description correctly supplies the return format, and with no annotations it must stand alone. For a 15-parameter solver it is only partially complete: three integration parameters (h, t0, t_fin) are undocumented and the nonlinear-vs-linear decision boundary is never stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are 15 parameters, so the description must compensate. It explains eq_x/eq_y (variable set: x, y, mu, extra params), params with an example, mu, the x0..y_max/cantidad_trayectorias group, and plot — but leaves h, t0, and t_fin entirely undefined, and the 'integration and portrait settings' phrasing is too vague to recover their meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Solve and analyze the nonlinear 2D system x' = f(x,y), y' = g(x,y)') with an explicit mathematical form. The 'nonlinear' qualifier distinguishes it from the sibling family (dynamic_2d_linear_solve, dynamic_2d_conservative_solve, etc.), though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the tool solves nonlinear 2D systems, so an agent can infer when it applies. There is no explicit when/when-not guidance or routing to alternatives such as dynamic_2d_linear_solve or dynamic_2d_conservative_solve, which matters given the dense sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

finite_differencesA

Approximate the first and second derivatives of f(x) at x with finite differences.

Computes forward, backward and central differences for the first derivative, plus the central second derivative, and compares each against the exact derivative from SymPy.

Args: func_str: Math expression in x. x_val: Point where the derivative is evaluated. h: Step size (small, positive). precision: Rounding digits. plot: When True, also return a PNG of f(x) and its exact tangent.

Returns: Dict with the exact and numerical derivatives and their errors. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
hNo
plotNo
x_valYes
func_strYes
precisionNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it does disclose the return shape and the plot side effect (list [dict, Image] instead of a dict) that an agent could not otherwise infer since there is no output schema. It also flags the h constraint (small, positive). What it omits is failure behavior — invalid expression strings, h collapsing to zero, or non-differentiable points — but the return-format disclosure is genuinely valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, followed by an efficient method summary and a conventional Args/Returns block. The method-enumeration sentence is slightly redundant with the opening sentence, but overall the structure is clean and every line contributes information the schema does not carry.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter computation tool with no annotations, no output schema, and 0% schema coverage, the description supplies both parameter meanings and the return contract, including the plot variant. It is nearly complete; only edge-case behavior (invalid input, h too small, plotting failures) is left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: all five parameters are explained in the Args block. h is characterized beyond its type ('step size, small, positive'), which is the most semantically important parameter here, and precision is described as rounding digits. It falls short of 5 because the expected syntax of func_str (e.g. SymPy-style 'x**2') and the plotting dependency are not stated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb (approximate) and resource (first and second derivatives of f(x) at x) with a named method (finite differences), then enumerates the concrete variants computed: forward, backward, central, and central second derivative. This clearly separates it from siblings like root_newton_raphson, integral_simpson13, and the ode_* family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use case (numerical differentiation compared against the exact SymPy derivative, i.e. a teaching/error-analysis tool), which gives the agent context about when it is appropriate. However, there is no explicit when-to-use guidance, no statement of when a sibling should be preferred, and no prerequisites (e.g. the function must be differentiable, h must be positive and small).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

integral_compararA

Compare rectangle, trapezoid, Simpson 1/3 and Simpson 3/8 on the same integral.

Args: func_str: Math expression in x. a, b: Integration limits (b > a). n: Number of subintervals. Must be a multiple of 6 (2 for Simpson 1/3 and 3 for Simpson 3/8), so all four rules can run on the same grid. epsilon, precision: Error-bound and rounding settings. plot: When True, also return a PNG bar chart comparing the four rules.

Returns: Dict with per-method results and success flags. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
aYes
bYes
nYes
plotNo
epsilonNo
func_strYes
precisionNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does disclose the return structure: a dict with per-method results and success flags, or [dict, Image] when plot=True. It also states the n-multiple-of-6 constraint, though it does not describe error behavior beyond the mentioned success flags.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core comparison purpose, then uses a compact Args/Returns structure with no wasted sentences. Each listed parameter adds necessary constraint or format information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description appropriately explains the return dict and plot variant. It covers required inputs and constraints well enough to invoke correctly; remaining gaps are minor, such as exact failure modes or exception behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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 and it does: func_str is a math expression in x, a and b are integration limits with b > a, n is subinterval count with a multiple-of-6 constraint, epsilon/precision are error-bound and rounding settings, and plot triggers a PNG bar chart. All seven parameters are addressed with meaning beyond their titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (compare) and resource (rectangle, trapezoid, Simpson 1/3, Simpson 3/8 on the same integral). It clearly distinguishes the tool from siblings such as integral_simpson13 or integral_trapecio, which compute one rule at a time.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear this tool is for comparing all four integration rules at once and gives the key usage constraint that n must be a multiple of 6 so all rules share a grid. It does not explicitly name when to prefer this over individual sibling tools, but the comparison context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

integral_rectanguloA

Approximate ∫ₐᵇ f(x) dx with the composite midpoint (rectangle) rule.

Args: func_str: Math expression in x. a, b: Integration limits (b > a). n: Number of subintervals. epsilon: Optional point in [a, b] for the truncation error bound. precision: Rounding digits. plot: When True, also return a PNG plot of f(x) over [a, b].

Returns: Dict with the integral, error estimates and table. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
aYes
bYes
nYes
plotNo
epsilonNo
func_strYes
precisionNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose the return shape (dict with integral, error estimates and table, or a [dict, Image] list when plot=True). That is meaningful behavioral context, but it omits error/exception behavior, precision-dependent output details, and cost characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in one sentence, followed by tight Args and Returns sections with zero filler. The size is well matched to a seven-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, the description supplies both the parameter meanings and the conditional return format, which is largely sufficient. The missing piece is integration-specific behavioral detail such as accuracy caveats or failure modes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and its Args block documents all seven parameters including the non-obvious ones (epsilon as an optional truncation-error point in [a,b], precision as rounding digits, plot toggling a PNG). epsilon's semantics remain slightly obscure, keeping it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (approximate the integral) and the exact method (composite midpoint/rectangle rule), which naturally distinguishes it from the Simpson and trapezoid siblings. It never names an alternative explicitly, so sibling differentiation is left to the reader's knowledge of the method names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose the rectangle rule over integral_trapecio, integral_simpson13, integral_simpson38, or integral_comparar, nor any note on accuracy tradeoffs or prerequisites. The only usage-flavored text is a per-parameter note on epsilon, which concerns the argument, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

integral_simpson13A

Approximate the definite integral of f(x) on [a, b] with composite Simpson 1/3.

Args: func_str: Math expression in x, e.g. "sin(x)/x". a: Lower integration limit. b: Upper integration limit (must be > a). n: Number of subintervals (must be even). Error is O(h^4). epsilon: Point in [a, b] used to report the truncation error bound. precision: Rounding digits. plot: When True, also return a PNG plot of f(x) over [a, b].

Returns: Dict with the approximated integral, error estimates and table. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
aYes
bYes
nYes
plotNo
epsilonNo
func_strYes
precisionNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations the description carries the full burden, and it does disclose the return structure ('Dict with the approximated integral, error estimates and table') and the alternate return shape when plot=True ('[dict, Image]'). It also states the error order O(h^4). It stops short of covering cost/determinism, but the output-shape disclosure is genuinely valuable since no 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the one-sentence purpose, then organizes the rest as Args/Returns with no filler. Each line carries an obligation (constraints, return shape), though the listed Args echo the schema field names and are somewhat longer than strictly needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 params, 0% schema description coverage, no annotations, and no output schema, the description supplies the parameter meanings and return shape an agent needs to call it correctly. The remaining gap is sibling/selection context against the other quadrature methods, which is a usage-guideline concern rather than incompleteness of the call contract.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate entirely, and it documents all seven parameters: func_str format, a/b limits, the even-n constraint and error order, epsilon's role in the truncation bound, precision as rounding digits, and the plot flag. This fully closes the gap left by the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource and names the exact method: 'Approximate the definite integral of f(x) on [a, b] with composite Simpson 1/3.' This implicitly distinguishes it from siblings like integral_trapecio and integral_simpson38 through the named rule, but it never explicitly routes the agent to those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no mention of the sibling integration tools (integral_rectangulo, integral_trapecio, integral_simpson38, integral_comparar). The only usage-relevant cues are embedded constraints (n must be even, b > a), which are closer to parameter semantics than routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

integral_simpson38A

Approximate ∫ₐᵇ f(x) dx with the composite Simpson 3/8 rule.

Args: func_str: Math expression in x. a, b: Integration limits (b > a). n: Number of subintervals (must be a multiple of 3). epsilon: Optional point in [a, b] for the truncation error bound. precision: Rounding digits. plot: When True, also return a PNG plot of f(x) over [a, b].

Returns: Dict with the integral, error estimates and table. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
aYes
bYes
nYes
plotNo
epsilonNo
func_strYes
precisionNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does a solid job: it discloses the return type (dict with integral, error estimates and table) and the conditional return shape (list [dict, Image] when plot=True), plus input constraints (b > a, n multiple of 3). It doesn't cover error/failure behavior, but for a pure read-only math function that is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is front-loaded with a clear one-line purpose, followed by structured Args and Returns sections. Slightly docstring-formatted rather than prose, but every line carries information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description supplies both the parameter semantics and the return structure the agent needs. It is nearly complete for a 7-parameter numeric tool; only failure/edge-case behavior (e.g., invalid expressions) is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and all 7 parameters are undocumented in the schema, so the description must compensate. It explains every parameter meaningfully: func_str as an expression in x, a/b as limits with b > a, n as a multiple of 3, epsilon as an optional error-bound point, precision as rounding digits, and plot's effect. Only default values and accepted expression syntax are left implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource ('Approximate ∫ₐᵇ f(x) dx with the composite Simpson 3/8 rule'), which tells the agent exactly which method is applied. The named rule implicitly distinguishes it from the sibling integral_simpson13 and integral_trapecio, though it never explicitly contrasts them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives the mathematical operation but no when-to-use guidance relative to the many sibling integrators (simpson13, trapecio, rectangulo, comparar). The only constraint offered is that n must be a multiple of 3, which is a correctness rule, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

integral_trapecioA

Approximate ∫ₐᵇ f(x) dx with the composite trapezoidal rule.

Args: func_str: Math expression in x. a, b: Integration limits (b > a). n: Number of subintervals. epsilon: Optional point in [a, b] for the truncation error bound. precision: Rounding digits. plot: When True, also return a PNG plot of f(x) over [a, b].

Returns: Dict with the integral, error estimates and table. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
aYes
bYes
nYes
plotNo
epsilonNo
func_strYes
precisionNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden, and it does disclose meaningful behavior: the return type changes to a list [dict, Image] when plot=True, error estimates are returned, and epsilon enables a truncation-error bound. It does not state error/exception behavior or the exact dict keys, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line summary followed by Args and Returns sections, with no filler. Every line earns its place by documenting a distinct parameter or the return contract.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description supplies the return structure (integral, error estimates, table) and the conditional plot return, which is enough to call the tool correctly. The exact key names and table schema remain unspecified, so it is not fully exhaustive, but it is close to complete for a deterministic computation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and it does: every one of the 7 parameters is explained, including the b>a constraint, n as subinterval count, epsilon as an optional point in [a,b] for the error bound, precision as rounding digits, and plot's effect on the result. This is exactly the added meaning the bare schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource: 'Approximate ∫ₐᵇ f(x) dx with the composite trapezoidal rule.' An agent immediately knows it is a numerical quadrature tool. However, it never distinguishes itself from siblings like integral_simpson13, integral_simpson38, or integral_rectangulo, which are near-identical integration tools differing only in method.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the mathematical framing ('composite trapezoidal rule'); there is no explicit statement of when to prefer trapezoid over Simpson or rectangle rules, and no mention of alternatives among the many integral_* siblings. The required inputs (func_str, a<b, n) hint at intended use but no selection guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

interpolation_lagrangeA

Build the Lagrange interpolating polynomial through a set of points.

Provide either the point values puntos_y or the generating function func_str evaluated at puntos_x.

Args: puntos_x: Distinct abscissas of the interpolation points. x_eval: Optional x where the polynomial is evaluated. func_str: Optional generating function f(x) for the y values. puntos_y: Optional y values matching puntos_x one-to-one. precision: Rounding digits. plot: When True, also return a PNG plot of the polynomial and points.

Returns: Dict with the polynomial, its degree, the points table and error bounds when func_str is provided. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
plotNo
x_evalNo
func_strNo
puntos_xYes
puntos_yNo
precisionNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses key traits: the either/or input requirement, that ``puntos_x`` must be distinct, that precision controls rounding, that ``plot=True`` adds a PNG to the result, and that error bounds are returned when ``func_str`` is supplied. It still omits error handling when both y-value sources are provided, neither is provided, or ``func_str`` is invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in one sentence, followed by focused Args and Returns sections. The structure is efficient and every listed item carries useful information for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description must document both behavior and return shape, which it largely does by explaining the returned dict contents and the list-with-Image variant when plotting. Minor omissions remain around precedence when both ``puntos_y`` and ``func_str`` are supplied and around error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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, and it does: every parameter is explained with meaning beyond its type. It clarifies that ``puntos_x`` are distinct abscissas, ``x_eval`` is an optional evaluation point, ``func_str`` is a generating function f(x), ``puntos_y`` must match ``puntos_x`` one-to-one, ``precision`` is rounding digits, and ``plot`` produces a PNG.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Build the Lagrange interpolating polynomial through a set of points.' The method is unambiguous and clearly distinct from the root-finding, integration, ODE, and dynamic-system siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies an input mode ('Provide either the point values ``puntos_y`` or the generating function ``func_str`` evaluated at ``puntos_x``'), which is useful guidance. However, it does not state when this interpolation tool should be chosen over alternatives, nor any conditions under which it should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_convergencia_1dB

Show how the mean-value Monte Carlo estimate converges as samples accumulate.

Args: func_str: Math expression in x. a, b: Integration limits (b > a). N: Total number of samples. seed: Optional RNG seed. precision: Rounding digits. plot: When True, also return a PNG of the running average.

Returns: Dict with the cumulative running average over the samples. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
NNo
aYes
bYes
plotNo
seedNo
func_strYes
precisionNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the return shape clearly (a dict with the cumulative running average, or [dict, Image] when plot=True), which is genuinely useful. However, it says nothing about cost, sample-size tradeoffs, or failure modes for malformed expressions, leaving meaningful behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Uses an Args/Returns structure that is front-loaded with the purpose and wastes little. Each parameter line is brief and functional; a bit more economy could be achieved but nothing is gratuitous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a seven-parameter tool with no output schema and zero schema description coverage, the description supplies the return format and documents all parameters, so an agent can call it correctly. The main gap is routing guidance relative to its many siblings, which the description never addresses.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: every one of the seven parameters is explained (func_str as a math expression in x, a/b as integration limits with the b > a constraint, N as total samples, seed as optional RNG seed, precision as rounding digits, plot controlling the PNG). The b > a constraint is value the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it shows how the mean-value Monte Carlo estimate converges as samples accumulate. This clearly distinguishes a convergence-tracking tool from a plain integral estimator, though it never names or contrasts with the closely related siblings like mc_valor_promedio_1d or mc_estadistico_1d.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives despite a large family of Monte Carlo and integral siblings. The agent must infer that this is for studying convergence rather than for computing a single integral value.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_estadistico_1dA

Replicated Monte Carlo experiment (M repetitions of N samples) with statistical analysis.

Args: func_str: Math expression in x. a, b: Integration limits (b > a). N: Samples per replication. M: Number of replications. nivel_confianza: Confidence level in (0, 1). seed: Optional RNG seed. precision: Rounding digits. plot: When True, also return a PNG histogram of the estimates.

Returns: Dict with the distribution of estimates and confidence intervals. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
MNo
NNo
aYes
bYes
plotNo
seedNo
func_strYes
precisionNo
nivel_confianzaNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden, and it does disclose key traits: the return is a dict of estimates and confidence intervals, plot=True returns a list containing a dict and an image, and a/b require b > a. However, it does not explain error conditions, the exact statistical analysis performed, RNG behavior when seed is omitted, or computational cost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then uses clean Args and Returns sections. The parameter documentation is necessary for a nine-parameter tool with no schema descriptions, and there is no wasted filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nine-parameter tool with no annotations and no output schema, the definition is fairly complete: it describes all parameters and the return shape, including the plot variant. It still lacks sibling differentiation and deeper statistical or failure-mode context, which keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it documents all nine parameters with meaning beyond their names. It clarifies a/b as integration limits with b > a, N and M as sample and replication counts, nivel_confianza as a value in (0, 1), seed as optional RNG input, precision as rounding digits, and plot as triggering a PNG histogram return. The main gap is that func_str is only described as a math expression in x, without syntax examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific computational resource and method: a replicated Monte Carlo experiment with M replications of N samples and statistical analysis. It is clearly more than a tautology and the integration limits show it performs Monte Carlo integration, but it does not explicitly distinguish itself from sibling tools such as mc_convergencia_1d or mc_valor_promedio_1d.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is for repeated Monte Carlo sampling with confidence intervals, but it gives no explicit guidance on when to choose it over the many sibling Monte Carlo and numerical integration tools. There are no stated prerequisites, exclusions, or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_hit_or_miss_1dA

Estimate ∫ₐᵇ f(x) dx with the hit-or-miss Monte Carlo method.

Handles sign-changing integrands correctly (returns the signed integral).

Args: func_str: Math expression in x. a, b: Integration limits (b > a). N: Number of samples. seed: Optional RNG seed for reproducibility. precision: Rounding digits. nivel_confianza: Confidence level in (0, 1) for the interval. plot: When True, also return a PNG plot of the samples and f(x).

Returns: Dict with the estimate, interval, sample statistics and history. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
NNo
aYes
bYes
plotNo
seedNo
func_strYes
precisionNo
nivel_confianzaNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description carries the full burden, and it does disclose real behavioral traits: correct handling of sign-changing integrands, the signed return, and the fact that plot=True alters the return type to [dict, Image]. It does not mention Monte Carlo convergence behavior or cost relative to N, but the disclosed traits are substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the one-line formula-based purpose followed by clearly labeled Args and Returns sections, which is well organized for an 8-parameter tool. There is no filler prose; each line earns its place, though the structure is conventional docstring style rather than tightly optimized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with no output schema and no annotations, the description supplies the missing return-value documentation (dict with estimate, interval, sample statistics, history; list form when plotting) and covers all parameters plus the b > a constraint. The main remaining gap is the absence of guidance on sample size/convergence tradeoffs and method selection versus sibling integrators.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it largely does — every one of the 8 parameters is explained with added meaning beyond its name ('Math expression in x', 'b > a', 'Optional RNG seed for reproducibility', 'Rounding digits', 'Confidence level in (0,1)'). It notably clarifies the non-English nivel_confianza parameter and its valid range.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise verb and resource — estimating ∫ₐᵇ f(x) dx via the hit-or-miss Monte Carlo method — and the method name plus formula makes it identifiable. However, it never distinguishes itself from close siblings such as mc_valor_promedio_1d, integral_rectangulo, or integral_simpson13, leaving the agent to infer the difference from the method name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The note 'Handles sign-changing integrands correctly (returns the signed integral)' implicitly tells the agent when this method is preferable, which is genuine usage signal. But it never names an alternative (e.g. valor_promedio or Simpson) or states conditions/exclusions explicitly, so the guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_valor_promedio_1dA

Estimate ∫ₐᵇ f(x) dx with the mean-value Monte Carlo method.

Args: func_str: Math expression in x. a, b: Integration limits (b > a). N: Number of samples. seed: Optional RNG seed for reproducibility. precision: Rounding digits. nivel_confianza: Confidence level in (0, 1). plot: When True, also return a PNG scatter plot of the samples.

Returns: Dict with the estimate, confidence interval and sample statistics. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
NNo
aYes
bYes
plotNo
seedNo
func_strYes
precisionNo
nivel_confianzaNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the return contract: a dict with estimate, confidence interval and sample statistics, or [dict, Image] when plot=True. It does not mention accuracy characteristics of the Monte Carlo estimator, cost relative to N, or error behavior beyond the b > a note.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose sentence first, then a compact Args block, then Returns — no filler and no repetition. Each line earns its place given the 0% schema coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description adequately compensates by documenting all parameters and the return shape, including the plot=True variant. It omits defaults (N, precision, nivel_confianza) and any guidance on selecting N, but nothing essential for a correct call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are 8 parameters, so the arg list is the only documentation. It covers every parameter and adds meaning beyond the schema: seed exists for reproducibility, precision controls rounding digits, nivel_confianza is bounded to (0,1), and plot changes the return shape rather than just toggling a flag.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 ('Estimate ∫ₐᵇ f(x) dx') and names the algorithm ('mean-value Monte Carlo method'), which implicitly separates it from siblings like mc_hit_or_miss_1d or integral_simpson13. It never explicitly names an alternative, but the method specificity is enough to identify the tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this estimator over mc_hit_or_miss_1d, mc_estadistico_1d, or the deterministic quadrature siblings. The only constraint offered is b > a, which is a validity rule rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_valor_promedio_2dC

Estimate the double integral of f(x, y) over [x_a,x_b]×[y_a,y_b] by mean value.

With plot=True a PNG scatter of the sampled points coloured by f(x, y) is returned as [dict, Image] alongside the numeric result.

NameRequiredDescriptionDefault
NNo
x_aYes
x_bYes
y_aYes
y_bYes
plotNo
seedNo
func_strYes
precisionNo
nivel_confianzaNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations the description carries the full burden. It usefully discloses that plot=True changes the return to [dict, Image] with a coloured scatter, which is real behavioral information beyond the schema. However, it omits that this is a stochastic estimator whose result is approximate, and says nothing about the statistical machinery implied by N, seed, precision and nivel_confianza.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core operation and followed by the conditional return behavior. Little waste, though the mechanism it uses (mean value) is asserted rather than made actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter stochastic tool with no annotations and no output schema, the description is thin. It leaves the sampling parameters, the confidence/precision behavior, and the approximate nature of the result undocumented, so an agent cannot call it correctly or interpret the output on the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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, and it only partially does. It implies the meaning of func_str and the four bounds through notation and explains plot, but N (sample count), seed (reproducibility), precision and nivel_confianza (confidence level) go entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Estimate") and resource (the double integral of f(x,y) over a rectangle) and pins the method ("by mean value"). The mention of a 2D domain and mean-value estimator distinguishes it from hit-or-miss and from the 1d/3d variants, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not guidance. Nothing tells the agent when mean-value Monte Carlo is preferable to the deterministic siblings like integral_simpson13 or integral_trapecio, nor when to choose this over mc_hit_or_miss_1d. Usage is only implied by the method name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_valor_promedio_3dB

Estimate the triple integral of f(x,y,z) over the box [x_a,x_b]×[y_a,y_b]×[z_a,z_b].

With plot=True a PNG histogram of the sampled f values is returned as [dict, Image] alongside the numeric result.

NameRequiredDescriptionDefault
NNo
x_aYes
x_bYes
y_aYes
y_bYes
z_aYes
z_bYes
plotNo
seedNo
func_strYes
precisionNo
nivel_confianzaNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It does disclose a genuinely non-obvious behavioral trait: plot=True changes the return type to [dict, Image] with a PNG histogram. However it omits key traits of a Monte-Carlo estimator such as the statistical nature of the result and how N/seed affect reproducibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core purpose front-loaded and the return-format caveat second. No filler; the plot note earns its place by describing an observable output change.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 12 parameters, no annotations, and no output schema, the description should do more. It leaves the confidence-level and precision parameters undefined, so an agent cannot reason about the accuracy contract of the estimate or reproduce a run.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must carry semantics. The [x_a,x_b]×[y_a,y_b]×[z_a,z_b] notation grounds six of the parameters and 'plot=True' explains a seventh, but N, seed, precision, and nivel_confianza (the most non-obvious, MC-specific params) are left entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Estimate') and resource ('triple integral of f(x,y,z)') with the integration domain spelled out as a box. The 3D/dimensional framing implicitly distinguishes it from the mc_valor_promedio_1d/2d siblings, though it does not name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no routing to alternatives. Given many sibling integral methods (integral_simpson13, mc_hit_or_miss_1d, mc_valor_promedio_2d), the agent gets no signal on when Monte-Carlo averaging beats a deterministic rule or another MC variant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ode_eulerA

Solve y'(x) = f(x, y), y(x0) = y0 with the explicit Euler method (1st order).

Args: ecuacion_str: Right-hand side f(x, y). x0, y0: Initial condition. xf: Final x (must be > x0). h: Step size (must be positive). tol: Optional tolerance flag for the final error. precision: Rounding digits. plot: When True, also return a PNG plot of the solution.

Returns: Dict with the numerical solution, exact solution (when available) and errors. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
hYes
x0Yes
xfYes
y0Yes
tolNo
plotNo
precisionNo
ecuacion_strYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does disclose the return shape and the plot=True branching behavior ([dict, Image]). It also states input constraints. However it omits behavioral caveats such as the method's low accuracy relative to RK4 and any performance/step-count considerations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the equation and method, then cleanly partitioned into Args and Returns sections; each line maps to a real need. Slightly verbose in restating all params but no wasted marketing prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter solver with no output schema and no annotations, the description supplies the required params, their constraints, and the return structure. Missing only sibling-routing and accuracy caveats, so it is nearly complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema only supplies bare titles ('Tol', 'H', 'Ecuacion Str'). The description compensates by explaining every parameter's meaning and adding constraints (xf must be > x0, h must be positive, precision is rounding digits, plot adds a PNG). Strong compensation for a documentation-poor schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Solve) and resource (the ODE y'(x)=f(x,y)) plus the exact method and order (explicit Euler, 1st order). This clearly distinguishes it from siblings like ode_rk4 and ode_heun, which are different-order ODE solvers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to choose Euler over the sibling ode_rk4 or ode_heun, nor any note about its low-accuracy/educational nature. Only the parameter constraints (xf > x0, h positive) are given; the selection context is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ode_heunA

Solve y'(x) = f(x, y), y(x0) = y0 with Heun's predictor-corrector method (2nd order).

Args: ecuacion_str: Right-hand side f(x, y). x0, y0: Initial condition. xf: Final x (must be > x0). h: Step size (must be positive). tol: Optional tolerance flag for the final error. precision: Rounding digits. plot: When True, also return a PNG plot of the solution.

Returns: Dict with the numerical solution, exact solution (when available) and errors. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
hYes
x0Yes
xfYes
y0Yes
tolNo
plotNo
precisionNo
ecuacion_strYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the return contract usefully: a dict with numerical solution, exact solution when available, and errors, or a [dict, Image] list when plot=True. It does not mention cost, failure behavior for a diverging/degenerate step, or whether the exact solution is always computed, so it stops short of full disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line statement of the mathematical problem, followed by clean Args/Returns blocks. Efficient and scannable, with only minor redundancy between the Args list and the schema titles.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description must cover parameter meanings and return values, and it does both, including the plot-conditional return shape. Missing only edge-case behavior (e.g., what happens when h is too large or tol is unused), which is a modest gap for a self-contained numeric routine.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it documents all 8 parameters including the two optional ones (tol, precision, plot). It adds real constraints (xf > x0, h positive) beyond the bare schema titles, though tol is described only as an 'optional tolerance flag', which is vague against its numeric type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: solves the IVP y'(x)=f(x,y), y(x0)=y0 using Heun's predictor-corrector method (2nd order). The named method cleanly separates it from sibling solvers ode_rk4 and ode_euler without needing to open any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to prefer Heun over the sibling ode_euler (1st order) or ode_rk4 (4th order), nor of accuracy/cost tradeoffs. The only guidance given (xf > x0, h positive) is a parameter constraint, not usage routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ode_rk4A

Solve an initial value problem y'(x) = f(x, y) with the Runge-Kutta 4 method.

Args: ecuacion_str: Right-hand side f(x, y), e.g. "y" or "-2xy". x0: Initial x. y0: Initial y(x0). xf: Final x (must be > x0). h: Step size (must be positive). The endpoint xf is always reached. tol: Optional tolerance to flag whether the final error meets it. precision: Rounding digits. plot: When True, also return a PNG plot of the solution.

Returns: Dict with the numerical solution table, exact solution (when SymPy can solve it) and per-step errors. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
hYes
x0Yes
xfYes
y0Yes
tolNo
plotNo
precisionNo
ecuacion_strYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that the endpoint xf is always reached regardless of step size, that the exact solution is included only 'when SymPy can solve it', and that plot=True changes the return shape to [dict, Image]. It omits what happens on failure (e.g., unsolvable equation, h too large) and whether the tolerance merely flags or actually adapts the step.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by clearly labeled Args and Returns sections, appropriate in size for an 8-parameter tool. A few entries (x0, y0) are near-tautological restatements of the parameter names, which is the only waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter computational tool with no annotations and no output schema, the description covers the math, every parameter, and the return structure including the plot variant. Missing only error/failure behavior and the precise semantics of 'precision' relative to output rounding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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 entirely, and it does: every one of the 8 parameters is explained, including constraints ('xf must be > x0', 'h must be positive'), examples for ecuacion_str, and the meaning of tol, precision and plot. This adds substantial meaning beyond the bare titles in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Solve an initial value problem y'(x) = f(x, y)') and names the exact numerical method (Runge-Kutta 4), which implicitly separates it from ode_euler and ode_heun among the siblings. It never explicitly contrasts with those alternatives, so it falls 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the method name and the domain: an agent can infer this is for ODE IVPs with a 4th-order fixed-step method. There is no statement of when to pick RK4 over ode_euler/ode_heun, nor any guidance on accuracy tradeoffs or step-size choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

root_aitkenB

Accelerate fixed-point iteration with Aitken's delta-squared method.

Args: g_str: Math expression for the iteration function g(x). x0: Initial guess. tol: Convergence tolerance. max_iter: Maximum iterations. precision: Rounding digits. plot: When True, also return a PNG plot of g(x) and y = x.

Returns: Dict with the accelerated root, iteration table and convergence flag. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
x0Yes
tolNo
plotNo
g_strYes
max_iterNo
precisionNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It usefully discloses the return shape (dict with root, iteration table and convergence flag; [dict, Image] when plot=True) but says nothing about convergence failure behavior, iteration limits, or computational constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then lists args and returns in a compact docstring form. Slightly formulaic but every line carries information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter numerical tool with no output schema, no annotations, and 0% schema coverage, the description covers purpose, all parameters, and both possible return shapes. Remaining gaps (failure/convergence edge cases) are minor for a well-specified math routine.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it does: all six parameters (g_str, x0, tol, max_iter, precision, plot) are given one-line meanings. It does not restate defaults, but the semantic intent of each argument is clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Accelerate') plus resource (fixed-point iteration) and names the exact numerical technique (Aitken's delta-squared method). This implicitly distinguishes it from plain root_punto_fijo and the other root siblings, though it does not name an alternative directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to prefer this over root_punto_fijo, root_newton_raphson, or root_bisection. The agent must infer that it applies to fixed-point problems that need speedup, and there are no stated prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

root_bisectionA

Find a root of f(x) = 0 in [a, b] using the bisection method.

Requires f(a) and f(b) to have opposite signs (Bolzano's theorem).

Args: func_str: Math expression in x, e.g. "x**2 - 4". a: Left endpoint of the interval. b: Right endpoint of the interval (must be > a). tol: Convergence tolerance on the residual/error. max_iter: Maximum number of iterations. precision: Rounding digits for the reported root. plot: When True, also return a PNG plot of f(x) and the root.

Returns: Dict with the root, convergence flag, iteration table and errors. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
aYes
bYes
tolNo
plotNo
func_strYes
max_iterNo
precisionNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden well: it discloses the convergence flag, iteration table, error information, and the polymorphic return shape when plot=True. It omits what happens on failure (e.g., same-sign endpoints raising an error vs returning a flag) and any cost/iteration-cap behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by precondition, then clean Args/Returns blocks. Efficient, though the Args list is somewhat conventionally verbose rather than tightly compressed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete enough for a 7-parameter numerical solver with no output schema: inputs, precondition, and return contents are all covered. Missing only edge-case behavior for non-convergence or sign violations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and largely does: every one of the 7 parameters is explained, including the constraint b > a, the meaning of tol (residual/error), precision (rounding digits) and plot (adds a PNG). Only exact units/semantics of tol relative to the iteration stopping rule remain ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find a root of f(x) = 0 in [a, b]') plus the named algorithm (bisection), which immediately differentiates it from siblings like root_newton_raphson, root_punto_fijo and root_aitken.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear precondition (f(a) and f(b) must have opposite signs, citing Bolzano) that effectively defines when the tool is applicable. It does not explicitly say when to prefer it over the other root-finding siblings, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

root_compararA

Compare bisection, fixed-point, Newton-Raphson and Aitken on the same problem.

Args: func_str: Math expression for f(x) (used by bisection/Newton). g_str: Math expression for g(x) (used by fixed-point/Aitken). a, b: Bracket for bisection (f(a) and f(b) must differ in sign). x0: Initial guess. tol, max_iter, precision: Shared tolerances. plot: When True, also return a PNG bar chart of the iterations used.

Returns: Dict with per-method results. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
aYes
bYes
x0Yes
tolNo
plotNo
g_strYes
func_strYes
max_iterNo
precisionNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it discloses the bracket sign-requirement for bisection ('f(a) and f(b) must differ in sign'), which parameters feed which methods, and the conditional return shape when plot=True. It stops short of stating that this is a pure/stateless computation with no side effects, leaving that to inference.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by a scannable Args/Returns block; every line earns its place. It is slightly boilerplate in form but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with no output schema and no annotations, the description covers inputs, the sign precondition, and the return shape ([dict, Image] when plot=True), which is what an agent needs to invoke it. It could add a note on failure modes (e.g., non-convergence) but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and it does: all nine parameters are explained, including the non-obvious mapping of func_str to bisection/Newton, g_str to fixed-point/Aitken, a/b as the bisection bracket with the sign constraint, and tol/max_iter/precision as shared tolerances. This adds substantial meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb ('Compare') and names the exact four methods (bisection, fixed-point, Newton-Raphson, Aitken) it runs on the same problem. This clearly distinguishes it from the sibling single-method tools root_bisection, root_newton_raphson, root_punto_fijo, and root_aitken.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the comparison framing — reach for it when you want all four methods side by side — but there is no explicit when-to-use/when-not guidance or statement contrasting it with calling the individual sibling tools. An agent must infer the selection criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

root_newton_raphsonA

Find a root of f(x) = 0 with the Newton-Raphson method (numeric derivative).

Args: func_str: Math expression in x. x0: Initial guess. tol: Convergence tolerance. max_iter: Maximum iterations. precision: Rounding digits. plot: When True, also return a PNG plot of f(x) and the root.

Returns: Dict with the root, iteration table and convergence flag. With plot=True a list [dict, Image] is returned instead.

NameRequiredDescriptionDefault
x0Yes
tolNo
plotNo
func_strYes
max_iterNo
precisionNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the return shape (root, iteration table, convergence flag) and the plot side effect, which is real behavioral value, but it omits failure/divergence behavior, side effects of precision, and what happens on non-convergence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with a front-loaded purpose sentence followed by Args and Returns sections. It is slightly redundant with the schema's parameter names, but that redundancy is defensible given 0% schema coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the Returns section fills the gap by describing the dict contents and the plot=True variant. Combined with per-parameter documentation, an agent has enough to invoke it correctly, though convergence-failure semantics remain unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, and it documents all six parameters in an Args block. func_str ('Math expression in x') and precision ('Rounding digits') add genuine meaning beyond the bare names, though tol and max_iter are near-restatements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Find a root of f(x) = 0') and names the exact algorithm ('Newton-Raphson method') plus an implementation detail (numeric derivative), which distinguishes it from siblings like root_bisection and root_punto_fijo. It does not explicitly contrast with those siblings, keeping it at 4.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the named method rather than stated: nothing tells the agent when Newton-Raphson is preferable to bisection or fixed-point, nor does it warn about cases where the numeric derivative is zero or the initial guess diverges. The tool's applicability is inferable but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

root_punto_fijoA

Find a fixed point of g(x) = x with the fixed-point iteration method.

Converges when |g'(x)| < 1 near the root (Lipschitz check is reported).

Args: g_str: Math expression for the iteration function g(x). x0: Initial guess. tol: Convergence tolerance. max_iter: Maximum iterations. precision: Rounding digits. plot: When True, also return a PNG plot of g(x) and y = x.

Returns: Dict with the fixed point, the Lipschitz check, iteration table and convergence flag. With plot=True a list [dict, Image] is returned.

NameRequiredDescriptionDefault
x0Yes
tolNo
plotNo
g_strYes
max_iterNo
precisionNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description does real work: it discloses the convergence criterion, the Lipschitz check, the iteration table, the convergence flag, and the special return shape when plot=True. It could still say more about behavior when convergence fails or when g_str is invalid, but the key operational traits are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and convergence condition, then uses compact Args and Returns sections. Every sentence adds useful information for invoking the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter numerical tool with no annotations and no output schema, the description is largely complete: it explains the method, convergence condition, parameters, and return structure including the plot case. Minor gaps remain around error behavior and exact iteration-table format, but the essential context is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the burden. It meaningfully documents all six parameters: g_str as the iteration expression, x0 as the initial guess, tol as tolerance, max_iter as iteration cap, precision as rounding digits, and plot as PNG-returning flag. It does not specify the expression syntax for g_str, which keeps it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific numerical method and states the exact problem it solves: finding a fixed point of g(x)=x using fixed-point iteration. It is clear enough to distinguish from general root-finding siblings by method, though it does not explicitly contrast itself with root_bisection, root_newton_raphson, or root_aitken.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives the mathematical applicability condition 'Converges when |g'(x)| < 1 near the root', which implies when the method is appropriate. However, it never explicitly says when to choose this method over sibling root-finding tools or what to do if the convergence condition fails.

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.

  1. 29 tool updatesv0.2.1
    • Changeddynamic_1d_bifurcation1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changeddynamic_1d_equilibria1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changeddynamic_1d_solve1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changeddynamic_2d_conservative_solve1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changeddynamic_2d_lanchester_solve1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changeddynamic_2d_linear_solve1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changeddynamic_2d_nonhomogeneous_solve1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changeddynamic_2d_nonlinear_solve1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedfinite_differences1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedintegral_comparar1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedintegral_rectangulo1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedintegral_simpson131 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedintegral_simpson381 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedintegral_trapecio1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedinterpolation_lagrange1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedmc_convergencia_1d1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedmc_estadistico_1d1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedmc_hit_or_miss_1d1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedmc_valor_promedio_1d1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedmc_valor_promedio_2d1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedmc_valor_promedio_3d1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedode_euler1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedode_heun1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedode_rk41 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedroot_aitken1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedroot_bisection1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedroot_comparar1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedroot_newton_raphson1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
    • Changedroot_punto_fijo1 field changed
      • addedInput schema / properties / plot
        Added value: +{
        +  "default": false,
        +  "title": "Plot",
        +  "type": "boolean"
        +}
  2. 29 tool updatesv0.1.0
    • First observeddynamic_1d_bifurcation
    • First observeddynamic_1d_equilibria
    • First observeddynamic_1d_solve
    • First observeddynamic_2d_conservative_solve
    • First observeddynamic_2d_lanchester_solve
    • First observeddynamic_2d_linear_solve
    • First observeddynamic_2d_nonhomogeneous_solve
    • First observeddynamic_2d_nonlinear_solve
    • First observedfinite_differences
    • First observedintegral_comparar
    • First observedintegral_rectangulo
    • First observedintegral_simpson13
    • First observedintegral_simpson38
    • First observedintegral_trapecio
    • First observedinterpolation_lagrange
    • First observedmc_convergencia_1d
    • First observedmc_estadistico_1d
    • First observedmc_hit_or_miss_1d
    • First observedmc_valor_promedio_1d
    • First observedmc_valor_promedio_2d
    • First observedmc_valor_promedio_3d
    • First observedode_euler
    • First observedode_heun
    • First observedode_rk4
    • First observedroot_aitken
    • First observedroot_bisection
    • First observedroot_comparar
    • First observedroot_newton_raphson
    • First observedroot_punto_fijo

TDQS

B3.2/5.0

Scored across 29 tools

Disambiguation3/5

Most tools target a distinct numerical method, but several pairs overlap heavily: dynamic_1d_solve already returns equilibria, stability, phase portrait and time series, which is nearly what dynamic_1d_equilibria does, and dynamic_2d_linear_solve (X'=A·X+B with constant B) is a special case of dynamic_2d_nonhomogeneous_solve, making selection guesswork. The Monte Carlo family (valor_promedio, estadistico, convergencia, hit_or_miss) is distinguishable but requires reading descriptions closely, and individual rule tools versus the two *_comparar tools also invite misselection.

Naming Consistency3/5

A domain-prefix convention exists (integral_, root_, ode_, mc_, dynamic_1d_, dynamic_2d_) and is mostly snake_case, but it is broken by bare names like finite_differences and interpolation_lagrange. Spanish and English are mixed within the same pattern (integral_comparar vs integral_trapecio vs root_newton_raphson; mc_valor_promedio_1d vs mc_hit_or_miss_1d), and suffixes mix verbs (solve, comparar) with nouns, so the scheme is readable but not predictable.

Tool Count2/5

At 29 tools this is well past a comfortable scope for one server. The surface could be consolidated substantially: the four quadrature rules could be a single tool with a 'method' parameter (the comparison tool already does this), as could the three ODE solvers and several of the 2D dynamical-system variants.

Completeness3/5

Core numerical analysis areas are well covered — root finding, quadrature, ODE IVPs, Monte Carlo, and dynamical systems each have multiple methods plus comparison tools. However, there are notable gaps: interpolation has only Lagrange (no Newton/divided differences or splines), and there are no direct linear-system solvers (Gauss elimination, LU, iterative methods) or least-squares/curve-fitting tools, which are standard in this domain.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A demonstration MCP server that exposes basic arithmetic tools (add, subtract, ping) through FastAPI and shows how to integrate them with OpenAI's tool-calling API for LLM orchestration.
    -
  • A
    license
    A
    quality
    C
    maintenance
    A Model Context Protocol server that exposes 8 mathematical tools (arithmetic, algebra, calculus, matrix operations, statistics, probability, unit conversions) to any MCP-compatible AI agent, enabling mathematical computations without code.
    8
    3 npm
    1
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that provides basic mathematical, statistical and trigonometric functions to Large Language Models (LLMs).
    59
    34 npm
    1
    MIT