mcp-server-mcsa
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-mcsaAnalyze motor current from signal.wav"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-server-mcsa
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
.npyfilesMotor 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.npzfiles; 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 a signal file format and metadata without loading |
| Load a current signal from CSV / WAV / NPY file → returns |
| Compute slip, sync speed, rotor frequency from motor data |
| Calculate expected fault frequencies for all common fault types |
| Calculate BPFO, BPFI, BSF, FTF from bearing geometry |
| DC removal, filtering, normalisation, windowing pipeline → returns new |
| Single-sided FFT amplitude spectrum → returns |
| Welch PSD estimation → returns |
| Detect and characterise peaks in a spectrum |
| BRB fault index with severity classification |
| Air-gap eccentricity detection via sidebands |
| Stator inter-turn short circuit detection |
| Bearing defect detection from current spectrum |
| Hilbert envelope spectrum for modulation analysis |
| Integrated spectral energy in a frequency band |
| STFT analysis with optional frequency tracking |
| Synthetic motor current with optional faults → returns |
| Complete MCSA diagnostic pipeline from signal or |
| Complete MCSA diagnostic pipeline directly from file |
| List all signals and spectra persisted on disk |
| Delete one or all stored items from disk |
Resources
URI | Description |
| Reference table of fault signatures, frequencies, and empirical thresholds |
Prompts
Prompt | Description |
| 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 | shAfter installing, restart your terminal so the
uv/uvxcommands are available.
Step 2 — Verify it works
uvx mcp-server-mcsa --helpYou 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.jsonmacOS:
~/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:
commandCommand:
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-mcsaThen 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-mcsacommand may not be in your PATH, causing a "server disconnected" error. In that case, find your Python path withpython -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
uvxavoids this problem entirely.
git clone https://github.com/LGDiMaggio/mcp-motor-current-signature-analysis.git
cd mcp-motor-current-signature-analysis
uv sync --devConfigure 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 pytestDebug with MCP Inspector:
uv run mcp dev src/mcp_server_mcsa/server.pyTroubleshooting
Problem | Fix |
"server disconnected" on Claude Desktop | Check the logs at |
| Restart your terminal after installing uv. On Windows, you may need to close and reopen PowerShell. |
| The script wasn't added to PATH. Use |
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 resultUse 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)
Load a measured signal (or generate a synthetic one):
"Load the signal from
measurement.wav" → returnssignal_id: sig_a1b2or: "Generate a test signal with a broken-rotor-bar fault" →sig_c3d4Calculate motor parameters:
"Calculate motor parameters for a 4-pole motor, 50 Hz supply, running at 1470 RPM"
Compute expected fault frequencies:
"What are the expected fault frequencies for this motor?"
Preprocess the signal:
"Preprocess signal sig_a1b2" → returns new
signal_id: sig_e5f6Analyse the spectrum:
"Compute the FFT spectrum of sig_e5f6" → returns
spectrum_id: spec_g7h8Detect specific faults:
"Check for broken rotor bars in spec_g7h8"
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 recommendationsBearing Analysis
For bearing fault analysis, you need the bearing geometry (number of balls, ball diameter, pitch diameter, contact angle). The server will:
Calculate characteristic defect frequencies (BPFO, BPFI, BSF, FTF)
Compute expected current sidebands
Search the spectrum for those sidebands
Supported File Formats
Format | Extensions | Sampling Rate |
CSV / TSV |
| From time column or user-supplied |
WAV |
| Embedded in header |
NumPy |
| 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 --devRun tests
uv run pytestRun with MCP Inspector
uv run mcp dev src/mcp_server_mcsa/server.pyLint 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.cfffile.
License
MIT — see LICENSE for details.
Available Tools
21 toolscalculate_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.
| Name | Required | Description | Default |
|---|---|---|---|
| supply_freq_hz | Yes | Supply (line) frequency in Hz, e.g. 50 or 60 | |
| poles | Yes | Number of magnetic poles (even, ≥ 2) | |
| rotor_speed_rpm | Yes | Measured rotor speed in RPM |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data_id | No | ID of a specific item to remove, or omit to clear everything |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| centre_freq_hz | Yes | Centre of the frequency band (Hz) | |
| spectrum_id | No | ID of a stored PSD spectrum. Preferred over raw arrays. | |
| frequencies_hz | No | PSD frequency axis (Hz). Use spectrum_id instead. | |
| psd_values | No | PSD values. Use spectrum_id instead. | |
| bandwidth_hz | No | Total bandwidth for energy integration (Hz) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| n_balls | Yes | Number of rolling elements in the bearing | |
| ball_dia_mm | Yes | Ball (roller) diameter in mm | |
| pitch_dia_mm | Yes | Pitch (cage) diameter in mm | |
| contact_angle_deg | No | Contact angle in degrees | |
| shaft_speed_rpm | No | Shaft speed in RPM (optional, for absolute Hz) | |
| supply_freq_hz | No | Supply frequency in Hz (optional, for current sidebands) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| signal_id | No | ID of a stored signal. Preferred over raw array. | |
| signal | No | Time-domain current signal. Use signal_id instead. | |
| sampling_freq_hz | No | Sampling frequency in Hz. Auto-resolved when using signal_id. | |
| bandpass_low_hz | No | Lower bandpass cutoff before envelope (optional) | |
| bandpass_high_hz | No | Upper bandpass cutoff before envelope (optional) | |
| max_freq_hz | No | Max frequency to return (Hz) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| supply_freq_hz | Yes | Supply frequency in Hz | |
| poles | Yes | Number of magnetic poles | |
| rotor_speed_rpm | Yes | Rotor speed in RPM | |
| harmonics | No | Number of harmonic orders to compute |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| signal_id | No | ID of a stored signal. Preferred over raw array. | |
| signal | No | Time-domain signal array. Use signal_id instead. | |
| sampling_freq_hz | No | Sampling frequency in Hz. Auto-resolved when using signal_id. | |
| nperseg | No | FFT segment length. Omit for auto | |
| max_freq_hz | No | Maximum frequency to return (Hz) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| signal_id | No | ID of a stored signal. Preferred over raw array. | |
| signal | No | Time-domain signal array. Use signal_id instead for large signals. | |
| sampling_freq_hz | No | Sampling frequency in Hz. Auto-resolved when using signal_id. | |
| n_fft | No | FFT length (zero-padding). Omit for auto | |
| max_freq_hz | No | Maximum frequency to return (Hz). Omit for full range |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| signal_id | No | ID of a stored signal. Preferred over raw array. | |
| signal | No | Time-domain current signal. Use signal_id instead. | |
| sampling_freq_hz | No | Sampling frequency in Hz. Auto-resolved when using signal_id. | |
| nperseg | No | Window length per segment (samples) | |
| target_freq_hz | No | Frequency to track over time (Hz). If provided, returns amplitude vs time for that frequency | |
| tolerance_hz | No | Tolerance for frequency tracking (Hz) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| spectrum_id | No | ID of a stored spectrum. Preferred over raw arrays. | |
| frequencies_hz | No | Spectrum frequency axis (Hz). Use spectrum_id instead. | |
| amplitudes | No | Spectrum amplitude values. Use spectrum_id instead. | |
| supply_freq_hz | No | Supply frequency in Hz | |
| bearing_defect_freq_hz | No | Bearing characteristic defect frequency in Hz (BPFO, BPFI, BSF, or FTF) | |
| defect_type | No | Defect type label: bpfo, bpfi, bsf, or ftf | bpfo |
| harmonics | No | Number of sideband orders | |
| tolerance_hz | No | Frequency search tolerance in Hz |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| spectrum_id | No | ID of a stored spectrum (from compute_spectrum). Preferred over raw arrays. | |
| frequencies_hz | No | Spectrum frequency axis (Hz). Use spectrum_id instead. | |
| amplitudes | No | Spectrum amplitude values. Use spectrum_id instead. | |
| supply_freq_hz | No | Supply frequency in Hz | |
| poles | No | Number of poles | |
| rotor_speed_rpm | No | Rotor speed in RPM | |
| tolerance_hz | No | Frequency search tolerance in Hz |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| spectrum_id | No | ID of a stored spectrum. Preferred over raw arrays. | |
| frequencies_hz | No | Spectrum frequency axis (Hz). Use spectrum_id instead. | |
| amplitudes | No | Spectrum amplitude values. Use spectrum_id instead. | |
| supply_freq_hz | No | Supply frequency in Hz | |
| poles | No | Number of poles | |
| rotor_speed_rpm | No | Rotor speed in RPM | |
| harmonics | No | Number of harmonic orders to check | |
| tolerance_hz | No | Frequency search tolerance in Hz |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| spectrum_id | No | ID of a stored spectrum. Preferred over raw arrays. | |
| frequencies_hz | No | Spectrum frequency axis (Hz). Use spectrum_id instead. | |
| amplitudes | No | Spectrum amplitude values. Use spectrum_id instead. | |
| supply_freq_hz | No | Supply frequency in Hz | |
| poles | No | Number of poles | |
| rotor_speed_rpm | No | Rotor speed in RPM | |
| harmonics | No | Number of harmonic orders | |
| tolerance_hz | No | Frequency search tolerance in Hz |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the signal file (CSV, WAV, or NPY) | |
| supply_freq_hz | Yes | Supply frequency in Hz | |
| poles | Yes | Number of poles | |
| rotor_speed_rpm | Yes | Rotor speed in RPM | |
| sampling_freq_hz | No | Sampling frequency in Hz (required for NPY, optional for CSV with time column, auto-detected for WAV) | |
| signal_column | No | CSV column for the current signal | |
| time_column | No | CSV column for time (null if absent) | |
| channel | No | WAV channel index | |
| bearing_defect_freq_hz | No | Bearing defect frequency in Hz (optional) | |
| tolerance_hz | No | Frequency search tolerance in Hz |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| spectrum_id | No | ID of a stored spectrum (from compute_spectrum or compute_power_spectral_density). Preferred over raw arrays. | |
| frequencies_hz | No | Frequency axis from spectrum/PSD. Use spectrum_id instead. | |
| amplitudes | No | Amplitude or PSD values. Use spectrum_id instead. | |
| min_height | No | Minimum peak height | |
| min_prominence | No | Minimum peak prominence | |
| min_distance_hz | No | Min distance between peaks in Hz | |
| freq_low_hz | No | Lower frequency bound for search | |
| freq_high_hz | No | Upper frequency bound for search | |
| max_peaks | No | Maximum number of peaks to return |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| duration_s | No | Signal duration in seconds | |
| sampling_freq_hz | No | Sampling frequency in Hz | |
| supply_freq_hz | No | Supply frequency in Hz | |
| poles | No | Number of poles | |
| rotor_speed_rpm | No | Rotor speed in RPM | |
| noise_level | No | Noise standard deviation (0-1 relative) | |
| faults | No | Faults to inject: 'brb', 'eccentricity', 'bearing'. Omit for healthy signal | |
| fault_severity | No | Fault component amplitude (0-1 relative) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the signal file (CSV, WAV, or NPY) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the signal file (CSV, WAV, or NPY) | |
| sampling_freq_hz | No | Sampling frequency in Hz. Required for NPY; optional for CSV if a time column exists; auto-detected for WAV | |
| signal_column | No | CSV column containing the current signal (0-based index or header name) | |
| time_column | No | CSV column for time (index or name). Set to null if no time column | |
| delimiter | No | CSV delimiter. Auto-detected if null (comma for .csv, tab for .tsv/.txt) | |
| channel | No | WAV channel index (0-based) for multi-channel files | |
| skip_header | No | Number of CSV header rows to skip | |
| max_rows | No | Max data rows to read from CSV (null = all) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| signal | Yes | Raw current signal as a list of amplitude values | |
| sampling_freq_hz | Yes | Sampling frequency in Hz | |
| nominal_current | No | Nominal current for normalisation (A). Omit for RMS normalisation | |
| window | No | Window function: hann, hamming, blackman, flattop, rectangular | hann |
| bandpass_low_hz | No | Lower bandpass cutoff in Hz (optional) | |
| bandpass_high_hz | No | Upper bandpass cutoff in Hz (optional) | |
| notch_freqs_hz | No | Frequencies to notch-filter (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| signal_id | No | ID of a stored signal (from generate_test_current_signal or load_signal_from_file). Preferred over raw array. | |
| signal | No | Raw time-domain current signal. Use signal_id instead for large signals. | |
| sampling_freq_hz | No | Sampling frequency in Hz. Auto-resolved when using signal_id. | |
| supply_freq_hz | No | Supply frequency in Hz | |
| poles | No | Number of poles | |
| rotor_speed_rpm | No | Rotor speed in RPM | |
| bearing_defect_freq_hz | No | Bearing defect frequency in Hz (optional, for bearing analysis) | |
| tolerance_hz | No | Frequency search tolerance in Hz |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
21 tool updates
v0.3.0- First observed
calculate_motor_params - First observed
clear_stored_data - First observed
compute_band_energy - First observed
compute_bearing_frequencies - First observed
compute_envelope_spectrum - First observed
compute_fault_frequencies - First observed
compute_power_spectral_density - First observed
compute_spectrum - First observed
compute_time_frequency - First observed
detect_bearing_faults - First observed
detect_broken_rotor_bars - First observed
detect_eccentricity - First observed
detect_stator_faults - First observed
diagnose_from_file - First observed
find_spectrum_peaks - First observed
generate_test_current_signal - First observed
inspect_signal_file - First observed
list_stored_data - First observed
load_signal_from_file - First observed
preprocess_signal - First observed
run_full_diagnosis
TDQS
Scored across 21 tools
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.
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.
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.
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
Related MCP Connectors
AI-powered diagnostics for elevator, escalator, and vertical transportation equipment
13 neural engines for time-series anomaly detection, classification, and root cause analysis.
Cross-OEM industrial machine intelligence: identity, normalization, automation, attestation.
Portfolio and strategy stress diagnostics with hedge-break detection and regime outlook. Free tier.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI assistants to analyze vibration data, detect machinery faults, and generate professional diagnostic reports through natural conversation.34127 PyPI83MIT
- FlicenseNot gradedqualityDmaintenanceAn AI-powered EV Digital Twin platform for battery health monitoring, predictive maintenance, fleet analytics, and intelligent decision support using MCP tools for SOH prediction and RUL estimation.3-
- AlicenseNot gradedqualityCmaintenanceEnables natural language analysis of mechanical test data files (CSV, TDMS, MDF) by providing tools for channel statistics, spectrum analysis, rainflow fatigue counting, thermal state detection, and report generation.MIT
- AlicenseAqualityBmaintenanceExposes live industrial IoT telemetry to any MCP client, streaming simulated sensor data from a fleet of machines and detecting anomalies, with the ability to inject faults on demand.4MIT