mathmethods-mcp
This MCP server lets an LLM compute and analyze mathematical/numerical problems through callable tools.
Find roots with bisection, Newton-Raphson, fixed-point iteration, Aitken acceleration, or compare methods.
Approximate definite integrals with rectangle, trapezoid, Simpson 1/3, Simpson 3/8, or compare methods.
Estimate first and second derivatives with finite differences.
Solve ODE initial value problems with Euler, Heun, or RK4.
Build and evaluate Lagrange interpolating polynomials.
Run 1D/2D/3D Monte Carlo integration, replicated statistical experiments, and convergence analysis.
Analyze dynamic systems: 1D equilibria/stability/bifurcations; 2D linear, nonlinear, conservative, Lanchester, and nonhomogeneous systems with trajectories.
Optionally return PNG plots with
plot=Truewhen the plotting extra is installed; otherwise return JSON/tables/errors.Perform read-only computations only, with no filesystem, network, or destructive operations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mathmethods-mcpFind the root of x^3 - 2x - 5 near 2 using Newton-Raphson"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mathematical/Numerical Methods - MCP Server
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
1. Run with NPX (Recommended)
Runs on-demand without any global installation:
Claude Code (One-liner CLI)
claude mcp add mathmethods npx -y @agmonetti/mathmethods-mcpClaude 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.pyEvery 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 |
| Bisection on |
| Newton–Raphson with numeric derivative |
| Fixed-point iteration |
| Aitken Δ² acceleration of fixed point |
| All four methods compared on the same problem |
Numerical integration
Tool | What it does |
| Composite midpoint rule |
| Composite trapezoidal rule |
| Composite Simpson 1/3 (n even) |
| Composite Simpson 3/8 (n multiple of 3) |
| All four rules compared (n multiple of 6) |
Differentiation
Tool | What it does |
| Forward/backward/central 1st & 2nd derivatives |
ODE and interpolation
Tool | What it does |
| Runge–Kutta 4 (4th order) |
| Heun predictor–corrector (2nd order) |
| Explicit Euler (1st order) |
| Lagrange interpolating polynomial |
Monte Carlo
Tool | What it does |
| Hit-or-miss estimator (correct for sign-changing f) |
| Mean-value estimate of |
| Mean-value estimate of a double integral |
| Mean-value estimate of a triple integral |
| M×N replicated experiment with statistical analysis |
| Running average showing the estimate converging |
Dynamic systems
Tool | What it does |
| Equilibria, stability, phase portrait and time series |
| Find and classify the equilibria of |
| Equilibria vs parameter (bifurcation diagram) |
| Linear |
| Nonlinear |
| Divergence-free check, Hamiltonian/energy, closed orbits |
| Lanchester combat model with analytic time-to-annihilation |
| Non-homogeneous |
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 checkoutIf 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.tomlInstall
cd mathmethods-mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtAfter 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, trypython3 -m venv --copies venv.
Run
Local (STDIO) — default transport, used by VS Code / Claude Desktop:
uv run python server.pyRemote (Streamable HTTP) — the server prints a URL such as http://127.0.0.1:8000/mcp:
MCP_TRANSPORT=streamable-http uv run python server.pyThe 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-mcpCreate .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-mcpFor 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:
copilotthen inside the session:
/mcp add
Server name: mathmethods
Server type: 1 (Local/STDIO)
Command: npx -y @agmonetti/mathmethods-mcpPress 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/mcpExample usage
Ask your agent things like:
"Find the root of
x^3 - 3x + 1in[0, 1].""Integrate
sin(x)/xfrom 0 to 1 using Simpson with n=10.""Solve
y' = ywith 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 + 2yand 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'ssympify/parse_exprcan 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_solvewith 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 toolsdynamic_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.
| Name | Required | Description | Default |
|---|---|---|---|
| plot | No | ||
| model | No | custom | |
| x_max | No | ||
| x_min | No | ||
| params | No | ||
| bif_max | No | ||
| bif_min | No | ||
| n_phase | No | ||
| func_str | No | x | |
| bif_param | No | r | |
| bif_steps | No | ||
| phase_params | No | ||
| control_enabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| plot | No | ||
| model | No | custom | |
| x_max | No | ||
| x_min | No | ||
| params | No | ||
| n_phase | No | ||
| func_str | No | x | |
| control_enabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| plot | No | ||
| model | No | custom | |
| t_max | No | ||
| x_max | No | ||
| x_min | No | ||
| n_time | No | ||
| params | No | ||
| n_phase | No | ||
| func_str | No | x | |
| control_enabled | No | ||
| initial_conditions | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| h | No | ||
| mu | No | ||
| t0 | No | ||
| x0 | No | ||
| y0 | No | ||
| eq_x | No | y | |
| eq_y | No | x - x**3 | |
| plot | No | ||
| t_fin | No | ||
| x_max | No | ||
| x_min | No | ||
| y_max | No | ||
| y_min | No | ||
| cantidad_trayectorias | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| h | No | ||
| mu | No | ||
| t0 | No | ||
| x0 | No | ||
| y0 | No | ||
| beta | No | ||
| eq_x | No | -α * y | |
| eq_y | No | -β * x | |
| plot | No | ||
| alpha | No | ||
| delta | No | ||
| gamma | No | ||
| t_fin | No | ||
| epsilon | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| a | No | ||
| b | No | ||
| c | No | ||
| d | No | ||
| e | No | ||
| f | No | ||
| h | No | ||
| t0 | No | ||
| x0 | No | ||
| y0 | No | ||
| plot | No | ||
| t_fin | No | ||
| x_max | No | ||
| x_min | No | ||
| y_max | No | ||
| y_min | No | ||
| cantidad_trayectorias | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| a | No | ||
| b | No | ||
| c | No | ||
| d | No | ||
| e | No | ||
| f | No | ||
| h | No | ||
| t0 | No | ||
| x0 | No | ||
| y0 | No | ||
| plot | No | ||
| t_fin | No | ||
| x_max | No | ||
| x_min | No | ||
| y_max | No | ||
| y_min | No | ||
| cantidad_trayectorias | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| h | No | ||
| mu | No | ||
| t0 | No | ||
| x0 | No | ||
| y0 | No | ||
| eq_x | No | y - x | |
| eq_y | No | x**2 - 1 | |
| plot | No | ||
| t_fin | No | ||
| x_max | No | ||
| x_min | No | ||
| y_max | No | ||
| y_min | No | ||
| params | No | ||
| cantidad_trayectorias | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| h | No | ||
| plot | No | ||
| x_val | Yes | ||
| func_str | Yes | ||
| precision | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes | ||
| n | Yes | ||
| plot | No | ||
| epsilon | No | ||
| func_str | Yes | ||
| precision | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes | ||
| n | Yes | ||
| plot | No | ||
| epsilon | No | ||
| func_str | Yes | ||
| precision | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes | ||
| n | Yes | ||
| plot | No | ||
| epsilon | No | ||
| func_str | Yes | ||
| precision | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes | ||
| n | Yes | ||
| plot | No | ||
| epsilon | No | ||
| func_str | Yes | ||
| precision | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes | ||
| n | Yes | ||
| plot | No | ||
| epsilon | No | ||
| func_str | Yes | ||
| precision | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| plot | No | ||
| x_eval | No | ||
| func_str | No | ||
| puntos_x | Yes | ||
| puntos_y | No | ||
| precision | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| N | No | ||
| a | Yes | ||
| b | Yes | ||
| plot | No | ||
| seed | No | ||
| func_str | Yes | ||
| precision | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| M | No | ||
| N | No | ||
| a | Yes | ||
| b | Yes | ||
| plot | No | ||
| seed | No | ||
| func_str | Yes | ||
| precision | No | ||
| nivel_confianza | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| N | No | ||
| a | Yes | ||
| b | Yes | ||
| plot | No | ||
| seed | No | ||
| func_str | Yes | ||
| precision | No | ||
| nivel_confianza | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| N | No | ||
| a | Yes | ||
| b | Yes | ||
| plot | No | ||
| seed | No | ||
| func_str | Yes | ||
| precision | No | ||
| nivel_confianza | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| N | No | ||
| x_a | Yes | ||
| x_b | Yes | ||
| y_a | Yes | ||
| y_b | Yes | ||
| plot | No | ||
| seed | No | ||
| func_str | Yes | ||
| precision | No | ||
| nivel_confianza | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| N | No | ||
| x_a | Yes | ||
| x_b | Yes | ||
| y_a | Yes | ||
| y_b | Yes | ||
| z_a | Yes | ||
| z_b | Yes | ||
| plot | No | ||
| seed | No | ||
| func_str | Yes | ||
| precision | No | ||
| nivel_confianza | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| h | Yes | ||
| x0 | Yes | ||
| xf | Yes | ||
| y0 | Yes | ||
| tol | No | ||
| plot | No | ||
| precision | No | ||
| ecuacion_str | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| h | Yes | ||
| x0 | Yes | ||
| xf | Yes | ||
| y0 | Yes | ||
| tol | No | ||
| plot | No | ||
| precision | No | ||
| ecuacion_str | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| h | Yes | ||
| x0 | Yes | ||
| xf | Yes | ||
| y0 | Yes | ||
| tol | No | ||
| plot | No | ||
| precision | No | ||
| ecuacion_str | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x0 | Yes | ||
| tol | No | ||
| plot | No | ||
| g_str | Yes | ||
| max_iter | No | ||
| precision | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes | ||
| tol | No | ||
| plot | No | ||
| func_str | Yes | ||
| max_iter | No | ||
| precision | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes | ||
| x0 | Yes | ||
| tol | No | ||
| plot | No | ||
| g_str | Yes | ||
| func_str | Yes | ||
| max_iter | No | ||
| precision | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x0 | Yes | ||
| tol | No | ||
| plot | No | ||
| func_str | Yes | ||
| max_iter | No | ||
| precision | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x0 | Yes | ||
| tol | No | ||
| plot | No | ||
| g_str | Yes | ||
| max_iter | No | ||
| precision | No |
TDQS
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.
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.
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.
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.
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.
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.
29 tool updates
v0.2.1- Changed
dynamic_1d_bifurcation1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
dynamic_1d_equilibria1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
dynamic_1d_solve1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
dynamic_2d_conservative_solve1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
dynamic_2d_lanchester_solve1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
dynamic_2d_linear_solve1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
dynamic_2d_nonhomogeneous_solve1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
dynamic_2d_nonlinear_solve1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
finite_differences1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
integral_comparar1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
integral_rectangulo1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
integral_simpson131 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
integral_simpson381 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
integral_trapecio1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
interpolation_lagrange1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
mc_convergencia_1d1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
mc_estadistico_1d1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
mc_hit_or_miss_1d1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
mc_valor_promedio_1d1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
mc_valor_promedio_2d1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
mc_valor_promedio_3d1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
ode_euler1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
ode_heun1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
ode_rk41 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
root_aitken1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
root_bisection1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
root_comparar1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
root_newton_raphson1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
- Changed
root_punto_fijo1 field changed- added
Input schema / properties / plotAdded value: +{ + "default": false, + "title": "Plot", + "type": "boolean" +}
29 tool updates
v0.1.0- First observed
dynamic_1d_bifurcation - First observed
dynamic_1d_equilibria - First observed
dynamic_1d_solve - First observed
dynamic_2d_conservative_solve - First observed
dynamic_2d_lanchester_solve - First observed
dynamic_2d_linear_solve - First observed
dynamic_2d_nonhomogeneous_solve - First observed
dynamic_2d_nonlinear_solve - First observed
finite_differences - First observed
integral_comparar - First observed
integral_rectangulo - First observed
integral_simpson13 - First observed
integral_simpson38 - First observed
integral_trapecio - First observed
interpolation_lagrange - First observed
mc_convergencia_1d - First observed
mc_estadistico_1d - First observed
mc_hit_or_miss_1d - First observed
mc_valor_promedio_1d - First observed
mc_valor_promedio_2d - First observed
mc_valor_promedio_3d - First observed
ode_euler - First observed
ode_heun - First observed
ode_rk4 - First observed
root_aitken - First observed
root_bisection - First observed
root_comparar - First observed
root_newton_raphson - First observed
root_punto_fijo
TDQS
Scored across 29 tools
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.
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.
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.
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
Related MCP Connectors
This MCP server enables users to perform scientific computations regarding linear algebra and vect…
Educational MCP server with 17 math/stats tools, visualizations, and persistent workspace
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA 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.-
- AlicenseAqualityCmaintenanceA 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.83 npm1MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol (MCP) server that provides basic mathematical, statistical and trigonometric functions to Large Language Models (LLMs).5934 npm1MIT
- AlicenseAqualityBmaintenanceProvides an MCP server exposing compute, verify, and plot tools backed by Giac/Xcas for exact symbolic and numerical mathematics, enabling LLMs to solve calculus, algebra, geometry, and more with verified results.347 npm3GPL 3.0