Skip to main content
Glama
tanishra

Mathematics MCP Server

by tanishra

Mathematics MCP Server ๐Ÿงฎ

A comprehensive FastMCP server providing 22 mathematical operations for AI assistants like Claude.

A Model Context Protocol (MCP) server that provides mathematical operations as tools for AI assistants like Claude. This server enables Claude to perform accurate arithmetic calculations through a standardized interface.

๐Ÿ“‹ Table of Contents

Related MCP server: MCP Mathematics

What is Mathematics MCP Server?

Mathematics MCP Server is a lightweight server that exposes mathematical operations through the Model Context Protocol (MCP). It allows AI assistants to perform precise calculations by calling dedicated tools rather than relying on their internal reasoning capabilities.

Why Use This?

  • Accuracy: Ensures precise mathematical calculations

  • Reliability: Eliminates calculation errors that can occur with AI reasoning

  • Extensibility: Easy to add new mathematical operations

  • Logging: All operations are logged for debugging and audit purposes

Features

  • 22 Mathematical Operations:

    • Basic (8): Addition, subtraction, multiplication, division, modulus, power, square, square root

    • Advanced (2): Factorial, absolute value

    • Logarithms (2): Logarithm (custom base), natural log

    • Trigonometry (3): Sine, cosine, tangent (degree-based)

    • Number Theory (2): GCD, LCM

    • Statistics (3): Mean, median, standard deviation

    • Rounding (2): Ceiling, floor

  • Error Handling: Robust error handling for edge cases (division by zero, negative square roots, etc.)

  • Comprehensive Logging: All operations logged to both file and stderr

  • Type Safety: Built with Pydantic models for input validation

  • MCP Compliant: Fully compatible with the Model Context Protocol standard

How It Works

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Claude Desktop โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚
         โ”‚ JSON-RPC over stdio
         โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   FastMCP       โ”‚
โ”‚   Mathematics   โ”‚
โ”‚   MCP Server    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚
         โ”‚ Python Functions
         โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Math Operationsโ”‚
โ”‚  (add, subtract,โ”‚
โ”‚   multiply...)  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  1. Claude sends a tool call request via JSON-RPC

  2. FastMCP receives and validates the request

  3. Python functions perform the calculation

  4. Result is returned to Claude in structured format

  5. Logging records the operation for debugging

Installation

Prerequisites

  • Python 3.8 or higher

  • uv package manager (recommended)

Step 1: Clone the Repository

git clone https://github.com/tanishra/math-mcp-server.git
cd mathematics-mcp

Step 2: Install uv (if not already installed)

# On macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# On Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# Or using pip
pip install uv

Step 3: Install Dependencies

The project uses pyproject.toml for dependency management:

# Install all dependencies (uv automatically reads pyproject.toml)
uv sync

# Or using pip
pip install -e .

Alternatively, you can install dependencies directly:

uv pip install fastmcp pydantic

Step 4: Test the Server

Using the MCP Inspector (recommended for development):

# This opens an interactive web interface to test your MCP server
uv run fastmcp dev main.py

Or run the server directly:

# This runs the server in production mode
uv run fastmcp run main.py

You should see:

Starting Mathematics MCP Server...

Usage

The MCP Inspector provides a web-based interface to test your server:

uv run fastmcp dev main.py

This will:

  1. Start the MCP server

  2. Open a web interface in your browser

  3. Allow you to test all tools interactively

  4. Show request/response details in real-time

Running the Server in Production Mode

uv run fastmcp run main.py

The server will start and listen for MCP protocol messages on stdin/stdout.

Using with Claude Desktop

See the Integration with Claude Desktop section below.

Integration with Claude Desktop

The easiest way to integrate with Claude Desktop is using the FastMCP installer:

uv run fastmcp install claude-desktop main.py

This command will:

  • Automatically locate your Claude Desktop configuration file

  • Add the Mathematics MCP server configuration

  • Use the correct paths for your system

  • Restart Claude Desktop if needed

Manual Installation (Alternative)

If you prefer to configure manually or the automatic installation doesn't work:

Step 1: Locate Claude Desktop Configuration

The configuration file location depends on your operating system:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Step 2: Update Configuration

Open the configuration file and add the Mathematics MCP server:

{
  "mcpServers": {
    "mathematics": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/mathematics-mcp",
        "run",
        "fastmcp",
        "run",
        "main.py"
      ]
    }
  }
}

Important: Replace /absolute/path/to/mathematics-mcp with the actual path to your project directory.

Example for macOS/Linux:

{
  "mcpServers": {
    "mathematics": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/yourusername/projects/mathematics-mcp",
        "run",
        "fastmcp",
        "run",
        "main.py"
      ]
    }
  }
}

Example for Windows:

{
  "mcpServers": {
    "mathematics": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\Users\\YourUsername\\projects\\mathematics-mcp",
        "run",
        "fastmcp",
        "run",
        "main.py"
      ]
    }
  }
}

Step 3: Restart Claude Desktop

  1. Quit Claude Desktop completely (Cmd+Q on Mac, Alt+F4 on Windows)

  2. Relaunch Claude Desktop

  3. Look for the ๐Ÿ”Œ icon in the bottom right indicating MCP servers are connected

  4. Click the icon to see "mathematics" server listed

Step 4: Verify Installation

In Claude, try asking:

  • "What's 12345 + 67890?"

  • "Calculate the square root of 144"

  • "What's 25 to the power of 3?"

  • "Calculate the factorial of 10"

  • "What's the sine of 30 degrees?"

  • "Find the GCD of 48 and 18"

  • "Calculate the mean of these numbers: 10, 20, 30, 40, 50"

Claude should use the Mathematics MCP tools to provide accurate answers.

Troubleshooting Installation

If the automatic installation fails:

# Check if uv is installed correctly
uv --version

# Verify the server works
uv run fastmcp dev main.py

# Try manual configuration following the steps above

Available Tools

1. Addition (add)

Input: {"a": 10, "b": 5}
Output: {"status": "success", "operation": "add", "result": 15}

2. Subtraction (subtract)

Input: {"a": 10, "b": 5}
Output: {"status": "success", "operation": "subtract", "result": 5}

3. Multiplication (multiply)

Input: {"a": 10, "b": 5}
Output: {"status": "success", "operation": "multiply", "result": 50}

4. Division (divide)

Input: {"a": 10, "b": 5}
Output: {"status": "success", "operation": "divide", "result": 2.0}

Note: Throws error on division by zero

5. Modulus (modulus)

Input: {"a": 10, "b": 3}
Output: {"status": "success", "operation": "modulus", "result": 1}

Note: Throws error on modulus by zero

6. Power (power)

Input: {"base": 2, "exponent": 8}
Output: {"status": "success", "operation": "power", "result": 256}

7. Square (square)

Input: {"a": 5}
Output: {"status": "success", "operation": "square", "result": 25}

8. Square Root (sqrt)

Input: {"a": 144}
Output: {"status": "success", "operation": "sqrt", "result": 12.0}

Note: Throws error on negative numbers

9. Factorial (factorial)

Input: {"a": 5}
Output: {"status": "success", "operation": "factorial", "result": 120}

Note: Only works with non-negative integers

10. Absolute Value (absolute)

Input: {"a": -15}
Output: {"status": "success", "operation": "absolute", "result": 15}

11. Logarithm (logarithm)

Input: {"value": 100, "base": 10}
Output: {"status": "success", "operation": "logarithm", "result": 2.0}

Note: Default base is 10 if not specified

12. Natural Logarithm (natural_log)

Input: {"a": 2.718281828}
Output: {"status": "success", "operation": "natural_log", "result": 1.0}

Note: Uses base e (approximately 2.718)

13. Sine (sine)

Input: {"angle": 90}
Output: {"status": "success", "operation": "sine", "result": 1.0}

Note: Input angle in degrees

14. Cosine (cosine)

Input: {"angle": 0}
Output: {"status": "success", "operation": "cosine", "result": 1.0}

Note: Input angle in degrees

15. Tangent (tangent)

Input: {"angle": 45}
Output: {"status": "success", "operation": "tangent", "result": 1.0}

Note: Input angle in degrees, undefined at 90ยฐ, 270ยฐ, etc.

16. Greatest Common Divisor (gcd)

Input: {"a": 48, "b": 18}
Output: {"status": "success", "operation": "gcd", "result": 6}

Note: Both numbers must be integers

17. Least Common Multiple (lcm)

Input: {"a": 12, "b": 18}
Output: {"status": "success", "operation": "lcm", "result": 36}

Note: Both numbers must be integers

18. Mean (mean)

Input: {"numbers": [10, 20, 30, 40, 50]}
Output: {"status": "success", "operation": "mean", "result": 30.0}

Note: Calculates average of all numbers in the list

19. Median (median)

Input: {"numbers": [1, 3, 5, 7, 9]}
Output: {"status": "success", "operation": "median", "result": 5}

Note: Middle value when sorted; average of two middle values for even-length lists

20. Standard Deviation (standard_deviation)

Input: {"numbers": [2, 4, 4, 4, 5, 5, 7, 9]}
Output: {"status": "success", "operation": "standard_deviation", "result": 2.138}

Note: Uses sample standard deviation (n-1); requires at least 2 numbers

21. Ceiling (ceiling)

Input: {"a": 3.2}
Output: {"status": "success", "operation": "ceiling", "result": 4}

Note: Always rounds up

22. Floor (floor)

Input: {"a": 3.8}
Output: {"status": "success", "operation": "floor", "result": 3}

Note: Always rounds down

Contributing

Contributions are welcome! Here's how you can help:

Reporting Bugs

  1. Check if the issue already exists

  2. Create a new issue with:

    • Clear description

    • Steps to reproduce

    • Expected vs actual behavior

    • Log output from math_mcp.log

Suggesting Features

  1. Open an issue describing the feature

  2. Explain the use case

  3. Provide examples if possible

Pull Requests

  1. Fork the repository

  2. Create a feature branch:

   git checkout -b feature/amazing-feature
  1. Make your changes

  2. Add tests if applicable

  3. Commit with clear messages:

   git commit -m "Add: New trigonometric functions"
  1. Push to your fork:

   git push origin feature/amazing-feature
  1. Open a Pull Request

Troubleshooting

Server Not Appearing in Claude Desktop

Problem: MCP server doesn't show up in Claude Desktop

Solutions:

  1. Check the configuration file path is correct

  2. Verify JSON syntax in claude_desktop_config.json

  3. Ensure absolute paths are used (not relative paths)

  4. Restart Claude Desktop completely

  5. Check math_mcp.log for startup errors

"Unexpected non-whitespace character after JSON" Error

Problem: Claude Desktop shows JSON parsing errors

Solutions:

  1. Ensure logging is NOT writing to sys.stdout

  2. Use sys.stderr or file logging only

  3. Remove any print() statements from the code

Import Errors

Problem: ModuleNotFoundError: No module named 'fastmcp'

Solutions:

  1. Activate your virtual environment

  2. Install dependencies: pip install fastmcp pydantic

  3. If using venv, point to venv Python in config

Permission Errors

Problem: Cannot write to log file

Solutions:

  1. Check write permissions on the directory

  2. Use a different log location:

   LOG_FILE = Path.home() / "math_mcp.log"

Testing Connection

To test if the server is working:

# Run the server
python main.py

# In another terminal, send a test message (requires jq)
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | python main.py

Future Enhancement Ideas

  • Add complex number support

  • Implement matrix operations

  • Add unit conversion tools

  • Support for symbolic math (using SymPy)

  • Inverse trigonometric functions (arcsin, arccos, arctan)

  • Hyperbolic functions (sinh, cosh, tanh)

License

This project is licensed under the MIT License - see the LICENSE file for details.

Star โญ this repo if you find it helpful!

Available Tools

22 tools
absoluteA

Calculate the absolute value of a given number. Args: data (SingleNumberOperation): An object containing the input number a. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Notes: - Returns the absolute (non-negative) value of the input. - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden. It discloses that the result is non-negative, that a dict with result or error is returned, and that the operation and result are logged. It does not discuss edge cases like NaN or infinity, but for a simple math function this is acceptable coverage.

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 starts with the core purpose and then uses Args, Returns, and Notes sections that are compact and scannable. There is only mild redundancy between the first sentence and the first note, but no unnecessary filler.

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

Completeness4/5

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

Given the low complexity of the operation and the presence of an output schema, the description covers the input wrapper, the actual numeric parameter, the return shape, and the logging behavior. It is nearly complete, though it omits explicit error-condition details such as invalid number handling.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does so by explaining that `data` is a SingleNumberOperation object containing the input number `a`. This is sufficient to know how to invoke the tool correctly, even though no example is provided.

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 opens with a specific verb and resource: 'Calculate the absolute value of a given number.' This clearly distinguishes it from the sibling arithmetic/math tools and leaves no ambiguity about the tool's purpose.

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 usage context is implied by the description: use this when you need the non-negative magnitude of a number. However, it does not explicitly compare itself with sibling tools or state when not to use it, so the guidance remains implicit rather than explicit.

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

addA

Perform addition of two numbers provided in the data object. Args: data (TwoNumberOperation): An object containing two numbers a and b to be added. Returns: Dict[str, Any]: A dictionary containing the operation name ("add") and the result of the addition if successful, or an error message if an exception occurs. Logs: Logs the operation and result in the format: "ADD | {data.a} + {data.b} = {result}"

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses the return format (operation name and result, or error message on exception) and the logging behavior. This is helpful transparency for a tool that otherwise has no side effects.

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

Conciseness4/5

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

The docstring is well-structured with Args, Returns, and Logs sections. Every section adds useful information, and the description is appropriately sized for a simple tool. Minor redundancy exists with the operation name and the Args section, but it does not detract.

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?

The description is complete enough for a simple arithmetic operation: it covers inputs, return behavior, error handling, and logging. The presence of an output schema reduces the need to explain return values. The only missing element is explicit guidance about when not to use this tool, which is minor here.

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 reported as 0%, so the description must compensate. It explains that the `data` parameter is an object containing two numbers `a` and `b` to be added, adding meaning beyond the bare schema. This is sufficient for an agent to construct a valid call.

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 a specific verb and resource: 'Perform addition of two numbers provided in the data object.' This clearly distinguishes it from the sibling tools like subtract, multiply, and divide. The operation and expected input shape are unambiguous.

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 use when addition is needed, but it does not explicitly discuss when to prefer this tool over alternatives or provide any exclusions. For a simple arithmetic tool, the intended usage is fairly obvious, but no guidance about edge cases or alternative selection is given.

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

ceilingA

Round a number up to the nearest integer. Args: data (SingleNumberOperation): An object containing the input number a. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Notes: - Always rounds up (e.g., 3.1 -> 4, -3.1 -> -3). - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the operation always rounds up, handles negatives as ceiling, logs the operation and result, and returns either a result or an error message. It does not mention edge cases like NaN or infinity, but the behavior is otherwise well covered.

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

Conciseness5/5

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

The description is compact and clearly organized with Description, Args, Returns, and Notes sections. Every sentence earns its place and the key behavior is front-loaded.

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?

For a simple one-parameter math operation, the description is complete: it defines the behavior, gives the required input shape, states the return shape, and notes logging behavior. The presence of an output schema reduces the need to detail return values further.

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

Parameters3/5

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

Schema description coverage is 0%, and the description clarifies that `data` is a wrapper object containing the input number `a`. This helps an agent navigate the nested structure, but it adds little beyond what the schema already shows and provides no constraints, ranges, or examples for the parameter value.

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 a clear verb and resource: it rounds a number up to the nearest integer. The examples, especially -3.1 -> -3, effectively distinguish ceiling from floor and other arithmetic siblings.

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

Usage Guidelines3/5

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

The intended use is implied by the name and the operation description, but there is no explicit guidance about when to choose this tool over alternatives such as floor or round. No exclusions or sibling routing are provided.

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

cosineA

Calculate the cosine of an angle in degrees. Args: data (AngleOperation): An object containing the angle in degrees. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Notes: - Input angle should be in degrees (not radians). - Result is between -1 and 1. - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden and discloses important behavior: input in degrees, result range [-1, 1], logging of operation and result, and a Dict return containing either result or error. It doesn't detail error cases or side effects beyond logging, but those are secondary for a pure math operation.

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

Conciseness5/5

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

Purpose is front-loaded in the first sentence, and the remaining Args/Returns/Notes lines each add a non-redundant constraint: units, result range, return shape, and logging behavior. No filler or excessive detail.

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?

For a single-parameter math tool, the description covers invocation (what object to pass), units, expected output range, return format, and side effect (logging). The output schema also exists, so the missing detailed return shape is not a gap.

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

Parameters4/5

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

Schema description coverage is 0%, so the description compensates by explaining the data parameter as 'an object containing the angle in degrees' and by clarifying angle units. It does not spell out the exact JSON shape (data.angle), but the schema's AngleOperation definition fills that gap.

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?

Opens with a specific verb and object: 'Calculate the cosine of an angle in degrees.' This distinguishes it from sibling math/trig tools (sine, tangent) and states the unit, so an agent knows this is the cosine operation and not a generic angle 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 first line and Notes give clear context for when to use it: whenever the cosine of an angle expressed in degrees is needed, with a reminder that radians are not accepted. It does not explicitly contrast with sine/tangent siblings, but the wording is unambiguous enough for selection.

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

divideA

Perform division of two numbers provided in the TwoNumberOperation object. Args: data (TwoNumberOperation): An object containing two numbers, a and b, where a is the numerator and b is the denominator. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Raises: ZeroDivisionError: If the denominator (b) is zero. Notes: - Logs the division operation and its result. - Returns a success response if the operation is successful. - Returns an error response if an exception occurs.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the ZeroDivisionError condition, logging behavior, and that responses are either success or error dictionaries. This gives the agent a complete picture of runtime 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 well-structured with Args, Returns, Raises, and Notes sections, and the core action is front-loaded. It contains slight redundancy between the Returns line and the Notes about success/error responses, but overall every section earns its place.

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?

For a simple one-parameter arithmetic tool, the description is complete: it defines the input object, explains the roles of both fields, specifies the error condition, and describes the return behavior. An output schema exists, so the missing formal return schema is not a gap.

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

Parameters5/5

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

Schema coverage is 0%, and the description fully compensates by explaining that `a` is the numerator, `b` is the denominator, and that a zero `b` causes an error. It provides meaningful semantic meaning beyond the raw schema property names.

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 operation: 'Perform division of two numbers provided in the TwoNumberOperation object.' The verb 'divide' plus explicit numerator/denominator roles distinguishes it from all sibling math tools.

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 the tool should be used whenever division is required, but it does not explicitly discuss when to choose this tool over alternatives like modulus or power. Usage context is clear from the operation name and description, but no exclusion or alternative guidance is given.

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

factorialA

Calculate the factorial of a given number. Args: data (SingleNumberOperation): An object containing the input number a. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Raises: ValueError: If the input is negative or not an integer. Notes: - Only works with non-negative integers. - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

There are no annotations, so the description carries the behavioral disclosure burden. It discloses error behavior (ValueError on negative/non-integer), valid input domain, that it 'Logs the operation and result,' and that it returns a dictionary with result or error. It does not describe output key names, but the presence of an output schema reduces the need for that detail.

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 core purpose is front-loaded in the first sentence, and the rest is a compact docstring organized into Args, Returns, Raises, and Notes. There is minor redundancy between the Raises section and the first Note, but every section adds useful information and there is no filler.

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?

For a single-parameter mathematical tool, the description provides everything needed: purpose, parameter structure, valid input domain, error conditions, side effects, and return container. Since an output schema exists, return-value details are already covered. An agent can confidently select and invoke this tool without additional context.

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

Parameters4/5

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

Schema description coverage is 0%, so the description needs to compensate. It explains that `data` is a `SingleNumberOperation` object containing the input number `a`, and clarifies the valid domain as non-negative integers. This is sufficient for constructing the argument, though the exact nested JSON shape is left to 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 states a specific verb and resource: 'Calculate the factorial of a given number.' This unambiguously identifies the operation and distinguishes it from sibling math tools like add, power, sqrt, and logarithm. There is no vague or misleading language.

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 usage constraints: 'Only works with non-negative integers' and raises ValueError for negative or non-integer input. This tells the agent when the tool can be used and what inputs are invalid. It does not explicitly name alternatives for non-factorial operations, but the operation itself is unique among the siblings.

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

floorA

Round a number down to the nearest integer. Args: data (SingleNumberOperation): An object containing the input number a. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Notes: - Always rounds down (e.g., 3.9 -> 3, -3.1 -> -4). - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden. It states that rounding always goes down (including negative values), that results are returned as a dictionary with either a result or an error message, and that the operation logs the call. This is solid but does not detail error conditions.

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

Conciseness4/5

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

The description is front-loaded with the core behavior and uses compact Args/Returns/Notes sections. Minor redundancy exists between 'Round a number down' and 'Always rounds down,' but the second clause earns its place through clarifying negative examples.

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

Completeness4/5

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

For a single-parameter pure math operation this is complete: it defines the input wrapper, the operation, the return shape, edge-case behavior, and logging. The only missing detail is when an error message is produced, but the output schema presumably covers the exact return keys.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must explain the parameter. It does explain that data is a SingleNumberOperation object containing the input number a, which compensates for the schema's opaque top-level reference. It could add the exact type constraint, but 'input number' plus schema is sufficient.

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 opens with a specific verb and resource: 'Round a number down to the nearest integer.' The explicit examples, including the negative case -3.1 -> -4, distinguish this from a rounding/truncation or ceiling operation, which is the direct sibling.

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 operation's use is implied clearly by the verb and examples, but the description never says when to choose floor over the sibling ceiling (or vice versa). There is no explicit exclusion or conditional guidance.

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

gcdA

Calculate the Greatest Common Divisor (GCD) of two numbers. Args: data (TwoNumberOperation): An object containing two numbers, a and b. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Raises: ValueError: If inputs are not integers. Notes: - Both numbers must be integers. - Returns the largest number that divides both inputs. - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the operation logs activity, returns a dictionary with either a result or an error message, and raises ValueError for non-integer inputs. These are meaningful behavioral traits beyond the bare operation, though it does not specify whether the operation has side effects beyond logging.

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 Args, Returns, Raises, and Notes sections, making it scannable. The main purpose is front-loaded, and each section adds useful information. There is minor redundancy between the Raises section and the Notes bullet about integers, but overall the length is justified.

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?

For a simple mathematical operation, the description is complete: it covers the operation, input constraints, error behavior, return format, and side-effect logging. An output schema exists, so return-value details need no further explanation. An agent has everything needed to invoke the tool correctly and interpret its outcome.

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 reported as 0%, so the description must compensate. It explains that `data` is a TwoNumberOperation object containing `a` and `b`, and adds the critical constraint that both must be integers. It also clarifies that the operation produces the largest dividing number, giving semantic meaning to the parameters beyond the schema's minimal 'First number' and 'Second number' labels.

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 opens with a specific verb and resource: 'Calculate the Greatest Common Divisor (GCD) of two numbers.' It later defines the result as 'the largest number that divides both inputs,' which precisely distinguishes it from sibling tools like lcm, since LCM is the least common multiple. This leaves no ambiguity about what the tool does.

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 gives clear context for use: it is for computing the GCD of two integers. It states the prerequisite that both numbers must be integers, and it notes that a ValueError is raised if they are not, which guides the agent on input preparation. However, it does not explicitly mention alternatives like lcm or when to prefer one over the other, so it stops short of a 5.

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

lcmA

Calculate the Least Common Multiple (LCM) of two numbers. Args: data (TwoNumberOperation): An object containing two numbers, a and b. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Raises: ValueError: If inputs are not integers. Notes: - Both numbers must be integers. - Returns the smallest number that is divisible by both inputs. - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are present, so the description carries the full burden. It explicitly discloses the integer requirement, the return dictionary shape with either a result or an error, the ValueError condition, and the side effect of logging the operation and result. This is strong behavioral disclosure.

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 efficiently structured with Args, Returns, Raises, and Notes sections. Every sentence adds relevant operational information, with no filler or redundancy.

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?

For a single-parameter math tool with an output schema, the description covers input structure, constraints, return behavior, error handling, and logging. Nothing essential for an agent to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 0%, but the description compensates by explaining that data is a TwoNumberOperation containing a and b and adding the critical integer constraint that the schema's 'number' type does not convey. It does not repeat parametric details already in 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 opens with a specific verb and target: 'Calculate the Least Common Multiple (LCM) of two numbers.' It then reinforces the meaning by stating the result is the smallest number divisible by both inputs, which clearly distinguishes it from the sibling gcd and other arithmetic tools.

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 clearly states the integer precondition and general operation, but it does not provide explicit when-to-use or when-not-to-use guidance relative to alternatives such as gcd. Usage is mostly implied by the mathematical operation named in the purpose.

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

logarithmA

Calculate the logarithm of a value with a specified base. Args: data (LogOperation): An object containing the value and base for logarithm. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Raises: ValueError: If value is non-positive or base is invalid. Notes: - Default base is 10 (common logarithm). - Use base 'e' (2.718...) for natural logarithm. - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden and does reasonably well. It discloses that invalid inputs raise ValueError, that the operation is logged, and that the result is returned in a dictionary, providing useful behavior beyond the schema.

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

Conciseness4/5

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

The description is well-structured with Args, Returns, Raises, and Notes sections, and the core purpose is front-loaded in the first sentence. Each section adds useful detail without significant redundancy, though some repetition with the schema is present.

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?

The description covers the expected inputs, error behavior, default configuration, natural logarithm alternative, return shape, and logging side effect. It is complete enough for a simple mathematical operation, though it could be improved by defining what makes a base 'invalid' and by referencing the natural_log sibling.

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 reported as 0%, so the description must compensate. It explains that value must be positive, that base defaults to 10, that base 'e' performs natural logarithm, and that invalid bases raise an error. This adds meaningful semantic information beyond the raw schema types.

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

Purpose4/5

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

The description states a specific operation: 'Calculate the logarithm of a value with a specified base,' with the tool name and resource clearly aligned. It does not explicitly distinguish itself from the sibling natural_log tool, though the natural logarithm handling is mentioned indirectly via base 'e'.

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

Usage Guidelines2/5

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

No explicit guidance is given about when to choose logarithm over natural_log or other math siblings. The note about base 'e' implies how to do natural logs, but it does not tell an agent when to use this tool versus the dedicated natural_log sibling.

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

meanA

Calculate the mean (average) of a list of numbers. Args: data (ListOperation): An object containing a list of numbers. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Raises: ValueError: If the list is empty. Notes: - Mean is the sum of all numbers divided by count. - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses key behaviors: returns a dict with result or error, raises ValueError on an empty list, and logs the operation. These are genuinely useful behavioral details beyond the schema.

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

Conciseness4/5

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

The description is well-structured with clear sections for Args, Returns, Raises, and Notes. It is compact and front-loaded with the purpose. The only minor redundancy is the Args line, which repeats schema information, but overall it is concise and readable.

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?

The tool is simple with one parameter and an output schema, so the description does not need to explain return values in depth. It covers the main error condition, the return shape, and the logging side-effect, making it complete enough for an agent to invoke the tool correctly. It lacks deeper statistical caveats, but they are not essential here.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate, but the Args section merely restates what the schema already shows: data is an object containing a list of numbers. It does not add parameter-level meaning such as supported numeric types, formatting constraints, or edge-case handling beyond the empty-list note.

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 a specific operation: 'Calculate the mean (average) of a list of numbers.' This clearly distinguishes it from statistical siblings like median and standard_deviation, and the formula note reinforces the exact meaning.

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 when to use the tool by defining mean and the operation, but it does not explicitly contrast it with alternatives like median or standard_deviation. For a simple arithmetic/statistical tool, the intended usage is reasonably clear, yet no direct guidance or exclusion is provided.

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

medianA

Calculate the median of a list of numbers. Args: data (ListOperation): An object containing a list of numbers. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Raises: ValueError: If the list is empty. Notes: - Median is the middle value when numbers are sorted. - For even-length lists, returns average of two middle values. - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It explains the empty-list ValueError, the even-length averaging rule, and that the operation and result are logged, which gives the agent useful behavioral expectations beyond the raw schema.

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 a well-structured docstring with clear Args, Returns, Raises, and Notes sections. Every sentence provides relevant information and no filler is present.

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?

For a simple single-parameter calculator tool, the description covers the operation, input contract, return shape, error condition, edge-case behavior, and logging. The presence of an output schema further reduces the need to describe return details.

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

Parameters3/5

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

Schema description coverage is 0% for the top-level parameter, so the description must compensate. The Args section explains that data is an object containing a list of numbers, but this mostly restates the schema's intent without adding deeper semantics such as required format or constraints beyond the empty-list error.

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

Purpose5/5

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

States a specific verb and resource: "Calculate the median of a list of numbers." This makes the tool's purpose immediately clear and naturally distinguishes it from sibling arithmetic and statistical tools like mean or standard_deviation.

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 clearly indicates when to use the tool: whenever a median of a numeric list is required. It does not explicitly mention alternatives or exclusions, but the verb and resource are specific enough that an agent would not confuse it with other siblings.

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

modulusA

Calculate the modulus (remainder) of two numbers provided in the data object. Args: data (TwoNumberOperation): An object containing two numbers, a and b. Returns: Dict[str, Any]: A dictionary containing the operation result if successful, or an error message if an exception occurs. Raises: ZeroDivisionError: If the second number (b) is zero, as modulus by zero is not allowed. Logs: Logs the operation and result in the format "MOD | a % b = result" if successful. Example: data = TwoNumberOperation(a=10, b=3) result = modulus(data) # result -> {"status": "success", "operation": "modulus", "result": 1}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It documents the return dictionary, the ZeroDivisionError condition, and the log format, which is strong. There is a small ambiguity: the Returns section suggests error messages are returned while the Raises section says ZeroDivisionError is raised, but overall behavior is much clearer than typical definitions.

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 docstring-style structure front-loads the core action and each section (Args, Returns, Raises, Logs, Example) adds non-redundant operational detail. Every section contributes something an agent needs to invoke or interpret the call correctly.

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?

For a simple one-argument function with nested numeric fields, the description covers what the tool does, how parameters are packaged, what a successful result looks like, how errors are handled, and what gets logged. No critical operational information is missing for an agent to call it correctly.

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

Parameters4/5

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

The schema coverage is 0%, so the description must compensate for parameter meaning. It names the `data` object, says it holds two numbers `a` and `b`, and the log format 'a % b = result' plus the example clarifies their roles and ordering. It does not provide deep per-field semantics, but is sufficient for a simple two-number operation.

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

Purpose5/5

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

The first sentence states a specific operation โ€” 'Calculate the modulus (remainder) of two numbers' โ€” on a clear resource (the `data` object). The operation is semantically distinct from sibling math tools like divide or gcd, so an agent can tell when this tool applies.

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 gives clear context: it computes `a % b`, requires two numeric fields, and explicitly notes that `b` cannot be zero. It does not explicitly compare this tool to sibling alternatives, but the modulus/remainder semantics are unambiguous enough for tool selection.

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

multiplyA

Perform multiplication of two numbers provided in the data object. Args: data (TwoNumberOperation): An object containing two numbers a and b to be multiplied. Returns: Dict[str, Any]: A dictionary containing the result of the multiplication operation or an error message in case of failure. Logs: Logs the multiplication operation in the format: "MUL | {data.a} * {data.b} = {result}" Exceptions: Catches any exceptions that occur during the operation and returns an error response with the exception message.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries full behavioral disclosure. It explicitly states the return format (dictionary with result or error message), the exact logging format ('MUL | {data.a} * {data.b} = {result}'), and that exceptions are caught and converted into an error response. This is thorough for a pure computation tool.

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

Conciseness4/5

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

The description is well-structured with Args, Returns, Logs, and Exceptions sections, and the core purpose is front-loaded. It is slightly more verbose than a simple multiply tool strictly requires, but each section contributes meaningful behavioral information rather than padding.

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?

For a simple two-number multiplication operation, the description covers inputs, output contract, error behavior, and logging. Even though an output schema is marked as present, the description independently explains what the return value will be. Nothing essential for correct invocation is missing.

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

Parameters4/5

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

The top-level data parameter has no schema description (0% coverage), but the description compensates by explaining that data is a TwoNumberOperation object containing a and b to be multiplied. This adds semantic clarity beyond the bare schema. It does not provide examples or edge-case notes, so it stops short of a 5.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Perform multiplication of two numbers provided in the data object.' It clearly distinguishes itself from the sibling arithmetic tools by naming the operation and the two inputs. No ambiguity about what the tool does.

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

Usage Guidelines3/5

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

Usage is implied by the operation name and description: call this when you need the product of two numbers. However, it does not explicitly discuss when to use this tool versus alternatives like add, subtract, or power, nor provide any exclusion or preference guidance beyond the basic semantic.

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

natural_logA

Calculate the natural logarithm (base e) of a given number. Args: data (SingleNumberOperation): An object containing the input number a. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Raises: ValueError: If the input is non-positive. Notes: - Natural log uses base e (approximately 2.718). - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden and does it reasonably well: it documents the non-positive input domain via `ValueError` and notes that the operation is logged. It also states that the return is a dictionary with either a result or an error message, giving the agent a clear expectation.

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 uses a clear Args/Returns/Raises/Notes structure and front-loads the core purpose in the first sentence. It is appropriately sized, though the note about base e slightly repeats what the opening sentence already states.

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?

For a one-parameter pure numeric operation, the description covers the input wrapper, error behavior, return shape, and logging side effect. Combined with the available output schema, the agent has enough information to invoke and interpret the tool correctly; the only real gap is sibling differentiation, which is already scored under usage guidelines.

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?

The schema description coverage is 0%, so the description must compensate; it identifies `data` as a `SingleNumberOperation` object containing the field `a` and states that `a` is the input number. However, the positive-number requirement is only mentioned in the raises clause rather than attached to the parameter, and the description adds little depth beyond the schema's minimal 'Input number' text.

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 opens with a specific verb and object, 'Calculate the natural logarithm (base e) of a given number,' which unambiguously identifies the operation and distinguishes it from the generic `logarithm` sibling. It also names the single data argument, so purpose is clear.

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

Usage Guidelines2/5

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

There is no statement about when to prefer this tool over related siblings such as `logarithm`, nor any exclusionary guidance. The only implied signal is the tool name and opening sentence, which is insufficient when a closely related `logarithm` tool exists.

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

powerA

Calculate the power of a given base raised to a given exponent. Args: data (PowerOperation): An object containing the base and exponent values. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Logs: Logs the operation in the format "POW | base ^ exponent = result". Exceptions: Catches any exceptions during the calculation and returns an error response.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It openly discloses the log format ('POW | base ^ exponent = result'), the return shape (result or error message), and exception handling. This is useful, though it stops short of describing edge cases like non-finite inputs or exact response keys.

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 then uses short sections for input, return, logging, and errors. Each section earns its place, though the Args line partially restates what the input schema already expresses. Overall it is compact, structured, and easy to scan.

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

Completeness4/5

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

For a simple one-parameter math tool, the description covers invocation, return behavior, logging side effects, and error handling. The output schema exists and can carry return-value details, so the return description is sufficient. It is complete enough for an agent to call the tool correctly, with no major missing prerequisites.

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

Parameters3/5

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

Schema description coverage is 0%, but the description identifies the only parameter, data, as a PowerOperation object containing base and exponent values. It adds the semantic relationship that the base is raised to the exponent, which goes slightly beyond the raw schema. It does not elaborate on constraints such as negative or fractional exponents, leaving the schema's number type to carry that weight.

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

Purpose5/5

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

The first sentence states a specific operationโ€”calculate powerโ€”with clear roles for base and exponent, leaving no ambiguity about the mathematical operation. The phrase 'given exponent' also differentiates it from fixed-exponent siblings like square. This is a precise, non-tautological description.

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 the use case: whenever exponentiation with a base and exponent is needed. However, it does not explicitly state when not to use this tool or mention alternatives among the arithmetic sibling tools. The agent must infer selection from the operation semantics rather than being guided.

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

sineA

Calculate the sine of an angle in degrees. Args: data (AngleOperation): An object containing the angle in degrees. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Notes: - Input angle should be in degrees (not radians). - Result is between -1 and 1. - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It adds useful details: input must be degrees rather than radians, output is bounded between -1 and 1, and the operation is logged. It also notes that the result may be an error message, giving an agent awareness of failure modes.

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-organized with Args, Returns, and Notes sections. It is concise, front-loaded with the core purpose, and every line contributes useful information without redundancy.

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?

For a simple one-parameter math tool with an output schema available, the description covers input semantics, unit expectations, output behavior, and logging side effects. Nothing essential is missing for an agent to select and invoke this tool correctly.

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 reported as 0%, so the description must compensate. It states that 'data' is an AngleOperation object containing the angle in degrees, which clarifies the single parameter's purpose and units. However, it mostly restates what the schema shows and does not add detail about accepted ranges, rounding, or edge cases.

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 opens with a specific verb and resource: 'Calculate the sine of an angle in degrees.' It clearly identifies the mathematical operation, the input unit, and is immediately distinguishable from sibling tools like cosine, tangent, and logarithm. The scope is unambiguous.

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 context for when the tool is appropriate: whenever the sine of an angle in degrees is needed. It does not explicitly state exclusions or direct the agent to an alternative sibling, but for a well-defined math operation the intended use is clear.

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

sqrtA

Calculate the square root of a given number. Args: data (SingleNumberOperation): An object containing the input number a. Returns: Dict[str, Any]: A dictionary containing the operation name, result, and status of the operation. Raises: ValueError: If the input number a is negative. Notes: - Logs the operation and result using the logger. - Returns a success response if the operation is successful. - Returns an error response if an exception occurs.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It discloses the ValueError for negative inputs, logging side effects, and the success/error response structure, going well beyond the tool's obvious operation.

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

Conciseness4/5

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

The purpose is front-loaded in the first sentence, and the rest is organized into clear Args/Returns/Raises/Notes sections. It is slightly boilerplate-heavy in the Notes section, but every part is relevant and easy to scan.

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?

For a simple one-parameter calculator operation with an output schema, the description covers the operation, input shape, return dictionary, error behavior, and logging. Nothing essential to selecting and invoking this tool correctly is missing.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies that `data` is a SingleNumberOperation wrapper containing the input number `a`, but this largely mirrors the schema and adds little extra semantic detail beyond the negative-input constraint mentioned in Raises.

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 opens with a specific verb and resource: 'Calculate the square root of a given number.' This clearly distinguishes sqrt from the sibling arithmetic operations and leaves no ambiguity about what the tool does.

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 intended use is implied by the description and the Raises clause implies valid input must be non-negative, but there is no explicit guidance about when to prefer this tool over alternatives like power or square. The description gives clear context but not explicit when/when-not routing.

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

squareA

Calculate the square of a given number. Args: data (SingleNumberOperation): An object containing the number to be squared. Returns: Dict[str, Any]: A dictionary containing the operation name ("square") and the result of squaring the input number. In case of an error, returns an error response. Logs: Logs the operation and the result in the format "SQUARE | ^2 = ". Raises: Exception: If an error occurs during the calculation.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It clearly describes the return dictionary, the key fields ('operation name' and 'result'), the logging format, and error behavior. This goes well beyond the schema and gives the agent a concrete picture of side effects and outputs.

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 Args/Returns/Logs/Raises sections and the core purpose is front-loaded. Each section is concise, though the Raises and error-return statements are slightly redundant with the Returns section.

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

Completeness4/5

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

For a simple pure-math operation, the description covers input, output, logging, and error handling. An output schema exists, so the return type is already structured. It lacks comparative guidance against sibling tools, but is otherwise complete for calling this tool correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the undocumented parameters. It only restates that 'data' contains 'the number to be squared' and does not mention the actual field name 'a' or clarify the structure beyond what the schema already shows. This is minimal added value.

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 a specific verb and resource: 'Calculate the square of a given number.' This unambiguously identifies the operation and is clearly distinct from siblings like sqrt, power, or multiply.

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 is given about when to prefer this tool over alternatives such as power, multiply, or sqrt. The only usage signal is the purpose statement itself; there are no exclusions, prerequisites, or comparisons to sibling tools.

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

standard_deviationA

Calculate the standard deviation of a list of numbers. Args: data (ListOperation): An object containing a list of numbers. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Raises: ValueError: If the list has fewer than 2 numbers. Notes: - Measures the amount of variation in the dataset. - Uses sample standard deviation (n-1 denominator). - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses the sample standard deviation formula, the ValueError for fewer than 2 numbers, the dictionary return type, and that the operation is logged. This is solid behavioral context for a simple calculator tool.

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 a clear opening sentence followed by Args, Returns, Raises, and Notes sections. It is appropriately sized for the tool's complexity, front-loads the main purpose, and contains no filler.

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?

For a single-parameter math operation, the description covers purpose, input shape, sample versus population behavior, error conditions, return type, and logging. Given the low complexity and the existence of an output schema, nothing critical is missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate for the parameter. It explains that data is a ListOperation object containing a list of numbers and adds the key semantic constraint that fewer than 2 numbers raises ValueError, which the schema does not express.

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 begins with a specific verb and resource: 'Calculate the standard deviation of a list of numbers.' This clearly identifies the operation and distinguishes it from sibling statistics tools like mean and median, as well as arithmetic 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 usage context is implied rather than explicit: an agent can infer it is for measuring variation via standard deviation. The note about using sample standard deviation (n-1 denominator) provides some selection guidance, but it does not explicitly contrast with alternatives 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.

subtractB

Perform subtraction of two numbers provided in the data object. Args: data (TwoNumberOperation): An object containing two numbers, a and b. Returns: Dict[str, Any]: A dictionary containing the operation name ("subtract") and the result of the subtraction if successful, or an error message if an exception occurs. Logs: Logs the subtraction operation and its result in the format: "SUB | {data.a} - {data.b} = {result}".

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses the return dict structure, the success/error behavior, and the exact log format, which is useful and goes beyond a bare statement of operation.

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 tightly structured into Args, Returns, and Logs sections, with every sentence contributing meaning. It is front-loaded with the core purpose and contains no filler.

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

Completeness4/5

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

For a simple binary numeric operation, the description provides enough context: input shape, expected return format, error behavior, and logging side effect. It is slightly incomplete in not explicitly defining the subtraction order, but the parameter names and log format imply a - b.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only says the data object contains 'two numbers, a and b' and does not clarify operand order, numerical edge cases, or any constraints beyond what the schema already names.

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

Purpose4/5

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

The description opens with 'Perform subtraction of two numbers provided in the `data` object', which is a clear verb+resource statement. It does not explicitly contrast with sibling arithmetic tools, but the operation and result key ('subtract') make the purpose unambiguous.

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

Usage Guidelines2/5

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

There is no guidance about when to choose subtract over the many sibling arithmetic operations, nor any exclusions or prerequisites. The description simply states the operation without situating it among alternatives.

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

tangentA

Calculate the tangent of an angle in degrees. Args: data (AngleOperation): An object containing the angle in degrees. Returns: Dict[str, Any]: A dictionary containing the operation result or an error message. Notes: - Input angle should be in degrees (not radians). - Undefined at 90ยฐ, 270ยฐ, etc. (will return very large values). - Logs the operation and result.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It meaningfully notes that input is in degrees, that tangent is undefined at 90ยฐ, 270ยฐ, etc., and that those cases return very large values rather than errors. It also discloses that the operation logs the operation and result, which is useful behavioral context.

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, clearly labeled with Args/Returns/Notes, and front-loads the core purpose in the first sentence. Every line adds useful information, and there is no redundant filler.

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?

For a single-parameter math utility with an output schema available, the description covers the critical operational details: degree input, undefined-angle behavior, error-return shape, and logging. No essential detail for correctly invoking the tool is missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate for parameter meaning. It identifies the single parameter as an AngleOperation object containing the angle in degrees, which clarifies the input semantics beyond the raw schema. The schema already provides the property name and a brief angle description, but the description reinforces the degree unit.

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 opens with a specific verb and resource: 'Calculate the tangent of an angle in degrees.' It clearly identifies the operation and distinguishes it from sibling tools like sine and cosine through both the tool name and the explicit angle-unit statement.

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 when to use the toolโ€”whenever a tangent calculation is neededโ€”but does not explicitly compare it to alternatives such as sine or cosine. The notes about degrees and undefined angles provide useful context, but no direct when-to-use or when-not-to-use guidance is given.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 22 tool updatesv0.1.0
    • First observedabsolute
    • First observedadd
    • First observedceiling
    • First observedcosine
    • First observeddivide
    • First observedfactorial
    • First observedfloor
    • First observedgcd
    • First observedlcm
    • First observedlogarithm
    • First observedmean
    • First observedmedian
    • First observedmodulus
    • First observedmultiply
    • First observednatural_log
    • First observedpower
    • First observedsine
    • First observedsqrt
    • First observedsquare
    • First observedstandard_deviation
    • First observedsubtract
    • First observedtangent

TDQS

A3.8/5.0

Scored across 22 tools

Disambiguation4/5

Most tools target distinct mathematical operations with clear boundaries. The main overlap is `logarithm` and `natural_log`, since natural_log is just a special case of logarithm with base e.

Naming Consistency4/5

Tool names are mostly lowercase single-word operation names like add, divide, sine, and median. Minor deviations include the abbreviation `sqrt`, and snake_case names `natural_log` and `standard_deviation`, but the naming style is still predictable and readable.

Tool Count3/5

At 22 tools, this is on the heavier side for a math operation server. Most tools are individually useful, but the redundancy between logarithm and natural_log suggests the set could be slightly trimmed.

Completeness4/5

The tool surface covers arithmetic, powers, roots, logs, trig, rounding, number theory, and basic statistics, which is a solid range for a mathematics server. Minor gaps like inverse trig or hyperbolic functions are not critical for a general-purpose math toolkit.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    A basic MCP server built with the FastMCP framework that provides fundamental mathematical operations like addition, subtraction, multiplication, and division. It serves as a demonstration for integrating math-based tools into MCP-compatible environments like Cursor IDE.
    4
    -
  • A
    license
    C
    quality
    C
    maintenance
    A comprehensive MCP server that turns any AI assistant into a powerful mathematical computation engine, providing 52 advanced functions, 158 unit conversions, financial calculations, and secure AST-based evaluation.
    18
    14
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A FastMCP server that provides mathematical tools (addition, multiplication, temperature conversion) for Claude to execute via natural language.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A simple MCP server that provides basic arithmetic operations like add and multiply, enabling Claude to perform math calculations.
    -