sci-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sci-mcpfind the derivative of x^3*sin(x) with respect to x"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
sci-mcp
本机科学计算 MCP 服务器。把符号数学、物理单位、数值仿真、PDE、统计推断、GLM/时间序列、 信号时频分析、小波、蒙特卡洛、规划求解、高层数据分析和绘图收进一套固定的 MCP 工具里, 供 Cherry Studio 里的 agent 直接调用。
工具一览(65 个)
符号数学(sympy)
工具 | 作用 |
| 求导、不定积分、极限、级数展开、化简、展开、因式分解 |
| 解方程/方程组;单变量返回扁平解列表,多变量返回字典列表 |
| 符号表达式数值代入并求值 |
| 符号 ODE 解析解(通解或带初值),支持高阶方程 |
向量微积分
工具 | 作用 |
| 梯度、散度、旋度(三维)、拉普拉斯算子 |
物理与单位(scipy.constants + pint)
工具 | 作用 |
| 查询物理常量 |
| 单位换算,支持偏移单位 |
| 计算带单位表达式 |
数值仿真(numpy + scipy)
工具 | 作用 |
| 一阶 ODE 系统数值解 |
| 局部最小化,支持上下界 + 等式/不等式约束 |
| 全局优化:差分进化、模拟退火、basinhopping |
| det/inv/eig/svd/solve/lstsq/matmul/rank/norm/transpose |
| 数值求根(brentq / newton) |
| 单边幅度谱与主频 |
| 一维插值 |
| 稀疏矩阵:solve/eigsh/svds/matmul/transpose/norm,支持 Matrix Market、直接法/CG/GMRES |
PDE(有限差分)
工具 | 作用 |
| 一维热方程;边界支持 Dirichlet / Neumann / Robin |
| 一维波动方程;边界支持 Dirichlet / Neumann / Robin |
| 二维拉普拉斯方程,Dirichlet 边界,Gauss-Seidel |
PDE 进阶(三维 / 非线性)
工具 | 作用 |
| 三维热方程,显式 FTCS(稳定性检查) |
| 三维拉普拉斯方程,向量化 Jacobi 迭代 |
| 一维 Burgers 方程(非线性对流 + 扩散) |
| 一维变系数热传导 alpha(x) |
| 半通用一维显式 PDE:u_t = F(x,t,u,u_x,u_xx) |
| 三维波动方程(显式中心差分) |
| 二维不可压涡量-流函数(周期边界) |
统计与绘图(scipy.stats + matplotlib)
工具 | 作用 |
| 描述统计 |
| 概率分布 pdf/cdf/ppf/rvs/fit |
| 任意表达式模型最小二乘拟合 + R² |
| line/scatter/hist/bar/errorbar/contour/surface |
统计推断
工具 | 作用 |
| 单样本 / 双样本 / 配对 t 检验 |
| 卡方独立性 / 拟合优度 |
| 单因素方差分析 |
| Pearson / Spearman / Kendall |
| 单变量或多变量 OLS |
GLM 与时间序列(statsmodels)
工具 | 作用 |
| 广义线性模型:gaussian/binomial/poisson/gamma 等 |
| ARIMA 拟合与多步预测(含置信区间) |
| 趋势/季节/残差分解 |
| ADF 单位根 / 平稳性检验 |
混合模型(statsmodels)
工具 | 作用 |
| 线性混合模型:固定效应 + 随机效应,处理分组/重复测量 |
| 广义估计方程:gaussian/binomial/poisson × 三种相关工作结构 |
| 非线性混合模型(固定效应 + 随机截距,惩罚最小二乘近似) |
生存分析
工具 | 作用 |
| Cox 比例风险模型,含完全分离/不收敛检测 |
| Kaplan-Meier 生存曲线与中位生存期,支持分组 |
信号处理(scipy.signal)
工具 | 作用 |
| Butterworth 低通/高通/带通/带阻 |
| 一维卷积 |
| Welch 功率谱密度与峰值频率 |
| 峰值检测 |
| 短时傅里叶变换,时频矩阵 + 可选频谱图 |
小波(PyWavelets)
工具 | 作用 |
| 多层小波分解,返回各层能量与系数 |
| 小波阈值去噪(通用阈值 / 自定义阈值) |
随机模拟与规划
工具 | 作用 |
| 按分布抽样并计算表达式 |
| 线性规划(HiGHS) |
| 整数/混合整数规划(HiGHS) |
数据文件 IO
工具 | 作用 |
| 读写 CSV/TSV/TXT/JSON/NPY |
| 直接对文件列做统计或画图 |
高层工作流
工具 | 作用 |
| 读 CSV → 描述统计 + 相关矩阵 + 目标回归 + 图,一次完成 |
| ARIMA / 指数平滑多步预测,统一返回预测值与置信区间 |
兜底与健康检查
工具 | 作用 |
| 子进程执行任意 Python,预导入 numpy/scipy/sympy/matplotlib |
| 检查所有工具模块导入状态与注册函数数 |
Related MCP server: mma-mcp
启动
cd sci-mcp
uv run sci-mcp或直接用虚拟环境入口(Cherry Studio 注册时用这个):
.venv\Scripts\sci-mcp.exe传输方式为 stdio,无需端口。若 sci-mcp.exe 正被 Cherry 占用,开发时用 uv run --no-sync ...。
输出目录
绘图、PDE/时频/小波结果(.npz)、run_python 产物默认写到:
~/.sci-mcp/outputsWindows 下即 %USERPROFILE%\.sci-mcp\outputs。
可用环境变量 SCI_MCP_OUTPUT_DIR 覆盖。
数据约定
长数组单次最多返回 2000 个点;超出时等间隔降采样并标注
downsampled: true与原始长度。完整 PDE/时频/小波结果保存为
.npz,返回值里带path。数组参数支持文件引用
"@<path>"(绝对路径或相对输出目录),支持 CSV/TSV/TXT/JSON/NPY; 文本文件按行解析,一行一个值。NaN/Infinity不进入 JSON:统一转成null,顶层warnings说明被转换的字段。load_data读取上限 50 MB / 1,000,000 行;save_data、plot的文件名只允许 basename。
开发
uv run --no-sync pytest -qPython ≥ 3.12;依赖由
uv.lock锁定(numpy、scipy、sympy、matplotlib、pint、statsmodels、pandas、pywavelets)。所有工具返回统一信封:成功
{"ok": true, "result": ...},失败{"ok": false, "error": "..."}。工具函数不向外抛异常,错误统一走
core.err()。
扩展新工具
在 src/sci_mcp/tools/ 新建模块,按固定写法:
from ..core import ok, err
def my_tool(x: float) -> dict:
"""One-line English description shown to the model."""
try:
return ok(x * 2)
except Exception as e:
return err(f"my_tool failed: {e}")
def register(mcp) -> None:
mcp.tool()(my_tool)server.py 会自动发现该模块并注册,无需修改其他文件。
已知限制
run_python在本机子进程执行,不是安全沙箱;只适合可信代码。默认超时 30 秒(上限 300 秒), 超时会杀整棵进程树;代码上限 100,000 字符;Windows 下默认 2048 MiB 内存上限 (SCI_MCP_SANDBOX_MEMORY_MB可调,16–65536)。PDE 覆盖一维热/波(含 Neumann/Robin、变系数)、二维拉普拉斯、三维热/拉普拉斯/波动、 一维 Burgers、半通用一维显式 PDE、二维不可压 Navier-Stokes(周期边界); 仍不支持通用三维 CFD、湍流模型、复杂边界。
稀疏矩阵支持 solve/eigsh/svds/matmul/transpose/norm,求解器含直接法/CG/GMRES; 超大规模仍受 nnz / 内存上限约束。
混合模型含线性 MixedLM、GEE,以及非线性混合模型的惩罚最小二乘近似(非完整 NLME)。
生存分析只做 Cox 比例风险与 Kaplan-Meier;不含竞争风险、时变协变量。
统计推断是经典检验 + OLS + GLM/ARIMA,不含混合模型、生存分析。
monte_carlo按独立变量抽样,不建模变量间相关性。Gaussian GLM 的 McFadden 伪 R² 可能略大于 1(statsmodels 似然尺度所致)。
指数平滑的置信区间用残差正态近似(statsmodels 无解析区间),返回里已标注。
符号解中的复数根和无理表达式以 sympy 字符串返回。
integer_program的method仅支持highs。
Available Tools
65 toolsanalyze_datasetC
Profile a CSV file: numeric summaries, correlations, optional target regression and plots.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| plot | No | ||
| target | No | ||
| max_columns | 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, yet it discloses almost nothing beyond the operation name. It does not say that plot=true likely writes plot artifacts to disk, what the profile output looks like or where it goes, or whether the target file must already exist — the plot default of true is a side effect left unexplained.
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?
A single front-loaded sentence with no waste; scope is stated immediately. It is efficient, though its brevity comes partly at the cost of the missing detail noted elsewhere.
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 4-parameter tool that produces plots (default on) and involves regression, the description is too thin: no output-schema exists to fill the gap, so what is returned, how max_columns truncates, and what the plotting side effect does are all left unspecified.
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 documents none of the 4 parameters. The description only loosely implies 'target' (regression) and 'plot', leaving 'path' and 'max_columns' (a truncation/performance control) entirely unexplained in both places.
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?
'Profile a CSV file' gives a clear verb+resource, and the colon-list ('numeric summaries, correlations, optional target regression and plots') specifies the scope precisely. It does not explicitly distinguish itself from close siblings like describe, describe_file, correlation, or linear_regression, which it arguably bundles.
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 or when-not-to-use guidance is given. Since siblings such as describe, describe_file, correlation, and linear_regression overlap heavily with this tool's capabilities, an agent gets no signal for choosing this bundled profiler over the narrower tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
anovaB
Run a one-way ANOVA and return the F statistic, p value and degrees of freedom.
``groups`` is a nested list of samples; ``"@<path>"`` file references are
not supported for this parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| groups | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does add genuine value by disclosing that '@<path>' file references are NOT supported for groups (a constraint the schema does not express) and by listing the returned statistics, but it says nothing about assumptions, error behavior, or the shape of the result payload.
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 paragraphs, front-loaded with the operation and its returns, with the parameter constraint called out separately. No filler, though the '@path' note could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter statistical test with no output schema, the description covers inputs and returns adequately but omits the assumptions and alternative-selection context an agent needs to call the right test. It is viable but leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% — the schema only supplies a bare title 'Groups' — so the description must compensate, and it does: it explains that groups is a nested list of samples and explicitly rules out '@<path>' file references, which is exactly the kind of constraint an agent would otherwise guess wrong.
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 ('Run a one-way ANOVA') and even names the returned statistics (F statistic, p value, degrees of freedom), so the operation is unambiguous. It does not, however, differentiate itself from near siblings such as t_test or chi2_test, which is the only thing keeping it from 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?
There is no when-to-use guidance at all — nothing tells the agent to prefer this over t_test when comparing more than two group means, or what assumptions (normality, homoscedasticity) apply. The usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arimaB
Fit an ARIMA model and optionally forecast.
``series`` may be an inline list or an ``"@<path>"`` file reference.
``forecast_steps`` is limited to 0..10000; ``conf_alpha`` must be in (0, 1).
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | ||
| series | Yes | ||
| conf_alpha | No | ||
| forecast_steps | No | ||
| seasonal_order | 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 validation constraints not present in the schema ('forecast_steps' 0..10000, 'conf_alpha' in (0,1)), but says nothing about return values, model-fitting behavior, or failure modes for a compute 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?
Front-loads the purpose in the first sentence, then adds input-format and constraint details. Every sentence earns its place, though the constraint sentence could be slightly tighter.
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, no annotations, and 5 parameters, the description is only partially complete. It covers the series input and two constraints but omits the meaning of 'order'/'seasonal_order' and any indication of what a fit or forecast returns.
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. It clarifies the non-obvious 'series' input (inline list vs '@<path>' file reference) and bounds two numeric params, but leaves 'order' and 'seasonal_order' entirely unexplained despite their being the core ARIMA specification (p,d,q).
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: 'Fit an ARIMA model and optionally forecast.' An agent can immediately tell this is ARIMA-specific modeling rather than generic forecasting. However, it does not explicitly differentiate itself from the sibling 'forecast' tool, 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?
There is no guidance on when to use this versus alternatives like 'forecast', 'time_series_decompose', or 'stationarity_test'. The 'optionally forecast' phrase implies a use case but no conditions, prerequisites, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chi2_testB
Run a chi-square goodness-of-fit test (1-D) or independence test (2-D table).
| Name | Required | Description | Default |
|---|---|---|---|
| expected | No | ||
| observed | 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 behavioral burden. It states only what the test does; it does not disclose assumptions (e.g. expected frequency requirements), default handling of the optional expected parameter, or what the test returns.
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?
A single, front-loaded sentence with no wasted words. It efficiently communicates the tool's scope and the two main variants.
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 statistical test with no annotations, no output schema, and 0% schema description coverage, the description is too sparse. It omits parameter meaning, assumptions, and result interpretation, leaving an agent with insufficient context to call it correctly beyond the basic test name.
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 explain the parameters. It hints at data dimensionality for observed but says nothing about the expected parameter, its optional/null default, or the distinction between observed and expected arrays.
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 ('Run') and resource ('chi-square goodness-of-fit test' or 'independence test'), and clarifies the two data-shape variants (1-D vs 2-D table). It does not explicitly differentiate from sibling statistical tests, but the test name itself is clear.
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 when each variant applies by noting 1-D for goodness-of-fit and 2-D table for independence. However, it gives no explicit when-to-use versus alternatives and no exclusions, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convolveC
Compute the discrete convolution of two signals with numpy.convolve.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | full | |
| signal1 | Yes | ||
| signal2 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. Referencing numpy.convolve implicitly conveys standard convolution semantics, but the description says nothing about how the 'mode' affects output length, performance characteristics, or what is returned.
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?
A single front-loaded sentence with no filler. It is appropriately sized for a one-line operation, though brevity here shades into under-specification rather than elegance.
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 3-parameter tool with no annotations and no output schema, the description is too thin: it omits the accepted input forms, the meaning of 'mode', and any hint about the returned result. An agent could not reliably invoke it beyond the most literal case.
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 three parameters, so the description must compensate. It explains none of them: 'mode' is undocumented (no full/same/valid values), and the fact that signal1/signal2 accept either arrays or strings (implying identifiers or paths) is 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?
The description gives a specific verb ('Compute') and resource ('discrete convolution of two signals') and anchors it to numpy.convolve, so the agent knows the exact operation and library semantics. It does not, however, differentiate itself from adjacent siblings such as filter_signal or fft_analysis.
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 mention of alternatives (e.g., using FFT-based convolution via fft_analysis for large signals), and no stated preconditions. The agent must infer applicability from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
correlationA
Compute the Pearson, Spearman or Kendall correlation coefficient and its p value.
``x`` and ``y`` may be passed inline or as ``"@<path>"`` file references.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| method | No | pearson |
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 that x and y accept an inline array or an '@<path>' file reference, which is real behavioral context, but says nothing about length-matching requirements, handling of ties/missing data, or output format.
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 purpose, with zero filler. The input-form note is the only additional detail and it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter compute tool with no output schema, the description adequately conveys what is computed (a coefficient and a p value). It omits validation expectations (equal-length inputs) and the return structure, but these are minor for a pure statistical computation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies the dual input form for x and y (inline vs '@<path>'), which the schema does not, and its method list implies the accepted method values. However, it never explicitly maps the three method names to the 'method' parameter or notes the 'pearson' default, leaving a 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?
States a specific verb (Compute) and resource (correlation coefficient and its p value) and enumerates the exact supported variants (Pearson, Spearman, Kendall). This clearly distinguishes it from siblings like t_test, anova, and linear_regression.
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 use this tool versus alternatives such as linear_regression, and no guidance on which of the three methods to pick or under what conditions. Usage is only implied by the tool's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cox_regressionB
Fit a Cox proportional hazards regression with statsmodels PHReg.
``formula`` contains only the covariate terms (for example ``"x1 + x2"``).
``data`` is a ``{column: list}`` mapping or an ``"@<path>.csv"`` reference.
Event indicators must be 0/1 and durations must be positive.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| formula | Yes | ||
| event_col | Yes | ||
| duration_col | 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 add real domain constraints: formula holds covariates only, data accepts a mapping or '@path.csv' reference, event indicators must be 0/1, durations must be positive. However, it says nothing about return values, convergence behavior, or failure modes, leaving notable 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?
The operation is front-loaded in the first sentence, followed by tightly scoped clarifications of formula, data, and input constraints. No filler sentences; each line adds 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?
For a 4-parameter statistical tool with no annotations, 0% schema coverage, and no output schema, the description covers inputs adequately but omits what the tool returns (coefficients/hazard ratios), error handling, and how duration_col/event_col are supplied. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does so well: it clarifies the formula's scope (covariates only, with an example), the accepted data formats, and the value constraints for the event and duration inputs. It never names duration_col/event_col explicitly, but the constraints clearly map to them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — fitting a Cox proportional hazards regression via statsmodels PHReg — which is a distinct statistical model among siblings like linear_regression, glm, and kaplan_meier. It does not, however, explicitly differentiate itself from related survival/modeling 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?
There is no guidance on when to use Cox PH regression versus alternatives such as kaplan_meier (non-parametric survival) or glm, nor any prerequisite context. The agent must infer usage purely from the model name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
curlC
Compute the curl of a 3-dimensional vector field.
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | ||
| variables | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states what the tool computes but omits critical context such as whether the computation is symbolic or numeric, what the return value looks like, and any assumptions about the input field or variables.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately concise for the core action, though its extreme brevity leaves important details unsaid.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two required, undocumented parameters, no annotations, and no output schema, the description is incomplete. It does not explain how to structure inputs or what to expect as output, leaving the agent with insufficient information to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the two required parameters. It provides no information about the expected format of 'field' (e.g., list of component expressions) or 'variables' (e.g., list of variable names). The parameters are entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('compute') and resource ('curl') with scope ('3-dimensional vector field'). It clearly identifies the operation, but does not differentiate from sibling vector-calculus tools like divergence or gradient, 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?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no conditions or exclusions. The agent is left to infer that this is the right tool for curl calculations based solely on the name and one-line purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
curve_fitC
Fit y = model(x) to data with scipy.optimize.curve_fit using a sympy-parsed expression.
| Name | Required | Description | Default |
|---|---|---|---|
| p0 | No | ||
| model | Yes | ||
| xdata | Yes | ||
| ydata | Yes | ||
| param_names | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full behavioral burden and mostly does not meet it. It does not say what is returned (fitted parameters, covariance, residuals), what happens on non-convergence, what default p0 is used, or which scipy method is selected — all things an agent needs before calling a numerical optimizer.
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?
A single well-formed sentence with the core action front-loaded and no filler. Nothing in it is redundant or padding.
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 5-parameter numerical tool with zero schema documentation, no annotations, and no output schema, the description is far too thin. It omits return values, convergence/error behavior, the meaning of the string-accepting data parameters, and the default initial-guess behavior, leaving the agent under-informed for a nontrivial call.
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 clarifies 'model' as a sympy-parsed expression. Nothing explains p0 (initial guess), param_names, or why xdata/ydata accept strings in addition to numeric arrays — the string variant is completely opaque.
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?
Names a specific operation (least-squares curve fitting) plus the exact engines involved (scipy.optimize.curve_fit with a sympy-parsed model expression), which is more specific than a generic 'fit' verb. It does not, however, distinguish itself from nearby siblings such as linear_regression, nonlinear_mixed_lm, global_optimize, or optimize_minimize, 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 over linear_regression, global_optimize, interpolate_1d, or optimize_minimize, nor any prerequisite or constraint. The only implicit signal is that the model is a sympy expression, which hints at nonlinear parametric fitting but is not framed as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describeB
Return descriptive statistics (mean, sample std, quartiles, skew, kurtosis) for a sample.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full burden; it does disclose the exact return set (mean, sample std, quartiles, skew, kurtosis), which is genuinely useful. It says nothing about how the alternative string form of the input is interpreted, how missing values are handled, or what happens with empty/constant samples.
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?
One sentence, no filler, with the statistic list embedded where it is most useful. Nothing could be cut without losing 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?
Return values are covered, but for a tool with no annotations, no output schema, and an ambiguous anyOf input, the definition leaves the input contract undefined. An agent could call it with a wrong string form and have no way to know.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter is an anyOf of number-array or string, so the schema alone leaves real ambiguity. The description never clarifies whether the string is a file path, a column name, or delimited values, so it fails to compensate for the coverage 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?
States a specific verb (Return) and resource (descriptive statistics) and enumerates exactly which statistics are produced, which is more informative than most sibling stats tools like 'distribution' or 'correlation'. It does not, however, differentiate itself from the near-named sibling describe_file, leaving an agent to guess whether this expects raw data or a file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a sample' hints at the intended input, but there is no explicit when-to-use guidance, no prerequisites, and no routing to alternatives such as describe_file, distribution, or analyze_dataset. The agent gets no help choosing this over its several overlapping siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_fileC
Describe one numeric column of a CSV/TSV/TXT/JSON/NPY file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| column | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full disclosure burden. It does not state what statistics or summary is returned, whether the operation is read-only, what happens for missing/non-numeric columns, or any file-size/parsing caveats.
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?
A single sentence with zero filler, and the core scope ('one numeric column') is front-loaded. It is appropriately sized for a short description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a file-parsing/statistics tool with no annotations, no output schema, and 0% parameter documentation, the description is far too thin. An agent lacks enough information about column selection, return values, or supported behavior to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only vaguely mentions 'one numeric column' and file types, but never explains that 'column' accepts a name or index, what happens when it is omitted (default null), or what the required 'path' should point to.
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 ('Describe') and resource ('one numeric column of a CSV/TSV/TXT/JSON/NPY file'), which is more precise than the generic sibling 'describe'. However, it does not differentiate itself from that sibling, leaving an agent to guess which one to use.
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 use this tool versus alternatives like 'describe', 'distribution', or 'analyze_dataset'. The only implied usage is inferring from file formats, which is weak context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
distributionC
Evaluate pdf/cdf/ppf/rvs or fit a scipy.stats distribution by attribute name.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| x | No | ||
| data | No | ||
| dist | Yes | ||
| seed | No | ||
| params | No | ||
| operation | 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 behavioral burden, yet it discloses almost nothing: no return format, no side effects, no error behavior, no explanation of how 'fit' differs from evaluation. 'By attribute name' is the only real behavioral hint.
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?
A single, front-loaded sentence with no wasted words. It is efficient, though arguably too terse for a 7-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 7-parameter tool with 0% schema coverage, no annotations, and no output schema, the one-sentence description is far from complete. An agent cannot determine valid operations, parameter roles, or return values from this definition 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% across 7 parameters. The description hints at the meaning of 'operation' (pdf/cdf/ppf/rvs/fit) and 'dist' (attribute name), but leaves n, x, data, seed, and params entirely 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 states a clear verb+resource: evaluate (pdf/cdf/ppf/rvs) or fit a scipy.stats distribution. The named operations and 'by attribute name' give a reasonably precise picture of what the tool does, though it does not contrast itself with siblings like curve_fit or describe.
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 guidance. The description lists operations but never states which operation to choose under which circumstances or what prerequisites (e.g., data required for fitting, x required for pdf) apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
divergenceC
Compute the divergence of a vector field with respect to the given variables.
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | ||
| variables | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden and does not meet it. It says nothing about whether the computation is symbolic or numeric, what form the result takes (a scalar expression vs. an evaluated grid), or how errors are surfaced.
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?
A single front-loaded sentence with no filler or redundancy. It is efficiently written, though its brevity is partly under-specification rather than pure economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-required-parameter math tool with no annotations and no output schema, the description omits the return type and the field/variable correspondence. An agent has no way to know the expected input shape beyond the bare array types.
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 loosely maps 'vector field' and 'given variables' onto the two params. It never explains that 'field' is a list of component expressions or how its ordering relates to 'variables', which is essential for a correct call.
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: 'Compute the divergence of a vector field'. The operation is intrinsically distinct from siblings gradient, curl and laplacian, so an agent can identify what it does. It does not explicitly contrast itself with those siblings, keeping it 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?
No indication of when to choose this over curl, gradient or laplacian, and no prerequisites or operand-type expectations. Usage must be inferred purely from the mathematical name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dsolve_odeC
Solve an ODE analytically with sympy.dsolve, optionally with initial conditions.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | t | |
| y | No | y | |
| ics | No | ||
| equation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals that the solve is analytic and uses sympy.dsolve, but says nothing about return format, failure modes, assumptions, or whether the input equation must be in a specific syntax.
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?
A single, front-loaded sentence with no wasted words. The core purpose is stated immediately, and every clause (analytic solve, sympy.dsolve, optional ICs) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter solver with no annotations, no output schema, and 0% schema description coverage, the description is far too sparse. An agent lacks essential context about parameter meanings and expected input formats, making correct invocation uncertain.
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, but it only vaguely alludes to initial conditions (the 'ics' parameter). The roles of 'x', 'y', and 'equation' are left entirely unexplained, and the expected format for equations and ICs is not provided.
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 and resource ('Solve an ODE analytically') and names the implementation (sympy.dsolve). It is clear but does not distinguish the tool from sibling solvers such as symbolic_solve or find_roots, 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?
The description offers no when-to-use guidance, no conditions for choosing this tool over alternatives like symbolic_solve or solve_ode, and no prerequisites. 'Optionally with initial conditions' is a capability, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fft_analysisC
Compute the single-sided amplitude spectrum of a real signal via numpy rfft.
| Name | Required | Description | Default |
|---|---|---|---|
| signal | Yes | ||
| sample_rate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does implicitly signal that inputs must be real-valued (a genuine constraint, since rfft is used), but it says nothing about the return structure, frequency binning, DC/Nyquist handling, or the effect of sample_rate — significant gaps for a spectral analysis 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?
A single front-loaded sentence with no filler; the purpose is stated immediately. It is efficient, though the extreme brevity is part of why other dimensions suffer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and 0% parameter documentation, the description is too thin. It should at minimum describe what is returned (frequency axis plus amplitudes), how units relate to sample_rate, and when to prefer power_spectrum or stft.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It partially does so for 'signal' by declaring the real-signal requirement, but 'sample_rate' (with its default of 1) is never mentioned, leaving frequency scaling — a critical semantic — completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Compute'), a specific output ('single-sided amplitude spectrum'), and a specific input domain ('real signal'), and it even names the algorithm (numpy rfft). This distinguishes it reasonably well from power_spectrum and stft, but it never explicitly contrasts itself with those close siblings, 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?
There is no statement of when to use this tool versus power_spectrum, stft, wavelet_transform, or filter_signal, all of which appear in the sibling list. No prerequisites and no exclusions are given; the agent must infer context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filter_signalB
Filter a signal with a Butterworth design and zero-phase filtfilt.
``kind`` is lowpass, highpass, bandpass or bandstop. ``cutoff`` is in Hz;
lowpass/highpass take a scalar and bandpass/bandstop take ``[low, high]``.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| order | No | ||
| cutoff | Yes | ||
| signal | Yes | ||
| sample_rate | Yes |
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 two real traits beyond the schema: the filter family (Butterworth) and that it is zero-phase (filtfilt, i.e. non-causal, no phase shift) — meaningful for time-series work. However it omits edge/padding behavior, the minimum-length constraint filtfilt imposes, and that the operation is non-mutating.
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 plus a compact parameter block, front-loaded with the operation and method. Every clause carries information; nothing is padding.
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 5-parameter, 4-required tool with no annotations and no output schema, the description covers the two error-prone arguments well but leaves signal's accepted forms, sample_rate's units, and order's effect unspecified. An agent could probably invoke it, but would be guessing on the signal input format and the sampling-rate convention.
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 partially does: it enumerates kind's four values and specifies cutoff's units (Hz) and shape (scalar for lowpass/highpass, [low, high] for bandpass/bandstop) — genuinely useful information no schema field provides. It says nothing about signal (array vs. string, i.e. literal path?), sample_rate's units or relationship to cutoff, or order (default 4).
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 ('Filter a signal') and pins down the algorithm ('Butterworth design and zero-phase filtfilt'), which implicitly separates it from siblings like wavelet_denoise, convolve, stft, and fft_analysis. It stops short of naming any sibling outright, but the method detail is enough for an agent to route correctly.
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 never says when to pick this over wavelet_denoise, convolve, or a spectral method, nor does it state prerequisites or exclusions. The only usage signal is the parameter syntax for kind/cutoff, which is configuration rather than guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_peaksC
Find local maxima in a signal, optionally filtered by height, distance or prominence.
| Name | Required | Description | Default |
|---|---|---|---|
| height | No | ||
| signal | Yes | ||
| distance | No | ||
| prominence | 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 says the operation finds local maxima and can filter by height, distance, or prominence, but it does not disclose return format, edge-case behavior, whether the signal string is a file path, or any other operational detail an agent would need before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with zero waste. The core action is front-loaded, and optional filters are clearly appended.
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 four parameters, no output schema, no annotations, and 0% schema description coverage, a one-sentence description is not enough. It omits parameter semantics, return behavior, and usage context, leaving significant gaps for an agent to fill.
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, but it only names three of the four parameters (height, distance, prominence) without explaining their meaning, units, or how they filter peaks. The required 'signal' parameter is implied but its type ambiguity (array versus string) is not addressed.
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 ('Find') and resource ('local maxima in a signal'), making the core function clear. It also mentions optional filtering criteria, but does not distinguish the tool from siblings like filter_signal or find_roots, leaving sibling differentiation to the agent.
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 explicit guidance on when to use this tool versus alternatives such as filter_signal, find_roots, or peak-related siblings. The presence of optional filters is noted but without context on when those filters matter or what problem they solve.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_rootsB
Find a scalar root of an expression using brentq (bracket) or Newton's method (x0).
| Name | Required | Description | Default |
|---|---|---|---|
| x0 | No | ||
| expr | Yes | ||
| params | No | ||
| bracket | No | ||
| variable | No | x |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears the full disclosure burden. It usefully reveals the method-selection logic (bracket vs x0) which is real behavioral context, but it is silent on convergence, failure behavior, or what happens when conflicting/missing method arguments are given.
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?
A single front-loaded sentence with zero filler. Every clause (root type, two methods, their triggering arguments) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter numerical tool with no annotations and no output schema, key information is missing: the expression syntax, the role of params and variable, and mutual exclusivity of bracket vs x0. An agent could invoke it but would be guessing on several required details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across all 5 parameters. The description explains the meaning of only bracket and x0 (method routing); it says nothing about expr syntax, params, or the variable default, leaving the majority of parameters undocumented in both schema and prose.
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 scalar root of an expression') and even names the numerical methods (brentq, Newton's method), which distinguishes it from symbolic siblings like symbolic_solve. It does not explicitly contrast itself with symbol approach, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parentheticals imply the selection rule: supply a bracket to use brentq, supply x0 to use Newton's method. That is useful implied guidance, but it never says when to prefer this tool over symbolic_solve or optimize_minimize, nor any exclusion/precondition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forecastB
Forecast a univariate series with ARIMA or Holt-Winters exponential smoothing.
ARIMA uses the given ``order`` (default ``[1, 0, 0]``); when
``seasonal_period`` is set the seasonal order is ``[1, 0, 0, period]``.
Exponential smoothing uses an additive trend and, when a period is given,
an additive seasonal component. ARIMA intervals are analytic; exponential
smoothing intervals are a normal approximation from the residual standard
deviation.
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | ||
| steps | No | ||
| method | No | arima | |
| series | Yes | ||
| conf_alpha | No | ||
| seasonal_period | 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 well on methodology: it discloses the default ARIMA order, how seasonal order is derived from seasonal_period, that exponential smoothing uses additive trend/seasonal components, and that ARIMA intervals are analytic while smoothing intervals are a normal approximation. It does not state what is returned (point forecasts plus interval bounds) or how errors are surfaced, which keeps 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 with the core purpose and structured into method-specific details with no filler. Slightly dense in places, but every sentence adds substantive 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?
For a 6-parameter tool with 0% schema coverage, no annotations, and no output schema, the description should define the remaining parameters and the shape of the result. It covers method mechanics decently but leaves several inputs and the return value unexplained.
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. It clarifies `order` (default [1,0,0]) and `seasonal_period` (drives seasonal order / seasonal component) well, but `steps`, `conf_alpha`, and especially `series` (array-of-numbers vs string) are left entirely 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 names a specific action (forecast) and resource (univariate series) and enumerates the two supported methods plus their configuration. It is clear on its own, but it never differentiates itself from the sibling `arima` tool, which overlaps heavily with the ARIMA path described here.
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 explicit when-to-use or when-not-to-use guidance. The description explains how the two methods behave but never says when to prefer this tool over `arima`, `time_series_decompose`, or `stationarity_test`, nor what prerequisites (e.g., stationarity) apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geeB
Fit a generalized estimating equation model.
``data`` is either a ``{column: list}`` mapping or an ``"@<path>.csv"``
reference. ``groups`` names the clustering column. ``family`` is one of
gaussian, binomial or poisson; ``cov_struct`` is one of independence,
exchangeable or autoregressive.
Returns population-averaged coefficients with robust standard errors,
z values and p values.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| family | No | gaussian | |
| groups | Yes | ||
| formula | Yes | ||
| cov_struct | No | exchangeable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It does usefully disclose the two accepted data input forms, the validated categorical options for family and cov_struct (which the schema omits), and the return payload (population-averaged coefficients with robust SEs, z and p values). It does not address failure modes, weighting, or parameter estimation details.
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?
Three short paragraphs: purpose first, then input semantics, then return shape. Front-loaded and free of filler, with only minor reStructuredText backtick noise.
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 statistically non-trivial tool with no output schema, the description helpfully covers the return values and most input formats. However the required formula parameter is left completely undefined, and there is no output schema to fall back on, leaving a meaningful gap 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 description must compensate, and it largely does: it explains data (mapping vs '@path.csv' reference), groups (clustering column), family (three allowed values) and cov_struct (three allowed values) — effectively supplying the enums absent from the schema. It omits any explanation of the formula parameter, which is required, so it falls short of full compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Fit a generalized estimating equation model.' This is clearly distinguishable from generic regression siblings like glm or linear_regression, though the description never names those close alternatives (mixed_lm, glm) explicitly, so the differentiation is implicit rather than stated.
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 a GEE is the right choice versus glm, mixed_lm, or nonlinear_mixed_lm, which are the obvious neighbouring tools. The description only says what the tool does, leaving the selection decision entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
glmB
Fit a generalized linear model from a formula and a data table.
``family`` is one of gaussian, binomial, poisson, gamma, inverse_gaussian
or negativebinomial. ``data`` is either a ``{column: list}`` mapping or an
``"@<path>.csv"`` reference (relative paths resolve against ``output_dir()``).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| family | Yes | ||
| formula | 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 add genuine behavioral context beyond structured fields: the accepted family values (schema declares family as an unconstrained string) and the fact that relative CSV paths resolve against output_dir(). However, it says nothing about what fitting returns, whether a model object or summary is produced, or error conditions.
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 compact parameter clarifications. Two short paragraphs with no filler, though the trailing path-resolution note is parenthetical detail that could be tightened.
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 should say more about the result of a fit (coefficients, summary, diagnostics) and any modeling assumptions. It adequately covers input shapes but leaves the output side entirely unspecified for a moderately complex modeling operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It fully documents family (enumerating six valid values absent from the schema) and data (two accepted forms: a {column: list} mapping or an '@<path>.csv' reference). But formula is only alluded to as 'a formula' with no syntax or dialect specified, leaving one of three required parameters 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 (fit) and resource (generalized linear model) and identifies the required inputs (formula, data table). An agent can distinguish it from sibling regression tools by the model class, though the description never explicitly contrasts it with linear_regression or mixed_lm.
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 explains parameter formats but gives no when-to-use guidance, no prerequisites, and no indication of when to choose glm over siblings like linear_regression, mixed_lm, or gee. Usage 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.
global_optimizeB
Minimize a scalar expression with a global optimizer.
Variables are named ``x0, x1, ...`` in the order of ``bounds`` (or ``x0``).
``method`` is ``differential_evolution`` or ``dual_annealing`` (both require
finite ``bounds``) or ``basinhopping`` (requires a starting point ``x0``).
Keys of ``params`` are injected as additional symbolic constants.
| Name | Required | Description | Default |
|---|---|---|---|
| x0 | No | ||
| seed | No | ||
| bounds | No | ||
| method | No | differential_evolution | |
| params | No | ||
| maxiter | No | ||
| objective | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the variable-naming convention, per-method input requirements, and the params-injection behavior. It does not cover determinism (seed), convergence/failure behavior, or return shape, which matter for an optimizer.
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?
Short and front-loaded: the purpose leads, then three tight lines covering variable naming, method constraints, and params. Every sentence adds information with no padding.
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 7-parameter tool with no annotations and no output schema, the description covers the inputs that affect correctness but is silent on return values, convergence/iteration reporting, and the role of seed and maxiter. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the semantics of x0, bounds, method, and params reasonably well, but leaves seed, maxiter, and objective unexplained beyond the generic 'scalar expression' phrase.
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: 'Minimize a scalar expression with a global optimizer.' The word 'global' implicitly distinguishes it from the sibling optimize_minimize, though the sibling is never 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?
Provides conditional guidance tied to `method` (DE/dual_annealing need finite bounds, basinhopping needs x0), which tells the agent what inputs are valid per choice. However, it never states when to prefer this tool over optimize_minimize or other optimizers, so alternative selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gradientC
Compute the gradient of a scalar expression with respect to the given variables.
| Name | Required | Description | Default |
|---|---|---|---|
| expr | Yes | ||
| variables | 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 behavioral burden. It does not disclose whether the result is symbolic or numeric, the return form (a vector of expressions), ordering of components, or any error behavior for non-scalar input. For a tool with zero annotation coverage this is a substantial gap.
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?
A single well-formed sentence with the operation front-loaded and no filler. It is appropriately brief, though brevity here edges toward under-specification rather than genuine conciseness.
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, no annotations, and 0% parameter documentation, the description should explain the return value (component ordering, symbolic vs numeric) and input constraints. None of that is present, leaving an agent unable to predict the tool's output.
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 partially: 'scalar expression' constrains the expr parameter and 'with respect to the given variables' explains the variables list. However, it adds no detail on expression syntax, whether variables must appear in expr, or ordering of the output, so it only partially covers the 2 undocumented params.
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 mathematical verb+resource ('compute the gradient of a scalar expression') and names the inputs it operates on. An agent can distinguish it from laplacian/divergence/curl by the operator name alone, but the description never explicitly routes among these sibling operators, 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?
There is no guidance on when to choose gradient versus the many adjacent symbolic/vector-calculus siblings (laplacian, divergence, curl, symbolic_calculus). No prerequisites, no input constraints, no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
Report tool module import status and the current tool surface.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 the two things reported (module import status, tool surface), which implies a non-mutating read, but says nothing about the report's format, success/failure semantics, or whether it has 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?
A single front-loaded sentence with no filler. The two reported items are stated immediately with zero wasted clauses.
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?
There is no output schema or annotations, so the description must convey the return content, and it does name the two categories of information returned. For a zero-parameter diagnostic this is nearly sufficient, though the format/shape of the status report remains unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema defines zero parameters, so there is nothing to document; per the rubric this yields a baseline of 4. The description correctly implies the tool takes no input, so no additional parameter detail is needed.
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 ('Report') and two concrete resources: tool module import status and the current tool surface. It is clearly distinguishable from all computational siblings (fft_analysis, linear_regression, etc.) as a diagnostic, though 'current tool surface' is slightly jargon-y and could be spelled out as 'list of registered tools'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The description does not say this should be called to diagnose missing/failed tools, does not mention any prerequisites, and names no alternatives (there are none in the sibling list, but the agent is left to infer the diagnostic context entirely).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
integer_programC
Minimize c @ x with scipy.optimize.milp (mixed-integer linear programming).
``integrality`` uses 1 for integer and 0 for continuous variables and
defaults to all-integer. ``fun`` is the minimum objective value; negate
``c`` to maximize. Default bounds are ``0 <= x <= inf``.
| Name | Required | Description | Default |
|---|---|---|---|
| c | Yes | ||
| a_eq | No | ||
| a_ub | No | ||
| b_eq | No | ||
| b_ub | No | ||
| bounds | No | ||
| method | No | highs | |
| integrality | 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 default bounds (0 <= x <= inf), the all-integer default for integrality, and that fun is the minimum objective, but says nothing about infeasibility behavior, return shape beyond fun, or solver/method 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?
Front-loaded with the core operation and kept to three tight sentences with no padding; the integrality and negation notes earn their place. Slightly under-specified rather than verbose, so conciseness is not the weak point.
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, 0%-coverage, no-output-schema tool, the description is incomplete: the constraint matrix/vector parameters that define the actual problem are never explained, so an agent cannot confidently formulate a call from 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% across 8 parameters, so the description must compensate. It explains c (objective), integrality, and bounds, but the five constraint/method parameters (a_eq, a_ub, b_eq, b_ub, method) are left entirely undocumented in both schema and description, which is a real gap for a MILP tool.
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 (minimize c @ x via scipy milp) and names the problem class (mixed-integer linear programming), which implicitly separates it from the sibling linear_program. It never explicitly routes the agent to linear_program for all-continuous problems, so sibling differentiation is only implicit.
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 explicit when-to-use guidance versus linear_program or optimize_minimize, only the implication carried by 'mixed-integer'. It does offer a useful usage note ('negate c to maximize') and integrality semantics, but nothing on exclusions or which sibling to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interpolate_1dC
Interpolate y(x) at points xi using scipy interp1d (linear/quadratic/cubic).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| xi | Yes | ||
| kind | No | linear |
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 discloses only that scipy interp1d is used and that linear/quadratic/cubic modes exist, but says nothing about extrapolation behavior, ordering or monotonicity requirements for x, edge handling, or the return shape.
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?
A single front-loaded sentence with no filler; the verb and target are stated first and the implementation detail trails. It is efficient, though it errs toward brevity at the cost of 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?
For a 4-parameter numerical tool with no annotations, no output schema, and 0% schema coverage, the description is too thin. Missing are the shape/format expectations for x, y, xi (array vs path-like string) and the return value nature.
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 not. It implies y is a function of x and that xi are target points, and it enumerates the kind options, but x, y, and xi are only titled 'X'/'Y'/'Xi' in the schema with no documented array-vs-string semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (interpolate) and resource (y(x) at points xi) and names the underlying implementation (scipy interp1d), which is enough to differentiate it from numeric siblings like curve_fit or linear_regression. It does not explicitly contrast with any sibling tool, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives such as curve_fit or a regression tool, nor any exclusions or prerequisites. The agent must infer the use case from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kaplan_meierB
Estimate survival curves with the Kaplan-Meier product-limit method.
``durations`` and ``events`` may be inline lists or ``"@<path>"`` references.
``groups`` optionally supplies one group label per observation (inline list
or ``"@<path>"`` file); when given, a separate curve is returned per group.
| Name | Required | Description | Default |
|---|---|---|---|
| events | Yes | ||
| groups | No | ||
| durations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose useful input-handling behavior: values may be inline lists or '@<path>' references, and supplying groups yields one curve per group. However, it says nothing about assumptions (e.g. censoring convention for events), error conditions, or the shape of the returned curves beyond the per-group 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?
Three short sentences, front-loaded with the core purpose and then the parameter conventions. No filler, though the backtick-heavy formatting is slightly noisy rather than informative.
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 3-parameter statistical tool with no annotations and no output schema, the description covers inputs reasonably and hints at output ('a separate curve is returned per group'), but leaves the events encoding and result structure underspecified for an agent to call it confidently.
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 partially does: it explains the inline-vs-'@<path>' duality for durations/events and that groups takes one label per observation. It omits the critical semantics of events (presumably 1=event, 0=censored), leaving a key integer-encoding meaning undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Estimate survival curves with the Kaplan-Meier product-limit method'), which is unambiguous and clearly distinct from most siblings. It does not explicitly differentiate from the nearest sibling (cox_regression), leaving the agent to 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?
No when-to-use or when-not-to-use guidance is given. The description never mentions cox_regression or any other survival-analysis sibling, nor prerequisites such as data alignment between durations and events. The only usage context is the optional groups behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
laplacianB
Compute the Laplacian of a scalar expression as the sum of second derivatives.
| Name | Required | Description | Default |
|---|---|---|---|
| expr | Yes | ||
| variables | 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. Defining the result as 'the sum of second derivatives' is genuinely useful behavioral context about what is computed, but there is no mention of the coordinate system assumed, whether the result is symbolic, or error behavior for non-scalar input.
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?
A single front-loaded sentence with no filler; the operative verb and resource come first and the clarifying definition follows.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter symbolic computation tool with no annotations, no output schema, and no parameter documentation, the description is too thin. It omits what 'variables' controls and what form the returned expression takes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description only indirectly covers 'expr' via 'scalar expression'. It says nothing about the 'variables' parameter, which determines which variables the derivatives are taken with respect to, leaving half the parameter set undocumented in both schema and prose.
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 (Compute) and resource (the Laplacian of a scalar expression), and even clarifies the mathematical definition. However, it does not differentiate itself from close siblings like gradient, divergence, or curl, which an agent operating in this calculus family would need.
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 use this versus gradient/divergence/curl/symbolic_calculus, nor any prerequisites or exclusions. The agent must infer applicability from the definition alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_programB
Minimize c @ x subject to linear inequality/equality constraints.
``fun`` is the minimum objective value; negate ``c`` to maximize. Default
bounds are scipy's ``(0, None)`` (all variables non-negative).
| Name | Required | Description | Default |
|---|---|---|---|
| c | Yes | ||
| a_eq | No | ||
| a_ub | No | ||
| b_eq | No | ||
| b_ub | No | ||
| bounds | No | ||
| method | No | highs |
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 add one genuinely useful behavioral fact: default bounds are scipy's (0, None), i.e. all variables non-negative, which clarifies what the schema's 'default: null' means. It still says nothing about infeasibility handling, solver failures, or the shape of the returned solution vector, so it is only partially transparent.
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?
Three tight sentences with the objective front-loaded, followed by the maximize trick and the default-bounds caveat. Every sentence carries distinct, non-redundant 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?
For a 7-parameter solver with 0% schema coverage, no annotations, and no output schema, the description is too thin. It never defines the constraint-matrix parameters that are the tool's core interface, nor what the return value's structure looks like beyond naming 'fun'.
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% across 7 parameters, so the description must compensate and largely does not. It explains c (objective coefficients) and bounds (default non-negativity), and gestures at 'inequality/equality constraints', but never maps a_eq/a_ub/b_eq/b_ub or the method parameter to their names, leaving most parameters undocumented anywhere.
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 mathematical resource: 'Minimize c @ x subject to linear inequality/equality constraints,' which unambiguously identifies a continuous linear-program solver. It implicitly separates itself from integer_program and optimize_minimize via the linear formulation, but never names those alternatives, so sibling differentiation is left to inference.
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 offers a how-to tip ('negate c to maximize') but no when-to-use guidance, no indication of which sibling to prefer for integer or general nonlinear problems, and no prerequisites or exclusions. An agent must infer applicability entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linear_regressionA
Fit an ordinary least-squares regression, simple or multiple, and report coefficient inference.
``x`` and ``y`` may be passed inline or as ``"@<path>"`` file references;
a file for ``x`` may contain a one- or two-dimensional array.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| feature_names | 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 genuinely non-obvious behavior: x/y may be inline or '@<path>' file references and x files may be 1D or 2D. However it says nothing about error conditions, output content, or side effects for a statistical fit.
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, purpose front-loaded, and the format conventions follow with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema, with a 3-param tool at 0% schema coverage. The description covers x and y adequately but omits feature_names and any indication of what the reported 'coefficient inference' contains, leaving gaps an agent would need.
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. It adds real meaning for x and y (inline vs file reference, 1D/2D array shape for x), but leaves feature_names entirely undocumented and does not clarify required-vs-optional status.
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: 'Fit an ordinary least-squares regression, simple or multiple, and report coefficient inference.' The OLS specification implicitly separates it from glm, mixed_lm, and curve_fit, though it does not name any sibling 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 implied by the OLS scope, which narrows it within a dense family of regression/statistics siblings (glm, mixed_lm, cox_regression, curve_fit), but there is no explicit when-to-use guidance or statement of what distinguishes it from those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_dataC
Load a CSV/TSV/TXT/JSON/NPY file and return its shape, preview, summary and data.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| column | No | ||
| max_rows | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It usefully discloses that the result includes shape, preview, summary and data, but says nothing about read behavior, memory/large-file handling, error cases for unsupported files, or how max_rows bounds the preview.
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?
One sentence, front-loaded with the action and formats, ending with the return payload. No wasted words, though the terseness contributes to the semantic gaps elsewhere.
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, no annotations, and 0% parameter coverage. The description partially compensates by naming the returned fields, but omits parameter behavior and file-handling caveats for a tool with a required path and two undocumented options.
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% for three parameters. The description's format list loosely supports 'path', but 'column' (string-or-index selection) and 'max_rows' (default 20) are never explained, so an agent must guess their effect.
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?
Specific verb (load) plus the accepted file formats and the four things returned (shape, preview, summary, data). An agent can distinguish it from save_data and describe_file. No explicit sibling callout, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus describe_file, analyze_dataset, or describe. Usage is only implied by the name and the data-oriented siblings. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matrix_computeC
Perform a dense linear-algebra operation on matrix a (and optional b).
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | No | ||
| operation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full behavioral burden but discloses almost nothing: it does not state valid values for 'operation', expected shapes/errors for mismatched 'a' and 'b', whether strings are parsed expressions, or what is returned. Only the vague input shape hint about 'a' and optional 'b' is conveyed.
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?
A single well-formed sentence with the resource and primary parameter front-loaded and zero padding. It is efficiently structured; its problem is thinness of content rather than wordiness.
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 3-parameter compute tool with no annotations, no output schema, and a free-form operation selector, the description is far too sparse. It omits the operation vocabulary, shape constraints, and return behavior — everything an agent needs 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% and the description adds no meaning beyond the schema: 'a' and 'b' are already visible, and the free-form 'operation' string — the single most important parameter — has no enumeration and no explanation of permitted values anywhere. The agent is left unable to construct a valid call.
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 verb and resource ('perform a dense linear-algebra operation on matrix a'), and the word 'dense' implicitly contrasts with the sibling sparse_compute. However, 'linear-algebra operation' is very broad and the description never names which operations are supported, so an agent cannot tell what the tool actually computes.
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 and no mention of alternatives, despite sparse_compute and other numeric siblings existing. The optional 'b' is noted in passing, but nothing tells the agent when this tool is preferred over sparse_compute or run_python.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mixed_lmA
Fit a linear mixed-effects model with a random-effects structure.
``data`` is either a ``{column: list}`` mapping or an ``"@<path>.csv"``
reference (relative paths resolve against ``output_dir()``). ``groups``
names the grouping column. ``re_formula`` optionally describes the random
effects (e.g. ``"~1"`` for random intercepts only). ``reml`` selects REML
(default) or maximum likelihood.
Returns fixed-effect estimates with standard errors, z values and p values,
the random-intercept variance, AIC/BIC and the convergence flag.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| reml | No | ||
| groups | Yes | ||
| formula | Yes | ||
| re_formula | 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 substantial work: it discloses data-source formats (mapping vs '@<path>.csv'), that relative paths resolve against output_dir(), that reml defaults to REML, and it lists the returned quantities (fixed effects, SEs, z/p, random-intercept variance, AIC/BIC, convergence flag). It does not cover error/failure behavior or missing-data handling, 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?
Well-organized: purpose first, then per-parameter clarifications, then return values. Sentences are dense with information and each earns its place, though the parameter block reads as a run-on list rather than crisp bullets.
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 5-parameter statistical tool with no annotations and no output schema, the description supplies the parameter semantics and the return contract an agent needs to call it. The one meaningful gap is the absence of any guidance on model-choice context relative to sibling regression tools.
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 four of five parameters meaningfully: data (mapping or CSV path), groups (grouping column), re_formula (random effects with an example '~1'), and reml (REML vs ML). Only formula is left undescribed, though it is a conventional input.
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: 'Fit a linear mixed-effects model with a random-effects structure.' This is clearly distinguishable from statistical siblings like linear_regression, glm, and nonlinear_mixed_lm. It stops short of explicitly naming the sibling it is not (nonlinear_mixed_lm), so it is clear but not maximally differentiating.
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 explains how to supply parameters but never says when this tool should be chosen over alternatives such as linear_regression, glm, or nonlinear_mixed_lm. There are no exclusions or prerequisites (e.g. required grouping structure), leaving the agent to infer the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monte_carloC
Sample distributions with scipy.stats and evaluate a sympy expression over the samples.
``variables`` maps each symbol used in ``expression`` to a dict whose ``dist``
entry names a scipy.stats distribution; the remaining entries are passed to
``dist.rvs`` as keyword arguments (``uniform`` additionally accepts
``low``/``high``). The same ``seed`` always reproduces the same output.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| seed | No | ||
| filename | No | ||
| variables | Yes | ||
| expression | Yes | ||
| percentiles | No | ||
| save_histogram | 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 the same seed reproduces identical output, which is a genuine behavioral trait. However it says nothing about cost (n defaults to 10000 samples), what filename/save_histogram do on write, or how invalid distributions/expressions fail.
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?
Short, front-loaded, and free of filler; the nested-variable explanation is placed where it is needed. The reST markup adds mild noise but no wasted sentences.
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 7-parameter tool with nested objects, no annotations, and no output schema, the description covers only the two hardest-to-guess params. Nothing explains n, expression syntax, percentile selection, or file output, so an agent cannot invoke it confidently beyond the happy path.
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% across 7 parameters, so the description must compensate. It explains variables (the nested object) and seed well, but leaves n, expression, percentiles, filename, and save_histogram entirely undocumented in both schema and prose.
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 compound verb+resource: sample scipy.stats distributions and evaluate a sympy expression over the samples. That is clearly distinguishable from siblings like symbolic_evaluate or distribution, 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?
It documents mechanics but never says when to reach for this over alternatives such as run_python, symbolic_evaluate, or distribution. No preconditions (e.g., expression must be a valid sympy string, symbols must match variables keys) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nonlinear_mixed_lmA
Fit a nonlinear model with one random intercept per group, approximately.
The model is ``y = f(x; params) + b_g + error`` where ``b_g`` is a random
intercept shared by the observations of group ``g``. ``model`` is a sympy
expression in ``x`` (the independent-variable name is always ``x``, taken
from the column named by the ``x`` argument) and the parameter names given
by the keys of ``p0``.
``data`` is either a ``{column: list}`` mapping or an ``"@<path>.csv"``
reference (relative paths resolve against ``output_dir()``). ``groups``,
``x`` and ``y`` are column names. All fixed parameters and every ``b_g``
are optimized together with ``scipy.optimize.least_squares``, minimizing
``sum((y - f(x; params) - b_g)^2) + penalty * sum(b_g^2)``. Setting
``random_effect=False`` drops the ``b_g`` terms and returns no
``random_effects`` field.
This is a **penalized least-squares approximation**, not a full nonlinear
mixed-effects marginal-likelihood fit: random-effect variance components
are not estimated, there is no integration over random effects, and no
standard errors are produced. The response always carries
``approximation: true`` and an explanatory ``note``.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| p0 | Yes | ||
| data | Yes | ||
| model | Yes | ||
| groups | Yes | ||
| maxiter | No | ||
| penalty | No | ||
| random_effect | 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 so well: it discloses that random-effect variances are not estimated, there is no integration, no standard errors are produced, the objective includes a penalty term, and the response always carries approximation: true plus a note. The random_effect=False branch behavior is also spelled out.
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 one-line summary is front-loaded before the equation and detail, and nearly every sentence adds substantive information. It is dense with math rather than padded, though the critical approximation caveat sits at the very end where it could be more prominent.
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 annotations and no output schema, the definition covers inputs, optimization behavior, and key return signals (random_effects field, approximation flag, note). It stops short of a full return-shape description, but given there is no output schema this is a reasonable level of detail.
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 largely does: model, x, y, groups, p0, data (both mapping and '@<path>.csv' forms), random_effect, and the role of penalty are all explained. Only maxiter is left undocumented, a minor gap for a conventional solver setting.
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 states a specific verb (Fit) and resource (nonlinear model with one random intercept per group), and the model equation makes the exact form unambiguous. This cleanly distinguishes it from siblings like mixed_lm (linear) and curve_fit (no random effects).
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 model form and the important caveat that this is an approximate penalized fit rather than a full NLME, which tells an agent when its results are appropriate. However, it never explicitly names an alternative (e.g., a full mixed-model tool) or states exclusions, so routing is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_minimizeA
Minimize a scalar expression with scipy.optimize.minimize.
Variables are named ``x0, x1, ...`` in the order of ``x0``. When ``method``
is omitted, SLSQP is used if ``constraints`` is given, otherwise L-BFGS-B
is used if ``bounds`` is given, otherwise scipy's default (BFGS).
Each constraint is ``{"kind": "ineq"|"eq", "expr": "..."}`` where ``expr``
is a sympy expression parsed with the variables and ``params``; ``ineq``
means ``expr >= 0`` and ``eq`` means ``expr == 0``.
| Name | Required | Description | Default |
|---|---|---|---|
| x0 | Yes | ||
| bounds | No | ||
| method | No | ||
| params | No | ||
| objective | Yes | ||
| constraints | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does disclose real behavioral traits: solver fallback logic (SLSQP → L-BFGS-B → BFGS) and exact constraint semantics (ineq means expr >= 0, eq means expr == 0). It omits key traits such as whether the optimization is local, whether it can fail/non-converge, and what is returned.
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 purpose sentence, then two compact paragraphs covering variable naming, default-solver selection, and constraint structure. No filler; every sentence adds information an agent needs.
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, no-annotation, no-output-schema tool, the description covers the unusual semantics well but leaves the return value, bounds format, and failure/convergence behavior unexplained. It is adequate but not complete for an agent that must interpret results or format bounds 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 coverage is 0%, so the description must compensate, and it does for most parameters: x0 ordering/variable naming, the constraint dict shape (kind/expr), and params interpolation into expressions. Bounds format (pair-of-pairs, min/max ordering) and the objective's expected syntax are only implied, leaving a modest 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?
Opens with a specific verb+resource: 'Minimize a scalar expression with scipy.optimize.minimize.' That is unambiguous and action-oriented. It does not, however, distinguish itself from sibling optimizers such as global_optimize, linear_program, or integer_program, so an agent must infer the boundary on its own.
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 explains how the default solver is chosen based on constraints/bounds/method, which is useful selection context, but it never says when to prefer this tool over global_optimize or the LP/IP siblings. Usage 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.
physical_constantA
Look up a physical constant by alias, exact name, or keyword; return value, unit and uncertainty.
| Name | Required | Description | Default |
|---|---|---|---|
| query | 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 usefully discloses the return payload (value, unit, uncertainty), but says nothing about ambiguous matches, no-match behavior, or case sensitivity — the failure modes an agent would actually hit.
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?
One sentence, front-loaded with the action and resource, ending with the return contract. 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?
There is no output schema, and the description supplies the return shape (value, unit, uncertainty), which covers the main gap. Missing only edge-case behavior for ambiguous or unmatched queries — minor for a simple read-only lookup.
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% and the schema only labels the field 'Query', so the description must compensate. Listing alias, exact name, and keyword as accepted input forms adds genuine meaning about matching strategy, though it does not specify case handling or fuzzy vs exact precedence.
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?
Specific verb (look up) plus resource (physical constant) plus accepted query forms (alias, exact name, keyword). No sibling tool performs constant lookup — unit_convert and unit_calculate operate on quantities — so the resource alone differentiates it.
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 names the three query forms, which implies how to invoke it, but gives no when-to-use guidance, no exclusions, and no pointer to alternatives such as unit_calculate. Usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plotC
Render a line/scatter/hist/bar/errorbar/contour/surface plot to a PNG file.
| Name | Required | Description | Default |
|---|---|---|---|
| dpi | No | ||
| data | Yes | ||
| kind | Yes | ||
| title | No | ||
| xlabel | No | ||
| ylabel | No | ||
| filename | 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 and discloses little: it implies a file write (PNG), but does not say where the file lands, whether filename controls the path, whether an existing file is overwritten, or what the tool returns. The required nested data object's expected structure is likewise undisclosed.
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?
A single tight sentence with no filler, and the supported chart kinds are front-loaded. It is efficient, though its brevity is partly under-specification rather than true economy.
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 7-parameter tool with a required nested object, no output schema, and no annotations, this one-line description leaves major gaps: data shape, output location, overwrite behavior, and return value are all unspecified. An agent could not reliably invoke this from 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% across 7 parameters. The description's list of plot kinds ('line/scatter/hist/bar/errorbar/contour/surface') usefully enumerates valid kind values, but the most important parameter, the required nested data object, is completely undocumented in both schema and prose.
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 (Render) plus the resource (plot) and enumerates the supported chart kinds, ending with the output artifact (PNG file). It does not, however, distinguish itself from the sibling tool plot_file, leaving it to the agent to infer which one to use.
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 and no mention of the alternative plot_file, which is the obvious competing sibling. The agent gets no signal about which plotting tool is appropriate in a given situation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plot_fileC
Plot columns from a CSV/TSV/TXT/JSON/NPY file to a PNG in the output directory.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| dpi | No | ||
| kind | Yes | ||
| path | Yes | ||
| title | No | ||
| xlabel | No | ||
| ylabel | No | ||
| filename | 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 key side effect: a PNG is written to the output directory, which is behavioral information not present in the schema. However, it says nothing about overwrite behavior, filename collisions, return value, or failure modes for unsupported formats/columns.
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?
A single front-loaded sentence with zero filler that states the operation, inputs, and output artifact. It is efficient, though arguably too terse for a 9-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?
With 9 parameters at 0% coverage, no annotations, and no output schema, the description is far too thin to support correct invocation. It omits which columns x/y select, valid `kind` values, default behaviors, and how the output file is named.
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 9 parameters, so the description must compensate and largely does not. It hints that x/y refer to 'columns' and that `kind` relates to file format, but dpi, title, xlabel, ylabel, and filename 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?
The description gives a specific verb (plot), resource (columns from a file), and result (PNG in the output directory), plus the accepted input formats. It is clear on its own but never distinguishes itself from the sibling tool `plot`, so an agent cannot tell from the text alone which one applies to a file versus in-memory data.
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 prerequisites, and no reference to alternatives such as `plot` or `load_data`. The only implicit cue is that the input is a file path, which the agent must infer from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
power_spectrumC
Estimate the power spectral density with Welch's method.
| Name | Required | Description | Default |
|---|---|---|---|
| signal | Yes | ||
| nperseg | No | ||
| sample_rate | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, and it discloses almost nothing beyond the method name. It does not mention that Welch segments the signal and averages periodograms (which constrains nperseg), what is returned (frequency bins plus PSD values), or any assumptions about the input signal.
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?
A single front-loaded sentence with zero padding or repetition. It is efficiently written, though its brevity is a symptom of under-specification rather than disciplined concision.
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, no output schema, and zero parameter documentation, the description leaves an agent missing the return values, the meaning of nperseg, and the signal input contract. For a three-parameter numerical tool this is materially incomplete.
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% for all three parameters, and the description offers no compensating detail. The non-obvious parameter 'nperseg' (segment length for Welch averaging) is left entirely unexplained, as are the accepted forms of 'signal' (array vs. string) and the units of 'sample_rate'.
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 ('Estimate the power spectral density') plus the algorithm ('Welch's method'), which is more precise than a generic 'spectrum' label. However, it does nothing to separate itself from adjacent spectral siblings such as fft_analysis or stft, so the agent gets no help choosing among 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?
There is no when-to-use guidance at all: nothing says when Welch's PSD estimate is preferable to fft_analysis or stft, nor whether a preprocessed/sampled signal is required. The agent must infer the selection criteria from domain knowledge alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_pythonA
Execute Python code in a subprocess and return captured output plus produced files.
Resource controls: code is limited to 100,000 characters; stdout and stderr
are each truncated to 20,000 characters. On timeout the whole process tree
is terminated (Windows: ``taskkill /F /T``) and the error result carries the
output captured so far plus ``elapsed_seconds`` and changed ``files``.
On Windows the child (and its descendants) is assigned to a Job Object with
a per-process memory cap: 2048 MiB by default, overridable with the
environment variable ``SCI_MCP_SANDBOX_MEMORY_MB`` (16..65536). Exceeding
the cap surfaces as ``MemoryError`` in ``stderr``. If the Job Object cannot
be created or assigned, execution continues without a hard memory cap. On
non-Windows platforms no hard memory cap is applied (the standard library
``resource`` module is not available on Windows and no portable equivalent
is used); rely on ``timeout_seconds`` and the caller's own limits there.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| timeout_seconds | 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 so richly: 100k character code limit, 20k stdout/stderr truncation, process-tree termination on timeout, the shape of the error result (partial output plus elapsed_seconds and changed files), the Windows Job Object memory cap, the SCI_MCP_SANDBOX_MEMORY_MB override and its range, the MemoryError failure mode, the silent fallback if the Job Object cannot be created, and the explicit absence of a hard cap on non-Windows. That is exceptional disclosure of limits, failure modes, and platform differences.
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 clearly delineated paragraphs on resource controls and platform-specific memory behavior. It is long, but given the absence of annotations and output schema, nearly every sentence carries necessary behavioral detail rather than 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 tool with no annotations and no output schema, the description covers the return payload, truncation behavior, timeout semantics, memory-limit behavior per platform, and failure modes. An agent has enough to invoke it correctly and interpret results without further documentation.
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 largely does: it explains the code length ceiling (100,000 characters) and the semantics of timeout_seconds (what happens on timeout, process-tree kill, error payload). It stops short of stating the default or units explicitly beyond the schema's own default of 30.
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 gives a specific verb and resource: 'Execute Python code in a subprocess and return captured output plus produced files.' An agent immediately understands this is a general-purpose code execution tool. It does not, however, explicitly differentiate itself from the many specialized numeric siblings (fft_analysis, curve_fit, etc.), 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?
The description never says when to reach for run_python versus the dozens of specialized sibling tools, nor does it name any alternative. The only guidance is implicit ('rely on timeout_seconds and the caller's own limits'), which is operational rather than a when-to-use/when-not-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_dataC
Save numeric data as CSV, JSON or NPY under the configured output directory.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| format | No | csv | |
| filename | Yes | ||
| column_names | 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 discloses the destination ('configured output directory') and formats, but says nothing about overwrite behavior, permissions, return value, or whether the directory must exist.
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?
A single front-loaded sentence with no filler; the verb, resource, formats, and destination are all packed efficiently.
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 4-parameter write tool with no annotations, no output schema, and 0% schema description coverage, the one-line description is insufficient. Key operational details about file writing and parameter meaning are 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%, so the description must compensate. It only loosely maps to the 'format' parameter via the format list and implies numeric data, leaving 'filename' and 'column_names' (and the accepted array/dict data shapes) entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (save) and resource (numeric data) plus the supported output formats and destination directory. It is clearly distinguishable from the inverse sibling load_data, though it never names it 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?
No guidance on when to use this versus alternatives, no prerequisites, no note about the required output directory being pre-configured. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_burgers_1dA
Solve u_t + uu_x = nuu_xx with explicit finite differences.
``u_x`` uses a centred difference and ``u_xx`` a second-order centred
difference. ``initial`` is an expression in x; the ends use the constant
Dirichlet values ``left`` and ``right``. The explicit scheme requires
dt <= dx^2/(2*nu) (diffusion) and dt <= dx/max|u| (CFL); a violation is
reported as an error with a hint to increase nt. The full (t, x) grid is
saved to .npz and returned downsampled to at most 20 space and 20 time
points.
| Name | Required | Description | Default |
|---|---|---|---|
| nt | No | ||
| nu | Yes | ||
| nx | No | ||
| left | No | ||
| right | No | ||
| t_end | No | ||
| length | No | ||
| initial | No | sin(pi*x) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden and does well: it discloses the explicit scheme, the two stability limits (dt <= dx^2/(2*nu) and CFL dt <= dx/max|u|), the exact error behavior (violation reported as an error with a hint to increase nt), and the side effect of writing the full grid to .npz while returning a downsampled grid. This is unusually complete for a no-annotation 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?
Front-loaded with the governing equation, then discretization, boundary conditions, stability limits, and return behavior in tight sequence. Every sentence carries distinct information; there is no padding.
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 value (grid downsampled to at most 20x20) and the .npz side effect. The remaining gap is that the numerical/domain parameters (nx, nt, t_end, length) are left undocumented for an 8-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description must compensate. It does clarify 'initial' (an expression in x), 'left'/'right' (constant Dirichlet values), and implicitly links nu, dx, and dt through the stability formulas, but nt, nx, t_end, and length are never defined. It covers roughly half the 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?
States a specific verb (solve) and resource (Burgers' equation in 1D) and gives the exact PDE u_t + u*u_x = nu*u_xx. This uniquely distinguishes it from siblings like solve_heat_1d, solve_wave_1d, and solve_pde_1d without opening 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?
Usage is implied by the specific PDE stated, but the description never says when to use this vs the generic solve_pde_1d or the other named solvers. The stability constraints hint at applicability but are not framed as when-to-use guidance, and no exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_heat_1dA
Solve u_t = alpha*u_xx with explicit FTCS and configurable ends.
``nx`` is the number of spatial intervals (nx+1 grid points) and ``nt`` the
number of time steps. The scheme requires r = alpha*dt/dx^2 <= 0.5; larger
values are rejected as unstable. Each of ``left``/``right`` is either a
float (Dirichlet value) or a dict:
``{"type": "dirichlet", "value": v}``,
``{"type": "neumann", "flux": q}`` or
``{"type": "robin", "h": h, "ambient": a}``.
Sign conventions: ``flux`` is the x-derivative du/dx at the boundary, not
the outward-normal derivative. At the left end the outward normal is -x,
so the outward-normal derivative there is -flux; at the right end it is
+flux. The Robin condition uses the same x-derivative convention at both
ends: ``h*(u - ambient) + du/dx = 0`` (unit conductivity k), i.e.
``h*(u - ambient) - du/dn = 0`` on the left and
``h*(u - ambient) + du/dn = 0`` on the right. Neumann/Robin ends use ghost
nodes; Robin is applied at the new time level so that large h remains
stable. The full grid is saved as .npz, while the returned arrays are
downsampled to at most 100 spatial and 50 time points.
| Name | Required | Description | Default |
|---|---|---|---|
| nt | Yes | ||
| nx | Yes | ||
| left | No | ||
| alpha | Yes | ||
| right | No | ||
| t_end | Yes | ||
| length | Yes | ||
| initial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so richly: the failed-input behavior (unstable r rejected), the ghost-node treatment, the stability-motivated choice to apply Robin at the new time level, the full-grid .npz save, and the downsampling of returned arrays to <=100 spatial / <=50 time points. The explicit sign conventions for flux vs outward-normal derivative are exactly the kind of behavioral detail an agent cannot infer elsewhere.
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 PDE and scheme, then grid, stability, boundary types, sign conventions, implementation notes, and output behavior. It is dense and long, but nearly every clause carries load for a genuinely complex numerical tool; the extended Robin sign discussion is verbose yet defensible because it is error-prone.
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, annotation-free tool with no output schema, the description covers the scheme, boundary handling, stability, and even return-value behavior (downsampled arrays + full .npz). The main residual gaps are the undocumented semantics of alpha/length/t_end and, critically, the expected format of `initial`.
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% across 8 params, so the description must compensate. It explains nx ('nx+1 grid points'), nt, and gives full structure for left/right (float vs {dirichlet|neumann|robin} dicts). However alpha, length, t_end, and especially `initial` (a string whose expected format is never stated) are left undocumented, so half the parameters still lack semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb + resource and the exact mathematical problem: 'Solve u_t = alpha*u_xx with explicit FTCS and configurable ends.' By pinning the constant-coefficient 1D heat PDE and the FTCS scheme, it clearly separates this from siblings like solve_heat_1d_variable, solve_heat_3d, and solve_burgers_1d without the agent 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?
Usage is only implied through the mathematical spec and the stability constraint ('r = alpha*dt/dx^2 <= 0.5; larger values are rejected as unstable'), which tells the agent about valid inputs but not when to choose this tool over alternatives. No alternatives (e.g. the variable-coefficient or implicit solvers) are named and there are no explicit inclusions/exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_heat_1d_variableA
Solve u_t = d/dx(alpha(x) * du/dx) with an explicit flux scheme.
``alpha_expr`` is an expression in x and must be strictly positive on the
spatial grid. Face conductivities ``alpha(x_{i+1/2})`` and
``alpha(x_{i-1/2})`` are evaluated on half nodes, giving the conservative
flux form
u_i^{n+1} = u_i^n + dt/dx^2 * (
alpha_{i+1/2} (u_{i+1}^n - u_i^n)
- alpha_{i-1/2} (u_i^n - u_{i-1}^n))
The explicit scheme is rejected when ``dt * max(alpha) / dx^2 > 0.5``.
``nx`` is the number of intervals (nx+1 nodes), ``nt`` the number of time
steps. The ends use constant Dirichlet values. The full (t, x) grid is
saved to .npz; returned arrays are downsampled to at most 100 space and
50 time points.
| Name | Required | Description | Default |
|---|---|---|---|
| nt | No | ||
| nx | No | ||
| left | No | ||
| right | No | ||
| t_end | No | ||
| length | No | ||
| initial | No | sin(pi*x) | |
| alpha_expr | 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 the numerical scheme, the stability rejection condition (dt*max(alpha)/dx^2 > 0.5), Dirichlet end conditions, and the return behavior (full grid to .npz, arrays downsampled to 100x50). It omits permission/auth context, but that is minor for a local 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 PDE and scheme are front-loaded, then constraints, then return behavior, with no filler. The math block is dense but each line earns its place; format is slightly heavy for an agent reader but not wasteful.
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 and no annotations, so the description must stand alone. It covers the model, scheme, stability limit, boundary conditions, and output downsampling, which is enough to call the tool correctly, with only minor gaps in per-parameter documentation (length, t_end, initial).
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% across 8 params, so the description must compensate. It meaningfully defines alpha_expr (expression in x, positive on grid), nx (intervals, nx+1 nodes), nt (time steps), and implies left/right via 'constant Dirichlet values', but leaves length, t_end, and initial (only inferable from its sin(pi*x) default) undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: solving u_t = d/dx(alpha(x) du/dx) for variable-conductivity heat flow, and names the scheme (explicit flux form). The variable coefficient clearly distinguishes it from the constant-coefficient sibling solve_heat_1d without opening 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?
Usage is implied by the problem (spatially varying alpha) and the constraint that alpha must be strictly positive, but there is no explicit 'use this instead of solve_heat_1d / solve_pde_1d' routing or statement of prerequisites beyond positivity. The agent can infer the case but is not told it directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_heat_3dA
Solve u_t = alpha*(u_xx + u_yy + u_zz) on the unit cube with explicit FTCS.
``nx``, ``ny``, ``nz`` are the number of intervals per axis (dx = 1/nx,
...) and ``nt`` the number of time steps. ``initial`` is an expression in
x, y and z; all six faces use the constant Dirichlet value ``boundary``.
The scheme requires r = alpha*dt/min(dx,dy,dz)^2 <= 1/6; larger values are
rejected as unstable. Grids above 500,000 cells are rejected. The full
(t, z, y, x) grid is saved to .npz; returned arrays are downsampled to at
most 20 points per dimension and 20 time points.
| Name | Required | Description | Default |
|---|---|---|---|
| nt | Yes | ||
| nx | Yes | ||
| ny | Yes | ||
| nz | Yes | ||
| alpha | Yes | ||
| t_end | Yes | ||
| initial | Yes | ||
| boundary | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and delivers: it discloses the stability rejection rule (r <= 1/6), the hard cell-count limit (500,000 cells), and the output behavior (full grid saved to .npz, returned arrays downsampled to 20 points/dim and 20 time steps). These are non-obvious behavioral traits an agent cannot get from the schema.
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 governing equation is front-loaded, followed by parameter meaning, then constraints and return behavior in a logical order. It is dense but every clause is informative; a slight tightening of the return/limit lines would be the only improvement.
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 numerical PDE solver with no output schema and no annotations, the description supplies everything needed: the model, domain, method, parameter meaning, stability and size limits, and return format. Nothing essential for correct invocation 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 coverage is 0%, so the description must explain all 8 parameters, and it explains most: nx/ny/nz as intervals per axis (with dx = 1/nx), nt as time steps, initial as an expression in x/y/z, and boundary as the constant Dirichlet value. alpha is conveyed implicitly via the equation and t_end is not explicitly defined, leaving minor gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and the exact equation solved (u_t = alpha*(u_xx+u_yy+u_zz)) plus the domain (unit cube) and method (explicit FTCS). This unambiguously distinguishes it from siblings like solve_heat_1d, solve_laplace_3d, and solve_wave_3d.
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 communicates applicability constraints (unit cube, constant Dirichlet on all faces, stability bound r <= 1/6) which tells the agent when the call will succeed or be rejected. However, it never names an alternative solver (e.g. solve_heat_1d or solve_laplace_3d) or states when to prefer this over them, so usage is inferred rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_laplace_2dA
Solve u_xx + u_yy = 0 on the unit square with constant Dirichlet edges.
Red-black Gauss-Seidel is iterated until max|u_new-u_old| < tol. If
``max_iter`` is reached first the call still succeeds, with
``converged = False`` and the achieved ``iterations`` count. The full grid
is saved as .npz; the returned grid is downsampled to at most 100x100.
| Name | Required | Description | Default |
|---|---|---|---|
| nx | Yes | ||
| ny | Yes | ||
| tol | No | ||
| top | Yes | ||
| left | Yes | ||
| right | Yes | ||
| bottom | Yes | ||
| max_iter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the algorithm (red-black Gauss-Seidel), convergence criterion (max|u_new-u_old| < tol), non-failure on max_iter with converged=False and iterations count, and output handling (full grid saved as .npz, returned grid downsampled to at most 100x100). This gives an agent rich behavioral context beyond the schema.
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, followed by behavior and output details in a compact, well-structured manner. Every sentence adds necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a numerical PDE solver with no annotations and no output schema, the description covers the method, convergence failure mode, and return handling. It is nearly complete, though explicit definitions for nx/ny and the edge-parameter mapping would make it fully self-contained.
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. It explains tol and max_iter and implies left/right/top/bottom are Dirichlet edge values, and nx/ny are grid dimensions via 'unit square' and 'grid', but it never explicitly defines nx, ny, or maps each edge parameter, leaving significant semantic gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific mathematical problem: solving u_xx + u_yy = 0 on the unit square with constant Dirichlet edges. This clearly identifies the verb, resource, and domain, distinguishing it from siblings like solve_laplace_3d and other PDE 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?
The equation and domain provide clear context for when to use this tool, and no exclusions are stated. It does not explicitly name sibling alternatives such as solve_laplace_3d or solve_pde_1d, but the mathematical scope makes the intended use unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_laplace_3dA
Solve u_xx + u_yy + u_zz = 0 on the unit cube with Dirichlet faces.
``x0``/``x1`` are the values on the faces x=0 and x=1 (likewise for y and
z). A vectorised Jacobi iteration is run until max|u_new-u_old| < tol; if
``max_iter`` is reached first the call still succeeds with
``converged = False`` and the achieved ``iterations``. Grids above 500,000
cells are rejected. The full (z, y, x) grid is saved to .npz and returned
downsampled to at most 20 points per axis.
| Name | Required | Description | Default |
|---|---|---|---|
| nx | Yes | ||
| ny | Yes | ||
| nz | Yes | ||
| x0 | No | ||
| x1 | No | ||
| y0 | No | ||
| y1 | No | ||
| z0 | No | ||
| z1 | No | ||
| tol | No | ||
| max_iter | 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 so well: it names the Jacobi iteration, the convergence criterion max|u_new-u_old| < tol, the non-convergence behavior (still succeeds with converged=False plus iterations), and a hard grid-size rejection above 500,000 cells. It stops short of stating the exact form of the rejection (exception vs. error result) or any runtime expectations.
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 compact and front-loads the governing equation, then layers behavior and I/O limits in short declarative sentences. Each sentence earns its place; the only slight cost is that grid-dimension semantics are assumed rather than stated.
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?
There is no output schema, so the description must describe returns — and it does: the full (z,y,x) grid saved to .npz, the downsampled return capped at 20 points per axis, and the converged/iterations fields. Combined with the tolerance, iteration cap, and grid limit, this is close to complete, with only the precise return type/shape and rejection mechanism left implicit.
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. It explains the six boundary-value params (x0/x1/y0/y1/z0/z1 as face values), tol as the convergence threshold, and max_iter's role in the non-convergence path. However, nx/ny/nz are never explicitly defined as grid dimensions nor tied to the 500,000-cell limit, and defaults are omitted.
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 operation (solving u_xx + u_yy + u_zz = 0), the domain (unit cube), and the boundary condition type (Dirichlet faces). This clearly distinguishes it from siblings like solve_laplace_2d and solve_heat_3d, which differ in dimension or PDE.
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 boundary-value framing (use it when you need a Dirichlet Laplace solution on the unit cube), but there is no explicit when-to-use/when-not guidance and no routing to alternatives such as solve_laplace_2d for lower dimensions. Adequate but with clear gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_odeB
Solve an initial-value ODE system with scipy solve_ivp.
``rhs`` is one expression (state variable ``y``) or a list of expressions
(state variables ``y0, y1, ...`` in the same order as ``y0``). The time
variable is ``t``; keys of ``params`` are injected as extra constants.
| Name | Required | Description | Default |
|---|---|---|---|
| y0 | Yes | ||
| rhs | Yes | ||
| method | No | RK45 | |
| params | No | ||
| t_eval | No | ||
| t_span | 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 behavioral burden. It usefully discloses the expression-language conventions (state variable y or y0,y1..., time variable t, params keys injected as constants), but says nothing about return format, error behavior, or solver tolerances.
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 core action, then the two conventions that matter most. Two short paragraphs with essentially no filler, though the backtick-heavy formatting is slightly noisy.
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 solver with no annotations and no output schema, the description covers the expression interface but omits t_span/t_eval semantics and what the solver returns. Adequate to attempt a call, but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it partly does: rhs, y0 ordering, params, and t are explained. However, t_span, t_eval, and method receive no explanation, leaving half the 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+resource ("Solve an initial-value ODE system") and names the underlying engine (scipy solve_ivp), which implicitly distinguishes it from the symbolic sibling dsolve_ode. It does not, however, explicitly contrast itself with dsolve_ode or other solvers in the 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?
No when-to-use or when-not-to-use guidance is given. The description never mentions the symbolic alternative dsolve_ode, so an agent must infer from the name alone whether this numerical IVP solver or the symbolic solver is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_pde_1dA
Solve u_t = F(x, t, u, u_x, u_xx) with an explicit Euler scheme.
``equation`` is a sympy expression for ``F`` in the symbols ``x``, ``t``,
``u``, ``u_x`` and ``u_xx``. Spatial derivatives are second-order centred
differences evaluated on the interior nodes at every step; the ends keep
the constant Dirichlet values ``left``/``right``.
This is only a *semi-general* solver: no stability condition can be
derived for arbitrary ``F``. The result therefore always contains a
``stability_note`` recommending smaller steps or a specialized solver.
If a step produces a non-finite value the solver stops and returns
``err(...)`` with the offending step number.
The full (t, x) grid is saved to .npz; returned arrays are downsampled to
at most 100 space and 50 time points.
| Name | Required | Description | Default |
|---|---|---|---|
| nt | No | ||
| nx | No | ||
| left | No | ||
| right | No | ||
| t_end | No | ||
| length | No | ||
| initial | No | sin(pi*x) | |
| equation | 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 so richly: explicit Euler scheme, second-order centred interior differences, constant Dirichlet ends, guaranteed stability_note in the output, non-finite detection that halts and returns err(...) with the offending step number, full grid persisted to .npz, and downsampling to ≤100 space / ≤50 time points.
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 scheme, then behaviour, then return caveats. Every sentence does work, though the prose is a touch long for what is essentially a solver contract and could compress the derivative/BC paragraph.
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, the description covers failure modes (err with step number), the stability_note, the .npz side effect, and the downsampled return shape. It stops short of describing the returned array fields, which is the main remaining gap for an agent consuming the result.
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% for 8 parameters, so the description must compensate. It clarifies equation (sympy expression in x, t, u, u_x, u_xx) and left/right (Dirichlet values) well, but nt, nx, t_end, length, and initial are only inferable from their names and defaults, leaving half the surface undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Solve') and resource (u_t = F(x,t,u,u_x,u_xx)) and pins down the numerical scheme (explicit Euler with centred differences). An agent can immediately separate this general semi-linear solver from the specialized siblings solve_heat_1d, solve_wave_1d, and solve_burgers_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?
Implies usage context by warning that no stability condition can be derived for arbitrary F and that the result recommends smaller steps or a specialized solver, which hints at when a sibling tool would be preferable. However, it never explicitly says 'use this instead of X when Y' or states prerequisites, so routing still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_wave_1dA
Solve u_tt = c^2*u_xx with explicit central differences.
``initial_displacement`` and ``initial_velocity`` are expressions in ``x``.
The Courant condition c*dt/dx <= 1 is enforced. Each of ``left``/``right``
is either a float (Dirichlet displacement) or a dict:
``{"type": "dirichlet", "value": v}``,
``{"type": "neumann", "flux": q}`` or
``{"type": "robin", "h": h, "ambient": a}``; boundary conditions act on the
displacement. ``flux`` is du/dx at the boundary (not the outward-normal
derivative): the left outward normal is -x so its outward-normal derivative
is -flux, while the right end's is +flux. Robin means
``h*(u - ambient) + du/dx = 0`` at both ends with the same x-derivative
convention (unit conductivity k). Neumann/Robin ends use ghost
nodes, with Robin applied at the new time level for stability at large h.
The full grid is saved as .npz, while the returned arrays are downsampled
to at most 100 spatial and 50 time points.
| Name | Required | Description | Default |
|---|---|---|---|
| c | Yes | ||
| nt | Yes | ||
| nx | Yes | ||
| left | No | ||
| right | No | ||
| t_end | Yes | ||
| length | Yes | ||
| initial_velocity | No | 0 | |
| initial_displacement | 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 so well: it discloses the enforced Courant condition, the ghost-node treatment, that Robin is applied at the new time level for stability, that the full grid is saved as .npz, and that returned arrays are downsampled to 100x50. It omits error behavior and runtime/performance traits, 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 with the equation and method, then proceeds to the boundary-condition detail. The flux/ghost-node discussion is dense and technical but each clause conveys real calling information; sizing is appropriate for a numerical solver.
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 still covers the return format (downsampled arrays, npz grid), the stability constraint, and the full boundary-condition vocabulary, which is what an agent needs to call it correctly. Minor gaps remain around array names and output file paths.
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 9 parameters, so the description must compensate. It richly documents the ambiguous ones (left/right dict forms, boundary conventions, initial_displacement/initial_velocity as expressions in x, the flux sign convention), though c, length, nx, nt, and t_end are left to be inferred from the equation context.
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') plus the exact governing equation (u_tt = c^2*u_xx) and the numerical method (explicit central differences). This clearly distinguishes it from siblings like solve_heat_1d, solve_burgers_1d, and solve_wave_3d without needing to open the 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?
The stated PDE implies when the tool applies, but there is no explicit guidance on when to choose this over solve_wave_3d, solve_pde_1d, or solve_burgers_1d, and no stated prerequisites or exclusions. Usage is inferable rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_wave_3dA
Solve u_tt = c^2 (u_xx + u_yy + u_zz) on the unit cube.
``nx``, ``ny``, ``nz`` are the number of intervals per axis and ``nt`` the
number of time steps. The interior uses the explicit second-order central
scheme; the first time level uses the Taylor expansion
``u(dt) = u0 + dt*v0 + c^2*dt^2/2 * Laplacian(u0)``. All six faces use the
constant Dirichlet value ``boundary``.
Stability requires ``c*dt*sqrt(3)/min(dx,dy,dz) <= 1``. Grids above
500,000 cells and histories above 20,000,000 stored points are rejected.
The full (t, z, y, x) grid is saved to .npz; returned arrays are
downsampled to at most 20 points per spatial axis and 20 time points.
| Name | Required | Description | Default |
|---|---|---|---|
| c | Yes | ||
| nt | Yes | ||
| nx | Yes | ||
| ny | Yes | ||
| nz | Yes | ||
| t_end | Yes | ||
| boundary | No | ||
| initial_velocity | No | 0 | |
| initial_displacement | 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 so well: it discloses the numerical scheme, the Taylor-expansion first time level, the stability condition, hard rejection thresholds (500,000 cells / 20,000,000 points), the .npz persistence, and the downsampling of returned arrays. Minor gap: it doesn't say whether a stability violation is rejected or merely produces inaccurate results.
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 organized into scheme, boundary conditions, stability/limits, and output. Every sentence is information-dense 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?
No output schema exists, and the description responsibly covers return behavior (npz file plus downsampled arrays) as well as limits, stability, and boundary handling. It falls just short of complete because the string-parameter input format and exact return structure remain unspecified.
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. It explains nx/ny/nz as intervals per axis, nt as time steps, and boundary as the Dirichlet value, but leaves c and t_end implicit and — critically — gives no format for the string-typed initial_displacement and initial_velocity, which are the most ambiguous inputs.
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 the 3D wave equation on the unit cube — and gives the exact PDE, immediately distinguishing it from siblings like solve_wave_1d, solve_heat_3d, and solve_laplace_3d. An agent can identify the tool without opening the 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?
The PDE domain and constraints (unit cube, constant Dirichlet boundary, stability requirement, size limits) imply when the tool applies, but the description never explicitly states when to prefer this over solve_wave_1d or other PDE solvers. Usage is inferred from the mathematical scope rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sparse_computeA
Compute with sparse matrices: info, solve, matmul, transpose, norm, eigsh or svds.
``a`` accepts ``{"rows", "cols", "values", "shape"}`` triplets, an
``@<path>.mtx`` Matrix Market file, or a dense two-dimensional list.
``b`` (solve/matmul) accepts a dense vector/matrix, a sparse triplet dict,
or an ``@<path>`` reference to .mtx/.npy/.csv/.tsv/.txt/.json data.
``solver`` applies to ``operation="solve"`` only: ``"direct"`` (default,
``spsolve``), ``"cg"`` (symmetric positive definite) or ``"gmres"``
(general square). Iterative solvers use a Jacobi preconditioner when every
diagonal entry is non-zero, honour ``tol`` as the relative residual
tolerance and ``maxiter`` as the iteration cap. Passing a non-direct
``solver`` with another operation returns ``err``. Solve results include
``"solver"``, ``"iterations"`` (``null`` for direct) and ``"residual"``
(``max(abs(a @ x - b))``).
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | No | ||
| k | No | ||
| tol | No | ||
| solver | No | direct | |
| maxiter | No | ||
| operation | 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 so well: it discloses the Jacobi preconditioner condition, tol as relative residual tolerance, maxiter as iteration cap, the error path for invalid solver/operation combinations, and the solve return fields (solver, iterations, residual with the exact formula). It does not state whether the tool has any side effects or file-write behavior, which is the remaining gap.
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 operation list, then organized by parameter (a formats, b formats, solver semantics) using inline code formatting. Dense but every sentence adds operational detail — no restatement of the title, 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?
With no output schema, the description must explain returns, and it does so for solve (solver/iterations/residual). It is not complete for the other operations — an agent gets no indication of what info, eigsh, svds, or norm return, and `k` is undefined — but the hardest parts (input coercion and iterative-solver behavior) are covered.
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 largely does: it documents the three accepted forms of `a`, the four-ish accepted forms of `b`, and gives concrete semantics for `solver`, `tol`, and `maxiter`. However `k` (default 6, surely the eigenpair/subspace count for eigsh/svds) is never mentioned anywhere, leaving one parameter entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (sparse matrices) and enumerates the exact operations it supports — info, solve, matmul, transpose, norm, eigsh, svds — which is far more precise than a restated name. It implicitly distinguishes itself from the dense sibling matrix_compute via the 'sparse' framing, but never names or contrasts that sibling explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real routing rules between operations: 'solver applies to operation="solve" only' and 'b (solve/matmul) accepts...', plus the consequence of misuse ('Passing a non-direct solver with another operation returns err'). What is missing is guidance on when to reach for sparse_compute versus a dense/matrix_compute sibling, so there are no alternatives or exclusions spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stationarity_testB
Run the Augmented Dickey-Fuller test and report stationarity at 5%.
``regression`` is one of c, ct, ctt or n. ``autolag`` is AIC, BIC, t-stat
or None (no automatic lag selection).
| Name | Required | Description | Default |
|---|---|---|---|
| series | Yes | ||
| autolag | No | AIC | |
| regression | No | c |
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 a genuine behavioral constant (fixed 5% significance) and the autolag=None behavior, but says nothing about the return format, minimum sample requirements, or what a string-valued series means.
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, front-loaded sentences with zero filler; the core purpose comes first and the parameter value lists follow compactly.
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 should explain what is returned (p-value, test statistic, critical values) but only hints at a stationarity verdict. Combined with the undocumented required 'series' parameter, it is adequate but incomplete for a statistical test 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 usefully enumerates valid values for regression (c, ct, ctt, n) and autolag (AIC, BIC, t-stat, None) that the schema does not encode. However, it completely omits the required 'series' parameter, which is ambiguous (array of numbers vs string), leaving the most important input undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Run') and resource ('Augmented Dickey-Fuller test') plus the output intent ('report stationarity at 5%'), so the agent knows exactly what computation happens. It is implicitly distinct from siblings like arima or time_series_decompose, but it never explicitly differentiates itself from 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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as arima or time_series_decompose. The usage is only inferable from the test name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stftB
Compute a short-time Fourier transform and return the magnitude spectrogram.
The full magnitude matrix is saved as .npz when it exceeds 100 x 100 cells.
``save_spectrogram`` additionally renders a PNG with matplotlib (Agg).
| Name | Required | Description | Default |
|---|---|---|---|
| signal | Yes | ||
| window | No | hann | |
| nperseg | No | ||
| filename | No | ||
| noverlap | No | ||
| sample_rate | Yes | ||
| save_spectrogram | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries full burden. It does disclose a non-obvious behavior: the full magnitude matrix is saved as .npz when it exceeds 100x100 cells, and save_spectrogram adds a PNG render. But it omits permission needs, return format (spectrogram in response?), and what happens under the threshold.
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 action and followed by the side-effect detail. Efficient.
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?
A 7-parameter tool with no output schema and 0% param coverage needs more. The description covers the primary return and a saving side-effect, but leaves most parameters and the response shape unexplained.
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% – all 7 parameters are undocumented. The description only implicitly references save_spectrogram; it says nothing about signal, sample_rate, window, nperseg, noverlap, or filename semantics. Fails to compensate for the coverage 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?
States a specific verb and resource: 'Compute a short-time Fourier transform and return the magnitude spectrogram.' Clear and distinguishable from siblings like fft_analysis and wavelet_transform.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs fft_analysis or wavelet_transform, no prerequisites, no mention of the relationship to power_spectrum. The agent must infer usage from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
symbolic_calculusC
Perform symbolic calculus on an expression: diff, integrate, limit, series, simplify, expand, factor.
| Name | Required | Description | Default |
|---|---|---|---|
| expr | Yes | ||
| order | No | ||
| point | No | 0 | |
| variable | No | x | |
| operation | 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 doesn't state whether operations require specific input formats, how errors are surfaced, what the return value looks like, or any constraints (e.g., 'integrate' needs a variable, 'limit' needs a point). For a compute tool with zero annotation coverage, this is a significant gap.
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?
One tight sentence, front-loaded with the verb and followed by the operation enumeration. 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 five-parameter, zero-annotation, no-output-schema compute tool, the description is too thin: it omits parameter semantics, return behavior, and usage context. It tells an agent what operations exist but not how to invoke them 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 for five undocumented parameters. It only mentions 'expression' implicitly and lists operation names, without mapping any parameter to its meaning, default, or usage (e.g., 'order' applies to series/diff, 'point' to limit). No semantic guidance is added.
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 (perform symbolic calculus) and resource (an expression), then enumerates the operations (diff, integrate, limit, series, simplify, expand, factor). This distinguishes it from siblings like symbolic_solve and symbolic_evaluate, though it doesn't explicitly 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, no alternatives named, no exclusions. The agent must infer from the operation list how this differs from symbolic_solve or symbolic_evaluate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
symbolic_evaluateC
Substitute numeric or symbolic-constant values into an expression and evaluate it numerically.
| Name | Required | Description | Default |
|---|---|---|---|
| expr | Yes | ||
| substitutions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses only that evaluation is numeric. It says nothing about expression syntax, error behavior, whether evaluation is exact or approximate, or what the substitution keys must match.
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?
A single front-loaded sentence with no filler; the core action and result type are stated immediately. Nothing is redundant or 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 tool with a nested substitutions object, no annotations, and no output schema, the description leaves key operational details unresolved: substitution key semantics, expression syntax, and error conditions. It is too thin for the parameter complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never names or explains the two parameters. It loosely implies an expression plus substitutions, but adds no format, key-matching, or value-type detail beyond the schema's anyOf for number/string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb pair (substitute and evaluate) and a specific resource (an expression), and clarifies the result is numeric. It does not explicitly distinguish this from sibling tools like symbolic_solve or symbolic_calculus, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no named alternative, despite the presence of closely related siblings (symbolic_solve, symbolic_calculus). The usage is only inferable from the verb phrase, which the rubric rates as absent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
symbolic_solveC
Solve one equation or a system of equations symbolically for the given variables.
| Name | Required | Description | Default |
|---|---|---|---|
| equations | Yes | ||
| variables | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden but discloses little beyond the symbolic nature. It omits assumptions, domain restrictions, return format, error handling, and whether it supports inequalities or only equalities.
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?
One clear, front-loaded sentence with no fluff. However, the extreme brevity leaves gaps that other dimensions penalize; within this dimension, it is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two required parameters, no schema descriptions, no output schema, and no annotations, the description is insufficient. It lacks essential context about input formatting, output, and when to choose it over similar solvers.
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% and the description does not explain the format or expected content for either parameter. It only says 'for the given variables,' which does not clarify how equations or variables should be represented (e.g., strings, lists, equation syntax).
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 ('equation or system of equations') with the key qualifier 'symbolically,' which is important for distinguishing from numerical solvers. However, it does not differentiate from sibling tools like symbolic_calculus or symbolic_evaluate, leaving the agent to 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?
No explicit indication of when to use this tool versus alternatives such as find_roots, symbolic_calculus, or dsolve_ode. The only usage hint is that it handles one equation or a system, but there is no when-not guidance or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
time_series_decomposeB
Decompose a series into trend, seasonal and residual components.
``period`` must be at least 2 and smaller than the series length. The full
components are saved as ``.npz`` under ``output_dir()``; returned arrays are
evenly downsampled to at most 2000 points each.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | additive | |
| period | Yes | ||
| series | 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 discloses important behavioral details: the full output is written to an .npz file under output_dir(), and returned arrays are downsampled to at most 2000 points. It also notes a validity constraint on 'period'. Missing only explicit mutation/read-only nature or expected return structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the core action and followed by key operational constraints. No extraneous text, though the formatting with backticks is slightly noisy.
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 annotations, no output schema, and 0% parameter schema coverage, the description covers the essential file-saving/downsampling behavior and period constraint, but leaves the 'model' parameter's meaning and the 'series' input format undocumented, which an agent would need to call 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 coverage is 0%, so the description must compensate. It clarifies the constraint on 'period' (at least 2, smaller than series length) and implies the shape/output of results, but says nothing about 'model' (e.g., additive vs multiplicative) or the accepted formats for 'series'. Partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (decompose) and resource (a series into trend, seasonal, residual). Distinguishes from siblings like arima or fft_analysis by naming the exact decomposition operation, though it doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a constraint on the 'period' argument but gives no guidance on when to use this tool versus alternatives such as fft_analysis or filter_signal, nor any typical use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
t_testB
Run a one-sample, two-sample or paired t-test with an optional one-sided alternative.
Samples may be passed inline or as an ``"@<path>"`` file reference.
| Name | Required | Description | Default |
|---|---|---|---|
| paired | No | ||
| popmean | No | ||
| sample1 | Yes | ||
| sample2 | No | ||
| alternative | No | two-sided |
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 usefully discloses that samples may be inline arrays or '@<path>' file references, a real behavioral trait beyond the schema, but it is silent on returned statistics, statistical assumptions, error behavior, and whether the file path must be readable. This is partial disclosure for a mutation-free compute tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action, with the input-mode note as a secondary clause. There is no filler, though the file-reference detail could be integrated more compactly.
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 statistical tool with no annotations and no output schema, the description covers the test variants and input modes but leaves parameter semantics for paired/popmean/alternative underexplained and says nothing about the returned test statistic or p-value. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the inline-or-file-reference semantics for sample inputs and hints at the alternative parameter ('one-sided alternative'), but paired and popmean are only obliquely implied by the test-mode names and get no semantic explanation. Partial compensation for a five-parameter tool.
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 (Run) and resource (t-test) and enumerates the three modes (one-sample, two-sample, paired) plus the alternative option. It is clear what the tool computes, though it does not name or contrast itself with siblings like chi2_test or anova that occupy adjacent statistical-testing territory.
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 enumerated test variants and mentions an optional one-sided alternative, so the agent can infer which variant maps to its data shape, but it never states when to choose one-sample vs two-sample vs paired, nor when to prefer this over chi2_test or anova. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unit_calculateC
Evaluate a unit-bearing arithmetic expression and return its value and unit.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden: it says it returns a value and unit but omits what happens with dimension mismatches, which units are supported, accepted syntax, or error behavior. It discloses the return shape but little else about operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the action and result front-loaded; nothing is wasted. For a one-parameter tool this length is appropriate, though the brevity leaves substance missing rather than being a flaw of verbosity.
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, no output schema, and 0% schema coverage on the only parameter, the definition should supply syntax guidance and error semantics. It does not, so an agent cannot reliably call it correctly for non-trivial expressions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single 'expression' parameter has no description anywhere. The description implies it is a unit-bearing arithmetic expression but gives no syntax or format examples (e.g., '3 m + 2 ft'), so it fails to compensate for the coverage 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?
States a specific verb (evaluate) and resource (unit-bearing arithmetic expression) and clarifies the return (value and unit). It is distinguishable from sibling unit_convert, but the description never explicitly differentiates the two, so it falls short of 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?
There is no guidance on when to use this versus alternatives such as unit_convert, symbolic_evaluate, or matrix_compute. No prerequisites or conditions are given, leaving usage entirely to inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unit_convertB
Convert a numeric value between units, including offset units such as degC.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| to_unit | Yes | ||
| from_unit | 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 adds one genuinely useful behavioral note – that offset units like degC are handled (i.e. affine, not just ratio, conversion) – but says nothing about supported unit tokens, error behavior, or the returned value.
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?
A single front-loaded sentence with zero filler; the offset-unit caveat is appended efficiently rather than padding.
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, so the description should say what is returned, but it does not (presumably a number). For a simple conversion utility this is mildly important; the missing unit-format and return info keep it at a minimum-viable level.
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 documents nothing beyond titles. The description implies value/units but does not define the accepted unit-string format; the 'degC' example is the only token-level hint, which partially compensates but leaves from_unit/to_unit syntax undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Convert a numeric value between units.' An agent immediately understands the operation. However, it does not differentiate from sibling unit_calculate or physical_constant, so the boundary is left to inference.
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, prerequisites, or named alternatives. Given siblings like unit_calculate and physical_constant that could plausibly overlap, the absence of routing guidance is a real gap, though the purpose is self-evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavelet_denoiseC
Denoise a signal with wavelet shrinkage.
Detail coefficients are thresholded with :func:`pywt.threshold`. When
``threshold`` is omitted, the universal threshold ``sigma*sqrt(2*log(n))``
is used with ``sigma`` estimated from the finest detail coefficients via MAD.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | soft | |
| level | No | ||
| signal | Yes | ||
| wavelet | No | db4 | |
| threshold | 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 real behavior beyond the schema: detail coefficients are thresholded via pywt.threshold and, when threshold is omitted, the universal threshold sigma*sqrt(2*log(n)) with MAD-estimated sigma is applied. However, it says nothing about the returned object, whether the input is mutated, or how level=None is resolved, 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?
Two short, front-loaded sentences with no filler; the purpose comes first and the algorithmic detail second. Minor formatting artifacts (double backticks, reST role) add a little noise but no length problem.
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?
A 5-parameter numerical tool with no output schema and no annotations needs the description to cover return shape and parameter semantics; it covers one parameter and no return value. An agent cannot tell what it gets back or what mode/level/wavelet do.
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 5 parameters, and the description only adds meaning for threshold (its default computation). mode (soft/hard), level, wavelet, and the accepted signal types (array or string) remain 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?
"Denoise a signal with wavelet shrinkage" is a specific verb+resource+method, clearly distinct from wavelet_transform and filter_signal. It doesn't explicitly name or contrast with those siblings, but the method is named precisely enough to route correctly.
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 use this versus alternatives such as filter_signal, wavelet_transform, or fft_analysis, nor any prerequisites on signal length or sampling. Usage must be inferred entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavelet_transformB
Decompose a signal with a discrete wavelet transform (pywt.wavedec).
The maximum level is used when ``level`` is omitted. Full coefficient arrays
are saved to a .npz file; the return value carries lengths, energies and a
short preview of each level.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | symmetric | |
| level | No | ||
| signal | Yes | ||
| wavelet | No | db4 |
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 a side effect (full coefficient arrays written to a .npz file) and the shape of the return value, plus the default-level behavior. It does not say where the file lands, whether it overwrites, or what permissions are needed, 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?
Three short lines, front-loaded with the core operation and followed by the two facts an agent most needs (default level, file output). Minimal waste, though the parenthetical library reference is slightly incidental.
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 does well to sketch the return (lengths, energies, preview per level) and the .npz side effect. It still leaves the ambiguous `signal` string form and the file destination unexplained, so an agent cannot fully predict the call's effects.
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 4 parameters, so the description must compensate. It only clarifies `level` (max level used when omitted); `mode`, `wavelet` (default db4), and especially `signal` — which accepts either an array or a string, presumably a path — are left entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — "Decompose a signal with a discrete wavelet transform" — and even names the underlying routine (pywt.wavedec), which pins down the exact semantics. It does not differentiate from the sibling wavelet_denoise, which an agent could easily confuse with this transform 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 explicit guidance on when to choose this over wavelet_denoise, fft_analysis, stft, or time_series_decompose. Usage is only implied by the verb "decompose," and no prerequisites or exclusions are stated.
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.
65 tool updates
v0.1.0- First observed
analyze_dataset - First observed
anova - First observed
arima - First observed
chi2_test - First observed
convolve - First observed
correlation - First observed
cox_regression - First observed
curl - First observed
curve_fit - First observed
describe - First observed
describe_file - First observed
distribution - First observed
divergence - First observed
dsolve_ode - First observed
fft_analysis - First observed
filter_signal - First observed
find_peaks - First observed
find_roots - First observed
forecast - First observed
gee - First observed
glm - First observed
global_optimize - First observed
gradient - First observed
health_check - First observed
integer_program - First observed
interpolate_1d - First observed
kaplan_meier - First observed
laplacian - First observed
linear_program - First observed
linear_regression - First observed
load_data - First observed
matrix_compute - First observed
mixed_lm - First observed
monte_carlo - First observed
nonlinear_mixed_lm - First observed
optimize_minimize - First observed
physical_constant - First observed
plot - First observed
plot_file - First observed
power_spectrum - First observed
run_python - First observed
save_data - First observed
solve_burgers_1d - First observed
solve_heat_1d - First observed
solve_heat_1d_variable - First observed
solve_heat_3d - First observed
solve_laplace_2d - First observed
solve_laplace_3d - First observed
solve_navier_stokes_2d - First observed
solve_ode - First observed
solve_pde_1d - First observed
solve_wave_1d - First observed
solve_wave_3d - First observed
sparse_compute - First observed
stationarity_test - First observed
stft - First observed
symbolic_calculus - First observed
symbolic_evaluate - First observed
symbolic_solve - First observed
t_test - First observed
time_series_decompose - First observed
unit_calculate - First observed
unit_convert - First observed
wavelet_denoise - First observed
wavelet_transform
TDQS
Scored across 65 tools
Several tool pairs have overlapping purposes (e.g., plot vs plot_file, describe vs describe_file, forecast vs arima, analyze_dataset vs component tools). Descriptions clarify file-based vs inline and general vs specific, but the volume of tools makes misselection likely. Most tools remain distinct enough for an expert agent.
All tool names use snake_case consistently, but the verb style is mixed: many are verb_noun (load_data, solve_heat_1d), while others are noun-only (arima, gradient, distribution). This is readable but lacks a single predictable pattern.
With 65 tools, the server far exceeds the recommended 3-15 range and even the 25+ threshold for 'too many'. While the scientific computing domain is broad, the tool count is excessive and likely to overwhelm an agent, with many tools that could be consolidated.
The surface covers a vast range of scientific computing tasks: data IO, statistics, PDE solvers, optimization, signal processing, symbolic math, and more. Minor gaps exist (e.g., no dedicated data manipulation tools), but run_python provides a workaround.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Educational MCP server with 17 math/stats tools, visualizations, and persistent workspace
Related MCP Servers
- FlicenseCqualityCmaintenanceA multi-tool MCP server that enhances local LLMs with web search, document reading, scholarly research, Wikipedia access, and calculator functions. Provides comprehensive tools for information retrieval and computation without requiring API keys by default.221-
- AlicenseAqualityFmaintenanceAn MCP server that connects AI assistants to a local Wolfram Engine, enabling symbolic math, numerical analysis, and data visualization through Wolfram Language. It provides secure expression filtering, client authentication, and supports both local stdio and HTTP transports.232MIT
- 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.86 npm1MIT
- AlicenseAqualityAmaintenanceAn MCP server that lets AI models run code in 31 languages, evaluate symbolic math and logic problems, and measure complexity—exposed as 48 tools for execution, session management, translation, optimization, and more.51259 PyPI5Apache 2.0