Skip to main content
Glama
LGDiMaggio

mcp-server-mcsa

mcp-server-mcsa

License: MIT Python 3.10+ MCP

A Model Context Protocol (MCP) server for Motor Current Signature Analysis (MCSA) — non-invasive spectral analysis and fault detection in electric motors using stator-current signals.

mcp-server-mcsa turns any LLM into a predictive-maintenance expert. By integrating advanced techniques such as Fast Fourier Transform (FFT) and envelope analysis, the system can listen to a motor's electrical signature and automatically identify mechanical and electrical anomalies — all through natural language.

MCSA is an industry-standard condition-monitoring technique that analyses the harmonic content of the stator current to detect rotor, stator, bearing, and air-gap faults in electric motors — without requiring vibration sensors, downtime, or physical access to the machine. This server brings the full MCSA diagnostic workflow to any MCP-compatible AI assistant (Claude Desktop, VS Code Copilot, and others), enabling both interactive expert analysis and automated condition-monitoring pipelines.

Features

  • Real signal loading — read measured data from CSV, TSV, WAV, and NumPy .npy files

  • Motor parameter calculation — slip, synchronous speed, rotor frequency from nameplate data

  • Fault frequency computation — broken rotor bars, eccentricity, stator faults, mixed eccentricity

  • Bearing defect frequencies — BPFO, BPFI, BSF, FTF from bearing geometry

  • Signal preprocessing — DC removal, normalisation, windowing, bandpass/notch filtering

  • Spectral analysis — FFT spectrum, Welch PSD, spectral peak detection

  • Envelope analysis — Hilbert-transform demodulation for mechanical/bearing faults

  • Time-frequency analysis — STFT with frequency tracking for non-stationary conditions

  • Fault detection — automated severity classification (healthy / incipient / moderate / severe)

  • One-shot diagnostics — full pipeline from signal array or directly from file

  • Test signal generation — synthetic signals with configurable fault injection for demos and benchmarking

  • Persistent data store — signals and spectra saved to ~/.mcsa_data/ as compressed .npz files; referenced by short IDs (sig_xxxx, spec_xxxx) to keep large arrays out of the chat context; data survives server restarts

Related MCP server: MCP EV Digital Twin Agent

Tools (21)

Tool

Description

inspect_signal_file

Inspect a signal file format and metadata without loading

load_signal_from_file

Load a current signal from CSV / WAV / NPY file → returns signal_id

calculate_motor_params

Compute slip, sync speed, rotor frequency from motor data

compute_fault_frequencies

Calculate expected fault frequencies for all common fault types

compute_bearing_frequencies

Calculate BPFO, BPFI, BSF, FTF from bearing geometry

preprocess_signal

DC removal, filtering, normalisation, windowing pipeline → returns new signal_id

compute_spectrum

Single-sided FFT amplitude spectrum → returns spectrum_id

compute_power_spectral_density

Welch PSD estimation → returns spectrum_id

find_spectrum_peaks

Detect and characterise peaks in a spectrum

detect_broken_rotor_bars

BRB fault index with severity classification

detect_eccentricity

Air-gap eccentricity detection via sidebands

detect_stator_faults

Stator inter-turn short circuit detection

detect_bearing_faults

Bearing defect detection from current spectrum

compute_envelope_spectrum

Hilbert envelope spectrum for modulation analysis

compute_band_energy

Integrated spectral energy in a frequency band

compute_time_frequency

STFT analysis with optional frequency tracking

generate_test_current_signal

Synthetic motor current with optional faults → returns signal_id

run_full_diagnosis

Complete MCSA diagnostic pipeline from signal or signal_id

diagnose_from_file

Complete MCSA diagnostic pipeline directly from file

list_stored_data

List all signals and spectra persisted on disk

clear_stored_data

Delete one or all stored items from disk

Resources

URI

Description

mcsa://fault-signatures

Reference table of fault signatures, frequencies, and empirical thresholds

Prompts

Prompt

Description

analyze_motor_current

Step-by-step guided workflow for MCSA analysis

Installation & Setup

Step 1 — Install uv (one-time, if you don't have it)

uv is the recommended Python package manager. It handles everything (Python, packages, virtual environments) in a single tool and is used throughout the MCP ecosystem.

Windows (PowerShell):

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

macOS / Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

After installing, restart your terminal so the uv / uvx commands are available.

Step 2 — Verify it works

uvx mcp-server-mcsa --help

You should see the help text. That's it — no pip install needed. uvx downloads and runs the package automatically in an isolated environment.

Step 3 — Add to your MCP client

Pick your client and add the configuration below. No other steps are required.

Claude Desktop

Open the config file:

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

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

Add mcsa inside the mcpServers object (create the file if it doesn't exist):

{
  "mcpServers": {
    "mcsa": {
      "command": "uvx",
      "args": ["mcp-server-mcsa"]
    }
  }
}

Then restart Claude Desktop.

VS Code (Copilot / Continue)

Create (or edit) .vscode/mcp.json in your workspace:

{
  "servers": {
    "mcsa": {
      "command": "uvx",
      "args": ["mcp-server-mcsa"]
    }
  }
}

Cursor

Go to Settings → MCP Servers → Add new server:

  • Type: command

  • Command: uvx mcp-server-mcsa

Step 4 — Test

In your MCP client, try:

"Generate a test signal with a broken rotor bar fault and run a full diagnosis. Motor: 4 poles, 50 Hz, 1470 RPM."

If the server responds with a diagnostic report, you're all set.


pip install mcp-server-mcsa

Then configure your client with:

{
  "mcpServers": {
    "mcsa": {
      "command": "python",
      "args": ["-m", "mcp_server_mcsa"]
    }
  }
}

⚠️ Common issue on Windows: if you installed Python from the Microsoft Store, the mcp-server-mcsa command may not be in your PATH, causing a "server disconnected" error. In that case, find your Python path with python -c "import sys; print(sys.executable)" and use the full path in the config:

{
  "mcpServers": {
    "mcsa": {
      "command": "C:/Users/YOU/AppData/Local/.../python.exe",
      "args": ["-m", "mcp_server_mcsa"]
    }
  }
}

Using uvx avoids this problem entirely.

git clone https://github.com/LGDiMaggio/mcp-motor-current-signature-analysis.git
cd mcp-motor-current-signature-analysis
uv sync --dev

Configure the client to point to the local repo:

{
  "mcpServers": {
    "mcsa": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/mcp-motor-current-signature-analysis", "run", "mcp-server-mcsa"]
    }
  }
}

Run tests:

uv run pytest

Debug with MCP Inspector:

uv run mcp dev src/mcp_server_mcsa/server.py

Troubleshooting

Problem

Fix

"server disconnected" on Claude Desktop

Check the logs at %APPDATA%\Claude\logs\ (Windows) or ~/Library/Logs/Claude/ (macOS). Most common cause: the command in the config is not found. Use uvx to avoid PATH issues.

uvx: command not found

Restart your terminal after installing uv. On Windows, you may need to close and reopen PowerShell.

mcp-server-mcsa: command not found (pip)

The script wasn't added to PATH. Use python -m mcp_server_mcsa instead, or switch to uvx.

Server starts but tools don't appear

Make sure you restarted the MCP client after editing the config.

Data Store

Signals and spectra are persisted to disk as compressed .npz files in ~/.mcsa_data/ (configurable via the MCSA_DATA_DIR environment variable). This means:

  • Large arrays never enter the chat — only short IDs (sig_xxxx, spec_xxxx) and compact summaries are returned to the LLM.

  • Data survives server restarts — reopen Claude Desktop tomorrow and your signals are still there.

  • All data in one place — loaded measurements and generated test signals live side by side in the same folder.

~/.mcsa_data/
  signals/
    sig_a1b2c3d4.npz   ← loaded from CSV
    sig_e5f6g7h8.npz   ← generated test signal
  spectra/
    spec_i9j0k1l2.npz  ← FFT result

Use list_stored_data to see everything on disk and clear_stored_data to remove items.

Usage Examples

Real Signal — One-Shot Diagnosis

The fastest way to analyse a measured signal is the diagnose_from_file tool. Simply provide the file path and motor nameplate data:

"Diagnose the motor from C:\data\motor_phaseA.csv — 50 Hz supply, 4 poles, 1470 RPM"

The server loads the file, preprocesses the signal, computes the spectrum, runs all fault detectors, and returns a complete JSON report with severity-classified results.

Step-by-Step Workflow (with signal IDs)

  1. Load a measured signal (or generate a synthetic one):

    "Load the signal from measurement.wav" → returns signal_id: sig_a1b2 or: "Generate a test signal with a broken-rotor-bar fault" → sig_c3d4

  2. Calculate motor parameters:

    "Calculate motor parameters for a 4-pole motor, 50 Hz supply, running at 1470 RPM"

  3. Compute expected fault frequencies:

    "What are the expected fault frequencies for this motor?"

  4. Preprocess the signal:

    "Preprocess signal sig_a1b2" → returns new signal_id: sig_e5f6

  5. Analyse the spectrum:

    "Compute the FFT spectrum of sig_e5f6" → returns spectrum_id: spec_g7h8

  6. Detect specific faults:

    "Check for broken rotor bars in spec_g7h8"

  7. Envelope analysis (optional):

    "Compute the envelope spectrum of sig_e5f6"

Quick Diagnosis from Stored Signal

The run_full_diagnosis tool runs the entire pipeline on a stored signal in a single call:

Input: signal_id + motor nameplate data
Output: complete report with fault severities and recommendations

Bearing Analysis

For bearing fault analysis, you need the bearing geometry (number of balls, ball diameter, pitch diameter, contact angle). The server will:

  1. Calculate characteristic defect frequencies (BPFO, BPFI, BSF, FTF)

  2. Compute expected current sidebands

  3. Search the spectrum for those sidebands

Supported File Formats

Format

Extensions

Sampling Rate

CSV / TSV

.csv, .tsv, .txt

From time column or user-supplied

WAV

.wav

Embedded in header

NumPy

.npy

User-supplied

Fault Detection Theory

Broken Rotor Bars (BRB)

Sidebands at $(1 \pm 2s) \cdot f_s$ where $s$ is slip and $f_s$ is supply frequency. Severity is classified by the dB ratio of sideband to fundamental amplitude.

Eccentricity

Sidebands at $f_s \pm k \cdot f_r$ where $f_r$ is the rotor mechanical frequency.

Stator Inter-Turn Faults

Sidebands at $f_s \pm 2k \cdot f_r$ due to winding asymmetry.

Bearing Defects

Torque oscillations modulate the stator current, creating sidebands at $f_s \pm k \cdot f_{defect}$. Defect frequencies depend on bearing geometry (BPFO, BPFI, BSF, FTF).

Severity Thresholds (dB below fundamental)

Level

Range

Healthy

≤ −50 dB

Incipient

−50 to −45 dB

Moderate

−45 to −40 dB

Severe

> −35 dB

Note: These are general guidelines. Actual thresholds should be adapted to the specific motor, load, and application based on baseline measurements.

Development

Setup

git clone https://github.com/LGDiMaggio/mcp-motor-current-signature-analysis.git
cd mcp-motor-current-signature-analysis
uv sync --dev

Run tests

uv run pytest

Run with MCP Inspector

uv run mcp dev src/mcp_server_mcsa/server.py

Lint and type check

uv run ruff check src/ tests/
uv run pyright src/

Dependencies

  • mcp — Model Context Protocol SDK

  • numpy — numerical computing

  • scipy — signal processing (FFT, filtering, Hilbert transform)

  • pydantic — data validation

Documentation

For a detailed reference of every tool, resource, and prompt — including parameter tables, diagnostic workflows, integration patterns, and severity thresholds — see the Usage Guide.

Citation

If you use this software in your research, please cite it:

@software{dimaggio_mcsa_2025,
  author       = {Di Maggio, Luigi Gianpio},
  title        = {mcp-server-mcsa: MCP Server for Motor Current Signature Analysis},
  year         = 2025,
  url          = {https://github.com/LGDiMaggio/mcp-motor-current-signature-analysis},
  license      = {MIT}
}

GitHub shows a "Cite this repository" button automatically from the CITATION.cff file.

ORCID

License

MIT — see LICENSE for details.

Available Tools

21 tools
calculate_motor_paramsA

Calculate motor operating parameters from nameplate and measured data.

Computes synchronous speed, slip, rotor frequency, and slip frequency. These parameters are required inputs for fault frequency calculations.

ParametersJSON Schema
NameRequiredDescriptionDefault
supply_freq_hzYesSupply (line) frequency in Hz, e.g. 50 or 60
polesYesNumber of magnetic poles (even, ≥ 2)
rotor_speed_rpmYesMeasured rotor speed in RPM

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations exist, so description carries full burden. Only states calculation purpose; does not disclose any behavioral traits (e.g., side effects, permission needs, accuracy limits). Minimal transparency beyond 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?

Two sentences, front-loaded with purpose, followed by output context. No extraneous words; efficient and 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?

Adequately describes inputs and outputs for a calculation tool. Could mention that poles must be even or that rotor speed should be below synchronous speed, but not essential given output schema presence.

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 covers parameters with descriptions (100% coverage). The description does not add meaning beyond the schema; baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states it calculates motor operating parameters from nameplate and measured data, listing specific outputs (synchronous speed, slip, rotor frequency, slip frequency). Distinguishes from sibling tools like compute_bearing_frequencies by noting outputs are prerequisites for fault frequency calculations.

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

Usage Guidelines4/5

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

Implicitly conveys usage: when motor parameters are needed for fault frequency calculations. Does not explicitly state when not to use or provide alternatives, but the context with sibling tools clarifies its role.

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

clear_stored_dataA

Delete stored signals and spectra from disk and memory.

Pass a specific data_id to remove one item, or omit to clear all.

ParametersJSON Schema
NameRequiredDescriptionDefault
data_idNoID of a specific item to remove, or omit to clear everything

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

The description discloses that the tool deletes from disk and memory, implying a destructive operation. With no annotations, it provides basic behavioral context but does not cover irreversibility or error handling. It is adequate but not extensive.

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 long with no fluff. It front-loads the action and immediately clarifies the parameter usage, making it highly 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?

For a simple deletion tool with one parameter, the description is complete. It covers both usage modes. The presence of an output schema means return values are handled elsewhere. It could mention confirmation or side effects, but it 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?

Schema coverage is 100%, and the description's parameter explanation ('Pass a specific data_id to remove one item, or omit to clear all') is nearly identical to the schema's description. It adds minimal new meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'Delete' and clearly identifies the resource as 'stored signals and spectra'. It distinguishes this tool from sibling tools like list_stored_data (read) and load_signal_from_file (load).

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 explicitly states when to use each variant: pass a specific data_id to remove one item, or omit to clear all. It does not mention exclusions or alternatives, but the instructions are clear and actionable.

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

compute_band_energyB

Compute the integrated spectral energy in a frequency band.

Useful as a generic fault/cavitation indicator — measures the energy concentration around a characteristic frequency in the PSD.

ParametersJSON Schema
NameRequiredDescriptionDefault
centre_freq_hzYesCentre of the frequency band (Hz)
spectrum_idNoID of a stored PSD spectrum. Preferred over raw arrays.
frequencies_hzNoPSD frequency axis (Hz). Use spectrum_id instead.
psd_valuesNoPSD values. Use spectrum_id instead.
bandwidth_hzNoTotal bandwidth for energy integration (Hz)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so the description must disclose behavioral traits. It does not mention whether the tool is read-only, has side effects, requires authorization, or modifies state. For a computation tool, one might assume it's safe, but this is not explicitly stated.

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 concise with two short paragraphs: one for purpose, one for context. No wasted words, front-loads the key action.

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?

With 5 parameters and an output schema (though not shown), the description covers the core idea but could be more explicit about how the energy is computed (e.g., integrates the PSD). It assumes domain knowledge that may not be universal.

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

Parameters4/5

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

Schema description coverage is 100%, establishing good baseline. The description adds value by recommending 'spectrum_id' over raw arrays and specifying the bandwidth default. This enhances the schema's information.

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 it computes integrated spectral energy in a frequency band, and mentions its use as a fault/cavitation indicator. However, it does not explicitly distinguish from sibling tools like compute_power_spectral_density or compute_spectrum.

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?

It's described as useful for fault/cavitation indication, but no explicit guidance on when to use this tool vs alternatives (e.g., find_spectrum_peaks, detect_bearing_faults). No exclusions or prerequisites.

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

compute_bearing_frequenciesA

Calculate bearing characteristic defect frequencies (BPFO, BPFI, BSF, FTF).

Returns normalised frequencies (multiples of shaft speed) and, if shaft speed is provided, absolute frequencies in Hz. If supply frequency is also given, computes expected stator-current sidebands.

ParametersJSON Schema
NameRequiredDescriptionDefault
n_ballsYesNumber of rolling elements in the bearing
ball_dia_mmYesBall (roller) diameter in mm
pitch_dia_mmYesPitch (cage) diameter in mm
contact_angle_degNoContact angle in degrees
shaft_speed_rpmNoShaft speed in RPM (optional, for absolute Hz)
supply_freq_hzNoSupply frequency in Hz (optional, for current sidebands)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description bears full burden. It explains normalised vs absolute frequencies and sidebands, but does not disclose any potential limitations, prerequisites (e.g., bearing geometry knowledge), or side effects. It is adequate but not comprehensive.

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?

Three concise sentences front-load the purpose and list outputs. Every sentence adds value with 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?

Given the existence of an output schema (not shown) and the complexity of bearing frequencies, the description adequately covers inputs, outputs, and conditional behavior. It is nearly complete for an agent to invoke correctly.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The tool description adds context (e.g., 'multiples of shaft speed') but does not significantly enhance meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'Calculate' followed by well-known bearing fault frequencies (BPFO, BPFI, BSF, FTF), clearly distinguishing it from sibling tools like 'compute_fault_frequencies' (which is general) and 'detect_bearing_faults' (detection vs calculation).

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 computing bearing frequencies, but does not explicitly state when to use this tool over siblings like 'compute_fault_frequencies' or 'detect_bearing_faults'. No when-not-to-use or alternative guidance is provided.

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

compute_envelope_spectrumA

Compute the envelope spectrum of a current signal.

Uses the Hilbert transform to extract the amplitude envelope, then computes its FFT. Useful for detecting bearing and mechanical faults that modulate the current at low frequencies.

ParametersJSON Schema
NameRequiredDescriptionDefault
signal_idNoID of a stored signal. Preferred over raw array.
signalNoTime-domain current signal. Use signal_id instead.
sampling_freq_hzNoSampling frequency in Hz. Auto-resolved when using signal_id.
bandpass_low_hzNoLower bandpass cutoff before envelope (optional)
bandpass_high_hzNoUpper bandpass cutoff before envelope (optional)
max_freq_hzNoMax frequency to return (Hz)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It explains the algorithmic steps (Hilbert transform, FFT) and purpose, but does not disclose potential side effects (e.g., whether it modifies state) or input requirements beyond schema. Still, it gives sufficient behavioral context for a computational tool.

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

Conciseness4/5

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

The description is front-loaded with the primary purpose and uses three sentences to cover method and use case. It is efficient but could be slightly tighter by merging the algorithm and purpose sentences. No wasted words.

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 6 parameters, an output schema, and no required fields, the description is complete. It explains the tool's purpose, method, and typical application. The output schema covers return format, so no further detail needed. Description adequately informs selection and invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds no additional insight into parameters beyond what the schema already provides. It does not explain how parameters like bandpass cutoffs relate to the algorithm, so no extra value.

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

Purpose5/5

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

The description clearly states the tool computes envelope spectrum of a current signal using Hilbert transform and FFT. It distinctly specifies the resource (current signal) and action, differentiating it from sibling tools like compute_spectrum and compute_power_spectral_density which analyze different aspects.

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 explicitly mentions usefulness for detecting bearing and mechanical faults that modulate current at low frequencies, providing context for when to use. However, it does not directly contrast with siblings or state when not to use, missing full exclusion guidance.

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

compute_fault_frequenciesA

Calculate expected fault frequencies for common induction-motor faults.

Computes characteristic frequencies for broken rotor bars, eccentricity, stator faults, and mixed eccentricity based on motor operating parameters. Use these frequencies to know WHERE to look in the current spectrum.

ParametersJSON Schema
NameRequiredDescriptionDefault
supply_freq_hzYesSupply frequency in Hz
polesYesNumber of magnetic poles
rotor_speed_rpmYesRotor speed in RPM
harmonicsNoNumber of harmonic orders to compute

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It implies a non-destructive computation but does not explicitly state lack of side effects or permissions needed. Adequate for a calculation tool, but could be more transparent about safety (e.g., read-only, no data mutation).

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?

Three sentences, front-loaded with purpose, then details, then usage hint. No filler or redundancy. Every sentence 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?

With an output schema present, no need to explain return values. Covers fault types and usage context. Could mention prerequisites (e.g., motor parameters) or that it is specific to induction motors, but overall sufficient for a compute tool.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already describes all parameters. The description adds no additional meaning beyond listing fault types. Baseline score of 3 is appropriate as description does not enhance parameter understanding.

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?

Clearly states the verb 'calculate' and the resource 'expected fault frequencies' with specific fault types (broken rotor bars, eccentricity, stator faults). Distinguishes from sibling detection tools by focusing on frequency computation rather than fault detection.

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 an explicit usage hint: 'Use these frequencies to know WHERE to look in the current spectrum.' This implies it is a preprocessing step for spectral analysis. However, it does not explicitly state when not to use this tool versus siblings like detect_broken_rotor_bars, though the distinction is clear.

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

compute_power_spectral_densityB

Compute Power Spectral Density using Welch's method.

Better for noisy signals and trend analysis than a raw FFT. Returns a spectrum_id plus compact summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
signal_idNoID of a stored signal. Preferred over raw array.
signalNoTime-domain signal array. Use signal_id instead.
sampling_freq_hzNoSampling frequency in Hz. Auto-resolved when using signal_id.
npersegNoFFT segment length. Omit for auto
max_freq_hzNoMaximum frequency to return (Hz)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations provided, so description must carry full burden. It discloses the method (Welch's), the return of a spectrum_id and compact summary, but does not mention read-only nature, side effects, or prerequisites. The description adds some context but is not comprehensive.

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 short and front-loaded with key information. No wasted words. Could potentially add a bit more detail without becoming verbose, but currently it is efficient.

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 has 5 parameters and an output schema, the description is adequate but not thorough. It mentions the primary output but does not elaborate on the 'compact summary' or provide additional context for parameter choices. With moderate complexity, a bit more detail would improve completeness.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add any additional parameter semantics; it merely repeats the tool's purpose. The schema already documents each parameter sufficiently.

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?

Clearly states it computes PSD using Welch's method, and mentions it's better for noisy signals and trend analysis than a raw FFT. However, it does not differentiate well from sibling tools like compute_spectrum or compute_envelope_spectrum, which may also be used for spectral analysis.

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?

Provides a usage hint (better for noisy signals/trend analysis) but does not explicitly state when to use this tool versus alternatives among siblings, nor when not to use it. The guidance is implied rather than explicit.

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

compute_spectrumA

Compute the single-sided amplitude spectrum (FFT) of a current signal.

Returns a spectrum_id referencing the stored spectrum, plus a compact summary with top peaks. Use spectrum_id in downstream fault-detection tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
signal_idNoID of a stored signal. Preferred over raw array.
signalNoTime-domain signal array. Use signal_id instead for large signals.
sampling_freq_hzNoSampling frequency in Hz. Auto-resolved when using signal_id.
n_fftNoFFT length (zero-padding). Omit for auto
max_freq_hzNoMaximum frequency to return (Hz). Omit for full range

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It mentions returning a spectrum_id and compact summary but does not disclose whether the signal is stored permanently, computational cost, side effects, or safety (e.g., idempotent). Minimal behavioral context beyond what schema implies.

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 with purpose, no unnecessary words. Every sentence adds value.

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

Completeness3/5

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

The description covers basic purpose and output usage but lacks guidance on when to choose this over similar sibling tools (e.g., compute_power_spectral_density) and what 'compact summary' contains. Adequate but gaps remain.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds 'preferred over raw array' for signal_id, which adds value, but otherwise does not explain parameter meaning beyond schema descriptions.

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

Purpose5/5

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

The description clearly states it computes the single-sided amplitude spectrum (FFT) of a current signal, specifying the output (spectrum_id and top peaks summary). It distinguishes from siblings by focusing on current signal amplitude spectrum and downstream fault-detection use.

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 fault detection ('Use spectrum_id in downstream fault-detection tools') and recommends signal_id over raw array, but does not explicitly contrast with sibling tools like compute_envelope_spectrum or compute_power_spectral_density.

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

compute_time_frequencyA

Compute Short-Time Fourier Transform (STFT) for time-frequency analysis.

For non-stationary conditions (variable speed/load, start-up transients). If target_freq_hz is provided, also tracks that frequency's amplitude over time. Returns a summary (not the full 2D matrix) to keep output manageable.

ParametersJSON Schema
NameRequiredDescriptionDefault
signal_idNoID of a stored signal. Preferred over raw array.
signalNoTime-domain current signal. Use signal_id instead.
sampling_freq_hzNoSampling frequency in Hz. Auto-resolved when using signal_id.
npersegNoWindow length per segment (samples)
target_freq_hzNoFrequency to track over time (Hz). If provided, returns amplitude vs time for that frequency
tolerance_hzNoTolerance for frequency tracking (Hz)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses two critical behaviors: (1) if target_freq_hz is provided, the tool tracks that frequency's amplitude over time, and (2) it returns a summary (not the full 2D matrix) to keep output manageable. This adds significant value beyond the input 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 concise (4 sentences) and front-loaded with the main purpose. Every sentence contributes unique information: the core operation, the use case, the optional frequency tracking, and output format caveat. No unnecessary words or repetition.

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

Completeness5/5

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

Given the tool's complexity (STFT, frequency tracking, summary output) and the presence of an output schema (indicated in context signals), the description adequately covers what the tool does, when to use it, and key behavioral nuances. The output schema likely handles return value details, so this description is sufficiently complete.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning: precludes signal_id over raw array, notes auto-resolution of sampling_freq_hz when using signal_id, explains target_freq_hz tracks a specific frequency, and implies tolerance_hz is for tracking. This compensates well beyond schema descriptions.

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

Purpose5/5

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

The description clearly states it computes STFT for time-frequency analysis, specifically for non-stationary conditions. This distinguishes it from sibling tools like compute_spectrum (likely for stationary signals) and compute_power_spectral_density. The verb 'compute' and resource 'Short-Time Fourier Transform' are 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 Guidelines4/5

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

The description explicitly mentions 'For non-stationary conditions (variable speed/load, start-up transients)', providing clear context for when to use the tool. While it does not explicitly state when not to use or name alternatives, the given context effectively guides the agent toward appropriate scenarios.

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

detect_bearing_faultsA

Detect bearing defect signatures in the stator-current spectrum.

Bearing faults modulate motor torque, creating sidebands at f_s ± k·f_defect. Note: bearing signatures in current are typically weak; envelope analysis or vibration data can improve detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
spectrum_idNoID of a stored spectrum. Preferred over raw arrays.
frequencies_hzNoSpectrum frequency axis (Hz). Use spectrum_id instead.
amplitudesNoSpectrum amplitude values. Use spectrum_id instead.
supply_freq_hzNoSupply frequency in Hz
bearing_defect_freq_hzNoBearing characteristic defect frequency in Hz (BPFO, BPFI, BSF, or FTF)
defect_typeNoDefect type label: bpfo, bpfi, bsf, or ftfbpfo
harmonicsNoNumber of sideband orders
tolerance_hzNoFrequency search tolerance in Hz

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description discloses a limitation (weak signatures) but lacks details on return values, side effects, or detection confidence.

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

Conciseness5/5

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

The description is concise with three sentences, front-loaded with the purpose, and no wasted words.

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 output schema exists and parameter descriptions are complete, the description is adequate but lacks details on detection criteria or required inputs beyond spectrum_id.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3; the description adds no additional meaning beyond the physical mechanism, which is already implied by the context.

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

Purpose5/5

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

The description clearly states the tool detects bearing defect signatures in the stator-current spectrum, distinguishing it from siblings like detect_broken_rotor_bars or compute_bearing_frequencies.

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 notes that bearing signatures are weak and suggests envelope analysis or vibration, implying when the tool might be limited, but does not explicitly specify when to use this tool over other detect_* tools.

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

detect_broken_rotor_barsA

Detect broken rotor bar faults from current spectrum.

Computes the BRB fault index by measuring sidebands at (1 ± 2s)·f_s relative to the fundamental. Returns severity classification: healthy / incipient / moderate / severe.

ParametersJSON Schema
NameRequiredDescriptionDefault
spectrum_idNoID of a stored spectrum (from compute_spectrum). Preferred over raw arrays.
frequencies_hzNoSpectrum frequency axis (Hz). Use spectrum_id instead.
amplitudesNoSpectrum amplitude values. Use spectrum_id instead.
supply_freq_hzNoSupply frequency in Hz
polesNoNumber of poles
rotor_speed_rpmNoRotor speed in RPM
tolerance_hzNoFrequency search tolerance in Hz

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavior. It states it computes a fault index and returns a classification, but does not specify whether the tool is read-only, modifies stored data, or has any side effects. Since it accepts spectrum IDs or raw arrays but does not clarify that it does not alter them, transparency is lacking.

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: first states purpose, second explains computation and output. No unnecessary words, front-loaded with key action, and efficient for agent parsing.

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 7 parameters, 0 required, and presence of output schema, the description adequately covers the core functionality. However, it lacks context about typical usage flow (e.g., needing a spectrum from compute_spectrum), relationship to sibling tools, and what the output schema contains. Could be more complete for an agent new to the domain.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds algorithmic context (sideband calculation, relative to fundamental) that helps interpret the roles of supply_freq, poles, rotor_speed_rpm, and tolerance_hz, improving parameter understanding beyond schema descriptions.

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

Purpose5/5

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

The description clearly states the tool detects broken rotor bar faults from current spectrum, specifies the computational method using sidebands at (1 ± 2s)·f_s, and lists the severity classifications. This distinguishes it from sibling fault detection tools like detect_bearing_faults or detect_stator_faults.

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 detect_bearing_faults or run_full_diagnosis. The description does not mention prerequisites, required data sources, or exclusions, leaving the agent without decision criteria.

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

detect_eccentricityA

Detect air-gap eccentricity faults from current spectrum.

Analyses sidebands at f_s ± k·f_r for static and dynamic eccentricity. Returns severity classification.

ParametersJSON Schema
NameRequiredDescriptionDefault
spectrum_idNoID of a stored spectrum. Preferred over raw arrays.
frequencies_hzNoSpectrum frequency axis (Hz). Use spectrum_id instead.
amplitudesNoSpectrum amplitude values. Use spectrum_id instead.
supply_freq_hzNoSupply frequency in Hz
polesNoNumber of poles
rotor_speed_rpmNoRotor speed in RPM
harmonicsNoNumber of harmonic orders to check
tolerance_hzNoFrequency search tolerance in Hz

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It mentions analyzing sidebands and returning severity classification, but lacks details on assumptions (e.g., steady-state operation), limitations, or behavior with incomplete inputs. The description adds the sideband formula but remains somewhat opaque about the underlying algorithm.

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 short paragraphs with no redundant words. The primary action (detect eccentricity) is front-loaded, and the key technical detail (sideband formula) is included efficiently.

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 8 parameters (all with defaults) and an output schema (context confirms exists), the description covers the high-level process and key formula. It could mention typical output structure or severity levels, but the output schema likely provides that. Adequate for a specialized analytical tool.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds the sideband formula context but does not significantly extend the meaning of individual parameters beyond what the schema already describes. No extra clarity on parameter relationships or typical values.

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 detects air-gap eccentricity faults from current spectrum, specifies the analysis of sidebands at f_s ± k·f_r for static and dynamic eccentricity, and notes it returns severity classification. This distinguishes it from sibling tools like detect_bearing_faults or detect_broken_rotor_bars.

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 a current spectrum is available and eccentricity detection is needed, but it does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The context is clear but not directive.

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

detect_stator_faultsB

Detect stator inter-turn short circuit faults from current spectrum.

Analyses sidebands at f_s ± 2k·f_r caused by stator winding asymmetry.

ParametersJSON Schema
NameRequiredDescriptionDefault
spectrum_idNoID of a stored spectrum. Preferred over raw arrays.
frequencies_hzNoSpectrum frequency axis (Hz). Use spectrum_id instead.
amplitudesNoSpectrum amplitude values. Use spectrum_id instead.
supply_freq_hzNoSupply frequency in Hz
polesNoNumber of poles
rotor_speed_rpmNoRotor speed in RPM
harmonicsNoNumber of harmonic orders
tolerance_hzNoFrequency search tolerance in Hz

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It explains the underlying theory (sidebands due to stator asymmetry) but does not disclose behavioral traits such as whether it modifies stored data, required permissions, or computational cost. A score of 3 is appropriate given the lack of annotations and minimal side-effect disclosure.

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 concise: two sentences covering purpose and theory. It is front-loaded and contains no fluff. A slight deduction for lacking structure (e.g., bullet points or clear sections) but still efficient.

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 8 parameters, no annotations, and existence of an output schema (not shown but indicated), the description is moderately complete. It explains the fault detection principle but omits details about the output format, error conditions, or prerequisite steps (e.g., spectra must already be computed).

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema; it mentions 'current spectrum' but does not elaborate on parameter usage or formats. No enhancement.

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 detects stator inter-turn short circuit faults from current spectrum, specifying the sideband frequencies (f_s ± 2k·f_r). This verb-resource pair is specific and distinguishes it from sibling tools like detect_bearing_faults or detect_eccentricity.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives (e.g., detect_bearing_faults, diagnose_from_file). There is no mention of prerequisites, context, or scenarios where it is appropriate or inappropriate.

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

diagnose_from_fileA

Load a signal from file and run the full MCSA diagnostic pipeline.

One-shot tool: reads the signal file, preprocesses, computes the spectrum, runs all fault detectors, and returns a complete diagnostic report. Ideal for batch or automated condition-monitoring workflows.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the signal file (CSV, WAV, or NPY)
supply_freq_hzYesSupply frequency in Hz
polesYesNumber of poles
rotor_speed_rpmYesRotor speed in RPM
sampling_freq_hzNoSampling frequency in Hz (required for NPY, optional for CSV with time column, auto-detected for WAV)
signal_columnNoCSV column for the current signal
time_columnNoCSV column for time (null if absent)
channelNoWAV channel index
bearing_defect_freq_hzNoBearing defect frequency in Hz (optional)
tolerance_hzNoFrequency search tolerance in Hz

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Discloses the full pipeline: reads, preprocesses, computes spectrum, runs detectors, returns report. No annotations exist, so description carries full burden; it provides clear stepwise behavior, though it does not mention read-only nature or potential side effects.

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

Conciseness5/5

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

Extremely concise: two sentences and a line break. Front-loaded with the core action and key qualifiers ('one-shot'), with no unnecessary wording.

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

Completeness4/5

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

Given the tool's complexity (10 parameters, many siblings, output schema available), the description covers the essential function and workflow. It does not explain relationship with siblings, but the output schema existence reduces the need for return value description.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add extra parameter meaning beyond what the schema already provides, staying at the baseline.

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?

Clearly states the tool loads a signal from file and runs the full MCSA diagnostic pipeline. Uses specific verb 'diagnose' and resource 'from file', distinguishing it from siblings like 'run_full_diagnosis' which may not involve file loading.

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?

Describes as a one-shot tool ideal for batch/automated workflows, implying when to use. However, it does not explicitly state when not to use or mention alternative tools for partial steps (e.g., inspect_signal_file, preprocess_signal), leaving the agent without clear exclusion guidance.

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

find_spectrum_peaksA

Detect peaks in a frequency spectrum.

Returns a list of peaks sorted by amplitude (highest first) with frequency, amplitude, and prominence values.

ParametersJSON Schema
NameRequiredDescriptionDefault
spectrum_idNoID of a stored spectrum (from compute_spectrum or compute_power_spectral_density). Preferred over raw arrays.
frequencies_hzNoFrequency axis from spectrum/PSD. Use spectrum_id instead.
amplitudesNoAmplitude or PSD values. Use spectrum_id instead.
min_heightNoMinimum peak height
min_prominenceNoMinimum peak prominence
min_distance_hzNoMin distance between peaks in Hz
freq_low_hzNoLower frequency bound for search
freq_high_hzNoUpper frequency bound for search
max_peaksNoMaximum number of peaks to return

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It mentions return format and spectrum_id preference but lacks disclosure on side effects, safety (read vs write), or any limitations. Adequate but not rich.

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: first sentence states purpose, second clarifies return format. No wasted words, front-loaded.

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 9 optional parameters and an output schema, the description covers purpose and output format. Could elaborate on parameter interactions or provide a brief usage example, but overall 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 100% with good descriptions. The description adds extra context like 'spectrum_id is preferred over raw arrays' and mentions output sorting. This adds value beyond schema.

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

Purpose5/5

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

The description clearly states the tool detects peaks in a frequency spectrum and specifies the output is sorted by amplitude with frequency, amplitude, and prominence. This is specific and distinguishes from sibling tools like compute_spectrum or detect_bearing_faults.

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 after computing a spectrum but provides no explicit guidance on when to use vs alternatives, no exclusions, and no context about prerequisites or scenarios.

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

generate_test_current_signalA

Generate a synthetic motor-current test signal.

Creates a simulated stator-current waveform with the fundamental, supply harmonics, noise, and optional fault signatures. Useful for testing, validation, and demonstration of MCSA analysis tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
duration_sNoSignal duration in seconds
sampling_freq_hzNoSampling frequency in Hz
supply_freq_hzNoSupply frequency in Hz
polesNoNumber of poles
rotor_speed_rpmNoRotor speed in RPM
noise_levelNoNoise standard deviation (0-1 relative)
faultsNoFaults to inject: 'brb', 'eccentricity', 'bearing'. Omit for healthy signal
fault_severityNoFault component amplitude (0-1 relative)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries burden. Mentions waveform components but omits behavioral details like output format (handled by output schema), randomness, or performance. Adequate but not comprehensive.

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-loaded purpose, no redundancy. Efficiently conveys essential 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?

With 8 optional parameters and an output schema, description covers signal components. Could mention output structure briefly, but overall sufficient for the task.

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

Parameters3/5

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

Schema coverage is 100%, baseline is 3. Description adds overall context but does not elaborate on individual parameters beyond schema defaults. No added semantic value.

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

Purpose5/5

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

Description clearly states verb 'generate' and resource 'synthetic motor-current test signal', specifying components (fundamental, harmonics, noise, optional faults). Distinct from sibling analysis tools.

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?

States usefulness 'for testing, validation, and demonstration of MCSA analysis tools', providing clear context. Lacks explicit when-not-to-use or alternatives, but sufficient given siblings.

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

inspect_signal_fileA

Inspect a signal file without fully loading it.

Returns file metadata: size, format details, estimated number of samples, sampling frequency (for WAV), column headers (for CSV), and array shape (for NPY). Use this before load_signal_from_file to verify the file format and plan the loading parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the signal file (CSV, WAV, or NPY)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

While annotations are absent, the description clarifies the tool does not fully load the file and returns metadata. It implies read-only behavior but could be more explicit about side effects (none).

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

Conciseness5/5

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

The description is concise with two sentences and a bullet list, front-loading the purpose and using no redundant words.

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 has one parameter, 100% schema coverage, and an output schema exists, the description adequately explains purpose, usage, and return values. It is complete for a simple inspection tool.

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 already covers the 'file_path' parameter with 100% description coverage. The tool description adds the file formats (CSV, WAV, NPY) but does not provide additional constraints or examples.

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 inspects a signal file without full loading and returns specific metadata. It distinguishes itself from the sibling 'load_signal_from_file' by explicitly recommending use before loading.

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

Usage Guidelines5/5

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

The description explicitly advises using this tool before 'load_signal_from_file' to verify format and plan loading parameters, giving clear when-to-use guidance.

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

list_stored_dataA

List all signals and spectra currently stored on disk.

Returns a compact summary of each stored item (ID, type, size, and key metadata) without returning the raw data arrays. The data is persisted in the MCSA data directory and survives server restarts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: it returns only summaries, not raw data, and data persists across restarts. It implies a read-only, non-destructive 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?

Two sentences, no wasted words. The verb 'list' is front-loaded, and each sentence adds specific value: one defines the scope, the other clarifies output format and persistence.

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 zero parameters and the presence of an output schema, the description covers the essentials. It could have mentioned that this is a safe read operation, but the verb 'list' implies that. It is complete enough for effective agent use.

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, so the baseline is 4. The description does not need to add parameter info, and it correctly describes the output scope without needing to detail inputs.

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

Purpose5/5

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

The description clearly states it lists signals and spectra stored on disk, specifies the output is a compact summary (ID, type, size, key metadata), and distinguishes from tools like clear_stored_data that modify data.

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 purpose is clear: use when you need to see what data is stored. There are no parameters or siblings with similar listing behavior, so no exclusions needed. The context is well understood.

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

load_signal_from_fileA

Load a motor-current signal from a file (CSV, WAV, or NumPy NPY).

Supports the most common formats used by industrial DAQ systems:

  • CSV/TSV/TXT: Columnar data with optional time column. The sampling frequency is inferred from the time column or must be provided explicitly.

  • WAV: Audio files from portable recorders or DAQ. Sampling frequency is read from the WAV header.

  • NPY: NumPy binary arrays. Sampling frequency must be provided.

Returns the signal, sampling frequency, number of samples, duration, and file metadata. The returned signal can then be passed to preprocess_signal, compute_spectrum, or run_full_diagnosis.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the signal file (CSV, WAV, or NPY)
sampling_freq_hzNoSampling frequency in Hz. Required for NPY; optional for CSV if a time column exists; auto-detected for WAV
signal_columnNoCSV column containing the current signal (0-based index or header name)
time_columnNoCSV column for time (index or name). Set to null if no time column
delimiterNoCSV delimiter. Auto-detected if null (comma for .csv, tab for .tsv/.txt)
channelNoWAV channel index (0-based) for multi-channel files
skip_headerNoNumber of CSV header rows to skip
max_rowsNoMax data rows to read from CSV (null = all)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: how sampling frequency is determined per format (inferred, auto-detected, required), supported file types, and the exact return values (signal, frequency, samples, duration, metadata). 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?

The description is concise: one sentence for the main purpose, then bullet points for format-specific details, and a closing sentence on return values and downstream use. No fluff, all sentences add value.

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 8 parameters (1 required), output schema exists, and no annotations, the description covers all needed information: file formats, parameter usage per format, return values, and integration with other tools. Complete for a loading tool.

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

Parameters4/5

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

Schema coverage is 100% with detailed descriptions. The description adds format-specific context (e.g., CSV time column, WAV channel, NPY frequency requirement) that groups parameters logically, providing extra clarity beyond the schema alone.

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

Purpose5/5

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

The description clearly states the tool loads a motor-current signal from CSV, WAV, or NPY files. It distinguishes itself by mentioning downstream tools (preprocess_signal, compute_spectrum, run_full_diagnosis), showing its role in a pipeline. This differentiates it from siblings like inspect_signal_file.

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 each format is appropriate and when sampling frequency is required (e.g., for NPY it must be provided). It implicitly guides usage via format-specific details but does not explicitly state when not to use this tool (e.g., for metadata-only tasks use inspect_signal_file). Still, context is clear for most scenarios.

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

preprocess_signalA

Preprocess a stator-current signal for spectral analysis.

Applies (in order): DC offset removal → notch filtering → bandpass filtering → normalisation → windowing. Returns the preprocessed signal.

ParametersJSON Schema
NameRequiredDescriptionDefault
signalYesRaw current signal as a list of amplitude values
sampling_freq_hzYesSampling frequency in Hz
nominal_currentNoNominal current for normalisation (A). Omit for RMS normalisation
windowNoWindow function: hann, hamming, blackman, flattop, rectangularhann
bandpass_low_hzNoLower bandpass cutoff in Hz (optional)
bandpass_high_hzNoUpper bandpass cutoff in Hz (optional)
notch_freqs_hzNoFrequencies to notch-filter (optional)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses the five-step processing pipeline (DC offset removal, notch, bandpass, normalization, windowing) and states return value. Lacks specific side effects or permission requirements, but 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?

Very concise: two sentences plus a numbered list of steps. Front-loaded with purpose, no wasted words. Every sentence 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 parameter count (7) with full schema coverage, output schema exists, and the processing pipeline is described, the description is fairly complete. Could mention constraints like signal length requirements or error handling.

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

Parameters3/5

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

Schema coverage is 100%, so baseline 3. Description does not add new meaning beyond parameter descriptions in the schema. The listed steps paraphrase param purposes but no additional semantics.

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?

Clearly states the tool preprocesses a stator-current signal for spectral analysis, listing the sequence of operations. Distinguishes from sibling spectral analysis tools like compute_spectrum by being the preparatory step.

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?

Implied usage: preprocessing before spectral analysis. No explicit when-to-use or alternatives, but context from sibling tools makes it clear. Missing explicit guidance on 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.

run_full_diagnosisA

Run a comprehensive MCSA diagnostic analysis on a current signal.

Performs the full pipeline: preprocessing → spectrum → fault detection for broken rotor bars, eccentricity, stator faults, and optionally bearing defects. Returns a complete diagnostic report.

ParametersJSON Schema
NameRequiredDescriptionDefault
signal_idNoID of a stored signal (from generate_test_current_signal or load_signal_from_file). Preferred over raw array.
signalNoRaw time-domain current signal. Use signal_id instead for large signals.
sampling_freq_hzNoSampling frequency in Hz. Auto-resolved when using signal_id.
supply_freq_hzNoSupply frequency in Hz
polesNoNumber of poles
rotor_speed_rpmNoRotor speed in RPM
bearing_defect_freq_hzNoBearing defect frequency in Hz (optional, for bearing analysis)
tolerance_hzNoFrequency search tolerance in Hz

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

The description outlines the pipeline stages (preprocessing → spectrum → fault detection) and lists the specific fault types analyzed. This provides good behavioral transparency beyond a basic purpose statement. However, it does not mention prerequisites, side effects (e.g., data storage), or authorization needs, which are not covered by annotations (none provided).

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

Conciseness5/5

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

The description is concise, with three sentences that front-load the main purpose, then detail the pipeline and optional bearing analysis, and finally state the output format. Every sentence adds value without 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?

Given the tool's complexity (8 parameters, many siblings, output schema exists), the description is adequate. It conveys the pipeline and fault types covered. However, it could hint at the preferred parameter (signal_id over signal) and describe the report contents more explicitly, though the output schema may cover that.

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 100% description coverage for all 8 parameters, so the baseline is 3. The description adds no additional parameter-specific meaning beyond the schema, such as clarifying that signal_id is preferred over signal or how tolerance_hz is used.

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 the tool runs a comprehensive MCSA diagnostic analysis on a current signal and lists the pipeline steps (preprocessing, spectrum, fault detection for specific faults). This clearly distinguishes it from sibling tools like detect_broken_rotor_bars or compute_spectrum, which focus on single steps.

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 a full diagnostic is needed but does not provide explicit when-to-use or when-not-to-use guidance relative to siblings. No alternatives are mentioned, and there is no direct comparison to tools like detect_broken_rotor_bars or compute_spectrum.

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

Tool Schema Changelog

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

  1. 21 tool updatesv0.3.0
    • First observedcalculate_motor_params
    • First observedclear_stored_data
    • First observedcompute_band_energy
    • First observedcompute_bearing_frequencies
    • First observedcompute_envelope_spectrum
    • First observedcompute_fault_frequencies
    • First observedcompute_power_spectral_density
    • First observedcompute_spectrum
    • First observedcompute_time_frequency
    • First observeddetect_bearing_faults
    • First observeddetect_broken_rotor_bars
    • First observeddetect_eccentricity
    • First observeddetect_stator_faults
    • First observeddiagnose_from_file
    • First observedfind_spectrum_peaks
    • First observedgenerate_test_current_signal
    • First observedinspect_signal_file
    • First observedlist_stored_data
    • First observedload_signal_from_file
    • First observedpreprocess_signal
    • First observedrun_full_diagnosis

TDQS

A4/5.0

Scored across 21 tools

Disambiguation5/5

Every tool has a clearly distinct purpose. Spectrum-related tools are differentiated by method (FFT, Welch, envelope, STFT). Fault detection tools are separated by fault type (bearing, rotor bar, eccentricity, stator). Workflow tools like run_full_diagnosis and diagnose_from_file are distinct in input method. No ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., compute_spectrum, detect_broken_rotor_bars). The verbs are descriptive and uniform, making the set predictable and easy to navigate.

Tool Count4/5

With 21 tools, the set is slightly above the typical 3-15 range but still reasonable given the comprehensive domain coverage. Each tool serves a specific, necessary function in the MCSA pipeline, so the count feels appropriate rather than bloated.

Completeness5/5

The tool set covers the entire MCSA workflow: file inspection, loading, preprocessing, multiple spectrum computation methods, fault-specific detection, and automated full-diagnosis pipelines. Utilities for data management (list/clear stored data) and test signal generation are included, leaving no obvious gaps.

Maintenance

ActivityNo data
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers