Skip to main content
Glama
apetta

Vibe Math MCP

by apetta

Vibe Math MCP

PyPI version Python Version License: MIT Smithery Test Coverage Tests

A high-performance Model Context Protocol (MCP) server for math-ing whilst vibing with LLMs. Built with Polars, Pandas, NumPy, SciPy, and SymPy for optimal calculation speed and comprehensive mathematical capabilities from basic arithmetic to advanced calculus and linear algebra.

Features

21 Mathematical Tools across 6 domains + batch orchestration:

  • Basic Calculations (4 tools): Expression evaluation, percentages, rounding, unit conversion

  • Array Operations (4 tools): Element-wise operations, statistics, aggregations, transformations

  • Statistics (3 tools): Descriptive statistics, pivot tables, correlations

  • Financial Mathematics (3 tools): Time value of money, compound interest, perpetuity

  • Linear Algebra (3 tools): Matrix operations, system solving, decompositions

  • Calculus (3 tools): Derivatives, integrals, limits & series

  • Batch Execution (1 tool): Multi-tool orchestration for complex workflows

Related MCP server: Math MCP Server

Installation

IDEs

Install in VS Code

Install MCP Server

Claude Desktop

Open Settings > Developer > Edit Config and add:

For published package:

{
  "mcpServers": {
    "Math": {
      "command": "uvx",
      "args": ["vibe-math-mcp"]
    }
  }
}

For local development:

{
  "mcpServers": {
    "Math": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/vibe-math-mcp",
        "run",
        "vibe-math-mcp"
      ]
    }
  }
}

Claude Code

Quick setup (CLI):

Published package:

claude mcp add --transport stdio math -- uvx vibe-math-mcp

Local development:

claude mcp add --transport stdio math -- uvx --from /absolute/path/to/vibe-math-mcp vibe-math-mcp

Team setup (create .mcp.json in project root for shared use with Claude Code and/or IDEs)

{
  "mcpServers": {
    "math": {
      "command": "uvx",
      "args": ["vibe-math-mcp"]
    }
  }
}

Verify: Run claude mcp list or use /mcp or view available servers in IDEs.

Try it

  • "Calculate 15% of 250" → uses percentage

  • "Find determinant of [[1,2],[3,4]]" → uses matrix_operations

  • "Integrate x^2 from 0 to 1" → uses integral

  • "If I invest $1000 at 5% annual interest compounded monthly for 10 years, what will be the future value?" → uses compound_interest

  • If I was paid the square root of $69m in 10 years, what's the present value at 7% discount rate? → uses batch_execute (calculate -> financial_calcs)

Output Control

All tools automatically support output control for maximum flexibility and token efficiency. The LLM can specify the desired verbosity.

Control response verbosity using the output_mode parameter (available on every tool):

Mode

Description

Token Savings

Use Case

full

Complete response with all metadata (default)

0% (baseline)

Debugging, full context needed

compact

Remove null fields, minimize whitespace

~20-30%

Moderate reduction, preserve structure

minimal

Primary value(s) only, strip metadata

~60-70%

Fast extraction, minimal context

value

Normalized {value: X} structure

~70-80%

Consistent chaining, maximum simplicity

final

For sequential chains, return only terminal result

~95%

Simple calculations, predictable extraction

Batch Execution

For multi-step workflows, batch_execute chains multiple calculations in a single request—achieving 90-95% token reduction. Reference prior outputs using $operation_id.result syntax, and the engine automatically handles dependency resolution and parallel execution for speed.

Perfect for: Bond pricing, financial models, statistical pipelines, complex transformations

Complete Tool Reference

Note: All tool parameters include detailed descriptions with concrete examples directly in the MCP interface. Each parameter shows expected format, use cases, and sample values to make usage obvious without referring to external documentation.

Basic Calculations

Tool

Description

calculate

Evaluate mathematical expressions with variable substitution

percentage

Percentage calculations (of, increase, decrease, change)

round

Advanced rounding (round, floor, ceil, trunc)

convert_units

Unit conversions (degrees � radians)

Array Operations

Tool

Description

array_operations

Element-wise operations (add, subtract, multiply, divide, power)

array_statistics

Statistical measures (mean, median, std, min, max, sum)

array_aggregate

Aggregations (sumproduct, weighted average, dot product)

array_transform

Transformations (normalise, standardise, scale, log)

Statistics

Tool

Description

statistics

Comprehensive analysis (describe, quartiles, outliers)

pivot_table

Create pivot tables with aggregation

correlation

Correlation matrices (Pearson, Spearman)

Financial Mathematics

Tool

Description

financial_calcs

Time value of money (PV, FV, PMT, IRR, NPV)

compound_interest

Compound interest with various frequencies

Linear Algebra

Tool

Description

matrix_operations

Matrix operations (multiply, inverse, transpose, determinant, trace)

solve_linear_system

Solve Ax = b systems

matrix_decomposition

Decompositions (eigen, SVD, QR, Cholesky, LU)

Calculus

Tool

Description

derivative

Symbolic and numerical differentiation

integral

Symbolic and numerical integration

limits_series

Limits and series expansions



## Development

### Running Tests

```bash
# Install dependencies
uv sync

# Run all tests
uv run poe test

Local Development Modes

STDIO Mode (default - for Claude Desktop, IDEs):

uv run vibe-math-mcp

HTTP Mode (for container testing):

uv run python -m vibe_math_mcp.http_server

License

MIT License. See LICENSE file for details.

Contributing

Contributions welcome via PRs! Please ensure:

  1. Tests pass, and new ones are added if applicable

  2. Code is linted & formatted

  3. Type hints are included

  4. Clear, actionable error messages are provided

Support

For issues and questions, please open an issue on GitHub.

Available Tools

21 tools
array_aggregateArray AggregationA
Read-onlyIdempotent

Perform aggregation operations on 1D arrays.

Examples:

SUMPRODUCT: operation="sumproduct", array1=[1,2,3], array2=[4,5,6] Result: 32 (1×4 + 2×5 + 3×6)

WEIGHTED AVERAGE: operation="weighted_average", array1=[10,20,30], weights=[1,2,3] Result: 23.33... ((10×1 + 20×2 + 30×3) / (1+2+3))

DOT PRODUCT: operation="dot_product", array1=[1,2], array2=[3,4] Result: 11 (1×3 + 2×4)

GRADE CALCULATION: operation="weighted_average", array1=[85,92,78], weights=[0.3,0.5,0.2] Result: 86.5

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
operationYesAggregation operation
array1YesFirst 1D array (e.g., [1,2,3])
array2NoSecond 1D array for sumproduct/dot_product
weightsNoWeights for weighted_average (e.g., [1,2,3])

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint as true, so the description does not need to reiterate that. The description provides operational context (1D arrays, specific operations), which adds value beyond annotations.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and uses examples to illustrate. While somewhat lengthy, every part is informative. It could trim redundant phrasing, but overall it's well-organized and scannable.

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

Completeness4/5

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

Given that an output schema exists (not shown but present per signals), the description adequately covers all operations and parameter roles. The examples demonstrate return values, so no further explanation is needed. Complete for a multi-operation tool.

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

Parameters4/5

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

All parameters have schema descriptions (100% coverage). The description adds meaning by showing concrete examples of how parameters combine (e.g., array1 and array2 for sumproduct, weights for weighted_average), which helps the agent understand usage beyond syntax.

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

Purpose5/5

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

The description clearly states it performs aggregation operations on 1D arrays, and the examples cover each supported operation (sumproduct, weighted_average, dot_product). The title matches the function, and the tool is distinct from siblings like array_operations and array_statistics.

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

Usage Guidelines3/5

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

Usage is implied through examples, but there is no explicit guidance on when to choose this tool over siblings (e.g., array_operations for element-wise operations). No alternatives or conditions are mentioned.

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

array_operationsArray OperationsB
Read-onlyIdempotent

Perform element-wise operations on arrays using Polars.

Supports array-array and array-scalar operations.

Examples:

SCALAR MULTIPLICATION: operation="multiply", array1=[[1,2],[3,4]], array2=2 Result: [[2,4],[6,8]]

ARRAY ADDITION: operation="add", array1=[[1,2]], array2=[[3,4]] Result: [[4,6]]

POWER OPERATION: operation="power", array1=[[2,3]], array2=2 Result: [[4,9]]

ARRAY DIVISION: operation="divide", array1=[[10,20],[30,40]], array2=[[2,4],[5,8]] Result: [[5,5],[6,5]]

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
operationYesElement-wise operation to perform
array1YesFirst 2D array (e.g., [[1,2],[3,4]])
array2YesSecond array, scalar, or JSON string

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description carries lower burden. It adds context about supporting array-array and array-scalar operations, and provides examples. However, it doesn't mention edge cases (e.g., shape mismatch, type handling) or performance implications.

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

Conciseness4/5

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

Description is concise and front-loaded with purpose. Examples are helpful but could be trimmed or organized as bulleted list. Overall, every sentence adds value, though some redundancy exists.

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

Completeness4/5

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

Given output schema exists and sibling tools are listed, the description sufficiently covers element-wise array operations. It explains supported operation types and input formats. Lacks discussion of return structure, but output schema mitigates this. Adequate for the complexity.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds examples for operation, array1, array2, but these illustrate rather than add new semantics. Explanation of context and output_mode remains schema-only. No additional meaning beyond what schema provides.

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

Purpose4/5

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

Description clearly states 'Perform element-wise operations on arrays using Polars' with specific verb and resource. Examples illustrate common operations. However, it doesn't explicitly differentiate from sibling tools like array_transform or matrix_operations, which may have overlapping capabilities.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., array_aggregate, array_statistics). Description does not specify prerequisites, limitations, or when not to use. The context signal of sibling tools is not leveraged.

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

array_statisticsArray StatisticsA
Read-onlyIdempotent

Calculate statistical measures on arrays using Polars.

Supports computation across entire array, rows, or columns.

Examples:

COLUMN-WISE MEANS: data=[[1,2,3],[4,5,6]], operations=["mean"], axis=0 Result: [2.5, 3.5, 4.5] (average of each column)

ROW-WISE MEANS: data=[[1,2,3],[4,5,6]], operations=["mean"], axis=1 Result: [2.0, 5.0] (average of each row)

OVERALL STATISTICS: data=[[1,2,3],[4,5,6]], operations=["mean","std"], axis=None Result: {mean: 3.5, std: 1.71}

MULTIPLE STATISTICS: data=[[1,2,3],[4,5,6]], operations=["min","max","mean"], axis=0 Result: {min: [1,2,3], max: [4,5,6], mean: [2.5,3.5,4.5]}

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
dataYes2D array (e.g., [[1,2,3],[4,5,6]])
operationsYesStatistics to compute (e.g., ['mean','std'])
axisNoAxis: 0=column-wise, 1=row-wise, None=overall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true and idempotentHint=true, and the description adds valuable behavioral context about axis computation modes and output formats, with no contradictions.

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

Conciseness4/5

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

The description is well-structured with a clear statement of purpose followed by organized examples. It is concise enough, though some examples could be unified.

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

Completeness4/5

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

Given the presence of an output schema and the tool's complexity (multiple axes, statistics), the description covers the main use cases through examples, providing sufficient completeness.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are well-documented. The description provides examples that illustrate parameter usage but does not add new semantic meaning beyond the schema.

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

Purpose4/5

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

The description states 'Calculate statistical measures on arrays' and provides detailed examples for different axes and multiple statistics. It clearly conveys the tool's function, but does not explicitly differentiate it from sibling tools like 'array_aggregate' or 'statistics'.

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

Usage Guidelines3/5

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

The description gives examples that imply usage across axes and statistics types, but lacks explicit guidance on when to use this tool over alternatives or when not to use it.

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

array_transformArray TransformationA
Read-onlyIdempotent

Transform arrays for ML preprocessing and data normalization.

Transformations: - normalize: L2 normalization (unit vector) - standardize: Z-score (mean=0, std=1) - minmax_scale: Scale to [0,1] range - log_transform: Natural log transform

Examples:

L2 NORMALIZATION: data=[[3,4]], transform="normalize" Result: [[0.6,0.8]] (3²+4²=25, √25=5, 3/5=0.6, 4/5=0.8)

STANDARDIZATION (Z-SCORE): data=[[1,2],[3,4]], transform="standardize" Result: Values with mean=0, std=1

MIN-MAX SCALING: data=[[1,2],[3,4]], transform="minmax_scale" Result: [[0,0.33],[0.67,1]] (scaled to [0,1])

LOG TRANSFORM: data=[[1,10,100]], transform="log_transform" Result: [[0,2.3,4.6]] (natural log)

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
dataYes2D array to transform (e.g., [[1,2],[3,4]])
transformYesTransformation type
axisNoAxis: 0=column-wise, 1=row-wise, None=overall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

The description provides detailed behavioral information, including mathematical formulas, example inputs, and expected outputs for each transformation. Annotations indicate readOnly and idempotent, and the description adds context beyond these, such as the specific calculations. No contradictions.

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

Conciseness4/5

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

The description is well-structured with a brief intro, a list of transformations, and clear examples. While somewhat lengthy, each sentence adds value. It is front-loaded with the main purpose.

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

Completeness5/5

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

Given the complexity of four transformations, the description covers all necessary information: purpose, transformations, examples with results, and parameter details. Annotations provide safety guarantees, and the output schema is implied by examples. No gaps.

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

Parameters4/5

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

The input schema has 100% coverage with descriptions, and the description adds significant value by providing example calculations, explaining the 'transform' options, and clarifying the 'data' format. The 'axis' parameter is also explained.

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

Purpose5/5

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

The description clearly states the tool's purpose: transforming arrays for ML preprocessing and data normalization. It lists four specific transformations with mathematical details, distinguishing it from sibling tools like array_aggregate and array_statistics.

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

Usage Guidelines3/5

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

The description implies usage for data normalization and scaling, but does not explicitly compare to sibling tools or provide when-to-use/when-not-to-use guidance. The examples help, but no alternatives are discussed.

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

batch_executeBatch ExecuteA
Read-only

Execute multiple math operations in a single request with automatic dependency chaining.

USE THIS TOOL when you need 2+ calculations where outputs feed into inputs (bond pricing, statistical workflows, multi-step formulas). Don't make sequential individual tool calls.

Benefits: 90-95% token reduction, single API call, highly flexible workflows

Quick Start

Available tools (20): • Basic: calculate, percentage, round, convert_units • Arrays: array_operations, array_statistics, array_aggregate, array_transform • Statistics: statistics, pivot_table, correlation • Financial: financial_calcs, compound_interest, perpetuity • Linear Algebra: matrix_operations, solve_linear_system, matrix_decomposition • Calculus: derivative, integral, limits_series

Result referencing:

Pass $op_id.result directly in any parameter:

  • $op_id.result - Use output from prior operation

  • $op_id.result[0] - Array indexing

  • $op_id.metadata.field - Nested fields

Example: "payment": "$coupon.result" or "variables": {"x": "$op1.result"}

Example - Bond valuation:

{
  "operations": [
    {"id": "coupon", "tool": "calculate",
     "context": "Calculate annual coupon payment",
     "arguments": {"expression": "principal * 0.04", "variables": {"principal": 8306623.86}}},
    {"id": "fv", "tool": "financial_calcs",
     "context": "Future value of coupon payments",
     "arguments": {"calculation": "fv", "rate": 0.04, "periods": 10,
                   "payment": "$coupon.result", "present_value": 0}},
    {"id": "total", "tool": "calculate",
     "context": "Total bond maturity value",
     "arguments": {"expression": "fv + principal",
                   "variables": {"fv": "$fv.result", "principal": 8306623.86}}}
  ],
  "execution_mode": "auto",
  "output_mode": "minimal",
  "context": "Bond A 10-year valuation"
}

When to Use

✅ Multi-step calculations (financial models, statistics, transformations) ✅ Data pipelines where step N needs output from step N-1 ✅ Any workflow requiring 2+ operations from the tools above

❌ Single standalone calculation ❌ Need to inspect/validate intermediate results before proceeding

Execution Modes

  • auto (recommended): DAG-based optimization, parallel where possible

  • sequential: Strict order

  • parallel: All concurrent (only if truly independent)

Output Modes

  • full: Complete metadata (default)

  • compact: Remove nulls/whitespace

  • minimal: Basic operation objects with values

  • value: Flat {id: value} map (~90% smaller) - use this for most cases

  • final: Sequential chains only, returns terminal result (~95% smaller)

Structure

Each operation:

  • tool: Tool name (required)

  • arguments: Tool parameters (required)

  • id: Unique identifier (auto-generated if omitted)

  • context: Optional label for this operation

Batch-level context parameter labels entire workflow across all output modes.

Response includes: per-operation status, result/error, execution_time_ms, dependency wave, summary stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
operationsYesList of operations to execute. Each operation MUST include: tool (name), arguments (dict). Optional: id (UUID/string), context, label, timeout_ms (int)
execution_modeNoExecution strategy: sequential (order), parallel (concurrent), auto (DAG-based)auto
max_concurrentNoMaximum concurrent operations (applies to parallel/auto modes)
stop_on_errorNoWhether to stop execution on first error. If False, independent operations continue even if others fail.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations include readOnlyHint=true, and the description aligns by focusing on computation without side effects. The description extensively covers execution modes, output modes, error handling, dependency chaining, and response structure, adding significant context beyond annotations.

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

Conciseness4/5

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

The description is well-structured with sections, bullet points, and a code example, making it easy to navigate. However, it is somewhat verbose; a few sentences could be tightened without losing clarity, especially in the Quick Start listing all 20 tools.

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

Completeness5/5

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

Given the tool's complexity (6 parameters, 20 sub-tools, dependency chaining, multiple modes), the description covers purpose, usage, structure, parameter details, examples, and response format, leaving no gaps for an AI agent to invoke the tool correctly.

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

Parameters5/5

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

Input schema has 100% description coverage, but the description adds substantial meaning: it explains execution_mode options, output_mode formats with sizing, how to reference results ($op_id.result), and batch-level context. The example further clarifies parameter usage.

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

Purpose5/5

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

The description clearly states it executes multiple math operations in a single request with dependency chaining, distinguishing it from sequential individual tool calls. The verb 'execute' and resource 'multiple math operations' are specific, and it differentiates from sibling tools by emphasizing batching.

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

Usage Guidelines5/5

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

Explicit 'When to Use' section with checkmarks for multi-step calculations and crosses for single calculations. It also mentions token reduction benefits and references sibling tools in the Quick Start, providing clear guidance on appropriate contexts.

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

calculateExpression CalculatorA
Read-onlyIdempotent

Evaluate mathematical expressions using SymPy.

Supports: - Arithmetic: +, -, *, /, ^ - Trigonometry: sin, cos, tan, asin, acos, atan - Logarithms: log, ln, exp - Constants: pi, e - Functions: sqrt, abs

Examples:

SIMPLE ARITHMETIC: expression="2 + 2" Result: 4

TRIGONOMETRY: expression="sin(pi/2)" Result: 1.0

WITH VARIABLES: expression="x^2 + 2*x + 1", variables={"x": 3} Result: 16

MULTIPLE VARIABLES: expression="x^2 + y^2", variables={"x": 3, "y": 4} Result: 25

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
expressionYesMathematical expression (e.g., '2+2', 'sin(pi/2)', 'x^2+1')
variablesNoVariable substitutions (e.g., {'x': 5, 'y': 10})

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true and idempotentHint=true, but the description goes further by disclosing the use of SymPy, supported functions, and output format through examples. No contradictions are present.

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

Conciseness5/5

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

The description is well-structured with bullet points and clear examples, each earning its place. It is concise yet comprehensive, avoiding unnecessary repetition.

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

Completeness4/5

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

Given the existence of an output schema, the description adequately covers usage with examples and parameter details. It could mention error handling or edge cases, but for a calculator tool with clear examples, it is sufficiently complete.

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

Parameters4/5

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

The input schema has 100% coverage, but the description adds value by explaining how to use variables, providing example expressions, and clarifying the context and output_mode parameters beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states the tool evaluates mathematical expressions using SymPy, lists supported operations and functions, and provides diverse examples. It effectively distinguishes itself from siblings like derivative or integral by being a general-purpose calculator.

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

Usage Guidelines4/5

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

The description includes examples covering simple arithmetic, trigonometry, and variable substitution, which implicitly guide when to use this tool. However, it does not explicitly state when not to use it (e.g., for array operations or calculus), relying on sibling differentiation.

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

compound_interestCompound InterestA
Read-onlyIdempotent

Calculate compound interest with various compounding frequencies.

Formulas: Discrete: A = P(1 + r/n)^(nt) Continuous: A = Pe^(rt)

Examples:

ANNUAL COMPOUNDING: £1000 at 5% for 10 years principal=1000, rate=0.05, time=10, frequency="annual" Result: £1628.89

MONTHLY COMPOUNDING: £1000 at 5% for 10 years principal=1000, rate=0.05, time=10, frequency="monthly" Result: £1647.01

CONTINUOUS COMPOUNDING: £1000 at 5% for 10 years principal=1000, rate=0.05, time=10, frequency="continuous" Result: £1648.72

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
principalYesInitial principal amount (e.g., 1000)
rateYesAnnual interest rate (e.g., 0.05 for 5%)
timeYesTime period in years (e.g., 10)
frequencyNoCompounding frequencyannual

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations provide readOnlyHint and idempotentHint, indicating safe, deterministic computation. The description adds formulas and example outputs, disclosing the calculation behavior beyond the annotations. No side effects or restrictions are mentioned, but the context is sufficient.

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

Conciseness4/5

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

The description is well-structured with formulas followed by concrete examples. It is concise enough to convey essential information without unnecessary verbosity, though the examples could be slightly trimmed.

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

Completeness5/5

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

Given the presence of an output schema (as indicated in context signals), the description does not need to explain return values. It covers the core functionality, formulas, and common use cases comprehensively for a compound interest calculator.

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

Parameters4/5

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

The input schema already provides parameter descriptions with 100% coverage. The description supplements with formulas and examples that clarify how parameters are used (e.g., rate as decimal, time in years), adding value beyond the schema.

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

Purpose5/5

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

The description explicitly states 'Calculate compound interest with various compounding frequencies,' which is a specific verb+resource. It is distinguished from sibling tools like 'perpetuity' and 'financial_calcs' by focusing solely on compound interest calculations.

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

Usage Guidelines4/5

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

The description provides formulas and multiple examples for different compounding frequencies, illustrating when each frequency is appropriate. However, it does not explicitly compare to alternative sibling tools or state when not to use this tool.

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

convert_unitsUnit ConverterA
Read-onlyIdempotent

Convert between angle units: degrees ↔ radians.

Examples:

DEGREES TO RADIANS: value=180, from_unit="degrees", to_unit="radians" Result: 3.14159... (π)

RADIANS TO DEGREES: value=3.14159, from_unit="radians", to_unit="degrees" Result: 180

RIGHT ANGLE: value=90, from_unit="degrees", to_unit="radians" Result: 1.5708... (π/2)

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
valueYesValue to convert (e.g., 180, 3.14159)
from_unitYesSource unit
to_unitYesTarget unit

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds examples of expected conversions but does not detail the output format (though an output schema exists). No contradictions.

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

Conciseness4/5

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

The description includes three examples, each adding clarity. It is slightly verbose but well-structured with clear headings. Could be more concise but remains effective.

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

Completeness4/5

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

With a complete schema and an output schema present, the description covers the essential use cases. It does not mention edge cases (e.g., negative values) but is sufficient for typical use.

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

Parameters5/5

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

Schema coverage is 100%, and the description includes concrete examples (e.g., value=180, from_unit='degrees', to_unit='radians') that clarify the parameter usage beyond enum lists.

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

Purpose5/5

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

The description states 'Convert between angle units: degrees ↔ radians' using a specific verb-resource pair. It clearly distinguishes from sibling tools like 'calculate' and 'financial_calcs' which handle different domains.

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

Usage Guidelines4/5

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

The description provides explicit examples of when to use the tool for degrees-to-radians and radians-to-degrees conversions. It lacks explicit 'when not to use' guidance, but the narrow scope makes it clear.

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

correlationCorrelation AnalysisA
Read-onlyIdempotent

Calculate correlation matrices between multiple variables using Polars.

Methods: - pearson: Linear correlation (-1 to +1, 0 = no linear relationship) - spearman: Rank-based correlation (monotonic, robust to outliers)

Examples:

PEARSON CORRELATION: data={"x":[1,2,3], "y":[2,4,6], "z":[1,1,1]}, method="pearson", output_format="matrix" Result: { "x": {"x":1.0, "y":1.0, "z":NaN}, "y": {"x":1.0, "y":1.0, "z":NaN}, "z": {"x":NaN, "y":NaN, "z":NaN} }

PAIRWISE FORMAT: data={"height":[170,175,168], "weight":[65,78,62]}, method="pearson", output_format="pairs" Result: [{"var1":"height", "var2":"weight", "correlation":0.89}]

SPEARMAN (RANK): data={"x":[1,2,100], "y":[2,4,200]}, method="spearman" Result: Perfect correlation (1.0) despite non-linear relationship

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
dataYesDict of variable names to values (e.g., {'x':[1,2,3],'y':[2,4,6]})
methodNoCorrelation methodpearson
output_formatNoOutput format: 'matrix' or 'pairs'matrix

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnly and idempotent, which the description supports. It adds behavioral details: NaN for constant variables, spearman handling of non-linear monotonic relationships, and output_format options. No contradictions.

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

Conciseness4/5

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

The description is well-organized into methods and examples. While slightly lengthy, each section is useful and well-labeled. It could be more concise but structure aids readability.

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

Completeness4/5

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

Given the presence of an output schema, the description covers key aspects: methods, output formats, and example results. It adequately addresses typical usage but omits edge cases like missing data handling beyond constant variables.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds value through examples showing usage of 'output_format' and 'method', but does not introduce new information beyond the schema descriptions.

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

Purpose5/5

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

The description states 'Calculate correlation matrices between multiple variables using Polars' with specific verb and resource. It clearly distinguishes from sibling tools like 'statistics' or 'array_operations' by focusing on correlation methods and output formats.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives like 'statistics' or 'array_operations'. Usage is implied through method descriptions and examples, but no direct guidance on context or exclusions is provided.

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

derivativeDerivative CalculatorA
Read-onlyIdempotent

Compute symbolic and numerical derivatives with support for higher orders and partial derivatives.

Examples:

FIRST DERIVATIVE: expression="x^3 + 2x^2", variable="x", order=1 Result: derivative="3x^2 + 4*x"

SECOND DERIVATIVE (acceleration/concavity): expression="x^3", variable="x", order=2 Result: derivative="6*x"

EVALUATE AT POINT: expression="sin(x)", variable="x", order=1, point=0 Result: derivative="cos(x)", value_at_point=1.0

PRODUCT RULE: expression="sin(x)*cos(x)", variable="x", order=1 Result: derivative="cos(x)^2 - sin(x)^2"

PARTIAL DERIVATIVE: expression="x^2*y", variable="y", order=1 Result: derivative="x^2" (treating x as constant)

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
expressionYesMathematical expression to differentiate (e.g., 'x^3 + 2*x^2', 'sin(x)')
variableYesVariable to differentiate with respect to (e.g., 'x', 't')
orderNoDerivative order (1=first derivative, 2=second, etc.)
pointNoOptional point for numerical evaluation of the derivative

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it specifies that results include derivative expression and optionally value_at_point. Annotations already declare readOnlyHint and idempotentHint, so the description complements these without contradiction.

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

Conciseness5/5

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

The description is concise: a single summary sentence followed by clear, well-structured examples. No unnecessary text, and examples are front-loaded to illustrate common patterns efficiently.

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

Completeness5/5

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

The description covers all major use cases (symbolic, numerical, higher order, partial derivatives, evaluation at point) and includes enough variety to fully guide an agent. The tool has an output schema, so explaining return format is unnecessary.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are well-documented. The description reinforces parameter meaning through examples but does not add substantial new semantic information beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description starts with a clear verb and resource: 'Compute symbolic and numerical derivatives with support for higher orders and partial derivatives.' This is specific and distinguishes the tool from siblings like integral or calculate.

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

Usage Guidelines4/5

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

The description provides multiple examples showing different use cases (first, second, evaluation, product rule, partial derivative), which implicitly guides when to use specific parameter combinations. However, it does not explicitly state when not to use this tool or direct users to alternatives, though the sibling names and context signals make differentiation apparent.

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

financial_calcsFinancial CalculationsA
Read-onlyIdempotent

Time Value of Money (TVM) calculations: solve for PV, FV, PMT, rate, IRR, or NPV.

The TVM equation has 5 variables - know 4, solve for the 5th: PV = Present Value (lump sum now) FV = Future Value (lump sum at maturity) PMT = Payment (regular periodic cash flow) N = Number of periods I/Y = Interest rate per period

Sign convention: negative = cash out (you pay), positive = cash in (you receive)

Examples:

ZERO-COUPON BOND: PV of £1000 in 10 years at 5% calculation="pv", rate=0.05, periods=10, future_value=1000 Result: £613.91

COUPON BOND: PV of £30 annual coupons + £1000 face value at 5% yield calculation="pv", rate=0.05, periods=10, payment=30, future_value=1000 Result: £845.57

RETIREMENT SAVINGS: FV with £500/month for 30 years at 7% calculation="fv", rate=0.07/12, periods=360, payment=-500, present_value=0 Result: £566,764

MORTGAGE PAYMENT: Monthly payment on £200k loan, 30 years, 4% APR calculation="pmt", rate=0.04/12, periods=360, present_value=-200000, future_value=0 Result: £954.83

INTEREST RATE: What rate grows £613.81 to £1000 in 10 years? calculation="rate", periods=10, present_value=-613.81, future_value=1000 Result: 0.05 (5%)

GROWING ANNUITY: Salary stream with 3.5% raises, discounted at 12% calculation="pv", rate=0.12, periods=25, payment=-45000, growth_rate=0.035 Result: £402,586

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
calculationYesWhat to solve for: pv, fv, pmt, rate, irr, or npv
rateNoInterest/discount rate per period (e.g., 0.05 for 5% annual)
periodsNoNumber of compounding periods
paymentNoRegular periodic payment (negative=pay out, positive=receive)
present_valueNoSingle lump sum at time 0 (negative=pay, positive=receive)
future_valueNoSingle lump sum at maturity (negative=owe, positive=receive)
cash_flowsNoSeries of cash flows for IRR/NPV (e.g., [-100, 30, 30, 130])
whenNoPayment timing: 'end' (ordinary) or 'begin' (annuity due)end
growth_rateNoPayment growth rate per period (0.0 for level annuity)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the tool's safety profile is known. The description adds value by explaining the sign convention (negative=cash out, positive=cash in) and demonstrating the behavior through examples. No contradictions with annotations.

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

Conciseness5/5

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

The description is well-structured: it starts with a summary, then explains the TVM equation, sign convention, and provides numerous clear examples. Every section serves a purpose, and the length is appropriate for the complexity of the tool.

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

Completeness5/5

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

Given the tool's high complexity (11 parameters, 1 required) and the existence of an output schema, the description covers all necessary aspects: all calculation types, sign convention, and multiple scenarios including growing annuity. It leaves no gaps for the agent to understand how to invoke the tool correctly.

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

Parameters4/5

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

Input schema covers 100% of parameters with descriptions, but the description enriches meaning by explaining the TVM variable relationships and providing examples that show how parameters like rate, periods, payment, etc., work together. The sign convention adds crucial semantic context beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Time Value of Money (TVM) calculations: solve for PV, FV, PMT, rate, IRR, or NPV.' It specifies the resource (TVM calculations) and the action (solve for), distinguishing it from sibling tools like compound_interest or perpetuity.

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

Usage Guidelines4/5

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

The description provides clear guidance on when to use this tool through the TVM equation explanation and sign convention. It includes multiple examples covering common financial scenarios. However, it does not explicitly mention alternatives or when not to use this tool, like for simple interest calculations which might be better handled by compound_interest.

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

integralIntegral CalculatorA
Read-onlyIdempotent

Compute symbolic and numerical integrals (definite and indefinite).

Examples:

INDEFINITE INTEGRAL (antiderivative): expression="x^2", variable="x" Result: "x^3/3"

DEFINITE INTEGRAL (area): expression="x^2", variable="x", lower_bound=0, upper_bound=1 Result: 0.333

TRIGONOMETRIC: expression="sin(x)", variable="x", lower_bound=0, upper_bound=3.14159 Result: 2.0 (area under one period)

NUMERICAL METHOD (non-elementary): expression="exp(-x^2)", variable="x", lower_bound=0, upper_bound=1, method="numerical" Result: 0.746824 (Gaussian integral approximation)

SYMBOLIC ANTIDERIVATIVE: expression="1/x", variable="x" Result: "log(x)"

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
expressionYesMathematical expression to integrate (e.g., 'x^2', 'sin(x)')
variableYesIntegration variable (e.g., 'x', 't')
lower_boundNoLower bound for definite integral (omit for indefinite)
upper_boundNoUpper bound for definite integral (omit for indefinite)
methodNoIntegration method: symbolic=exact/analytical, numerical=approximate (requires bounds)symbolic

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint, confirming no side effects. The description goes beyond by detailing behavioral traits: it distinguishes symbolic (exact) vs numerical (approximate), notes that numerical requires bounds, and shows result formats (e.g., returning an expression or a number). This fully clarifies behavior.

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

Conciseness4/5

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

The description is fairly concise given the complexity; it front-loads the purpose and uses bullet-like examples. However, the examples are somewhat lengthy and could be condensed without losing clarity. Still, every sentence adds value, and the structure is logical.

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

Completeness5/5

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

Given the tool's complexity (7 parameters, 2 required, with enums and optional bounds), the description is complete. The output schema exists but is not shown; the description compensates with example outputs. All parameter interactions are clarified, and edge cases (e.g., non-elementary integrals) are covered.

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

Parameters5/5

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

Despite 100% schema coverage, the description adds significant value through examples showing how each parameter is used (e.g., expression='x^2', variable='x', lower_bound=0, upper_bound=1, method='numerical'). The examples clarify the meaning of bounds and method, and even show the context parameter used implicitly? Actually context is not shown, but the rest is well illustrated.

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

Purpose5/5

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

The description starts with a clear verb+resource: 'Compute symbolic and numerical integrals (definite and indefinite).' It provides many examples covering indefinite, definite, trigonometric, numerical, and symbolic cases, which distinctly sets it apart from sibling tools like derivative or limits_series.

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

Usage Guidelines3/5

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

The description includes extensive examples that implicitly show when to use integrals (e.g., symbolic vs numerical), but it lacks explicit guidance on when to prefer this tool over alternatives or when not to use it. No exclusions or prerequisites are mentioned, which is a gap for an AI agent deciding between tools.

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

limits_seriesLimits and SeriesA
Read-onlyIdempotent

Compute limits and series expansions using SymPy.

Examples:

CLASSIC LIMIT: expression="sin(x)/x", variable="x", point=0, operation="limit" Result: limit=1

LIMIT AT INFINITY: expression="1/x", variable="x", point="oo", operation="limit" Result: limit=0

ONE-SIDED LIMIT: expression="1/x", variable="x", point=0, operation="limit", direction="+" Result: limit=+∞ (approaching from right)

REMOVABLE DISCONTINUITY: expression="(x^2-1)/(x-1)", variable="x", point=1, operation="limit" Result: limit=2

MACLAURIN SERIES (at 0): expression="exp(x)", variable="x", point=0, operation="series", order=4 Result: "1 + x + x^2/2 + x^3/6 + O(x^4)"

TAYLOR SERIES (at point): expression="sin(x)", variable="x", point=3.14159, operation="series", order=4 Result: expansion around π

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
expressionYesMathematical expression to analyse (e.g., 'sin(x)/x', 'exp(x)')
variableYesVariable for limit/expansion (e.g., 'x', 't')
pointYesPoint for limit/expansion (number, 'oo' for infinity, '-oo' for -infinity)
operationNoOperation: limit=compute limit, series=Taylor/Maclaurin expansionlimit
orderNoSeries expansion order (number of terms)
directionNoLimit direction: +=from right, -=from left, +-=both sides+-

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint and idempotentHint, so the description's task is lighter. The description adds behavioral context through examples showing expected outputs for different inputs, including edge cases like infinity and one-sided limits. It does not contradict annotations.

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

Conciseness3/5

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

The description is front-loaded with the purpose, but the extensive examples make it longer than necessary. While informative, some examples could be consolidated. It is structured but not minimal.

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

Completeness4/5

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

Given the tool's complexity (8 parameters, 3 required, 100% schema coverage, output schema exists), the description covers both operations with detailed examples. It provides sufficient context for correct usage, though edge cases like invalid expressions are not addressed.

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

Parameters4/5

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

With 100% schema coverage, the baseline is 3. The description adds value by showing parameter usage in context (e.g., 'operation=limit' or 'operation=series') and providing concrete result examples, which helps the agent understand how parameters interact.

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

Purpose5/5

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

The description clearly states the tool computes limits and series expansions using SymPy, with many specific examples covering different cases. The purpose is unambiguous and distinct from sibling tools like derivative and integral.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives like derivative or integral. The examples imply its usage for limits and series, but no exclusions or alternatives are provided.

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

matrix_decompositionMatrix DecompositionA
Read-onlyIdempotent

Matrix decompositions: eigenvalues/vectors, SVD, QR, Cholesky, LU.

Examples:

EIGENVALUE DECOMPOSITION: matrix=[[4,2],[1,3]], decomposition="eigen" Result: {eigenvalues: [5, 2], eigenvectors: [[0.89,0.45],[0.71,-0.71]]}

SINGULAR VALUE DECOMPOSITION (SVD): matrix=[[1,2],[3,4],[5,6]], decomposition="svd" Result: {U: 3×3, singular_values: [9.5, 0.77], Vt: 2×2}

QR FACTORISATION: matrix=[[1,2],[3,4]], decomposition="qr" Result: {Q: orthogonal, R: upper triangular}

CHOLESKY (symmetric positive definite): matrix=[[4,2],[2,3]], decomposition="cholesky" Result: {L: [[2,0],[1,1.41]]} where A=LL^T

LU DECOMPOSITION: matrix=[[2,1],[4,3]], decomposition="lu" Result: {P: permutation, L: lower, U: upper} where A=PLU

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
matrixYesMatrix to decompose as 2D nested list (e.g., [[4,2],[1,3]])
decompositionYesDecomposition type: eigen=eigenvalues/vectors, svd=singular value, qr=QR, cholesky=symmetric positive definite, lu=LU factorisation

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description does not need to restate safety. It adds no behavioral details beyond examples, which are adequate but not necessary given the annotations.

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

Conciseness3/5

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

The description is verbose with multiple examples. While informative, it could be more streamlined. The purpose is front-loaded, but the length may reduce scanning efficiency.

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

Completeness5/5

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

Given the complexity of five decomposition types, the description is comprehensive with examples illustrating input and output structures. It complements the output schema by showing result formats in each case.

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

Parameters4/5

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

Schema coverage is 100%, so parameters are documented. The description adds value with examples showing exact matrix format and decomposition choices, which clarifies the enum values and required structure.

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

Purpose5/5

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

The description clearly states it provides matrix decompositions including eigenvalues, SVD, QR, Cholesky, LU. Each is explicitly named and distinguished from sibling tools like matrix_operations.

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

Usage Guidelines3/5

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

The description lists decomposition types but does not provide explicit guidance on when to use each type or when to avoid the tool. Usage is implied through examples, but no alternatives or exclusions are mentioned.

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

matrix_operationsMatrix OperationsA
Read-onlyIdempotent

Core matrix operations using NumPy BLAS.

Examples:

MATRIX MULTIPLICATION: operation="multiply", matrix1=[[1,2],[3,4]], matrix2=[[5,6],[7,8]] Result: [[19,22],[43,50]]

MATRIX INVERSE: operation="inverse", matrix1=[[1,2],[3,4]] Result: [[-2,1],[1.5,-0.5]]

TRANSPOSE: operation="transpose", matrix1=[[1,2],[3,4]] Result: [[1,3],[2,4]]

DETERMINANT: operation="determinant", matrix1=[[1,2],[3,4]] Result: -2.0

TRACE: operation="trace", matrix1=[[1,2],[3,4]] Result: 5.0 (1+4)

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
operationYesMatrix operation
matrix1YesFirst matrix (e.g., [[1,2],[3,4]])
matrix2NoSecond matrix for multiplication

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. The description adds behavioral context by providing concrete examples for each operation, showing input formats and results. It does not contradict annotations and adds value beyond them.

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

Conciseness4/5

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

The description is well-structured with clear headings for each operation and concise examples. While somewhat lengthy, each example serves a purpose and improves clarity. It is not overly verbose.

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

Completeness3/5

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

The description covers all operations with examples but lacks mention of constraints such as square matrix requirement for inverse or determinant. Given the presence of an output schema, return values are not required. Overall adequate but has gaps.

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

Parameters4/5

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

All 5 parameters have schema descriptions, giving a baseline of 3. The description adds significant value by providing specific examples of how each parameter is used, e.g., showing matrix1 and matrix2 values for multiplication, and the result format.

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

Purpose5/5

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

The description clearly states the tool performs core matrix operations using NumPy BLAS and lists specific operations: multiply, inverse, transpose, determinant, and trace. This distinguishes it from sibling tools like matrix_decomposition and solve_linear_system.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool over alternatives such as matrix_decomposition or solve_linear_system. Usage is only implied by the listed operations, but there is no when-to-use or when-not-to-use advice.

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

percentagePercentage CalculatorA
Read-onlyIdempotent

Perform percentage calculations: of, increase, decrease, or change.

Examples:

PERCENTAGE OF: 15% of 200 operation="of", value=200, percentage=15 Result: 30

INCREASE: 100 increased by 20% operation="increase", value=100, percentage=20 Result: 120

DECREASE: 100 decreased by 20% operation="decrease", value=100, percentage=20 Result: 80

PERCENTAGE CHANGE: from 80 to 100 operation="change", value=80, percentage=100 Result: 25 (25% increase)

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
operationYesType of calculation
valueYesBase value
percentageYesPercentage amount (or new value for 'change')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safe, non-destructive nature is clear. The description adds behavioral context via examples but does not disclose further side effects or constraints beyond what annotations and schema imply.

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

Conciseness4/5

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

The description is well-structured with clear sections and examples, but it is somewhat lengthy. It effectively communicates the purpose without being overly verbose, earning a high score.

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

Completeness4/5

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

Given the tool's simplicity, the presence of an output schema, and the examples covering all operations, the description is sufficient for an agent to understand inputs and outputs. It fully addresses the calculation context.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains all parameters. The description adds marginal value by demonstrating parameter usage in examples, but no new semantic information beyond the schema.

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

Purpose5/5

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

The description clearly states it performs percentage calculations and enumerates the four supported operations (of, increase, decrease, change) with concrete examples, making the tool's purpose highly specific and distinguishable from sibling tools like compound_interest or statistics.

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

Usage Guidelines3/5

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

The description provides examples of when to use each operation but does not explicitly state when not to use this tool or alternative tools. It lacks explicit usage context, though the examples imply typical use cases.

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

perpetuityPerpetuity CalculationsA
Read-onlyIdempotent

Calculate present value of a perpetuity (infinite series of payments).

A perpetuity is an annuity that continues forever. Common in: - Preferred stock dividends - Endowment funds - Real estate with infinite rental income - UK Consol bonds (historically)

Formulas: Level Ordinary: PV = C / r Level Due: PV = C / r × (1 + r) Growing: PV = C / (r - g), where r > g

Examples:

LEVEL PERPETUITY: £1000 annual payment at 5% payment=1000, rate=0.05 Result: PV = £20,000

GROWING PERPETUITY: £1000 payment growing 3% annually at 8% discount payment=1000, rate=0.08, growth_rate=0.03 Result: PV = £20,000

PERPETUITY DUE: £1000 at period start at 5% payment=1000, rate=0.05, when='begin' Result: PV = £21,000

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
paymentYesPeriodic payment amount (e.g., 1000)
rateYesDiscount rate per period (e.g., 0.05)
growth_rateNoPayment growth rate (None or 0 for level, e.g., 0.03 for growing)
whenNoPayment timing: 'end' or 'begin'end

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already provide readOnlyHint and idempotentHint, so the tool is clearly safe and side-effect-free. The description adds behavioral context about formulas and constraints (r > g for growing perpetuity) but does not reveal additional behavioral traits beyond what annotations convey.

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

Conciseness4/5

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

The description is well-organized with sections for formulas, examples, and context. While it is somewhat lengthy, every sentence serves a purpose. Minor redundancy (e.g., repeating formulas in examples) could be trimmed, but overall clarity is high.

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

Completeness4/5

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

Given the annotations (readOnly, idempotent) and the existence of an output schema, the description adequately covers usage context, parameter semantics, and formula constraints. The examples illustrate return values, making the tool complete for its complexity.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description enriches understanding with concrete examples (e.g., £1000 at 5% yields £20,000) and formula explanations, adding value beyond the schema descriptions alone.

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

Purpose4/5

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

The description clearly states the tool calculates present value of a perpetuity, with specific verb and resource. It provides formulas and examples but does not explicitly differentiate from sibling tools like compound_interest or financial_calcs, which also handle cash flows.

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

Usage Guidelines3/5

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

The description lists common contexts (preferred stock, endowments, etc.) but does not specify when to avoid using this tool or mention alternatives. The guidance is implicit through examples but lacks explicit when-to-use versus when-not-to-use criteria.

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

pivot_tablePivot TableA
Read-onlyIdempotent

Create pivot tables from tabular data using Polars.

Like Excel pivot tables: reshape data with row/column dimensions and aggregated values.

Example:

SALES BY REGION AND PRODUCT: data=[ {"region":"North","product":"A","sales":100}, {"region":"North","product":"B","sales":150}, {"region":"South","product":"A","sales":80}, {"region":"South","product":"B","sales":120} ], index="region", columns="product", values="sales", aggfunc="sum" Result: product | A | B --------|------|------ North | 100 | 150 South | 80 | 120

COUNT AGGREGATION: Same data with aggfunc="count" Result: Count of entries per region-product combination

AVERAGE SCORES: data=[{"dept":"Sales","role":"Manager","score":85}, ...] index="dept", columns="role", values="score", aggfunc="mean" Result: Average scores by department and role

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
dataYesList of row dictionaries
indexYesColumn name for row index
columnsYesColumn name for pivot columns
valuesYesColumn name to aggregate
aggfuncNoAggregation functionsum

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint; description adds meaningful behavioral context by explaining the operation (Polars-based, Excel-like), providing example outputs, and detailing parameter effects like aggregation functions. No contradictions with annotations.

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

Conciseness4/5

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

Description is well-structured with a clear opening, comparison, and multiple labeled examples. It is slightly long but each example serves a distinct purpose; no wasted sentences.

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

Completeness5/5

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

Given the tool's moderate complexity and the presence of an output schema (as noted in context signals), the description fully explains the tool's behavior with diverse examples covering common aggfuncs. No gaps remain for typical use cases.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for all parameters, so baseline is 3. Description adds value through concrete examples that illustrate parameter relationships (e.g., index, columns, values, aggfunc), enhancing understanding beyond schema alone.

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

Purpose5/5

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

Description clearly states 'Create pivot tables from tabular data using Polars' and analogizes to Excel pivot tables. Examples demonstrate specific verb+resource (pivot tables) and distinguish from sibling tools like array_aggregate or statistics, which serve different purposes.

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

Usage Guidelines4/5

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

Description provides clear usage context with examples for sum, count, and mean aggregations, implying when to use (reshaping with aggregation). However, it does not explicitly state when not to use or compare to alternatives, leaving slight ambiguity.

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

roundAdvanced RoundingA
Read-onlyIdempotent

Advanced rounding operations with multiple methods.

Methods: - round: Round to nearest (3.145 → 3.15 at 2dp) - floor: Always round down (3.149 → 3.14) - ceil: Always round up (3.141 → 3.15) - trunc: Truncate towards zero (-3.7 → -3, 3.7 → 3)

Examples:

ROUND TO NEAREST: values=3.14159, method="round", decimals=2 Result: 3.14

FLOOR (DOWN): values=3.14159, method="floor", decimals=2 Result: 3.14

CEIL (UP): values=3.14159, method="ceil", decimals=2 Result: 3.15

MULTIPLE VALUES: values=[3.14159, 2.71828], method="round", decimals=2 Result: [3.14, 2.72]

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
valuesYesSingle value or list (e.g., 3.14159 or [3.14, 2.71])
methodNoRounding methodround
decimalsNoNumber of decimal places

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description is not burdened to cover safety. It adds value by detailing each method's rounding behavior (e.g., 'floor: Always round down (3.149 → 3.14)') and showing examples. This clarifies nuances beyond annotations, such as treatment of negative numbers in truncation.

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

Conciseness4/5

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

The description is well-structured with a clear header, method list, and examples. It starts with the purpose and quickly enumerates methods. However, the example section is somewhat repetitive (multiple examples showing similar patterns) and could be trimmed without loss of clarity, earning a 4 rather than 5.

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

Completeness5/5

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

Given that an output schema exists (per context signals), the description is not required to detail return values. It covers all methods, parameters, and provides comprehensive examples. There are no obvious gaps for a rounding tool; edge cases like very large decimal places are not mentioned but are not critical for basic understanding.

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

Parameters4/5

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

Schema coverage is 100% with good descriptions for each parameter. The description adds significant value by providing concrete examples for each method and for multiple values, demonstrating the parameter combinations in action. This goes beyond the schema's static descriptions, helping the agent predict outputs.

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

Purpose5/5

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

The description clearly states it provides 'Advanced rounding operations with multiple methods' and lists four methods (round, floor, ceil, trunc) with explicit examples. This specific verb+resource combination, 'round' with 'Advanced Rounding' title, makes the tool's purpose unmistakable and distinguishes it from mathematical siblings like 'calculate' or 'percentage'.

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

Usage Guidelines3/5

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

The description implicitly guides when to use this tool (for rounding operations) but does not explicitly state when to use it versus alternatives like 'calculate' or 'percentage'. There is no mention of context or exclusions, so the agent must infer usage solely from the tool's name and method list.

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

solve_linear_systemLinear System SolverA
Read-onlyIdempotent

Solve systems of linear equations (Ax = b) using SciPy's optimised solver.

Examples:

SQUARE SYSTEM (2 equations, 2 unknowns): coefficients=[[2,3],[1,1]], constants=[8,3], method="direct" Solves: 2x+3y=8, x+y=3 Result: [x=1, y=2]

OVERDETERMINED SYSTEM (3 equations, 2 unknowns): coefficients=[[1,2],[3,4],[5,6]], constants=[5,6,7], method="least_squares" Finds best-fit x minimizing ||Ax-b|| Result: [x≈-6, y≈5.5]

3x3 SYSTEM: coefficients=[[2,1,-1],[1,3,2],[-1,2,1]], constants=[8,13,5], method="direct" Result: [x=3, y=2, z=1]

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
coefficientsYesCoefficient matrix A in Ax=b system (2D list, e.g., [[2,3],[1,1]])
constantsYesConstants vector b in Ax=b system (1D list, e.g., [8,3])
methodNoSolution method: direct=exact (square systems), least_squares=overdetermined systemsdirect

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and idempotentHint=true, so the description does not need to restate them. It adds value by specifying the use of SciPy's solver and giving result examples, which imply no side effects. No contradictions.

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

Conciseness4/5

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

The description is front-loaded with the purpose, followed by well-structured examples. While somewhat long, the examples are instructive and not redundant. It could be slightly more concise, but the structure is logical and easy to follow.

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

Completeness5/5

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

Given the presence of an output schema (implied), the description covers essential use cases (square, overdetermined, larger systems) with example inputs and outputs. It provides sufficient context for both simple and complex scenarios, making it complete for this tool's complexity.

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

Parameters5/5

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

Schema has 100% description coverage, but the examples add significant meaning: they show how to structure coefficients and constants as nested lists, demonstrate valid inputs for different system sizes, and clarify the method parameter with concrete use cases. This greatly aids understanding beyond the schema.

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

Purpose5/5

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

The description clearly states it solves linear systems Ax=b using SciPy's optimized solver, which is a specific verb+resource. The examples with different system types (square, overdetermined) further clarify its purpose and distinguish it from sibling tools like matrix_operations or calculate.

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

Usage Guidelines5/5

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

The description explicitly explains when to use 'direct' (square systems) vs 'least_squares' (overdetermined systems) via examples. It also shows the syntax for different system sizes, providing clear usage context without leaving ambiguity.

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

statisticsStatistical AnalysisA
Read-onlyIdempotent

Comprehensive statistical analysis using Polars.

Analysis types: - describe: Count, mean, std, min, max, median - quartiles: Q1, Q2, Q3, IQR - outliers: IQR-based detection (values beyond Q1-1.5×IQR or Q3+1.5×IQR)

Examples:

DESCRIPTIVE STATISTICS: data=[1,2,3,4,5,100], analyses=["describe"] Result: {count:6, mean:19.17, std:39.25, min:1, max:100, median:3.5}

QUARTILES: data=[1,2,3,4,5], analyses=["quartiles"] Result: {Q1:2, Q2:3, Q3:4, IQR:2}

OUTLIER DETECTION: data=[1,2,3,4,5,100], analyses=["outliers"] Result: {outlier_values:[100], outlier_count:1, lower_bound:-1, upper_bound:8.5}

FULL ANALYSIS: data=[1,2,3,4,5,100], analyses=["describe","quartiles","outliers"] Result: All three analyses combined

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional annotation to label this calculation (e.g., 'Bond A PV', 'Q2 revenue'). Appears in results for easy identification.
output_modeNoOutput format: full (default), compact, minimal, value, or final. See batch_execute tool for details.full
dataYesList of numerical values (e.g., [1,2,3,4,5,100])
analysesYesTypes of analysis to perform

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnly and idempotent behavior. The description adds transparency by detailing the computation types and output structures through examples, clarifying that no side effects occur.

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

Conciseness4/5

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

The description is well-structured with a clear header, bulleted analysis types, and separate examples. It is appropriately detailed without being overly verbose, though some repetition could be trimmed.

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

Completeness5/5

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

Given the tool's moderate complexity and the presence of an output schema, the description thoroughly explains input parameters, analysis types, and output formats through examples. No critical gaps remain.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds value by explaining the purpose of each analysis type and providing concrete examples that illustrate parameter usage (data, analyses, context).

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

Purpose5/5

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

The description clearly states the tool performs 'Comprehensive statistical analysis using Polars' and lists specific analysis types (describe, quartiles, outliers) with detailed examples. This distinguishes it from sibling tools like array_statistics or correlation, which are more specific.

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

Usage Guidelines3/5

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

The description implies usage for basic statistical summaries but does not explicitly state when to use this tool versus alternatives like correlation or array_statistics. No guidance on prerequisites or exclusions is provided.

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. Dates show when Glama detected each change.

  1. 11 tool updatesv2.0.2
    • Changedarray_operations1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "operation",
        -  "array2",
        -  "array1"
        -]New value: +[
        +  "array1",
        +  "operation",
        +  "array2"
        +]
    • Changedcompound_interest1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "principal",
        -  "time",
        -  "rate"
        -]New value: +[
        +  "rate",
        +  "principal",
        +  "time"
        +]
    • Changedconvert_units1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "to_unit",
        -  "from_unit",
        -  "value"
        -]New value: +[
        +  "from_unit",
        +  "value",
        +  "to_unit"
        +]
    • Changedderivative1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "variable",
        -  "expression"
        -]New value: +[
        +  "expression",
        +  "variable"
        +]
    • Changedintegral1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "variable",
        -  "expression"
        -]New value: +[
        +  "expression",
        +  "variable"
        +]
    • Changedlimits_series1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "variable",
        -  "point",
        -  "expression"
        -]New value: +[
        +  "point",
        +  "variable",
        +  "expression"
        +]
    • Changedmatrix_operations1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "operation",
        -  "matrix1"
        -]New value: +[
        +  "matrix1",
        +  "operation"
        +]
    • Changedpercentage1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "operation",
        -  "value",
        -  "percentage"
        -]New value: +[
        +  "percentage",
        +  "operation",
        +  "value"
        +]
    • Changedpivot_table1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "values",
        -  "data",
        -  "columns",
        -  "index"
        -]New value: +[
        +  "index",
        +  "data",
        +  "values",
        +  "columns"
        +]
    • Changedsolve_linear_system1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "coefficients",
        -  "constants"
        -]New value: +[
        +  "constants",
        +  "coefficients"
        +]
    • Changedstatistics1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "analyses",
        -  "data"
        -]New value: +[
        +  "data",
        +  "analyses"
        +]
  2. 8 tool updatesv2.0.3
    • Changedarray_operations1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "array2",
        -  "operation",
        -  "array1"
        -]New value: +[
        +  "operation",
        +  "array2",
        +  "array1"
        +]
    • Changedcompound_interest1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "rate",
        -  "principal",
        -  "time"
        -]New value: +[
        +  "principal",
        +  "time",
        +  "rate"
        +]
    • Changedderivative1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "expression",
        -  "variable"
        -]New value: +[
        +  "variable",
        +  "expression"
        +]
    • Changedintegral1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "expression",
        -  "variable"
        -]New value: +[
        +  "variable",
        +  "expression"
        +]
    • Changedlimits_series1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "expression",
        -  "point",
        -  "variable"
        -]New value: +[
        +  "variable",
        +  "point",
        +  "expression"
        +]
    • Changedmatrix_decomposition1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "matrix",
        -  "decomposition"
        -]New value: +[
        +  "decomposition",
        +  "matrix"
        +]
    • Changedpercentage1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "percentage",
        -  "operation",
        -  "value"
        -]New value: +[
        +  "operation",
        +  "value",
        +  "percentage"
        +]
    • Changedpivot_table1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "columns",
        -  "values",
        -  "data",
        -  "index"
        -]New value: +[
        +  "values",
        +  "data",
        +  "columns",
        +  "index"
        +]
  3. 7 tool updatesv2.0.1
    • Changedarray_aggregate1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "array1",
        -  "operation"
        -]New value: +[
        +  "operation",
        +  "array1"
        +]
    • Changedarray_operations1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "array1",
        -  "operation",
        -  "array2"
        -]New value: +[
        +  "array2",
        +  "operation",
        +  "array1"
        +]
    • Changedarray_statistics1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "operations",
        -  "data"
        -]New value: +[
        +  "data",
        +  "operations"
        +]
    • Changedcompound_interest1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "principal",
        -  "rate",
        -  "time"
        -]New value: +[
        +  "rate",
        +  "principal",
        +  "time"
        +]
    • Changedmatrix_operations1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "matrix1",
        -  "operation"
        -]New value: +[
        +  "operation",
        +  "matrix1"
        +]
    • Changedpivot_table1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "values",
        -  "data",
        -  "index",
        -  "columns"
        -]New value: +[
        +  "columns",
        +  "values",
        +  "data",
        +  "index"
        +]
    • Changedstatistics1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "data",
        -  "analyses"
        -]New value: +[
        +  "analyses",
        +  "data"
        +]
  4. 7 tool updatesv1.0.0
    • Changedarray_operations1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "operation",
        -  "array1",
        -  "array2"
        -]New value: +[
        +  "array1",
        +  "operation",
        +  "array2"
        +]
    • Changedarray_transform1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "transform",
        -  "data"
        -]New value: +[
        +  "data",
        +  "transform"
        +]
    • Changedcompound_interest1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "rate",
        -  "principal",
        -  "time"
        -]New value: +[
        +  "principal",
        +  "rate",
        +  "time"
        +]
    • Changedconvert_units1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "value",
        -  "to_unit",
        -  "from_unit"
        -]New value: +[
        +  "to_unit",
        +  "from_unit",
        +  "value"
        +]
    • Changedpercentage1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "value",
        -  "percentage",
        -  "operation"
        -]New value: +[
        +  "percentage",
        +  "operation",
        +  "value"
        +]
    • Changedpivot_table1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "values",
        -  "columns",
        -  "index",
        -  "data"
        -]New value: +[
        +  "values",
        +  "data",
        +  "index",
        +  "columns"
        +]
    • Changedstatistics1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "analyses",
        -  "data"
        -]New value: +[
        +  "data",
        +  "analyses"
        +]
  5. 21 tool updates
    • First observedarray_aggregate
    • First observedarray_operations
    • First observedarray_statistics
    • First observedarray_transform
    • First observedbatch_execute
    • First observedcalculate
    • First observedcompound_interest
    • First observedconvert_units
    • First observedcorrelation
    • First observedderivative
    • First observedfinancial_calcs
    • First observedintegral
    • First observedlimits_series
    • First observedmatrix_decomposition
    • First observedmatrix_operations
    • First observedpercentage
    • First observedperpetuity
    • First observedpivot_table
    • First observedround
    • First observedsolve_linear_system
    • First observedstatistics

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have distinct purposes, but some overlap exists between `statistics` and `array_statistics` as both compute descriptive statistics, though on different data structures (1D vs 2D). Also, `matrix_operations` and `matrix_decomposition` could be confused despite focusing on different operations. Overall, descriptions are clear enough to distinguish.

Naming Consistency3/5

Tool names mix single-word nouns (e.g., `calculate`, `derivative`) with compound underscores (e.g., `array_aggregate`, `solve_linear_system`). There is no consistent verb_noun pattern; names are descriptive but follow no single convention. Abbreviations like `calcs` appear, and some names are quite long.

Tool Count5/5

21 tools is well-scoped for a comprehensive math server covering basic arithmetic, finance, statistics, linear algebra, calculus, arrays, and data reshaping. Each tool serves a clear purpose, and the count is not excessive given the breadth of mathematics addressed.

Completeness4/5

The tool set covers most major mathematical domains (algebra, calculus, linear algebra, statistics, finance, arrays), but lacks symbolic equation solving and probability distributions. However, the `batch_execute` meta-tool enables chaining, mitigating some gaps. Overall, it is quite complete for common math needs.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Provides secure mathematical computation capabilities including expression evaluation, symbolic math (derivatives, simplification), matrix operations, statistics, and unit conversion, with multi-tier acceleration through WebAssembly and WebWorkers for high-performance calculations.
    7
    178
    ISC
  • A
    license
    A
    quality
    D
    maintenance
    Provides advanced mathematical utilities including basic arithmetic, statistical analysis, unit conversions, quadratic equation solving, percentage calculations, and trigonometric functions for AI assistants.
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A unified mathematical calculator that automatically detects expression types and performs basic arithmetic, statistical calculations, equation solving, and batch computations with 20+ built-in mathematical functions.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/apetta/vibe-math-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server