Skip to main content
Glama
phuihock

TA-Lib MCP Server

by phuihock

TA-Lib MCP Server

Technical analysis indicators MCP server and HTTP API for the Model Context Protocol.

Quick Start

# Install dependencies
uv sync --dev

# Copy logging configuration
cp logging.conf.example logging.conf

# Run MCP server with STDIO transport (default)
uv run python -m mcp_talib.cli --mode mcp --transport stdio

# Run MCP server with HTTP transport
uv run python -m mcp_talib.cli --mode mcp --transport http --port 8000

# Run HTTP API server only
uv run python -m mcp_talib.cli --mode api --port 8001

# Run CLI tools directly
uv run python -m mcp_talib.cli_tools list
uv run python -m mcp_talib.cli_tools call sma --close '[1,2,3,4,5]' --timeperiod 3

Related MCP server: trading-mcp

Architecture

This project provides three independent access methods:

1. MCP Server (--mode mcp)

  • Pure MCP protocol implementation exposing all TA-Lib indicators as MCP tools

  • Supports both STDIO and HTTP transports

  • For use with MCP clients (Claude Desktop, MCP Inspector, MCP.js, etc.)

  • No REST endpoints

Run with STDIO (for Claude Desktop):

uv run python -m mcp_talib.cli --mode mcp --transport stdio

Run with HTTP (for MCP Inspector or web clients):

uv run python -m mcp_talib.cli --mode mcp --transport http --port 8000
# Then connect MCP Inspector to http://localhost:8000/mcp

2. HTTP API Server (--mode api)

  • Pure REST API with /api/tools/* JSON endpoints

  • For programmatic HTTP access to indicators

  • No MCP protocol, just clean REST

Run HTTP API:

uv run python -m mcp_talib.cli --mode api --port 8001

Example request:

curl -X POST http://localhost:8001/api/tools/sma \
  -H 'Content-Type: application/json' \
  -d '{"close": [1,2,3,4,5], "timeperiod": 3}'

3. CLI Tools

Direct command-line access to all indicators via Typer:

uv run python -m mcp_talib.cli_tools list
uv run python -m mcp_talib.cli_tools call sma --close '[1,2,3,4,5]' --timeperiod 3

Features

  • All TA-Lib Overlap Studies: BBANDS, DEMA, EMA, HT_TRENDLINE, KAMA, MA, MAMA, MAVP, MIDPOINT, MIDPRICE, SAR, SAREXT, SMA, T3, TEMA, TRIMA, WMA

  • Three Access Methods: MCP, HTTP REST, CLI

  • Dual Transport: STDIO and HTTP for MCP

  • Cross-platform: Works on Linux, macOS, Windows

  • Comprehensive Testing: 26+ unit and integration tests

  • Error Handling: Detailed error messages and validation

Logging Configuration

The server requires a logging.conf file for configuration. Copy the example:

cp logging.conf.example logging.conf

Customize logging levels, format, and output file in logging.conf. The server logs to console.log to maintain MCP protocol compliance.

Client Configuration

Claude Desktop Integration

  1. Create a configuration file at ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or appropriate location for your OS.

  2. Add the MCP server configuration:

{
  "mcpServers": {
    "talib": {
      "command": "uv",
      "args": [
        "run",
        "python",
        "-m",
        "mcp_talib.cli",
        "--mode",
        "mcp",
        "--transport",
        "stdio"
      ],
      "cwd": "/path/to/mcp-talib"
    }
  }
}
  1. Restart Claude Desktop to load the TA-Lib server.

  2. Verify installation by asking Claude: "What technical analysis tools do you have?"

MCP Inspector (HTTP)

For HTTP transport, configure MCP Inspector to connect to:

http://localhost:8000/mcp

Run the MCP server with HTTP:

uv run python -m mcp_talib.cli --mode mcp --transport http --port 8000

Important: The HTTP transport includes CORS middleware to support browser-based MCP clients like MCP Inspector. If you're behind a reverse proxy or need to restrict access, update the allow_origins setting in transport/http.py.

MCP.js Client Example

import { MCPServerClient } from '@modelcontextprotocol/client';

const client = new MCPServerClient({
  name: 'talib',
  command: 'uv',
  args: ['run', 'python', '-m', 'mcp_talib.cli', '--mode', 'mcp', '--transport', 'stdio'],
  cwd: process.cwd()
});

// List available tools
const tools = await client.listTools();
console.log('Available tools:', tools.map(t => t.name));

// Calculate SMA
const smaResult = await client.callTool('calculate_sma', {
  close_prices: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
  timeperiod: 5
});
console.log('SMA result:', smaResult);

HTTP API Client (Python)

import requests

# List available tools
response = requests.get('http://localhost:8001/api/tools')
tools = response.json()['tools']
print('Available tools:', tools)

# Calculate SMA
payload = {
    'close': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    'timeperiod': 5
}
response = requests.post('http://localhost:8001/api/tools/sma', json=payload)
result = response.json()
print('SMA result:', result['values'])

Available Tools

The server provides MCP tools and HTTP endpoints for all TA-Lib overlap studies:

  • calculate_sma - Simple Moving Average

  • calculate_ema - Exponential Moving Average

  • calculate_rsi - Relative Strength Index

  • calculate_bbands - Bollinger Bands

  • calculate_dema - Double Exponential Moving Average

  • calculate_ht_trendline - Hilbert Transform Trendline

  • calculate_kama - Kaufman Adaptive Moving Average

  • calculate_ma - Moving Average (with matype)

  • calculate_mama - MESA Adaptive Moving Average

  • calculate_mavp - Moving Average Variable Period

  • calculate_midpoint - Midpoint

  • calculate_midprice - Midpoint Price

  • calculate_sar - Parabolic SAR

  • calculate_sarext - Parabolic SAR Extended

  • calculate_t3 - T3 Moving Average

  • calculate_tema - Triple Exponential Moving Average

  • calculate_trima - Triangular Moving Average

  • calculate_wma - Weighted Moving Average

Development

# Run all tests
uv run pytest

# Run specific test file
uv run pytest tests/unit/test_sma.py -v

# Run with coverage
uv run pytest --cov=src/mcp_talib

# Format code
uv run black src/ tests/
uv run isort src/ tests/

# Lint code
uv run ruff check src/ tests/

TA-Lib Platform Requirements

This project uses the ta-lib Python bindings which require the native TA-Lib C library. On CI or developer machines, you must install the system TA-Lib library before installing Python dependencies.

Links and notes:

Example (Ubuntu) CI steps:

# Install build dependencies
sudo apt-get update && sudo apt-get install -y build-essential wget

# Download and build TA-Lib C library
wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar -xzf ta-lib-0.4.0-src.tar.gz
cd ta-lib
./configure --prefix=/usr
make
sudo make install

# Then install Python package
pip install TA-Lib

If you prefer not to build the C library, use pre-built wheels where available or run tests in an environment that provides TA-Lib (e.g., manylinux CI images).

HTTP API & CLI

This project exposes the same MCP tools as both HTTP JSON endpoints and a Typed CLI (Typer).

HTTP Endpoint

POST /api/tools/{tool_name}

Request JSON: { "close": [..], ...params } (e.g., timeperiod)

Response JSON: { "success": true, "values": [...], "metadata": {...} }

Example:

curl -X POST http://localhost:8000/api/tools/sma \
  -H 'Content-Type: application/json' \
  -d '{"close": [1,2,3,4,5], "timeperiod": 3}'

MCP Endpoint

The MCP endpoint remains at /mcp for MCP clients (MCP Inspector, MCP.js, etc.). The HTTP API mounts the MCP app so both APIs coexist.

CLI (Typer)

Access tools from the command line via src/mcp_talib/cli_tools.py:

List available tools:

uv run python -m mcp_talib.cli_tools list

Call a tool:

uv run python -m mcp_talib.cli_tools call sma --close '[1,2,3,4,5]' --timeperiod 3

Implementation Notes

  • Requests are validated using Pydantic

  • The underlying indicator implementations are the single source of truth (registered in the MCP registry)

  • HTTP API and CLI call the same code so results match exactly

  • For browser clients, CORS is enabled and mcp-session-id is exposed in responses

License

MIT

Available Tools

18 tools
calculate_bbandsD

Calculate Bollinger Bands (BBANDS).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.7/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states what the tool calculates without mentioning any behavioral traits such as input requirements, computational characteristics, error handling, or output format. For a calculation tool with no annotation coverage, this represents a significant gap in 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 with just one sentence containing no wasted words. It's front-loaded with the core functionality. While this conciseness comes at the expense of completeness, the structure itself is efficient and direct without unnecessary elaboration.

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 the tool's complexity (technical indicator calculation with 1 parameter), the complete lack of schema description coverage (0%), no annotations, and the presence of an output schema, the description is inadequate. While the output schema may document return values, the description doesn't provide enough context about what the tool does, how to use it properly, or what the parameter represents. It should do more to compensate for the missing structured information.

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?

The input schema has 1 parameter (kwargs) with 0% schema description coverage, meaning the parameter is completely undocumented in the schema. The description provides no information about what 'kwargs' should contain, what format it expects, or what values are appropriate for calculating Bollinger Bands. The description fails to compensate for the complete lack of schema documentation.

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

Purpose2/5

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

The description 'Calculate Bollinger Bands (BBANDS)' is a tautology that essentially restates the tool name with minimal elaboration. While it identifies the specific technical indicator (Bollinger Bands), it doesn't specify what resources or data it operates on, nor does it distinguish this from sibling tools that also calculate various technical indicators. The purpose is vague beyond the name itself.

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

Usage Guidelines1/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. With multiple sibling tools for calculating different technical indicators (e.g., calculate_rsi, calculate_sma), there's no indication of when Bollinger Bands are appropriate, what context they're used in, or any prerequisites. This leaves the agent without necessary decision-making information.

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

calculate_demaC

Calculate Double Exponential Moving Average (DEMA).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior1/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. The description only states what the tool calculates, with no information about computational behavior, performance characteristics, error handling, input validation, or output format. This leaves critical behavioral aspects undocumented.

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 just one sentence. While this brevity comes at the cost of completeness, every word earns its place by identifying the specific calculation being performed without any unnecessary elaboration.

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 the complexity of financial calculations and the complete lack of parameter documentation, the description is inadequate. While an output schema exists, the description doesn't explain what DEMA is, how it differs from other indicators, what inputs are required, or what the calculation entails. This leaves too many gaps for effective tool selection and use.

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?

The input schema has 1 parameter ('kwargs') with 0% description coverage. The description provides no information about what 'kwargs' should contain, what data format is expected, or what specific arguments are needed to calculate DEMA. This leaves the single required parameter completely undocumented.

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

Purpose3/5

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

The description states the tool calculates Double Exponential Moving Average (DEMA), which is a specific technical indicator. However, it doesn't differentiate from sibling tools like 'calculate_ema' or 'calculate_tema' that also calculate exponential moving averages, nor does it explain what DEMA is or its unique characteristics compared to other moving averages.

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. With many sibling tools for technical indicators (e.g., calculate_ema, calculate_sma, calculate_rsi), there's no indication of when DEMA is preferred over other moving averages or indicators, nor any context about typical use cases in financial analysis.

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

calculate_emaC

Calculate Exponential Moving Average (EMA).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior1/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. 'Calculate' implies a read-only computation, but the description doesn't specify whether this requires data inputs, what format the output takes, potential errors, or computational characteristics. It lacks any context about what gets calculated, data sources, or performance considerations.

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 sentence with no wasted words. It's front-loaded with the core purpose. However, this conciseness comes at the cost of completeness, as noted in other dimensions.

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 the complexity (technical indicator calculation with 1 undocumented parameter) and the presence of an output schema (which might help with return values), the description is incomplete. It doesn't address the undocumented parameter, lacks behavioral context, and doesn't differentiate from many siblings. While the output schema might cover return values, the description doesn't provide enough context for effective tool selection and use.

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?

The input schema has 1 parameter (kwargs) with 0% schema description coverage, meaning the schema provides no documentation. The description adds no parameter information beyond the tool name—it doesn't explain what 'kwargs' should contain (e.g., price data, period length), expected format, or examples. This fails to compensate for the complete lack of schema documentation.

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

Purpose3/5

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

The description 'Calculate Exponential Moving Average (EMA)' clearly states the mathematical operation (calculate) and specific technical indicator (EMA), which is a specific verb+resource. However, it doesn't distinguish this tool from its many sibling technical indicator calculation tools (like calculate_sma, calculate_wma, calculate_rsi, etc.), leaving the agent to guess when EMA is specifically needed versus other moving averages or indicators.

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. With 17 sibling tools for various technical indicators, there's no mention of EMA's specific use cases (e.g., trend-following, smoothing price data), when to prefer it over other moving averages (like SMA or DEMA), or any prerequisites. The agent must infer usage from the tool name alone.

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

calculate_ht_trendlineD

Calculate Hilbert Transform Trendline.

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.7/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but offers none. It does not indicate whether this is a read-only or destructive operation, what permissions or inputs are required, or any rate limits or side effects, making it inadequate for a tool with computational complexity.

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, efficient sentence with no wasted words, making it appropriately concise. However, this brevity contributes to under-specification rather than clarity, but it meets the criteria for conciseness.

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 the complexity of financial calculations, no annotations, 0% schema coverage, and one undocumented parameter, the description is severely incomplete. While an output schema exists, the description lacks essential details on purpose, usage, behavior, and parameters, making it inadequate for effective tool selection and invocation.

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 provides no parameter information. The single parameter 'kwargs' is undocumented in both schema and description, leaving its meaning, format, or required inputs completely unspecified, failing to compensate for the coverage gap.

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

Purpose2/5

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

The description 'Calculate Hilbert Transform Trendline' restates the tool name with minimal elaboration, making it a tautology. It specifies the verb 'Calculate' and resource 'Hilbert Transform Trendline', but lacks detail on what this calculation entails or its practical application, failing to distinguish it from sibling tools like 'calculate_rsi' or 'calculate_sma' beyond the technical term.

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

Usage Guidelines1/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 does not mention context, prerequisites, or comparisons to sibling tools (e.g., 'calculate_ema' for exponential moving averages), leaving the agent with no usage instructions.

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

calculate_kamaC

Calculate Kaufman Adaptive Moving Average (KAMA).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states what the tool calculates without mentioning any behavioral traits such as computational requirements, error handling, rate limits, or output format. This leaves the agent with no information about how the tool behaves beyond its basic function.

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 a single sentence that directly states the tool's function. There is no wasted language or unnecessary elaboration, making it front-loaded and efficient for quick understanding.

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 the complexity of a technical indicator calculation with 1 undocumented parameter and no annotations, the description is incomplete. While an output schema exists (which might cover return values), the description doesn't address parameter usage or behavioral context, leaving significant gaps for the agent to understand how to invoke the tool correctly.

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

Parameters1/5

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

The input schema has 1 parameter (kwargs) with 0% description coverage, meaning the schema provides no documentation. The description adds no information about parameters, not explaining what kwargs should contain (e.g., price data, period settings) or how to format them. This fails to compensate for the lack of schema documentation.

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

Purpose3/5

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

The description states the tool calculates the Kaufman Adaptive Moving Average (KAMA), which is a specific technical indicator. However, it doesn't distinguish this from sibling tools like calculate_ema or calculate_sma, which also calculate moving averages. The purpose is clear but lacks differentiation from similar tools in the same family.

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 calculate_ema or calculate_sma. The description doesn't mention any specific contexts, prerequisites, or exclusions for using KAMA over other moving average calculations available in the sibling tools.

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

calculate_maD

Calculate Moving Average (MA).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.6/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description reveals nothing about what the tool actually does beyond the name - no information about input format, output format, computational behavior, error conditions, or performance characteristics. For a calculation tool with no annotation coverage, this represents a complete failure to provide behavioral context.

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

Conciseness3/5

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

The description is extremely concise - just four words. However, this brevity comes at the cost of being severely under-specified rather than efficiently informative. While it's technically front-loaded (the entire description is the purpose), it lacks the necessary detail to be genuinely helpful. The single sentence structure is simple but inadequate for the tool's complexity.

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 the tool's computational nature, lack of annotations, 0% schema coverage, and presence of an output schema (which the description doesn't reference), the description is woefully incomplete. While the output schema might document return values, the description fails to explain what the tool calculates, how to use it, or when to choose it over alternatives. For a tool with one parameter but zero documentation about that parameter, this represents significant gaps.

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?

The input schema has 0% description coverage, with a single undocumented 'kwargs' parameter of type string. The description provides no information about what parameters are expected, their format, or what 'kwargs' should contain. With schema coverage at 0%, the description fails completely to compensate by explaining the single parameter's purpose, format, or expected content.

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

Purpose2/5

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

The description 'Calculate Moving Average (MA)' is a tautology that essentially restates the tool name 'calculate_ma'. While it identifies the verb 'calculate' and resource 'Moving Average', it doesn't specify what type of moving average (simple, exponential, etc.) or distinguish it from sibling tools like calculate_sma, calculate_ema, calculate_wma, etc. This provides minimal differentiation from similar tools in 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 Guidelines1/5

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

The description provides absolutely no guidance about when to use this tool versus alternatives. With numerous sibling tools for various technical indicators (RSI, Bollinger Bands, SAR, and multiple moving average variants), the agent receives no indication of when calculate_ma is appropriate versus calculate_sma, calculate_ema, or other moving average calculations. There's no mention of use cases, prerequisites, or alternatives.

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

calculate_mamaC

Calculate MESA Adaptive Moving Average (MAMA).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states what the tool does ('calculate MAMA') without explaining how it behaves—e.g., whether it's a read-only calculation, what inputs it expects beyond 'kwargs', error handling, or output format. This leaves significant gaps for a tool with one required parameter.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly. Every word earns its place by conveying the core functionality.

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 the complexity (a financial indicator calculation with one parameter), no annotations, low schema coverage (0%), and an output schema (which helps but isn't described), the description is incomplete. It doesn't cover parameter semantics, behavioral traits, or usage context, leaving too many gaps for effective tool selection and invocation.

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?

The input schema has 1 parameter ('kwargs') with 0% description coverage, and the tool description provides no information about parameters. It doesn't explain what 'kwargs' should contain (e.g., price data, period settings) or its format. With low schema coverage and no compensation in the description, parameter understanding is severely lacking.

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

Purpose3/5

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

The description states the tool calculates MESA Adaptive Moving Average (MAMA), which is a specific verb ('calculate') and resource ('MAMA'). However, it doesn't differentiate from sibling tools like calculate_ema, calculate_sma, or calculate_kama, which all calculate different types of moving averages. The purpose is clear but lacks sibling differentiation.

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 calculate_ema or calculate_sma. It doesn't mention the specific use cases for MAMA (e.g., adaptive smoothing based on market cycles) or prerequisites. Without such context, users must infer usage from the tool name alone.

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

calculate_mavpD

Calculate Moving Average Variable Period (MAVP).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.7/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action 'calculate' without any details on input format, output structure, error handling, or computational characteristics (e.g., period variability). This is inadequate for a tool with one required parameter and an output schema, as it fails to describe how the tool behaves or what users should expect.

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 one sentence, 'Calculate Moving Average Variable Period (MAVP).', which is front-loaded and wastes no words. While under-specified, it is not verbose or poorly structured, earning full marks for brevity and clarity within its limited scope.

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 the complexity of financial calculations, one parameter with 0% schema coverage, no annotations, and multiple sibling tools, the description is severely incomplete. It doesn't explain MAVP's purpose, parameter usage, or behavioral traits, and while an output schema exists, the description provides no context to aid the agent in correct invocation. This is inadequate for effective tool selection and use.

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?

The input schema has 0% description coverage, with one required parameter 'kwargs' of type string undocumented. The description adds no meaning beyond the schema, offering no explanation of what 'kwargs' should contain (e.g., data series, period parameters) or its format. For a single parameter with no schema documentation, the description fails to compensate, leaving the parameter semantics entirely unclear.

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

Purpose2/5

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

The description 'Calculate Moving Average Variable Period (MAVP)' restates the tool name with minimal expansion, making it a tautology. It specifies the verb 'calculate' and resource 'MAVP' but lacks differentiation from sibling tools like 'calculate_ma' or 'calculate_sma', which also compute moving averages. The purpose is vague as it doesn't explain what MAVP is or how it differs from other moving average calculations.

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

Usage Guidelines1/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. With 17 sibling tools for various technical indicators (e.g., 'calculate_ma', 'calculate_sma', 'calculate_ema'), the description offers no context, exclusions, or prerequisites. This leaves the agent with no basis for selecting MAVP over other moving average methods, making it misleading in practice.

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

calculate_midpointD

Calculate Midpoint (MIDPOINT).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.5/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but provides none. It doesn't indicate whether this is a read-only or mutating operation, what permissions might be required, whether it has side effects, rate limits, or what the output looks like. The description offers zero behavioral context beyond the basic action implied by 'calculate'.

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

Conciseness2/5

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

While technically concise (just 3 words), this description is under-specified rather than efficiently informative. The single sentence doesn't earn its place by providing meaningful information - it essentially repeats the tool name. Good conciseness balances brevity with utility, which this description fails to achieve.

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 the complexity implied by having 17 sibling calculation tools, the complete lack of annotations, 0% schema description coverage, and a single undocumented parameter, this description is woefully incomplete. While an output schema exists (which helps), the description doesn't provide enough context for an agent to understand when to use this tool, what it does, or how to invoke it correctly compared to alternatives.

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?

The input schema has 0% description coverage, and the tool description provides no information about the single required 'kwargs' parameter. The description doesn't explain what 'kwargs' should contain, what format it expects, what data the midpoint calculation requires, or provide any examples. With schema coverage at 0%, the description fails completely to compensate for the lack of parameter documentation.

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

Purpose2/5

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

The description 'Calculate Midpoint (MIDPOINT)' is essentially a tautology that restates the tool name with an acronym in parentheses. It doesn't specify what resource or data the midpoint calculation operates on, what 'midpoint' means in this context, or how it differs from the many sibling calculation tools (like calculate_midprice). The description provides minimal information beyond the tool name itself.

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

Usage Guidelines1/5

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

The description provides absolutely no guidance about when to use this tool versus the many sibling calculation tools (calculate_midprice, calculate_ma, calculate_ema, etc.). There's no indication of what problem this tool solves, what context it's appropriate for, or what alternatives might exist. The agent receives no usage guidance whatsoever.

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

calculate_midpriceD

Calculate Midpoint Price (MIDPRICE).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.7/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states the calculation action without any information about required inputs, output format, error conditions, performance characteristics, or side effects. For a calculation tool with no annotation coverage, this is a significant gap in 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 with a single sentence that directly states the tool's function. There's no wasted language or unnecessary elaboration, making it efficiently front-loaded. However, this conciseness comes at the cost of completeness.

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 the complexity of a financial calculation tool with 1 undocumented parameter, no annotations, and multiple similar sibling tools, the description is completely inadequate. While an output schema exists (which might help with return values), the description doesn't explain what the tool actually does beyond its name, how to use it, or when to choose it over alternatives. This leaves critical gaps for agent understanding.

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?

The input schema has 1 parameter ('kwargs') with 0% schema description coverage, meaning the parameter is completely undocumented in the schema. The description provides no information about what 'kwargs' should contain, what format it should be in, or what specific arguments are needed for the MIDPRICE calculation. The description fails to compensate for the complete lack of schema documentation.

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

Purpose2/5

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

The description 'Calculate Midpoint Price (MIDPRICE)' is essentially a tautology that restates the tool name with minimal expansion. While it clarifies that this calculates a 'midpoint price' (a financial indicator), it doesn't specify what inputs or data this calculation operates on (e.g., price series, time periods) or how it differs from the similar sibling tool 'calculate_midpoint'. The purpose is vague beyond the basic verb+resource.

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

Usage Guidelines1/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. With multiple sibling tools for technical indicators (e.g., calculate_midpoint, calculate_ma, calculate_rsi), there's no indication of what scenarios or data types warrant using 'calculate_midprice' specifically. This leaves the agent with no contextual clues for selection among similar tools.

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

calculate_rsiC

Calculate Relative Strength Index (RSI).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states what the tool does without any information about how it behaves—such as input format requirements, computational characteristics, error handling, or output structure. This leaves critical behavioral traits undocumented.

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 a single sentence that directly states the tool's function. There is no wasted language or unnecessary elaboration, making it front-loaded and efficient. However, this conciseness comes at the cost of completeness.

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 the complexity of financial calculations, one parameter with 0% schema coverage, no annotations, and the presence of an output schema, the description is incomplete. It does not explain what data the tool expects, how to format inputs, or what the output represents. The output schema existence reduces the need to describe return values, but other critical context is missing.

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?

The input schema has 0% description coverage with one required parameter 'kwargs' of type string. The description provides no information about what 'kwargs' should contain (e.g., price data, period length), its format, or examples. With low schema coverage, the description fails to compensate, leaving parameters completely unexplained.

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

Purpose3/5

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

The description states the tool calculates the Relative Strength Index (RSI), which is a specific financial technical indicator. However, it does not distinguish this tool from its many siblings (e.g., calculate_ema, calculate_sma) beyond naming the specific indicator. The purpose is clear but lacks differentiation from similar tools.

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. With 17 sibling tools for various technical calculations, there is no indication of when RSI is appropriate compared to other indicators like Bollinger Bands (calculate_bbands) or moving averages. No prerequisites or exclusions are mentioned.

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

calculate_sarD

Calculate Parabolic SAR.

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.7/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the calculation purpose without detailing how it behaves—e.g., input format, output structure, error handling, or computational characteristics. This leaves critical operational traits unspecified.

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 a single sentence, 'Calculate Parabolic SAR.', which is front-loaded and wastes no words. However, this brevity contributes to underspecification rather than effective communication.

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 the tool's complexity (financial indicator calculation), lack of annotations, 0% schema coverage, and one undocumented parameter, the description is insufficient. Although an output schema exists, the description fails to compensate for missing input and behavioral context, leaving significant gaps in understanding.

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?

The schema description coverage is 0%, and the description provides no information about the single parameter 'kwargs'. It doesn't explain what 'kwargs' should contain, its format, or examples. With no parameter details in either schema or description, the agent lacks essential semantic context for correct invocation.

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

Purpose2/5

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

The description 'Calculate Parabolic SAR' restates the tool name with minimal elaboration, making it a tautology. It specifies the calculation target but lacks a clear verb or context about what the tool actually does with this calculation (e.g., generate indicators, return values). Compared to siblings like 'calculate_rsi' or 'calculate_ema', it doesn't differentiate its purpose beyond the name.

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

Usage Guidelines1/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 doesn't mention any context, prerequisites, or exclusions. Given siblings like 'calculate_sarext' that might offer extended functionality, the absence of usage guidelines leaves the agent without direction on tool selection.

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

calculate_sarextD

Calculate Parabolic SAR Extended (SAREXT).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.7/5.0
Behavior1/5

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

With no annotations provided, the description carries full burden for behavioral disclosure but provides none. It doesn't indicate whether this is a read-only calculation or has side effects, what permissions might be needed, how results are returned, or any error conditions. The single sentence offers no behavioral context beyond the basic action.

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 maximally concise - a single sentence that states exactly what the tool does without any wasted words. While this conciseness comes at the expense of completeness, the structure is perfectly efficient with no redundant information.

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 the complexity of financial technical indicators, the complete lack of parameter documentation (0% schema coverage), and no annotations, the description is severely inadequate. While an output schema exists (which might help with understanding returns), the description provides no context about what SAREXT is, when to use it, or how to properly configure it through parameters. For a specialized calculation tool among many alternatives, this leaves critical gaps.

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?

The schema has 0% description coverage for its single required parameter 'kwargs', and the tool description provides no information about what this parameter should contain. Without any guidance on expected format, structure, or content of the kwargs string, an agent cannot understand how to properly invoke this tool. The description fails to compensate for the complete lack of schema documentation.

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

Purpose2/5

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

The description 'Calculate Parabolic SAR Extended (SAREXT)' is essentially a tautology that restates the tool name with minimal elaboration. It specifies the verb 'calculate' and the technical indicator 'Parabolic SAR Extended', but doesn't explain what this calculation does or its purpose in financial analysis. While it distinguishes from siblings by naming a specific indicator, it lacks meaningful context about what SAREXT represents.

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

Usage Guidelines1/5

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

The description provides absolutely no guidance on when to use this tool versus its many siblings (like calculate_sar, calculate_rsi, etc.). There's no mention of appropriate contexts, alternative tools, or prerequisites. An agent would have no basis for choosing this specific technical indicator calculation over others in the server.

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

calculate_smaC

Calculate Simple Moving Average (SMA).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states what the tool does ('Calculate Simple Moving Average') without any information on how it behaves—such as input format, output structure, error handling, or computational characteristics. This leaves critical behavioral traits unspecified.

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 sentence—and front-loaded with the core action. There is no wasted text, making it efficient to parse, though this brevity contributes to gaps in other dimensions.

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 the complexity (a calculation tool with many siblings), lack of annotations, and low schema coverage (0%), the description is incomplete. While an output schema exists, the description does not compensate for missing context on usage, parameters, or behavior, making it insufficient for reliable tool selection and invocation.

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?

The input schema has 1 parameter ('kwargs') with 0% description coverage, meaning the schema provides no details about its purpose or format. The description adds no parameter semantics beyond the tool's name, failing to explain what 'kwargs' should contain (e.g., data series, window size) or how to structure it, which is essential for correct invocation.

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

Purpose3/5

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

The description 'Calculate Simple Moving Average (SMA)' clearly states the verb ('Calculate') and resource ('Simple Moving Average'), making the purpose understandable. However, it does not differentiate this tool from its many siblings (e.g., calculate_ema, calculate_wma) that also calculate moving averages, leaving the specific distinction unclear.

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. With 17 sibling tools listed, including many for different types of moving averages (e.g., EMA, DEMA, WMA), the lack of any context or comparison makes it difficult for an agent to choose appropriately without external knowledge.

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

calculate_t3D

Calculate T3 Moving Average.

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.7/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the calculation action without detailing inputs, outputs, error conditions, performance characteristics, or any side effects. For a tool with one required parameter and an output schema, this lack of information is inadequate, failing to inform the agent about how the tool behaves or what to expect from its execution.

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 a single sentence, 'Calculate T3 Moving Average.', which is front-loaded and wastes no words. While this brevity contributes to clarity in structure, it comes at the cost of completeness, as noted in other dimensions. Every word serves a purpose, even if the overall content is insufficient.

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 the complexity of financial calculations and the presence of an output schema, the description is incomplete. It lacks essential details such as parameter explanations, usage context, and behavioral traits, despite the output schema potentially covering return values. With no annotations and low schema coverage, the description fails to provide enough information for effective tool use, especially in a server with many similar tools.

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?

The schema description coverage is 0%, and the description does not compensate by explaining the 'kwargs' parameter. It provides no information on what 'kwargs' should contain, its format, or examples of valid inputs. With one required parameter that is entirely undocumented, the agent cannot infer how to invoke the tool correctly, making this a critical gap in parameter semantics.

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

Purpose2/5

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

The description 'Calculate T3 Moving Average' restates the tool name 'calculate_t3' with minimal elaboration, making it tautological. While it identifies the operation (calculate) and the specific technical indicator (T3 Moving Average), it lacks differentiation from sibling tools like 'calculate_sma' or 'calculate_ema', which perform similar calculations for other moving averages. This provides a basic purpose but fails to specify what makes T3 unique or its typical use cases.

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

Usage Guidelines1/5

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

The description offers no guidance on when to use this tool versus alternatives. With multiple sibling tools for calculating different types of moving averages (e.g., SMA, EMA, DEMA, TEMA), there is no indication of T3's specific applications, advantages, or scenarios where it might be preferred over others. This absence of context leaves the agent without direction for tool selection among similar options.

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

calculate_temaC

Calculate Triple Exponential Moving Average (TEMA).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states what the tool calculates without mentioning how it behaves—e.g., whether it requires specific data formats, handles errors, or has performance considerations. This leaves critical behavioral traits undocumented.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to parse quickly.

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 the complexity of a calculation tool with 1 undocumented parameter, no annotations, and many sibling alternatives, the description is incomplete. While an output schema exists (which might help with return values), the description lacks essential context such as parameter usage, behavioral traits, and differentiation from similar tools.

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?

The input schema has 1 parameter (kwargs) with 0% description coverage, meaning the schema provides no details about what kwargs should contain. The description adds no parameter information beyond the tool's name, failing to compensate for the low schema coverage. This leaves the parameter completely undocumented.

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

Purpose3/5

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

The description states the tool calculates Triple Exponential Moving Average (TEMA), which is a specific technical indicator. However, it doesn't distinguish this from sibling tools like calculate_dema, calculate_ema, or calculate_sma, all of which calculate different types of moving averages. The purpose is clear but lacks sibling differentiation.

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. With many sibling tools for different moving averages and indicators (e.g., calculate_ema, calculate_sma, calculate_rsi), the description offers no context on TEMA's specific use cases or when it might be preferred over other tools.

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

calculate_trimaC

Calculate Triangular Moving Average (TRIMA).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states what the tool does without any information about how it behaves - no details about input format, output format, error conditions, computational characteristics, or any other behavioral traits. This is inadequate for a tool with parameters.

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 sentence that states the tool's purpose. There's no wasted verbiage or unnecessary information. However, this conciseness comes at the cost of completeness.

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 that there's an output schema (which helps), but no annotations and 0% schema description coverage for the single parameter, the description is incomplete. For a calculation tool with a parameter, users need to know what input format is expected and what the output represents. The description doesn't provide this essential context.

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?

The input schema has 0% description coverage with one parameter 'kwargs' of type string. The description provides no information about what 'kwargs' should contain, what format it should be in, or what specific arguments are needed to calculate TRIMA. With no parameter information in either the schema or description, this is insufficient.

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

Purpose3/5

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

The description states the tool calculates a Triangular Moving Average (TRIMA), which is a specific verb+resource combination. However, it doesn't distinguish this from sibling tools like calculate_sma or calculate_ema, which also calculate moving averages. The purpose is clear but lacks differentiation from similar alternatives.

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. With multiple sibling tools for calculating different types of moving averages (TRIMA, SMA, EMA, DEMA, TEMA, WMA, etc.), there's no indication of what makes TRIMA unique or when it's preferred over other moving average calculations.

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

calculate_wmaC

Calculate Weighted Moving Average (WMA).

ParametersJSON Schema
NameRequiredDescriptionDefault
kwargsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states what the tool does (calculates WMA) without any information about computational behavior, error handling, performance characteristics, or output format. For a calculation tool with no annotation coverage, this is insufficient.

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 just 5 words. While this brevity comes at the cost of completeness, every word earns its place by stating the core function. There's no wasted language or unnecessary elaboration.

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 mathematical nature and the presence of an output schema (which presumably handles return values), the description covers the basic purpose. However, with no annotations, 0% parameter documentation, and multiple similar sibling tools, the description leaves significant gaps in understanding when and how to use this tool effectively.

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 with a single 'kwargs' parameter of type string. The description adds no parameter information beyond the tool's name - it doesn't explain what 'kwargs' should contain, what format it expects, or provide examples. With low schema coverage, the description fails to compensate for the documentation gap.

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

Purpose3/5

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

The description states the tool calculates Weighted Moving Average (WMA), which is a specific mathematical operation. However, it doesn't distinguish this from sibling tools like calculate_sma, calculate_ema, or calculate_dema, which are all moving average variants. The purpose is clear but lacks differentiation from similar alternatives.

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. With multiple sibling tools for different moving average calculations (e.g., SMA, EMA, DEMA), there's no indication of when WMA is preferred or what contexts it's suited for. This leaves the agent without usage direction.

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

TDQS

C2.7/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose, each calculating a specific technical indicator or moving average type with no overlap. The descriptions explicitly name the unique algorithm (e.g., BBANDS, DEMA, RSI), making it impossible to confuse one tool for another.

Naming Consistency5/5

All tools follow a perfect verb_noun pattern with 'calculate_' as the consistent prefix, followed by the indicator acronym or name in snake_case. There are no deviations in naming style or structure across the entire set.

Tool Count4/5

With 18 tools, the count is slightly high but reasonable for a technical analysis library covering various moving averages and indicators. It aligns well with the domain's scope, though it might feel heavy compared to simpler servers.

Completeness5/5

The tool set provides comprehensive coverage for calculating technical indicators, including multiple moving average types (e.g., SMA, EMA, WMA) and key indicators like RSI and Bollinger Bands. There are no obvious gaps for a TA-Lib server, as it covers the core functionality expected in this domain.

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
    Not graded
    quality
    D
    maintenance
    Provides stock market data and computes technical indicators like EMA, MACD, and RSI across multiple timeframes using the LongPort API and TA-Lib. It enables users to perform detailed financial analysis and multi-timeframe market reviews through standard MCP tools.
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides foundational trading utilities by fetching market data through Akshare and computing technical indicators like RSI and MACD using TA-Lib. It enables users to retrieve candlestick data and technical analysis series via a standardized MCP interface.
    9
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides comprehensive stock market data and technical analysis tools via the MCP protocol, enabling real-time quotes, historical data, and professional indicators like RSI and MACD for Claude Desktop and other clients.
    5
    Apache 2.0

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/phuihock/mcp-talib'

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