Skip to main content
Glama
islobodan

Crucher MCP

by islobodan

Cruncher: The Scientific Calculator MCP Server

Version Node.js Version License: MIT Tests Status

A powerful scientific calculator for your AI assistant, built as a Model Context Protocol (MCP) server. Cruncher allows compatible AI clients (like Claude Desktop) to perform complex mathematical calculations, handle memory, perform statistical analysis, and access scientific constants with a simple, secure, and standardized interface.

🌟 The Purity Promise (Zero Dependencies)

Cruncher is built as a highly educational, extremely lightweight tool. It accomplishes powerful features without pulling in any heavy external libraries (no mathjs, no zod, no @modelcontextprotocol/sdk). Everything is handled using native Node.js capabilities:

  • Safe Expression Evaluation: Instead of relying on mathjs or dangerous eval(), Cruncher uses new Function() guarded by a strict whitelist Regex that guarantees only numbers and math operators can pass.

  • Input Validation: Instead of heavy schema libraries like Zod, a custom recursive validation function rigidly enforces AI inputs against JSON Schemas directly.

  • Timeout Protection: Instead of complex process managers, it leverages Node.js worker_threads to spawn calculations. If an AI requests a multi-million loop factorial, the main thread easily terminates the worker after a strict timeout (default 3 seconds). This timeout is configurable via the CRUNCHER_TIMEOUT environment variable (in milliseconds), ensuring the server remains responsive even during heavy computational loads.

  • Floating-Point Accuracy: Instead of using decimal.js, it solves the classic JS math error (0.1 + 0.2 = 0.30000000000000004) via dynamic integer-scaling logic under the hood.

Related MCP server: sci-calc-mcp

📚 An Educational Approach to MCP

This project serves as an excellent learning resource for developers looking to understand the Model Context Protocol (MCP) deeply. Because it deliberately avoids using the official @modelcontextprotocol/sdk, the entire implementation of the MCP protocol, JSON-RPC message handling, input validations, and error formatting is exposed in plain JavaScript.

Reading through cruncher.js provides unparalleled, transparent insight into exactly how an MCP server communicates over stdio, parses incoming requests (initialize, tools/list, tools/call), and responds back to the AI client-demystifying the "magic" that SDKs usually hide away.

What is the Model Context Protocol?

The Model Context Protocol (MCP) is an open standard that allows AI applications to securely connect with external data sources and tools. Think of it as a universal API for AI. By implementing Cruncher as an MCP server, any AI that understands MCP can instantly gain powerful, built-in calculator capabilities without custom integrations.

✨ Features

Cruncher provides a comprehensive set of calculator functions built completely from scratch without heavy dependencies:

  • Robust Architecture:

    • Zero Dependencies: Relies purely on Node.js standard libraries.

    • Strict Input Validation: Custom schema validator prevents AI hallucinations and invalid data.

    • Infinite Loop Protection: Utilizes Node.js worker_threads with a 3-second strict timeout to prevent complex calculations from freezing the server.

    • Accurate Decimal Math: Uses an integer-scaling approach to prevent classic JS floating-point errors (e.g., 0.1 + 0.2 === 0.3).

  • Tiered Tool Exposure: Three tiers (minimal, standard default, full) to optimize context token usage.

  • Basic Arithmetic: Addition, Subtraction, Multiplication, Division, Modulo.

  • Expression Evaluation: Safely compute entire plain-text math strings (e.g. (5 + 3) * 10 / 2).

  • Power & Roots: Exponentiation (a^b), Square Root.

  • Number Theory: Factorial (n!).

  • Trigonometry: Sine, Cosine, Tangent, Arcsine (asin), Arccosine (acos), and Arctangent (atan) (with support for degrees and radians).

  • Logarithms: Base-10 Logarithm and Natural Logarithm (ln).

  • Statistical Functions: Sum, Average, Median, Min, Max, Range, Count, Variance, and Standard Deviation for arrays of numbers.

  • Percentage Functions: Percentage-of, percentage-change, and reverse-percentage calculations.

  • Unit Conversion: 80+ conversions across 8 categories (length, weight, temperature, area, volume, time, speed, digital_storage).

  • Convenience Functions: Absolute Value.

  • Constants: Easy access to Math (pi, e, tau, phi, sqrt2, euler_mascheroni), Physics (c, g, G, h, k, R), and Chemistry constants (NA, e_charge, m_e, m_p).

  • Memory Functions: M+, M-, MR (Memory Recall), and MC (Memory Clear) - full tier only.

🚀 Installation & Usage

Get Cruncher up and running with Claude Desktop in just a few minutes.

Step 1: Prerequisites

Ensure you have Node.js (version 18.0.0 or newer) installed on your system. You can download it from nodejs.org.

Step 1: Quick Start with npm

Recommended: Install via npm and use directly:

npx @slbdn/cruncher-mcp

This downloads and runs the latest version automatically.

Step 2: Configure Claude Desktop

Recommended: Use the npm package for automatic updates:

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

Step 3: Manual File (Alternative)

If you prefer to download the file manually instead:

  1. Download the cruncher.js file directly from GitHub.

  2. Place it in a permanent location (e.g., C:\mcp-servers\cruncher.js or /home/user/mcp-servers/cruncher.js).

  3. Locate the Claude Desktop configuration file:

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

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

  4. Add the server configuration pointing to your downloaded file:

    {
      "mcpServers": {
        "cruncher": {
          "command": "node",
          "args": ["C:/Users/YOUR_USERNAME/mcp-servers/cruncher.js"],
          "env": {
            "CRUNCHER_TOOL_SET": "standard"
          }
        }
      }
    }

    Note for macOS/Linux Users: Use a POSIX-style path, e.g., "/home/YOUR_USERNAME/mcp-servers/cruncher.js". Make sure your node executable is in your system's PATH.

Step 4: Start Calculating!

  1. Save the configuration file and completely quit the Claude Desktop app.

  2. Restart Claude Desktop. It will automatically connect to the Cruncher server.

  3. Start asking questions!

OpenWebUI (Formerly Ollama WebUI)

OpenWebUI natively supports connecting to stdio MCP servers.

Option A: Using npm package

  1. Go to Admin Panel > Settings > Tools > MCP Servers.

  2. Click Add Server.

  3. Name it "Cruncher", select Command and enter npx, set Args to @slbdn/cruncher-mcp.

Option B: Using downloaded file

  1. Go to Admin Panel > Settings > Tools > MCP Servers.

  2. Click Add Server.

  3. Name it "Cruncher", select stdio, use node as the command, and /path/to/cruncher.js as the argument.

Cursor IDE

You can give Cursor's built-in AI the ability to run math and calculate hashes.

Option A: Using npm package

  1. Open Cursor Settings (gear icon) > Features > MCP Servers.

  2. Click + Add New MCP Server.

  3. Set Type to command, Name to cruncher, and Command to npx @slbdn/cruncher-mcp.

Option B: Using downloaded file

  1. Open Cursor Settings (gear icon) > Features > MCP Servers.

  2. Click + Add New MCP Server.

  3. Set Type to command, Name to cruncher, and Command to node /path/to/cruncher.js.

Cline (VS Code Extension)

If you use Cline for agentic coding in VS Code, open the MCP configuration file (cline_mcp_settings.json) and add:

Option A: Using npm package

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

Option B: Using downloaded file

{
  "mcpServers": {
    "cruncher": {
      "command": "node",
      "args": ["/path/to/cruncher.js"],
      "env": {
        "CRUNCHER_TOOL_SET": "standard"
      }
    }
  }
}

Goose (Terminal Agent)

Goose is a lightweight, terminal‑based AI assistant that fully supports MCP.

Option A: Using npm package

  1. Edit ~/.goose/config.yaml (or the local project config).

  2. Add a new server entry:

mcpServers:
  cruncher:
    command: npx
    args:
      - -y
      - "@slbdn/cruncher-mcp"

Option B: Using downloaded file

  1. Edit ~/.goose/config.yaml (or the local project config).

  2. Add a new server entry:

mcpServers:
  cruncher:
    command: node
    args:
      - "/path/to/cruncher.js"
    env:
      CRUNCHER_TOOL_SET: "standard"
  1. Restart Goose. You can now ask Goose to run calculations like evaluate_expression or median directly.

Zed Editor (AI Pane)

Zed's built‑in AI pane supports MCP connections.

Option A: Using npm package

  1. Open Settings → AI → MCP Servers.

  2. Click Add Server and fill in:

    • Name: cruncher

    • Command: npx

    • Args: @slbdn/cruncher-mcp

  3. Save. The Zed AI can now call Cruncher for precise arithmetic and statistics.

Option B: Using downloaded file

  1. Open Settings → AI → MCP Servers.

  2. Click Add Server and fill in:

    • Name: cruncher

    • Command: node

    • Args: /absolute/path/to/cruncher.js

    • Env (optional): CRUNCHER_TOOL_SET=standard

  3. Save. The Zed AI can now call Cruncher for precise arithmetic and statistics.

LM Studio (Local LLM + MCP)

LM Studio runs LLMs entirely offline and now includes an MCP client.

Option A: Using npm package

  1. Open Settings → MCP in LM Studio.

  2. Click Add Server and provide:

    • Executable: npx

    • Arguments: @slbdn/cruncher-mcp

  3. Confirm. Your private model can now offload math to Cruncher without any network traffic.

Option B: Using downloaded file

  1. Open Settings → MCP in LM Studio.

  2. Click Add Server and provide:

    • Executable: node

    • Arguments: /absolute/path/to/cruncher.js

    • Environment (optional): CRUNCHER_TOOL_SET=standard

  3. Confirm. Your private model (e.g., Llama 3, DeepSeek-V2) can now offload math to Cruncher without any network traffic.

LibreChat Configuration

If you're using LibreChat, you can add the following configuration to your librechat.yaml file:

Option A: Using npm package

  cruncher:
    type: stdio
    command: npx
    args:
      - -y
      - "@slbdn/cruncher-mcp"

Option B: Using downloaded file

  cruncher:
    type: stdio
    command: node
    args:
      - "/opt/mcp/cruncher.js"
    env:
      CRUNCHER_TIMEOUT: "5000"

Example Questions for Claude

"What is the angle in degrees whose sine is 0.5?"

"Calculate the average, median, and range of these numbers: [15, 22, 8, 41, 19, 30]"

"What is 2 raised to the power of 10?"

"What is the standard deviation of [10, 12, 8, 14, 6]?"

"What is 15% of 240?"

"A stock went from $50 to $75. What's the percentage change?"

"What is the variance of test scores [85, 92, 78, 90, 88]?"

"Calculate the range of values in [3, 7, 2, 9, 1]"

"Evaluate the expression: sin(pi/4) + sqrt(16) + log10(100)"

"What is 10 factorial?"

"What is 17 modulo 5?"

Full Tier Examples (with CRUNCHER_TOOL_SET=full):

"Store 99 in memory, add 5, then recall the total."

"What's the 75th percentile of [10, 20, 30, 40, 50]?"

"Convert 11010 from binary to decimal."

"Batch: square root of 144, add 10, then raise to power 2."

"Switch trigonometric functions to radians mode."

"Clear the result cache and show cache statistics."

"Recall what's in memory, then subtract 15 and store the result."

"What's the 95th percentile of [23, 45, 12, 67, 89, 34, 56, 78, 90, 11]?"

"Convert 0xFF from hex to binary."


📋 Available Tools

Cruncher exposes its functions as individual MCP tools. Here is the full list:

Tool Name

Description

Arguments

Basic Arithmetic

evaluate_expression

Evaluates a plain text math expression (e.g. (5 + 3) * 10 / 2).

expression (string)

add

Adds two numbers (a + b).

a (number), b (number)

subtract

Subtracts the second number from the first (a - b).

a (number), b (number)

multiply

Multiplies two numbers (a * b).

a (number), b (number)

divide

Divides the first number by the second (a / b).

a (number), b (number)

modulo

Calculates the remainder (a mod b).

a (number), b (number)

Power & Roots

power

Calculates a raised to the power of b (a^b).

base (number), exponent (number)

sqrt

Calculates the square root of a value.

value (number)

Number Theory

factorial

Calculates the factorial of a non-negative integer (n!).

n (number, non-negative integer)

Unit Conversion

convert_unit

Convert between common units. 8 categories, 80+ units.

value (number), category (string), from (string), to (string)

Base Conversion (Full Tier)

convert_base

Converts between bases 2, 8, 10, 16.

value (string), from_base (2, 8, 10, 16), to_base (2, 8, 10, 16)

Trigonometry

sine

Calculates the sine of an angle.

angle (number), unit (degrees/radians, optional)

cosine

Calculates the cosine of an angle.

angle (number), unit (degrees/radians, optional)

tangent

Calculates the tangent of an angle.

angle (number), unit (degrees/radians, optional)

asin

Calculates the inverse sine (arcsine) of a value. Returns an angle.

value (number), unit (degrees/radians, optional)

acos

Calculates the inverse cosine (arccosine) of a value. Returns an angle.

value (number), unit (degrees/radians, optional)

atan

Calculates the inverse tangent (arctangent) of a value. Returns an angle.

value (number), unit (degrees/radians, optional)

Logarithms

logarithm

Calculates the base-10 logarithm of a value.

value (number)

natural_log

Calculates the natural logarithm (base-e) of a value.

value (number)

Statistical Functions

sum

Calculates the sum of an array of numbers.

numbers (array of numbers)

avg

Calculates the average of an array of numbers.

numbers (array of numbers)

median

Calculates the median of an array of numbers.

numbers (array of numbers)

min

Finds the minimum value in an array of numbers.

numbers (array of numbers)

max

Finds the maximum value in an array of numbers.

numbers (array of numbers)

count

Counts the number of elements in an array.

numbers (array of numbers)

range

Calculates the range (max - min) of an array.

numbers (array of numbers)

percentile

Calculates the value at a given percentile (0-100). Full tier.

numbers (array of numbers), percentile (number, 0-100)

variance

Variance of an array. Sample (n-1) or population (n).

numbers (array of numbers), population (boolean, optional)

std_dev

Standard deviation. Sample (n-1) or population (n).

numbers (array of numbers), population (boolean, optional)

percentage_of

What is X% of Y? e.g., 15% of 200 = 30.

percent (number), total (number)

percentage_change

% change from A to B. e.g., 50→80 = 60%.

from (number), to (number)

percentage_reverse

X is Y% of what? e.g., 30 is 15% of 200.

value (number), percent (number)

Other

absolute

Calculates the absolute value of a number.

value (number)

Constants

get_constant

Returns the value of a mathematical, physical, or chemical constant.

name ("pi", "e", "tau", "phi", "sqrt2", "euler_mascheroni", "c", "g", "G", "h", "k", "R", "NA", "e_charge", "m_e", "m_p")

Memory Functions (Full Tier)

memory_clear

Clears the calculator memory (MC).

(no arguments)

memory_recall

Recalls the value stored in memory (MR).

(no arguments)

memory_add

Adds a value to the current memory (M+).

value (number)

memory_subtract

Subtracts a value from the current memory (M-).

value (number)

Angle Mode (Standard Tier)

set_angle_mode

Set global angle mode (default: degrees).

unit ("degrees" or "radians")

get_angle_mode

Get current angle mode.

(no arguments)

Admin Tools (Full Tier)

batch

Execute multiple tool calls sequentially.

operations (array of {tool, arguments})

cache_clear

Clear computation cache.

(no arguments)

cache_info

Show cache stats.

(no arguments)

⚙️ Configuration

Environment Variables

Variable

Default

Description

CRUNCHER_TIMEOUT

3000

Worker thread execution timeout (ms). Range 100-60000

CRUNCHER_TOOL_SET

standard

Controls tool exposure: minimal (5), standard (34 default), full (43)

Tool Tiers - Full Reference

Cruncher exposes 3 tiers via the CRUNCHER_TOOL_SET environment variable. Each tier is a strict superset of the one before it.

Tier Overview

Tier

Tools

Use Case

Minimal (5)

Core arithmetic only

Lightweight calculators, simple math agents

Standard (34 - default)

All minimal + trig, stats, constants, unit conversion

General-purpose AI assistant math

Full (43)

All standard + memory, batch, cache, base conversion, advanced stats

Power users, multi-step workflows

Minimal Tier (5 Tools)

All tools run in the worker thread with timeout protection.

#

Tool

Description

1

evaluate_expression

Evaluates a math expression string

2

add

Addition (a + b)

3

subtract

Subtraction (a - b)

4

multiply

Multiplication (a × b)

5

divide

Division (a ÷ b)

Standard Tier (34 Tools - includes all 5 Minimal)

#

Tool

Category

6

sqrt

Square root

7

power

Exponentiation (a^b)

8

absolute

Absolute value

9

modulo

Remainder (a mod b)

10

factorial

Factorial (n!)

11

logarithm

Base-10 logarithm

12

natural_log

Natural logarithm (ln)

13

get_constant

Fetch physical/math constants

14-16

sine, cosine, tangent

Trigonometry

17-19

asin, acos, atan

Inverse trigonometry

20

set_angle_mode

Toggle degrees/radians (global)

21

get_angle_mode

Check current angle mode

22-25

sum, avg, min, max

Basic statistics

26

count

Count elements

27

variance

Variance (sample or population)

28

std_dev

Standard deviation (sample or population)

29

percentage_of

X% of Y

30

percentage_change

% change A→B

31

percentage_reverse

X is Y% of what?

32

median

Median value

33

range

Range (max - min)

34

convert_unit

80+ unit conversions, 8 categories

Full Tier (43 Tools - includes all 34 Standard)

#

Tool

Category

35

percentile

Value at Nth percentile

36

convert_base

Base 2/8/10/16 conversion

37

memory_add

Add to running total

38

memory_subtract

Subtract from running total

39

memory_recall

Get current memory value

40

memory_clear

Reset memory to zero

41

batch

Execute up to 50 operations in one call

42

cache_clear

Clear result cache

43

cache_info

Show cache statistics

Fuzzy Tool Name Matching

If the LLM calls a tool that doesn't exist, Cruncher uses Levenshtein distance to find the closest match and suggests it:

Typo

Suggestion

Match Type

fact

factorial

Prefix match

fac

factorial

Prefix match

sinn

sine

1-char typo

squrt

sqrt

Transposition

adddd

add

Extra letters

divid

divide

Missing suffix

totally_wrong

(none)

Too different - no suggestion

Response format:

{
  "error": {
    "code": -32601,
    "message": "Tool 'fact' not found. Did you mean 'factorial'?"
  }
}

Extended evaluate_expression Built-ins

Beyond basic arithmetic, evaluate_expression supports these functions natively:

Function

Description

Example

Result

sin(x)

Sine (radians, always in expressions)

sin(pi / 2)

1

cos(x)

Cosine (radians, always in expressions)

cos(pi)

-1

tan(x)

Tangent (radians)

tan(pi / 4)

~1

asin(x)

Arc-sine (result in radians)

asin(1)

π/2

acos(x)

Arc-cosine (result in radians)

acos(0)

π/2

atan(x)

Arc-tangent (result in radians)

atan(1)

π/4

sqrt(x)

Square root

sqrt(144)

12

log10(x)

Base-10 logarithm

log10(1000)

3

ln(x)

Natural log (base e)

ln(e)

1

log(x, b)

Arbitrary base logarithm

log(8, 2)

3

abs(x)

Absolute value

abs(-5)

5

round(x)

Round to nearest int

round(3.7)

4

floor(x)

Round down

floor(3.9)

3

ceil(x)

Round up

ceil(3.1)

4

min(a,b,...)

Minimum value

min(3, 1, 4)

1

max(a,b,...)

Maximum value

max(3, 1, 4)

4

Combine freely: sin(pi/6) + sqrt(16) + log10(100) = 6.5

Improved Error Messages

Domain errors now tell you what went wrong:

  • sqrt(-1) → "Check for: sqrt(negative), log(negative/zero), asin/acos out of [-1,1]"

  • 1/0 → "Check for division by zero or overflow"

  • asin(5) → "asin/acos out of [-1,1]"

Constants in Expressions

You can now use mathematical and physical constant names directly inside evaluate_expression:

Constant

Description

Value

pi

π (circle ratio)

3.14159...

e

Euler's number

2.71828...

tau

τ = 2π

6.28318...

phi

Golden ratio (φ)

1.61803...

sqrt2

√2

1.41421...

euler_mascheroni

Euler-Mascheroni (γ)

0.57721...

c

Speed of light (m/s)

299792458

g

Gravity (m/s2)

9.80665

G

Gravitational constant

6.6743e-11

h

Planck constant (J·s)

6.62607015e-34

k

Boltzmann constant (J/K)

1.380649e-23

R

Ideal gas constant (J/mol·K)

8.314462618

NA

Avogadro constant (1/mol)

6.02214076e23

e_charge

Elementary charge (C)

1.602176634e-19

m_e

Electron mass (kg)

9.1093837015e-31

m_p

Proton mass (kg)

1.67262192369e-27

Examples:

2 * pi * 5       → 31.4159...
phi ^ 2          → 2.61803...
G * 1e11         → 6.6743
sqrt2 * sqrt2    → 2
e * e            → 7.38906...
c * 2            → 599584916

Rules:

  • Use explicit operators: 2 * pi works, 2pi does not (no implicit multiplication)

  • Constants coexist with scientific notation: 1e6 and e * 2 both work correctly

  • Longest constant names match first: euler_mascheroni won't become 299792458uler_mascheroni

Tiered Tool Exposure

The CRUNCHER_TOOL_SET environment variable lets you optimize context token usage by exposing only the tools you actually need:

Tier

Tools

Token Budget

Use Case

minimal

5

~160 tokens

Basic arithmetic. All complex math via evaluate_expression

standard

34

~1,150 tokens

Arithmetic, trig, stats, percentages, constants, unit conversion (default)

full

43

~1,500 tokens

Standard + memory, base conversion, percentile, batch, cache

Note: Even in minimal mode, evaluate_expression handles complex math - individual tools (sin, sqrt, etc.) just aren't registered as separate MCP tool calls. This saves up to 90% on context tokens.

Example MCP config (claude_desktop_config.json):

{
  "mcpServers": {
    "cruncher-minimal": {
      "command": "node",
      "args": ["/path/to/cruncher.js"],
      "env": { "CRUNCHER_TOOL_SET": "minimal" }
    }
  }
}

⛏️ How It Works (For Developers)

Cruncher is a plain Node.js JavaScript application that communicates over standard input/output (stdio). This makes it a lightweight, portable, and secure MCP server. The entire flow for a single tool call looks like this:

  1. Initialization: On startup, the server listens for an initialize request from the MCP client and responds with its capabilities and version info (v1.2.31).

  2. Tool Discovery: The client sends a tools/list request, and the server responds with the full list of available calculator tools and their inputSchema, which defines the required arguments and their types.

  3. Input Validation: Before any tool is executed, the server runs a custom recursive validateArguments function against the tool's inputSchema. This ensures required fields are present, types are correct (number, string, array), enum values are valid, and min/max constraints are respected - all without any external library.

  4. Worker Thread Execution: Once validated, the tool call is handed off to an isolated Node.js worker_thread. This completely protects the main thread (and its stdio communication) from being blocked by a long-running or infinite calculation.

  5. Timeout Protection: A configurable timer (CRUNCHER_TIMEOUT, default 3000ms) watches the worker. If the worker takes too long, the main thread forcefully terminates it via worker.terminate() and returns a -32000 error to the AI client.

  6. Safe Math & Result: The worker executes the handler function using safeMath (integer-scaling) for decimal-safe arithmetic, then posts the result back to the main thread, which formats and writes the final JSON-RPC 2.0 response to stdout.

🤝 Contributing

Contributions are welcome! If you'd like to add a new function, fix a bug, or improve the documentation, please feel free to open an issue or submit a pull request.

📜 License

This project is licensed under the MIT License.

Available Tools

34 tools
absoluteB
Read-onlyIdempotent

Absolute value.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint, so the description adds no further behavioral context. It does not contradict annotations but also does not enhance transparency.

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 extremely concise—a single phrase—with no wasted words. For a simple math function, this is appropriately sized and front-loaded.

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

Completeness2/5

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

Despite the tool's simplicity, the description lacks details about return type, special value handling (e.g., NaN), and context for use. No output schema exists to fill gaps, leaving the description incomplete.

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

Parameters2/5

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

Schema description coverage is 0%, and the description 'Absolute value.' does not explain the single required parameter 'value' or its expected format. It fails to compensate for the lack of schema descriptions.

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 'Absolute value.' clearly indicates the tool computes the absolute value of a number. However, it does not differentiate from sibling math tools like 'sqrt' or 'add', lacking specific context that sets it apart.

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 provided on when to use this tool versus alternatives (e.g., for handling negative numbers). The description offers no context for appropriate use cases or exclusions.

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

acosA
Read-onlyIdempotent

Arccosine. Result in degrees by default, or radians with unit param.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNo
valueYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate readOnly, non-destructive, idempotent behavior. Description adds value by disclosing default unit (degrees) and how to change it via the unit parameter. However, it doesn't mention input domain constraints (value must be in [-1,1] for real output).

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?

Extremely concise, front-loaded with the core function ('Arccosine'). No wasted words; every sentence contributes meaning.

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 2-param tool with no output schema, description is mostly complete. It covers purpose and unit behavior. Minor gap: missing mention of valid input range for arccosine (-1 to 1).

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

Parameters3/5

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

Schema coverage is 0%, so description must compensate. It explains the unit parameter's effect but does not clarify that 'value' is the cosine input (range implied). Partial compensation; not fully descriptive of both parameters.

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

Purpose5/5

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

Description clearly states 'Arccosine' and specifies result units (degrees by default, radians with unit param). This distinctively identifies the tool among siblings like sine, cosine, arctan.

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?

Description does not provide explicit guidance on when to use this tool versus alternatives (e.g., arctan). It only implies usage as the inverse cosine function, leaving selection context to the agent.

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

addB
Read-onlyIdempotent

Adds two numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, covering safety profile. The description adds no additional behavioral context (e.g., return value), but is not contradictory.

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 single sentence of three words, containing no unnecessary information. It is maximally concise for a simple operation.

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

Completeness2/5

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

Given no output schema, the description should imply the return behavior (e.g., the sum). It does not, so the agent lacks assurance about what the tool produces.

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

Parameters2/5

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

Schema coverage is 0%, meaning parameter descriptions are absent. The description only says 'Adds two numbers' without elaborating the role of parameters a and b beyond their numeric type.

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

Purpose5/5

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

The description 'Adds two numbers' is a specific verb+resource statement. It clearly distinguishes from siblings like multiply, subtract, etc., which perform different operations.

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 provided on when to use this tool versus alternatives like sum or other arithmetic operations. The agent receives no context about preferred scenarios.

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

asinA
Read-onlyIdempotent

Arcsine. Result in degrees by default, or radians with unit param.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNo
valueYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already indicate read-only and idempotent nature; description adds default unit behavior, which is useful beyond annotations. No contradictions.

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

Conciseness5/5

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

One concise sentence, front-loaded with function name, no redundancy.

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?

Adequate for a simple trig function; covers output unit but could mention input domain (e.g., -1 to 1) for completeness.

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

Parameters3/5

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

Schema has 0% description coverage; description mentions unit parameter effect but does not clarify the 'value' parameter domain or constraints. Parameter names are self-explanatory but a note on valid input range would improve.

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?

Explicitly names the function 'Arcsine' and specifies output unit behavior, clearly distinguishing it from sibling trig tools like cosine or tangent.

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

Usage Guidelines2/5

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

No guidance on when to use arcsine versus other inverse trig functions or mathematical operations; lacks context for selection.

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

atanA
Read-onlyIdempotent

Arctangent. Result in degrees by default, or radians with unit param.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNo
valueYes

TDQS

A3.8/5.0
Behavior4/5

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

Adds value beyond annotations by specifying default unit (degrees) and option for radians. Annotations already indicate readOnly, non-destructive, idempotent; description complements well.

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

Conciseness5/5

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

Two sentences, front-loaded key info, no redundancy. Efficient and clear.

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

Completeness4/5

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

No output schema, but description implies result is an angle in specified units. Could explicitly mention return type, but sufficient for a simple math function given annotations.

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?

With 0% schema coverage, description partially compensates by explaining the 'unit' parameter. However, 'value' parameter lacks any description beyond the schema type.

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

Purpose5/5

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

Description clearly states it computes arctangent, with unit specification. Differentiates from sibling trig functions like sine, cosine, tangent.

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 on when to use this tool vs alternatives. Does not mention inverse relationship to tangent or any use cases.

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

avgA
Read-onlyIdempotent

Average (mean) of numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
numbersYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare this tool as readOnlyHint=true, destructiveHint=false, and idempotentHint=true, which is consistent with computing an average. The description adds no further behavioral context (e.g., handling of empty arrays), but does not contradict the annotations.

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

Conciseness5/5

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

The description is extremely concise—only four words—with no fluff. Every word is necessary and the message is immediately clear.

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 mathematical tool with one parameter and no output schema, the description is sufficient. The annotations cover behavioral traits. The only missing aspect is guidance on edge cases (e.g., empty array), but the tool's simplicity reduces the need for more.

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 input schema has 0% description coverage for its single parameter 'numbers'. The description does not explain the parameter beyond stating it operates on numbers. While the parameter is self-explanatory, the description could add useful semantics like handling of non-numeric inputs, but it does not.

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 'Average (mean) of numbers' clearly states the verb (average/mean) and resource (numbers). It distinguishes this tool from siblings like median, mode, sum, etc., which are present on the same server.

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 provided on when to use this tool versus alternatives like median or sum. There is no discussion of edge cases or prerequisites, leaving the agent without decision support.

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

convert_unitA
Read-onlyIdempotent

Convert between common units. Categories: length, weight, temperature, area, volume, time, speed, digital_storage.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
fromYes
valueYes
categoryYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate read-only, idempotent behavior. The description adds categories but no further behavioral traits like side effects, authentication needs, or limitations on unit strings.

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

Conciseness5/5

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

Two concise sentences front-loading the purpose and categories. No unnecessary words.

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

Completeness2/5

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

Missing details on return value (no output schema), parameter formats, and usage constraints. A tool with 4 required parameters should have more explanatory content.

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%, yet the description only lists categories for the enum parameter. It does not explain the format or meaning of 'from' and 'to' strings or 'value' number, leaving ambiguity.

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

Purpose5/5

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

The description clearly states the tool converts units and lists all supported categories. This makes it distinct from sibling math functions.

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 for unit conversion but does not explicitly state when to use or provide alternatives. It offers no exclusions or context for when not to use.

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

cosineA
Read-onlyIdempotent

Cosine. Angle in degrees by default, or radians with unit: "radians".

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNo
angleYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds minimal extra context (unit defaults) but does not detail return values, domain, or precision. With strong annotation coverage, the description adds some value but not extensive behavioral detail.

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 single concise sentence of 10 words, front-loading the tool's identity and essential usage. No wasted words; every part earns its place.

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

Completeness3/5

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

For a simple math tool with annotations and no output schema, the description adequately conveys unit behavior but omits explicit statement of return value (cosine result) and edge cases. It suffices for basic understanding but is not fully comprehensive.

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 the 'unit' parameter's enum values and default behavior but does not explain the 'angle' parameter's type or constraints beyond its name. Partial compensation 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 'Cosine. Angle in degrees by default, or radians with unit: 'radians'.' clearly identifies the tool as computing the cosine of an angle. The explicit mention of unit defaults distinguishes it from similar trig functions through name and context.

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

Usage Guidelines3/5

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

The description provides guidance on unit usage (degrees default, radians with unit parameter) but offers no advice on when to use cosine versus sibling tools like sine or tangent. It lacks exclusions or alternative recommendations.

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

countB
Read-onlyIdempotent

Count elements.

ParametersJSON Schema
NameRequiredDescriptionDefault
numbersYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, which cover the safety and idempotency profile. The description adds no extra behavioral context (e.g., return value or side effects), but does not contradict annotations.

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

Conciseness4/5

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

The description is extremely concise at two words, which is efficient for a simple tool. However, it could include a bit more detail (e.g., 'Count the number of elements in the input array') without losing conciseness.

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

Completeness3/5

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

The tool is simple, but the description lacks mention of the return value (the count). Given there is no output schema, the description should specify that the tool returns the count of elements. Otherwise, it adequately covers the input.

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?

With 0% schema description coverage, the description should compensate by explaining the 'numbers' parameter. The description only says 'Count elements,' which implies the parameter is the elements to count, but it does not explicitly clarify its meaning or format beyond the schema.

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

Purpose4/5

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

The description 'Count elements' clearly indicates the verb (count) and resource (elements), and it distinguishes the tool from siblings like sum or avg which compute different aggregates. However, it could be slightly more explicit by stating 'Count the number of elements in the array.'

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 provided on when to use this tool versus alternative sibling tools (e.g., sum, avg). The description does not specify context or exclusions, leaving the agent without direction for tool selection.

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

divideA
Read-onlyIdempotent

Divides two numbers. Errors on zero divisor.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds the key behavioral detail that it errors on zero divisor, which is beyond what annotations provide. However, it does not mention return type or precision behavior.

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 two sentences, extremely concise, and front-loaded with the core action. Every word adds value with no fluff.

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 arithmetic tool with two number parameters, no output schema, and extensive annotations covering safety and idempotency, the description adequately covers the error condition and leaves little ambiguity.

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?

With 0% schema description coverage, the description should add parameter-level meaning. It only says 'two numbers,' leaving it ambiguous which parameter is dividend and which is divisor. The overall operation implies order, but explicit parameter semantics are lacking.

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 'Divides two numbers' with a specific verb and resource, and it distinguishes itself from sibling arithmetic tools like add, multiply, etc. The error condition on zero divisor is also mentioned, adding specificity.

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 (when division is needed), but it lacks explicit guidance on when not to use, such as handling of non-numeric values or precision considerations, and does not mention alternatives among siblings.

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

evaluate_expressionA
Read-onlyIdempotent

Evaluate a mathematical expression. PRIMARY tool for ALL math: +, -, *, /, %, ^. Functions: sqrt, sin, cos, tan, asin, acos, atan, log10, ln, log(x,base), abs, round, floor, ceil, min, max. Constants: pi, e, tau, phi, sqrt2, euler_mascheroni, c, g, G, h, k, R, NA, e_charge, m_e, m_p. Parentheses and scientific notation (1e6) supported. Use explicit operators: 2 * pi, not 2pi.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description confirms it evaluates expressions but adds no new behavioral traits beyond the annotations. It is consistent, but the contribution beyond annotations is minimal.

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 single dense paragraph with no wasted sentences. It front-loads the purpose and then efficiently lists supported features. Every sentence adds value, making it concise and well-structured.

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 complex tool with one parameter and no output schema, the description thoroughly covers expression syntax, functions, constants, and notation. However, it lacks mention of the return type (e.g., number) or error handling behavior, which would enhance completeness. Annotations cover safety aspects, so the description is still fairly complete.

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

Parameters4/5

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

The input schema has one parameter 'expression' with no description (0% coverage). The description compensates by detailing what the expression can contain: operators, functions, constants, parentheses, scientific notation, and an explicit usage tip ('2 * pi, not 2pi'). This adds significant semantic meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states 'Evaluate a mathematical expression' and declares it the 'PRIMARY tool for ALL math', which distinguishes it from siblings like sin, cos, etc. It lists supported operators, functions, and constants, making the purpose specific and 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 says 'PRIMARY tool for ALL math', implying use for general expressions, but does not explicitly mention when not to use this tool or how it compares to sibling tools (e.g., sin, cos). Given the many sibling math function tools, more explicit guidance on when to use evaluate_expression versus individual functions would improve this dimension.

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

factorialA
Read-onlyIdempotent

Factorial of non-negative integer (n!). n > 170 overflows.

ParametersJSON Schema
NameRequiredDescriptionDefault
nYes
timeoutNoCustom timeout in ms (100-60000, default: 3000)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations provide readOnlyHint and idempotentHint. Description adds non-negative integer constraint and overflow at n>170, which is critical behavioral info beyond annotations. No contradictions.

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

Conciseness5/5

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

Description is two sentences, front-loaded with purpose, no unnecessary words. Efficiently conveys key info.

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

Completeness5/5

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

Given the tool's simplicity, the description covers purpose, constraint, and overflow. No output schema needed; return value is standard. Timeout parameter is documented in schema. Complete for the context.

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

Parameters3/5

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

Schema description coverage is 50% (timeout described). Description adds that n must be non-negative integer, which supplements the schema's type number. However, it does not fully describe parameter behavior (e.g., expected input range beyond overflow).

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

Purpose5/5

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

Description clearly states 'Factorial of non-negative integer (n!)' which specifies the verb (compute factorial) and resource (non-negative integer). It also mentions overflow condition, and since siblings are other math functions, this tool is distinct.

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?

No explicit guidance on when to use vs alternatives, but the purpose is self-explanatory for a factorial tool. The description implies it's for factorial computation, but does not exclude alternative tools or provide context.

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

get_angle_modeA
Read-onlyIdempotent

Get current trig angle mode.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds no behavioral context beyond the name, such as the return format or side effects. With annotations present, the bar is lower, but description still misses opportunity to clarify what 'angle mode' means.

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 single, front-loaded sentence with no extraneous words. It efficiently conveys the tool's purpose.

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

Completeness5/5

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

Given zero parameters, no output schema, and simple purpose, the description is complete. An agent can infer what the tool returns based on the name and description.

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?

There are no parameters (100% schema coverage). The description does not need to explain parameters. Baseline 4 is appropriate as no additional info is required.

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 'Get current trig angle mode' clearly states the tool's action (get) and resource (current trig angle mode). It distinguishes from sibling 'set_angle_mode' by being a read-only counterpart.

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

Usage Guidelines3/5

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

The description implies usage when needing to know the current angle mode, but does not explicitly state when to use or provide alternatives. Given it's a simple getter, no further guidance is critical.

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

get_constantA
Read-onlyIdempotent

Returns a mathematical, physical, or chemical constant. See enum values.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A3.6/5.0
Behavior2/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior; description adds no further behavioral details beyond 'returns constant'.

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

Conciseness5/5

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

Two sentences, no fluff, front-loaded purpose. Efficient and clear.

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 lookup tool with a fixed enum, the description is fairly complete. Could mention return type (numeric) but overall adequate.

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

Parameters3/5

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

Schema coverage is 0% (no param descriptions), so description must compensate. It only says 'See enum values', which is minimal direction but acceptable given the self-explanatory enum.

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

Purpose5/5

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

Description clearly states it returns mathematical, physical, or chemical constants, and references the enum values for specifics. It distinguishes itself from sibling operation 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?

Implicitly clear from sibling list that this is the only constant lookup tool, but no explicit when-to-use or when-not-to-use guidance is provided.

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

logarithmA
Read-onlyIdempotent

Base-10 logarithm. Errors on non-positive input.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations (readOnly, idempotent), the description adds the critical behavior that it errors on non-positive input, disclosing the input domain restriction. It also specifies base-10, which is a behavioral detail.

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 extremely concise with two sentences, front-loading the purpose in the first sentence. Every word adds value.

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

Completeness4/5

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

Given the tool's simplicity (one required parameter, no output schema, no nested objects), the description covers the essential aspects: what it does and a key constraint. It could optionally state that the return value is the logarithm, but that is implied.

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?

The input schema has 0% description coverage for the single parameter 'value'. The description does not elaborate on the parameter beyond implying it's the number to compute the logarithm of, which is already clear from the tool name. No additional semantic meaning 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 clearly states 'Base-10 logarithm', specifying the exact mathematical operation. It distinguishes from siblings like natural_log and other math functions by naming the base.

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

Usage Guidelines2/5

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

The description only mentions that it errors on non-positive input, which is a constraint but does not provide guidance on when to use logarithm vs alternatives like natural_log or other arithmetic operations.

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

maxA
Read-onlyIdempotent

Maximum of numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
numbersYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety and idempotency. The description adds no additional behavioral context beyond this, such as behavior on empty input or performance implications.

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

Conciseness5/5

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

The description is a single concise sentence with no superfluous words. It is appropriately front-loaded and efficient for a simple mathematical tool.

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

Completeness3/5

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

Given the tool's simplicity (one parameter, no output schema), the description is adequate but incomplete. It implicitly states the return value (maximum number) but does not explicitly describe the output or handle edge cases like an empty array.

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 input schema has 0% description coverage for the 'numbers' parameter. The description 'Maximum of numbers.' implies that the parameter is a list of numbers, adding minimal meaning beyond the schema. However, it does not explain format requirements (e.g., minimum length) or handling of non-numbers.

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 'Maximum of numbers.' explicitly states the verb ('Maximum') and resource ('numbers'), clearly distinguishing it from sibling tools like 'min' and 'avg'. It is both specific and 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?

No guidance is provided on when to use this tool versus alternatives such as 'min' or 'avg'. There is no mention of use cases, edge cases (e.g., empty array), or prerequisites.

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

medianC
Read-onlyIdempotent

Median of numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
numbersYes
timeoutNoCustom timeout in ms (100-60000, default: 3000)

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds no behavioral context (e.g., handling of even counts, empty arrays, or return format).

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

Conciseness3/5

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

Very concise (3 words), but lacks structure and detail. It is front-loaded but insufficiently informative. Could be improved without adding verbosity.

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

Completeness1/5

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

Given 2 parameters including a timeout, and no output schema, the description is critically incomplete. Misses details on return format, error handling, and usage constraints. The tool's complexity demands more than a three-word phrase.

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?

Two parameters exist: numbers (required) and timeout (optional with schema description). Description does not mention parameters or clarify their roles beyond what schema provides. Schema coverage is 50%, but description fails to compensate.

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

Purpose4/5

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

Description 'Median of numbers.' clearly states the verb (compute) and resource (numbers), but lacks distinction from sibling tools like avg, std_dev, median is specific but not elaborated.

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 usage guidance provided. Does not specify when to use median vs. other statistical functions like avg or variance, nor any prerequisites or edge cases.

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

minB
Read-onlyIdempotent

Minimum of numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
numbersYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is clear. The description adds no behavioral details beyond the basic operation, such as handling of empty arrays or non-numeric values, which would be useful.

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 extremely concise at four words, front-loading the purpose with no wasted text. Every word is essential.

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

Completeness2/5

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

The tool has one parameter and no output schema, yet the description omits edge cases (e.g., empty array, non-numeric items) and the return type. Given the simplicity, more context would improve completeness.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not elaborate on the 'numbers' parameter beyond its name. The parameter is self-explanatory, but with low coverage the description should compensate, which it doesn't.

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 'Minimum of numbers.' clearly states the tool computes the minimum value from a set of numbers. It's specific and distinct from siblings like 'max' or 'avg', though it could be expanded slightly to avoid ambiguity with other types of minimums.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., 'min' vs 'max' or 'min' vs 'avg'), nor any context about prerequisites or typical use cases.

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

moduloA
Read-onlyIdempotent

Remainder of a / b. Errors on zero divisor.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds the important error condition on zero divisor, but does not disclose other potential behaviors (e.g., handling of negative numbers, return value details).

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 extremely concise: two short sentences with no superfluous words. It front-loads the purpose and effectively communicates the key behavior.

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 simplicity of the tool, rich annotations, and no output schema, the description covers the core operation and error case. It is mostly complete, though missing details on return type and edge cases (e.g., negative numbers) are acceptable for a basic arithmetic tool.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only implies the roles of 'a' and 'b' via the phrase 'remainder of a / b'. It does not provide explicit parameter semantics or constraints beyond the schema types.

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 ('remainder of a / b') and explicitly mentions the error condition on zero divisor, which distinguishes it from sibling tools like 'divide'.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives (e.g., 'divide', 'modulo' variants). The context is implied but not stated.

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

multiplyA
Read-onlyIdempotent

Multiplies two numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description does not need to add much. However, it adds no additional behavioral details (e.g., precision, overflow handling) beyond the bare 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 a single, concise sentence with no wasted words. It is front-loaded and efficiently conveys the purpose.

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 multiplication tool with rich annotations, the description adequately conveys the core behavior. The return value (product) is implied, and no output schema exists. Sibling tools are all math operations, so the context is clear.

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%, but the description does not elaborate on the parameters a and b beyond their numeric type (already in schema). The parameter names are self-explanatory, but no extra semantics are 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 uses the specific verb 'multiples' and resource 'two numbers,' clearly stating the tool's function. It distinguishes itself from sibling math operations like add or subtract by naming the distinct operation.

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 provided on when to use this tool versus alternatives. The description simply states the operation without context about prerequisites, alternatives, or conditions.

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

natural_logA
Read-onlyIdempotent

Natural logarithm (ln). Errors on non-positive input.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds the critical behavior that errors occur on non-positive input, which is beyond annotations.

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

Conciseness5/5

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

Two short sentences, perfectly front-loaded with the tool's core purpose. No extraneous information.

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

Completeness4/5

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

For a simple math function with no output schema, the description covers the essential: what it computes and a critical error condition. Adequate for the complexity.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not elaborate on the 'value' parameter beyond its existence. No additional meaning 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 explicitly states 'Natural logarithm (ln)' and distinguishes from sibling 'logarithm' by specifying the base. The error condition on non-positive input adds clarity.

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 for natural log but does not explicitly compare with 'logarithm' or other similar tools. No guidance on when to use this vs alternatives.

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

percentage_changeA
Read-onlyIdempotent

Percentage change from A to B. e.g., 50→80 = +60%

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
fromYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already indicate read-only and idempotent behavior. The description adds the formula and sign convention (positive for increase) via example, providing useful behavioral context beyond the annotations.

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

Conciseness5/5

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

The description is minimal and efficient: one sentence with an example. No superfluous text; every part is necessary for understanding.

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 math tool with no output schema, the description covers the operation and gives an example. It lacks detail on output format, but the example implies a percentage string. Adequate for the complexity.

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

Parameters3/5

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

Schema coverage is 0%, so the description should compensate. It implicitly maps 'A' to 'from' and 'B' to 'to' through the example, but does not explicitly define each parameter. The example helps clarify usage.

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

Purpose5/5

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

The description clearly states the tool computes percentage change from A to B with a concrete example. It distinguishes from sibling math tools like percentage_of and percentage_reverse by specifying the exact operation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like percentage_of or percentage_reverse. The description only states what it does, not the context or conditions for usage.

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

percentage_ofA
Read-onlyIdempotent

What is X% of Y? e.g., 15% of 200 = 30

ParametersJSON Schema
NameRequiredDescriptionDefault
totalYes
percentYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is clear. The description adds the formula and example, but does not disclose any additional behavioral traits (e.g., handling of negative numbers, precision, or error cases). With rich annotations, this is adequate.

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 single sentence with an example, containing no wasted words. It front-loads the core purpose and is optimally concise for the tool's simplicity.

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 basic mathematical tool with no output schema, the description covers the essential purpose and parameter roles. Annotations handle safety. It is nearly complete, though it could optionally mention return type or edge cases, but these are not critical.

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

Parameters5/5

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

Schema description coverage is 0%, so the parameters have no embedded descriptions. The description fully compensates by explaining that 'percent' is the percentage value and 'total' is the base number, as illustrated in the example. This makes the parameter semantics unambiguous.

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 specifies that the tool computes a percentage of a total, with a concrete example (15% of 200 = 30). This immediately distinguishes it from sibling tools like percentage_change or percentage_reverse, which perform different operations.

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

Usage Guidelines3/5

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

The description implicitly indicates usage for simple percentage calculations, but does not explicitly state when to use it versus alternatives, nor does it mention any exclusions or prerequisites. Given the simplicity, some guidance is implied but not formally provided.

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

percentage_reverseA
Read-onlyIdempotent

X is Y% of what? e.g., 30 is 15% of 200

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
percentYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only and idempotent behavior. The description adds functional context by showing the calculation logic, which is valuable 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.

Conciseness5/5

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

The description is a single sentence with an example, no wasted words. Front-loaded with the core question format, it is optimally concise.

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 math tool with no output schema, the description completely explains inputs and expected output via example. It could add edge cases but is sufficient.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. The example clearly explains parameter roles: '30 is 15% of 200' maps value=30, percent=15, output=200. This is effective.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'X is Y% of what?' with a concrete example (30 is 15% of 200). It is specific, uniquely identifying this tool among sibling math calculators.

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 (given a part and its percentage, find the whole) but provides no explicit guidance on when not to use or alternatives. It is adequate but lacks depth.

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

powerB
Read-onlyIdempotent

Raises a to the power of b.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseYes
exponentYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds no new behavioral context (e.g., handling of negative exponents or overflow). It is adequate but not enhanced beyond annotations.

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

Conciseness4/5

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

The description is a single, short sentence with no wasted words. It is concise but could be improved by aligning variable names with the schema for better readability.

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

Completeness3/5

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

For a simple two-parameter math tool with no output schema, the description is minimally complete. It states the operation but does not mention the return type or any edge cases, which would be helpful.

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. However, it uses 'a' and 'b' instead of the schema's 'base' and 'exponent', adding confusion rather than clarity. It does not explain the meaning of the parameters beyond the operation.

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

Purpose4/5

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

The description clearly states the operation ('raises a to the power of b'), which distinguishes it from sibling tools like add or multiply. However, it uses vague variable names 'a' and 'b' instead of the schema's 'base' and 'exponent', slightly reducing clarity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like multiply or logarithm. There is no context on typical use cases or exclusions.

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

rangeB
Read-onlyIdempotent

Range (max - min) of numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
numbersYes

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already provide readOnlyHint, destructiveHint, and idempotentHint. The description adds no behavioral context beyond stating the calculation. No mention of edge cases or constraints.

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

Conciseness4/5

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

The description is extremely concise at 6 words, with no wasted text. However, it is slightly under-specified, risking ambiguity.

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

Completeness3/5

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

For a simple tool with one parameter and no output schema, the description covers the basic purpose. Missing details about edge cases (e.g., empty array) but acceptable for minimal complexity.

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?

With 0% schema description coverage, the description must compensate. It only restates 'numbers' without clarifying format, validation, or behavior for empty arrays. Insufficient for a bare schema.

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

Purpose5/5

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

The description 'Range (max - min) of numbers' clearly states the verb (compute range) and resource (numbers), and it naturally distinguishes from siblings like max, min, and avg.

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

Usage Guidelines3/5

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

The description provides no explicit guidance on when to use this tool vs alternatives like max or min. Usage is implied but lacks clear context or exclusions.

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

set_angle_modeA
Idempotent

Set global trig angle mode. Individual calls with unit param override this.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate idempotentHint, non-destructive, and not read-only. The description adds that the mode is global and that individual calls can override, which provides behavioral context beyond annotations. It doesn't detail side effects on existing results, but the idempotentHint mitigates that need.

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 one sentence with an additional clarifying sentence about overrides. Every word adds value, no wasted text. It is front-loaded with the main purpose.

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

Completeness4/5

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

For a simple setter tool with one enum parameter, no output schema, and adequate annotations, the description provides enough context: global scope, set action, and override behavior. It could mention return value (likely nothing) but overall is sufficient.

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 input schema has 0% description coverage, but the parameter 'mode' is self-explanatory with clear enum values (degrees, radians). The description does not explicitly describe the parameter or its allowed values, relying on the schema. For such a simple parameter, this is adequate, but the description could add value by stating 'mode must be degrees or radians'.

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

Purpose5/5

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

The description clearly states the tool sets the global trig angle mode, using the verb 'set' and specific resource 'global trig angle mode'. It distinguishes from siblings like get_angle_mode by indicating it's a setter, and notes that individual calls with unit parameters override this global setting.

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 implies usage context: setting a global default that can be overridden by individual calls. However, it does not explicitly state when to use this tool versus alternatives (e.g., not needed if only one calculation with a specific unit), nor does it provide explicit when-not-to-use guidance.

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

sineA
Read-onlyIdempotent

Sine. Angle in degrees by default, or radians with unit: "radians".

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNo
angleYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnly, destructive, and idempotent hints. The description adds specific behavioral detail about unit handling, which is useful beyond annotations.

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

Conciseness5/5

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

One sentence, front-loaded with purpose, no wasted words. Every part 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 sine function with only two parameters, the description fully covers behavior. No output schema is needed since sine returns a number.

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

Parameters4/5

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

Schema coverage is 0%, so description must compensate. It explains the 'angle' parameter's default unit and how to use the 'unit' parameter, adding meaning beyond the schema.

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

Purpose5/5

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

The description starts with 'Sine.', explicitly naming the operation, and clarifies the unit behavior (default degrees, option for radians). This distinguishes it from sibling trigonometric functions like cosine, tangent, etc.

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?

It clearly states the default unit and how to switch to radians. While it doesn't explicitly list when-not-to-use or alternatives, the context is straightforward for a basic math function.

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

sqrtA
Read-onlyIdempotent

Square root. Errors on negative input.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint, destructiveHint, and idempotentHint. The description adds important behavioral information: the tool errors on negative input. This goes beyond the annotations, though additional details (e.g., error type or return value) are missing.

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 consists of two short sentences with no unnecessary words. It is appropriately sized for a simple tool, front-loading the core action ('Square root') and then adding a key constraint. Every word earns its place.

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

Completeness3/5

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

Given the low complexity and absence of an output schema, the description lacks details about return values (e.g., type or range) and does not specify what 'errors' means (e.g., exception, NaN). While the tool is simple, more context would be helpful for an agent to fully understand its behavior.

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?

The input schema only defines a 'value' parameter with type number, and the description does not add any meaning beyond what is already evident. It implicitly associates 'value' with the number to take the square root of, but given zero schema description coverage, the description fails to compensate with explicit parameter explanations.

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

Purpose5/5

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

The description clearly states the tool computes square root, which is a specific mathematical operation. It also mentions the constraint about negative input, further clarifying its behavior. Among sibling math functions like sine, cosine, and power, this tool's purpose is distinct and immediately understood.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like 'power' or 'logarithm'. The description does not mention scenarios where square root is appropriate or when to avoid it. For a basic math tool, usage may seem obvious, but the rubric expects explicit direction.

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

std_devA
Read-onlyIdempotent

Sample standard deviation (n-1). Set population: true for population (n).

ParametersJSON Schema
NameRequiredDescriptionDefault
numbersYes
populationNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare read-only and idempotent; description adds the specific calculation details (n-1 vs n), which is transparent beyond annotations.

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

Conciseness5/5

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

Two sentences, no wasted words, front-loaded with purpose. Highly concise and clear.

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

Completeness4/5

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

Given no output schema, description omits return type but for a math function it is implicitly a number. Adequate for the context.

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

Parameters3/5

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

With 0% schema coverage, description explains the population parameter but does not describe the numbers parameter beyond implication. Adds partial meaning.

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

Purpose5/5

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

Description explicitly states 'Sample standard deviation (n-1)' and mentions population variant, clearly identifying the tool's purpose and distinguishing it from siblings like variance.

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?

Provides guidance on when to use sample vs population via the population parameter, but does not explicitly compare to sibling tools like variance or avg.

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

subtractC
Read-onlyIdempotent

Subtracts two numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds no further behavioral details beyond 'subtracts', which is consistent but not enriching.

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

Conciseness3/5

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

The description is extremely concise (one sentence), but omits critical information about parameter order, making it less useful despite its brevity.

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

Completeness3/5

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

For a simple arithmetic tool with no output schema and well-defined inputs, the description is nearly sufficient, but the missing order detail is a notable gap.

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?

The input schema has 0% description coverage, and the description only says 'subtracts two numbers', failing to clarify which parameter is the minuend and which is the subtrahend, leaving ambiguity.

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 the action (subtract) and resource (two numbers), but does not specify the order of subtraction, which is non-commutative. This is a minor ambiguity.

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 provided on when to use this tool versus siblings like add, multiply, etc. There is no mention of context, prerequisites, or alternatives.

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

sumB
Read-onlyIdempotent

Sum of numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
numbersYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds no further behavioral context beyond the basic 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?

Very concise (3 words), front-loaded. While brief, it is appropriate for a simple operation.

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

Completeness3/5

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

Given the simplicity of the tool (one parameter, no output schema), the description is minimally adequate but does not explain return value or potential edge cases.

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 has 0% description coverage; description only says 'Sum of numbers', which minimally clarifies the parameter purpose but lacks detail.

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

Purpose4/5

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

Description clearly states it calculates the sum of numbers, distinguishing it from sibling operations like multiply or subtract.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like 'add' or 'avg'. Context is implied but not explicit.

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

tangentB
Read-onlyIdempotent

Tangent. Angle in degrees by default, or radians with unit: "radians".

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNo
angleYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already indicate idempotent, read-only behavior. The description adds that the angle is in degrees by default and can be switched to radians, which is useful but does not disclose error handling or output format.

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

Conciseness3/5

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

The description is very short but contains the redundant 'Tangent.' fragment. It could be more efficiently written as a single sentence, e.g., 'Computes the tangent of an angle in degrees by default, or radians if unit is specified.'

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

Completeness3/5

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

For a simple math function, the description covers input semantics but omits the return value (tangent of the angle). With no output schema, mentioning the return type would improve completeness.

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 lacks parameter descriptions (0% coverage), but the description explains that 'angle' is numeric and defaults to degrees, and 'unit' accepts 'radians'. This adds meaning beyond the raw schema.

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

Purpose4/5

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

The description states 'Tangent' which essentially restates the tool name, but it immediately explains the input unit behavior. This makes the purpose clear despite the tautological first sentence.

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 provided on when to use this tool versus siblings like sine or cosine. There is no mention of prerequisites or context for alternative trigonometric functions.

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

varianceA
Read-onlyIdempotent

Sample variance (n-1). Set population: true for population variance (n).

ParametersJSON Schema
NameRequiredDescriptionDefault
numbersYes
populationNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate read-only, idempotent behavior. The description adds that the calculation can be sample or population variance. However, it does not disclose edge cases (e.g., empty arrays) or the exact formula, which is beyond annotations' scope.

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 two sentences, directly stating the purpose and the key parameter toggle. No extraneous information; it is front-loaded and efficient.

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 and no output schema, the description covers the main functionality. It lacks explicit mention of return type, but for a calculation tool, the return is a number. The context is mostly complete.

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 description explains the 'population' parameter meaning. The 'numbers' parameter is implied but not explicitly defined. With 0% schema coverage, the description partially compensates but leaves room for ambiguity on the array structure.

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

Purpose5/5

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

The description clearly states the tool computes variance, differentiating between sample variance (n-1) and population variance (n) via the population parameter. It uses the verb 'variance' implicitly, and identifies the resource as a set of numbers. Among sibling tools like std_dev and avg, this is distinct.

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 explains when to use sample vs. population variance, guiding the agent on setting the population boolean. It does not explicitly mention alternatives like std_dev or when not to use, but the guidance is clear for its primary use case.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 34 tool updatesv1.2.29
    • First observedabsolute
    • First observedacos
    • First observedadd
    • First observedasin
    • First observedatan
    • First observedavg
    • First observedconvert_unit
    • First observedcosine
    • First observedcount
    • First observeddivide
    • First observedevaluate_expression
    • First observedfactorial
    • First observedget_angle_mode
    • First observedget_constant
    • First observedlogarithm
    • First observedmax
    • First observedmedian
    • First observedmin
    • First observedmodulo
    • First observedmultiply
    • First observednatural_log
    • First observedpercentage_change
    • First observedpercentage_of
    • First observedpercentage_reverse
    • First observedpower
    • First observedrange
    • First observedset_angle_mode
    • First observedsine
    • First observedsqrt
    • First observedstd_dev
    • First observedsubtract
    • First observedsum
    • First observedtangent
    • First observedvariance

TDQS

B3.1/5.0
Disambiguation1/5

Many tools are redundant due to the evaluate_expression tool, which can perform most operations. For example, add, subtract, sine, logarithm, etc., are all covered by evaluate_expression, making it hard for an agent to choose the right tool.

Naming Consistency5/5

All tool names follow a consistent pattern of lowercase words with underscores for multi-word names (e.g., convert_unit, evaluate_expression). Single-word names like 'add' and 'cosine' are also consistent.

Tool Count2/5

34 tools is excessive for a math server, especially since many are duplicated by evaluate_expression. The server could be reduced to around 10-15 core tools without loss of functionality.

Completeness4/5

The tool surface covers basic arithmetic, trigonometry, logarithms, statistics, percentages, unit conversion, and constants. Minor gaps like hyperbolic functions exist, but overall it's comprehensive for general math operations.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    C
    maintenance
    A comprehensive learning project providing hands-on experience with Model Context Protocol (MCP) server development, featuring calculator and text utility tools for integration with Claude Desktop.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    sci_calc_mcp is a lightweight, high-performance Model Context Protocol (MCP) server that exposes scientific calculator operations as atomic tools.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    An MCP server that integrates the MathJS library to provide AI models with advanced calculation capabilities, including support for complex numbers, matrices, and unit conversions. It supports both stdio and HTTP transports for seamless integration with clients like Claude Desktop and GitHub Copilot.
    1
    40
    MIT
  • 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
    13
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/islobodan/cruncher-mcp'

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